SeongBeomLEE
로그인
SeongBeomLEE
로그인
[Boostcamp AI Tech] DL Basic 9~10강
이성범
·
2022년 2월 11일
팔로우
0
Boostcamp AI tech
DL Basic
Generative Model
0
Boostcamp AI Tech
목록 보기
28/49
Generative Model
이번 강에서는 Generative Model에 대하여 학습을 진행했다.
00. 학습 내용
Generative Model의 기본 개념에 대하여 학습
Auto-regressive Model에 대하여 학습
Latent Variable Model에 대하여 학습
01. Generative Model
Generative Model은 간단하게 말해서 어떠한 확률 z를 추정하고 추정된 확률 z에서 새로운 데이터를 생성하는(샘플링) 모델이라고 생각하면된다. 따라서 Generative Model에서는 확률 z를 어떻게 구할 것이냐?가 중요한 Task가 된다.
z를 추론하는 가정에 따라서 모델 파라미터의 수와, 모델의 구조가 달라진다.
앞으로 다룰 Auto-regressive Model은 조건부 독립를 가정하여 모델을 추론하고, Latent Variable Model은 확률 분포를 모델링을 통해서 추론한다.
02. Auto-regressive Model
Auto-regressive Model은 마르코프 정의에 기반한 조건부 독립을 가정하여 체인룰을 사용하여 모든 랜덤한 변수를 사용하여 p(x) 즉, 우리가 추론하고 싶은 분포를 찾는 모델이다.
Auto-regressive Model의 가장 기본적인 모델은 Neural Autoregressive Density Estimator, NADE 이다.
NADE는 주어진 데이터를 기반으로 밀도를 계산하는 즉 확률 분포를 계산하는 explicit model이다. (위 그림의 경우 784 pixel image 데이터)
NADE는 위와 같은 공식으로 결합 확률 분포를 독립적으로 계산한다.
그 후에 가우시안 분포에서 랜덤으로 샘플링한 변수를 바탕으로 계산된 확률 분포를 가지고 이미지를 생성하게 된다.
또한 Auto-regressive Model은 RNN을 사용할 수도 있고 본 모델은 Pixel RNN이라고 불린다. (위 이미지는 RGB 이미지에 대한 Pixel RNN 학습 예시)
Pixel RNN 기반의 모델들은 분포를 어떻게 추론하느냐에 따라서 Row LSTM, Diagonal BiLSTM 등이 존재한다.
03. Latent Variable Model
Latent Variable Model은 크게 Variational Auto-encoder, Generative Adversarial Network 등이 존재한다.
Variational Auto-encoder는 데이터를 바탕으로 얻은 Posterior distribution와 가장 잘 매치하는 Variational distribution을 학습하는 모델이다.
우리는 KL divergence를 활용하여 Posterior distribution과 가장 가까운 분포를 찾게된다면 그 분포가 곧 Variational distribution 될 것이다.
Variational Auto-encoder는 위 그럼 처럼 z에 평균과 분산을 모델링하는 것이 목표이고 학습된 평균과 분산에서 값을 샘플링하여 데이터를 생성해주는 모델이라고 할 수 있다.
Generative Adversarial Network는 데이터를 생성하는 generator와 데이터를 판별하는 discriminator 간의 minimax game으로 학습되는 구조라고 할 수 있다.
모델의 학습 과정을 간단하게 설명하면 우선 discriminator에 실제 이미지 데이터를 넣어 실제 이미지라고 판별하는 loss1를 구한다.
그리고 discriminator에 가우시안분포에서 추출한 샘플링 값을 바탕으로 generator가 생성한 이미지 데이터를 넣어 가짜 이미지라고 판별하는 loss2를 구한다.
그리고 loss1 + loss2 하여 최종 loss를 구하고, 이 loss를 바탕으로 discriminator의 파라미터를 업데이트 한다.
그 후에 discriminator에 generator가 생성한 이미지 데이터를 넣어 진짜 이미지라고 판별하는 loss를 구하고, 해당 loss를 바탕으로 generator의 파라미터를 업데이트 한다.
이처럼 GAN은 generator와 discriminator가 서로 속고 속이는 방식으로 학습이 진행된다.
참고자료
https://github.com/SeongBeomLEE/Tobigs15th/blob/master/week10/assignment_wk10.ipynb
https://velog.io/@2712qwer/4%EC%A3%BC%EC%B0%A8-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EA%B8%B0%EB%B0%98-%EC%9D%8C%EC%84%B1%ED%95%A9%EC%84%B12
이성범
Machine Learning Engineer at Konan Technology
팔로우
이전 포스트
[Boostcamp AI Tech] DL Basic 8강
다음 포스트
[Boostcamp AI Tech] Week4 회고
0개의 댓글
댓글 작성