[08.13] Day10 - 'Generative Models'💫
[여기는 지금껏 들으면서 가장 이해가 안된 부분이었다. 그래서 추가로 공부하면서 알게되면 정리를 추가해야겠다.]
일단 어느정도 알게된 내용 위주로 정리한다.
Generative Model
[수업 내용]
강사 : 최성준 조교수님
Generative model을 만든다? 는 무슨 의미일까
: 단순하게 생성 모델에 그치지 않고 더 많은 것을 포함하고 있다.
- Generation : sampling
- Density estimation : anomaly detection(분류 같음, explicit model)
- → 분류 모델까지도 포함하고 있다는 것을 의미한다.
- Unsupervised representation learning : feature learning
P(x) 를 어떻게 만들까?
기본적인 Discrete Distribution
0 또는 1로 표현되는 Binary Image 같은 경우
파라미터(2^n-1)는 굉장히 크다. 경우의 수(2^n)도 클 것이다.
→ 하지만, 우리가 n개가 모두 independence 하다는 가정을 세운다면 파라미터 수를 N개로 줄일 수 있을 것이다.
3가지 중요한 Rule
Chain Rule에 몇개의 파라미터가 있을까, 단지 joint distribution을 conditional distribution으로 표현했을 뿐. → Fully Connected Model과 동일하구나! (총 2^N-1 개로 나온다.)
그러면,
Markov Assumption을 가정한다. (10번째는 1~8번째는 independent 하고 직전 9번째만 dependent하다 라는 가정) → 파라미터 수를 줄일 수 있다.
→ 이렇게 자동 회귀 모델(Auto-Regressive Model)은 조건부 독립을 활용한다.
Auto-Regressive Model
- 가정) 28*28 binary pixel들이 있다.
- 목표) P(x) 확률 분포를 구하고 싶다. 여기에 사용하는 것은 Auto Regressive Model 활용
- 순서를 매길때, Random Variables의 순서로 Ordering이 필요하다.
- → Chain Rule을 사용해서 joint distribution을 나눈다.(Auto Regressive Model)
NADE
i 번째 pixel을 1~i-1 번째 pixel에 dependent 하도록 만든다.
얘는 explicit model이다. 임의의 28_28 이미지가 주어지면 density를 구할 수 있다. 그래서 *_joint 확률**을 계산할 수 있다.
만약에 continous random variables라면 가우시안 mixture가 사용될 수 있다.
Pixel RNN
이미지에 있는 pixel들을 만들어 내고 싶다. 어떻게 만들까? → RNN을 채널마다 활용(단, 연쇄적으로 R→G→B)
그리고 2가지 Ordering에 따라서 다른 형태로 구할 수 있다.
Latent Variable Model
- Autoencoder가 generative model일까?
우선,
Variational Auto-Encoder
- Variational inference(VI)
목적) Posterior Distribution을 찾는데 목적이 있다. → 내 Observation이 주어졌을때, 관심 있어하는 RandomVariable의 확률 분포이다. - Variational Distribution : 일반적으로 posterior Distribution을 구하기 힘들다. 내가 학습할 수 있는 어떤 것으로 근사하겠다. 라는 것이 목적이다. 그 근사하는 분포를 의미한다.
GAN
: 예제를 통해서 설명해주셨다. A라는 사람이 위조지폐를 잘 만들도록 하고, B라는 사람은 이 위조지폐를 잘 판별하고 더 잘 구분하도록, A는 더 잘 속이려고하고 → 반복하면서 Generator 성능을 높이려고하는 것이 목적이다.
- Variational Autoencoder
- input x가 Encoder를 통해서 Z(latent Vector)로 갔다가 다시 Deocder를 통해서 원래 x 로 나오게 학습하고, Generation 단계에서는 p(z), z를 sampling해서 나온 것을 Deocder를 통해서 나온 x가 generation의 결과가 된다.
- Generative Adversarial Network
- two player(Generator와 Discriminator사이의) minimax game이다.
[수업 회고]
- 너무 어려웠다..
- 특히 확률 분포의 성질을 먼저 제대로 그리고 다양하게 알고 있어야 했는데, 도메인 지식이 부족했다.
- GAN 같은 경우, 쉬운 예제를 통해서 이해하기는 괜찮았으나,
- VAE 같은 내용은 아직 너무 어렵다는 생각이 든다. 이부분도 완벽히 정리가 안 되어 있기 때문에 VAE를 공부하고 다시 정리하도록 하겠다.
[피어 세션 정리]
- 다음주 부터 좀더 적극적인 질문을 하기 위해서 서로를 좀 더 배려해 익명의 톡방과 공유 ppt를 만들기로 했다.
- 멘토링 시간을 좀 더 활용하기 위해서 논문 리뷰를 할 예정이다.
- 선택 과제에 대해서 한번도 자세히 이야기 한 적이 없기 때문에 다음주 파이토치 강의 같이 코드 위주는 꼭 코드를 서로 공유하고 좀 더 이해하려고 한다.