- 본 게시글은 Justin Johnson 교수님의 Deep Learning for Computer Vision, University of Michigan 정리글입니다.
- 개인적인 생각이 서술되어 있습니다. 잘못된 내용이 존재할 확률이 존재하기에 주의 바랍니다.
- 잘못된 내용, 오타는 지적해 주시면 감사하겠습니다.
강의링크:
https://www.youtube.com/watch?v=Q3HU2vEhD5Y&list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r&index=19
강의자료:
https://web.eecs.umich.edu/~justincj/slides/eecs498/498_FA2019_lecture19.pdf
Supervised vs Unsupervised Learning
학습을 하는 방법으로는 크게 지도 학습(Supervised Learning)과 비지도 학습) Unsupervised Learning)이 있습니다.
지도 학습은 data x와, data의 label이 표기된 y가 함께 주어져, x가 입력되면 올바른 label, y를 출력하는 것을 목표로 합니다. 고양이 / 개 분류, Object Detection, image captioning 등 다양한 예시가 있습니다.
비지도 학습은 data x가 주어지면 label 없이, data 내에 존재하는 hidden structure을 학습하는 것입니다. Clustering, PCA와 같은 차원 축소 기법, 특징 추출, density estimation 등의 예시가 있습니다.
오늘은 생성 모델(Generative models)에 관해 알아보겠습니다. 생성 모델은 학습 데이터를 통해, 학습 데이터의 분포를 추정하고 이를 따르는 유사 데이터를 생성하는 모델입니다.
Discriminative vs Generative Models
1. Discriminative Model
- Discriminative model은 조건부확률 p(y|x)을 학습
- 조건부확률 p(y|x)는, 데이터 x가 주어졌을 때 레이블 y가 나타날 확률을 의미 → dog / cat 분류 등
- 위의 그림을 보면 고양이 그림(데이터 x)이 주어졌을 때 고양이일 확률: p(cat|x)과, 개일 확률: p(dog|x)이 나와있음
- 확률이기 때문에 p(x)의 합이 1이 되도록 정규화되어있음
- 레이블(y) 정보가 필요하므로 지도학습. x는 레이블을 잘 구분하는 decision boundary를 학습함
- higher numbers는 x is more likely를 의미함, probability랑 다름
- 이미지에 적합한 label이 없더라도, 각 label 들에 대한 분포를 보여줌, 물론 likely는 매우 낮음
2. Generative Model
- Genetrative model은 p(x)를 학습
- 평가가 어려움, unseen image에 대한 Perplexity로 평가
3. Conditional Generative
- 모든 label에 대한 모든 이미지의 likelihood를 계산
Bayes' Rule을 통해 Conditional Generative Model을 살펴보겠습니다.
Conditonal Genertaive Model을 계산하기 위해서는 Discriminative Model, Prior over labels, Unconditional Generative Model을 알아야 합니다. 그중 계산을 하지 못하는 것은 Unconditional Generative Model이기에 생성 모델은 어떻게 p(x)를 만들어낼까에 중점을 둡니다.
정리하자면 다음과 같습니다. 알고자 하는 것은 Conditonal Genertaive Model: p(x|y)입니다. 이는 "고양이 이미지를 생성해 줘"입니다(고양이(y) 고양이 이미지(x)). 이를 위해 Unconditional Generative Model: p(x)를 알아내는 것이 핵심이라는 것이죠.
- Discriminative Model: data 분류, labeling. data feature 학습(지도학습)
- Generative Model: 이상치 탐지, data feature 학습(비지도학습), 새로운 data 생성
- Conditional Generative Model: label에 대한 data 생성. ex) "give me cat image"
Taxonomy of Generative Models
생성 모델의 계보에 대해 알아보겠습니다.
Explicit Density Estimation
Explicit Density는 학습 데이터의 분포를 약간은 알고 있는 상태에서 생성하는 것입니다. Explicit Density에는 Tractable density와 Approximate density가 있습니다. 이 둘의 차이는 p(x)를 계산할 수 있는 정도입니다.
1. Tractable density
Tractable density는 학습 데이터의 분포를 직접적으로 학습하기 위해서 이전 데이터를 활용하여 현재 데이터의 값을 결정합니다. 단계가 반복된다면 이미지 전체에 대해서 데이터를 생성할 수 있을 것입니다. Autoregressive models을 통해 자세히 살펴보겠습니다.
Pixel RNN은 Autoregressive models 중 하나입니다.
Pixel RNN은 이전 픽셀에 dependent 한, 다음 픽셀을 순서대로 학습하는 모델입니다. 즉, Chain Rule을 통해 직접적으로 학습데이터의 분포를 구하는 것입니다. Autoregressive 계열에서는 이전 픽셀을 정의하는 방법이 중요합니다. 이처럼 이전 픽셀의 정보를 가지고 있어야 다음 픽셀의 분포를 알 수 있기에, 직접적으로 확률분포를 구하는 방법이라고 볼 수 있습니다. 하지만 순차적으로 진행하기에, 학습과 테스트 모두 매우 느립니다.
장점
- Can explicitly compute likelihood p(x)
- Explicit likelihood of training data
- gives good evaluation metric
- Good samples
단점
- Sequential generation → slow
2. Approximate density
Variational Autoencoders(VAE)를 통해 Approximate density를 살펴보겠습니다.
VAE를 살펴보기 전에, (Regular, non-variational) Autoencoders(AE)부터 살펴보겠습니다. AE는 feature vector를 학습하는 비지도 학습으로 Enoder & Decoder 구조로 이루어져 있습니다.
원본 데이터로부터 유용한 정보가 담긴 feature를 추출하고 싶습니다. 하지만 어떻게 추출할까요? feature를 input 데이터를 재구축하는 데 사용한다면, 얼마큼 잘 재구축되었는지에 따라 유용한 feature인지 확인 가능할 것입니다.
Problem: How can we learn this feature transform from raw data?
Idea: Use the features to reconstruct the input data with a decoder “Autoencoding” = encoding itself
input 데이터, x와 재구축된 x_hat 간의 차이를 loss로 설저하고, 이를 최소화하는 방향으로 학습을 진행합니다. 우측의 이미지 복원 예시를 보면, 재구축 데이터가 Input 데이터와 닮아감을 확인 가능합니다. 또한 Enocder와 Decoder는 대칭 구조인 것도 확인 가능합니다. Feautre는 데이터보다 차원이 작아야 합니다. 만약 같다면, 데이터를 모두 사용한 것이나 다름없으니까요.
학습이 끝난 후에는 Decoder를 버립니다. Decoder는 Feature를 추출하기 위해 사용한 것이지, Feature를 모두 추출한 이후에는 Feature 만으로 label을 예측할 수 있기 때문입니다. 하지만 새로운 데이터를 샘플링할 수는 없습니다. 그렇기에 VAE가 필요합니다. 그럼 VAE를 본격적으로 알아보겠습니다.
AE는 Encoder를 사용하는 반면, VAE는 Decoder를 사용합니다.
각 x를 위해 z를 사용할 수 있다면 conditional generative model: p(x|z)를 학습할 수 있을 것입니다.
p(x)가 궁금합니다. 이는 x와 z의 교집합이 일어날 확률을, 전체 z에 대해서 적분하는 것과 동일합니다. 따라서 해당 방식으로 계산이 가능한지 확인해 보겠습니다. 처음에는 z와 Decoder network만을 활용하였습니다.
하지만, 모든 z에 대해서 적분하는 것은 불가능합니다.
따라서 Bayes' Rule을 활용하여 p(x|z)가 아니라 p(z|x)는 계산 가능한지 시도해 보았습니다.
원래는 Decoder network만으로 학습을 진행하려고 했지만, 계산이 불가능하기에 Encoder network를 추가한 것입니다.
Encoder를 활용하여 계산 불가능한 부분을 근사 시킵니다.
그럼 이를 수식으로 정리해 보겠습니다.
각 항에 log를 씌우면, x, /를 +,-로 분리할 수 있습니다. 이를 통해 위와 같은 세 항으로 분리합니다.
다음으로 세 항에 평균을 씌우고, KL divergence 식을 통해 위와 같이 변형하면 위의 식이 도출됩니다.
첫 번째 항은, Data reconstruction
두 번째 항은, KL divergence between prior, and samples from the encoder network
* KL divergence를 통해 인코더를 통과한 확률이, 가정한 정규분포에 가까워지도록 하기 위해 사용
세 번째 항은, KL divergence between encoder and posterior of decoder을 의미합니다.
하지만 세 번째 항은 계산이 불가능합니다. 다만 KL divergence는 차이를 나타내므로 0보다 크거나 같다는 사실은 알 수 있습니다. 이 말은 위 식에서 세 번째 항을 버리게 된다면,
보다 항상 작거나 같다는 등식이 성립합니다. 즉 lower bound on the data likelihood를 만들 수 있습니다.
최종적인 식은 위와 같습니다.
VAE는 lower bound를 최대화하는 방향으로 학습을 진행합니다. lower bound가 높아진다는 뜻은 점점 분포에 가까워짐을 의미하기 때문입니다.
참고한 사이트는 다음과 같습니다.
https://ratsgo.github.io/generative%20model/2017/12/17/compare/
https://angeloyeo.github.io/2020/10/27/KL_divergence.html
VAE를 가장 쉽게 설명해 주는 영상입니다.
https://www.youtube.com/watch?v=GbCAwVVKaHY&list=WL&index=6
'공부 정리 > Machine learning & Deep learning' 카테고리의 다른 글
[EECS 498-007 / 598-005] Lecture 20: Generative Models II (1) | 2023.02.22 |
---|---|
[EECS 498-007 / 598-005] Lecture 13: Attention (0) | 2023.02.09 |
[EECS 498-007 / 598-005] Lecture 12: Recurrent Neural Networks (0) | 2023.02.08 |
[EECS 498-007 / 598-005] Lecture 11: Training Neural Network (0) | 2023.02.01 |
[EECS 498-007 / 598-005] Lecture 8: CNN Architectures (0) | 2023.01.26 |