일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- ODQA
- python3
- Level1
- dfs
- 그래프이론
- mrc
- 부스트캠프_AITech3기
- 알고리즘스터디
- dp
- Level2
- 알고리즘_스터디
- 다시보기
- 주간회고
- 기술면접
- 단계별문제풀이
- 글또
- 프로그래머스
- U_stage
- 이코테
- 최단경로
- 개인회고
- 이진탐색
- Level2_PStage
- 백트랙킹
- 구현
- 파이썬 3
- 정렬
- 백준
- 그리디
- 부스트캠프_AITech_3기
- Today
- Total
국문과 유목민
[일일리포트] Day 15 본문
해당 일일리포트에서는 네이버 커넥트에서 진행하는 '부스트캠프 AI Tech 3기'에서 배운 내용을 다루고 있습니다. 저작권 이슈 때문에 관련 자료를 올릴 수는 없기에 핵심 이론과 코드를 요약해서 올리고 있기에 내용이 부족할 수 있습니다.
특히 이번 Generative Model의 경우 완벽한 이해가 되어있지 않기 때문에 더 부족하게 느끼실 수 있습니다. 뭔가 이상한 것 같다는 생각이 드시면 아마 맞으실 겁니다. 해당 포스팅에서는 간단한 개념만 정리한다는 느낌으로 가볍게 봐주시면 좋겠습니다.
▶ Today I Learned (핵심 요약 정리)
Generative Model
Generative 모델은 단순히 생성(Generate)만 하는 모델이 아니다. Generative모델은 다음과 같은 일들을 할 수 있다.
- Generation: 강아지 이미지 같은 것을 만들어내는 것으로 단순히 '생성'만 하는 모델이기에 내부적인 구조나 값을 알 수 없는 implicit model이다.
- Density Estimation: 이미지가 주어졌을 때 어떤 이미지인지 구분할 수 있는 것. 이상현상을 찾는 데에도 사용할 수 있다. 확률계산이 가능하기 때문에 explicit model이다.
- Unsupervised Representation Learning: 이미지에 대한 특성을 배우는 것 또한 Generative Model의 한 종류라고 할 수 있다고 한다.
여기서 우리는 확률분포 p(x)의 값을 통해서 위와 같은 task를 수행할 수 있다. 그렇다면 우리는 p(x)를 어떻게 표현할 것인가에 대한 것을 생각할 수 있다. p(x)는 입력 x에 대해서 나오는 값을 sampling할 수 있는 값이라고 할 수 있다.
Conditionall Independence
파라미터를 구함에 있어서 세 가지 중요한 rule인 Chain rule, Bayes rule, Conditional independence가 존재한다.
Chain rule만 사용한다면 우리는 $2^n-1$개의 파라미터(Fully Dependence한 모델)를 갖게 된다. 하지만 Markov Assumption(각 feature가 독립)을 하고, Conditional Independence를 활용하면 파라미터의 개수를 $2n-1$개로 줄일 수 있다.
따라서 chain rule과 conditional Independence를 잘 섞어서 Fully dependent 모델과 Fully Independent모델 사이에 있는 좋은 모델을 만들고자 하는 것이 바로 AutoRegressive(AR)모델이라고 간단하게 정리할 수 있다.
Auto-Regressive Model
어떤 하나의 정보가 이전 정보에 depentent한 모델을 의미한다. 다시 말해 현재의 정보가 과거의 정보에 의존해서 만들어졌다면 전부 AutoRegressive모델인 것이다. 이전에 N개의 데이터를 고려했다면 AR-N모델이 된다. 이처럼 어떤 식으로 Conditional Independence를 주느냐에 따라서 전체 모델의 구조가 달라지게 된다.
p(x)를 Parameterize할 수 있는 방법은 ChainRule을 통해 Joint distribution을 나눈 다음 계산을 하는 것이다.이를 Auto Regressive Model이라고 한다. 그리고 Random Variables에 대해 Ordering이 필요하다는 것을 기억해야 한다.
NADE (Neural Autogressive Density Estimator)
주어진 input에 대해 우리는 Joint probability를 계산할 수 있기 때문에 explicit 모델이다. 보통 논문에 Density Estimator가 들어가게 되면 explicit모델이라고 한다. Continuous일 때는 Mixture of Gaussian을 활용한다.
(자세한 설명 생략)
Pixel RNN
- i번째 픽셀이 있다면, i-1번째까지의 픽셀 모두를 고려하여 define auto-regressive할 때 RNN을 활용하는 방법이다. oredering방법에 따라 Row LSTM과 Diagonal BiLSTM 두 개가 존재한다.
- Row LSTM: 위의 것을 확인해서 i번째 픽셀을 만든다.
- Diagonal BiLSTM: 자기 이전까지의 정보들을 활용해 i번째 픽셀을 예측한다.
Generative Model2
VAE(Variational Auto Encoder)
Variational Auto Encoder는 이미지도 만들고, 문장도 만들 수 있는 모델이라고 합니다. 그런데 VAE에 대해 이해하기 전에 우선 VI(Variational Inference)에 대해 이해할 필요가 있다. VI의 목표는 poeterior distribution을 찾는 것에 있다.
- Posterior distribution($p_{\theta}(z|x)$): observation이 주어졌을 때 내가 관심있는 것의 확률분포
- Variational distribution( $q_{\phi}(z|x)$): posterior distribution은 실질적으로 구하기 어렵기 때문에 이에 근사한 값을 찾기 위해 Variational distribution을 사용합니다. .
결국 VI의 목적은 KL-Divergence를 활용해서 Variational distribution과 Posterior distribution을 줄여보겠다는 것이라고 볼 수 있다. 여기서 그러면 '사후확률을 모르는데 어떻게 찾을 것인가?'라는 의문이 나올텐데, 이는 Posterior distribution과 Variational distribution의 KL-Divergence로 정의된 거리를 줄이는 과정에서 ELBO를 Maximize함으로써 얻어낼 수 있다.
ELBO
ELBO는 Reconstruction Term과 Prior Fitting Term으로 나뉜다.
- Reconstruction Term: 오토인코더의 reconstruction loss를 최소화하는 Term
- Prior Fitting Term: latent distribution이 prior distribution과 유사하게 만들어주는 Term
- Key linitation
VAE는 Explicit모델이 아니다. Interctable model이고 likelihood를 계산하기 어렵기 때문이다. 그리고 prior fitting term은 미분이 가능해야만 한다. 그렇기 때문에 isotropic Gaussian을 활용합니다.
AAE(Adversarial Auto Encoder)
GAN을 활용해서 latent distribution 사이에 분포를 맞춰주는 것이다. Variational Auto Encoder의 Prior Fitting Term을 GAN으로 바꿔준 것에 불과하다. Generative quality도 VAE 보다 좋은 경우가 많다.
GAN
도둑이 위조 지폐를 만들고, 경찰은 위조 지폐를 검사하는 과정을 계속 반복함으로써 generator를 만든다. Generator와 discriminator의 minmax게임이라고 할 수 있다. 학습 결과로 나오는 generator를 discriminator가 학습하면서 점차점차 좋아지는게 가장 큰 장점이다. 성장한 discriminator를 통해서 generator도 다시 성장할 수 있다. 당연히 implicit 모델이다.
여러가지 GAN모델들이 존재하는데, 간단하게 살펴보고 넘어가도록 하자.
- DCGAN: leaky ReLU, Deconvolution layer를 활용
- Info-GAN: 위 GAN 그림에서 학습을 할 때, 이미지를 만드는 $z$만 아니라 C라는 클래스를 같이 넣어서 Multi modal distribution하는 효과를 얻는 모델
- Text2 Image: 문장이 주어지면 이미지를 만들어주는 모델. Dall-E의 영감(?)이 된 모델이라고 한다.
- CycleGAN: Cycle-consistency loss 중요한 개념을 사용했으며, GAN구조가 2개 들어간 모델이다. 이미지가 2개가 주어지면 1가지 이미지를 다른 1가지의 이미지의 특징을 적용시켜서 새로운 이미지로 만든다.
- StarGAN: 이미지를 컨트롤할 수 있게 만들어주는 모델
- ProgressiveGAN: 고차원의 이미지를 잘 만들어줄 수 있는 모델 4x4에서 시작해서 1024x1024까지 점점 늘려가며 학습시킨다.
Generative 모델에 대한 이해가 많이 부족해서 다른 참고할만한 사이트를 살펴봤다.
참고1) 오토인코더의 모든 것
참고2) Variational Auto Encoder의 이해
▶ Review (생각)
사실 오늘 부스트캠프 코어타임 시간대에 강의를 하나도 듣지 못했고, Transformer에 관한 논문을 읽고 심화과제를 푸는데 시간을 다 썼다. 그리고 피어세션을 거의 2시간 하고, 멘토링을 6시부터 2시간 20분 동안해서 개인 공부를 할 시간이 많지는 않았던 것 같다. 하지만 그래도 Transformer에 관해서는 꽤나 잘 이해할 수 있게 된 것 같아서 하나라도 확실히 건졌구나라는 생각이 들어서 다행이라고 생각한다.
9시부터 Generative모델에 대한 강의를 다시 한번 더 들었는데, 확실히 처음 들었을 때보다는 이해하기 더 수월했던 것 같다. 하지만 그럼에도 아직까지는 이해가 좀 부족한 것 같다는 생각이 들어서 멘토님이 추천해주신 오토인코더의 모든 것 강의를 한 번 들어봐야할 것 같다. 내일은 심화과제 남은 문제랑 퀴즈 남은 문제들을 다 보고 앞선 강의를 한 번 볼 계획이다.
추가적으로 멘토링에서 How to read paper얘기나 Attention is all you need 논문 세미나가 꽤 도움이 됐다. 특히, 논문을 읽으면서 애매했던 부분을 바로 물어볼 수 있다는 점이 정말 좋은 것 같다. 다음 주부터는 소소하게 캐글 문제를 시작해보려고 하는데 꽤 재밌을 것 같아서 기대가 된다.
'IT 견문록 > 2022_부스트캠프 AITech 3기(100일)' 카테고리의 다른 글
[일일리포트] Day 17 (0) | 2022.02.11 |
---|---|
[일일리포트] Day 16 (0) | 2022.02.10 |
[일일리포트] Day 14 (RNN 계열) (0) | 2022.02.08 |
[일일리포트] Day 13 (DL Basics) (0) | 2022.02.07 |
[3주차] 학습 정리 및 회고 (0) | 2022.02.04 |