Variational Autoencoder
nonezerok@gmail.com
1
VAE
Variational Autoencoder
2
3
Autoencoder
𝑓1: 𝑥 → 𝑧 𝑓2: 𝑧 → 𝑥
encoder decoder
𝒙 𝒙
𝑧1
𝑧2
𝑧3
4
Autoencoder
𝑓1: 𝑥 → 𝑧 𝑓2: 𝑧 → 𝑥
encoder decoder
𝒙 𝒙
입력이 같으면,
출력도 같다.
deterministic function
non-deterministic하게 하고 싶다.
𝑧1
𝑧2
𝑧3
5
Autoencoder
𝑓1: 𝑥 → 𝑧 𝑓2: 𝑧′ → 𝑥
무작위로 바꾸자!
(주사위를 굴리자)
encoder decoder
𝒙 𝒙
𝑧1
𝑧2
𝑧3
6
credit: https://www.topbots.com/intuitively-understanding-variational-autoencoders/
확률 분포를 도입하자!
7
credit: https://www.topbots.com/intuitively-understanding-variational-autoencoders/
𝑝(𝑧)
8
credit: https://www.topbots.com/intuitively-understanding-variational-autoencoders/
𝑝(𝑧|𝑥)
𝑥
is given
𝑥가 주어지면 더 잘 하겠지
9
credit: https://www.topbots.com/intuitively-understanding-variational-autoencoders/
𝑝(𝑧|𝑥)
추출 = sampling
𝑧 ~ 𝑝 (𝑧|𝑥)
확률분포표, 확률분포함수
sample
𝑥
10
credit: https://www.topbots.com/intuitively-understanding-variational-autoencoders/
Variational Autoencoder (VAE)
이 분포(함수)를 알아내는 것은 너무 어려워!
이 함수에 대한 식 알아 낼 수 있어?
이건 쉽지!
꿩 대신 닭!
𝑝(𝑧|𝑥)
𝑞(𝑧|𝑥)
𝑥
11
𝜇, 𝜎
Gaussian (distribution) function
12
credit: https://www.topbots.com/intuitively-understanding-variational-autoencoders/
Variational Autoencoder (VAE)
𝑞(𝑧|𝑥)
𝑧~𝑞(𝑧|𝑥)
이렇게 되도록 Loss 함수를 정의하고,
Backpropagation으로 훈련을 시켜야 한다.
모든 화살표에 대한 미분이 가능해야 한다.
이 그림에서 미분이 안되는 화살표는?
𝑥
13
credit: https://www.topbots.com/intuitively-understanding-variational-autoencoders/
Variational Autoencoder (VAE)
𝑞(𝑧|𝑥)
𝑧~𝑞(𝑧|𝑥)
𝑓(𝑥) = 𝑤𝑥 + 𝑏
미분이 되려면,
곱하기, 더하기 꼴로 표현되어 있으면 된다.
𝜕𝑓(𝑥)
𝜕𝑤
= 𝑥,
𝜕𝑓(𝑥)
𝜕𝑏
= 1
추출 (sampling)에 대해서는
미분적용을 못한다.
𝑥
reparameterization trick
ො
𝑥
𝑝 𝑥|𝑧
𝑞 𝑧|𝑥
𝑥
14
𝜇1
𝜇2
𝜎1
𝜎2
Sampling 은 미분 불가능하므로
𝑧i ~𝑁 𝜇𝑖, 𝜎𝑖
2
𝑧i = 𝜇𝑖 + 𝜎𝑖 ∙ 𝜀 𝜀 ~ 𝑁 0,1
𝜇𝑖
𝜎𝑖
𝑧i
이것을 더하기 곱하기 식으로
표현하자! 𝜀~𝑁 0, 1
15
https://www.youtube.com/watch?v=rZufA635dq4
16
credit: https://www.topbots.com/intuitively-understanding-variational-autoencoders/
Variational Autoencoder (VAE)
목적:
q는 p와 최대한 유사하도록 신경망이 훈련되어져야 한다.
두 분포의 차이가 작아지도록 훈련
모르는 분포와의 차이를 어떻게 구해?
그래서, 이론이 필요
Bayesian Theorem(Rule), Information Theory
이건 쉽지!
𝑝(𝑧|𝑥)
𝑞(𝑧|𝑥)
우리가 원하는 목적대로 학습이 되도록 하려면,
손실함수를 어떻게 정해야 하나?
17
𝑝(𝑧|𝑥) 𝑞(𝑧|𝑥)
이런 모양인지 조차도 모르는 분포
모양은 이런데,
좌우 위치와 홀쭉인지 뚱뚱인지 아직 정해지지 않은 분포
이 둘의 차이는 어떻게 계산하나?
𝜇 𝜎
이 둘을 조정해서 왼쪽 분포와
그나마 유사하게 만들어 줄 수 있다.
KL divergence 라는 식이 있다.
(두 분포의 차이를 계산하는 식)
이 식은 엔트로피 항으로 이루어 진다.
엔트로피는 정보량의 평균이다.
정보량은 뉴스(확률사건)의 가치를 계산하는 식
KL divergence 식을 손실함수로 사용하면 된다!
선수지식
𝑝 𝑥, 𝑦 = 𝑝 𝑥 𝑝 𝑦|𝑥 = 𝑝 𝑦 𝑝(𝑥|𝑦)
𝑝 𝑥 = ෍
𝑦
𝑝 𝑥, 𝑦
𝐸 𝑋 = ෍
𝑥
𝑝 𝑥 𝑥 𝐸 𝑓 𝑋 = ෍
𝑥
𝑝 𝑥 𝑓 𝑥
18
𝐸𝑝(𝑥)[𝑋]
joint pdf, marginal pdf, conditional pdf
random variable, 𝑋
𝑝 𝑋 = 𝑥 , 𝑝𝑋 𝑥 , 𝑝(𝑥)
Bayes’ Rule
𝑝 𝑧|𝑥 =
𝑝 𝑥, 𝑧
𝑝 𝑥
=
𝑝 𝑥|𝑧 𝑝 𝑧
𝑝 𝑥
=
𝑝 𝑥|𝑧 𝑝 𝑧
σ𝑧 𝑝 𝑥, 𝑧
=
𝑝 𝑥|𝑧 𝑝 𝑧
σ𝑧 𝑝 𝑥|𝑧 𝑝 𝑧
19
𝑝 𝑥, 𝑧 = 𝑝 𝑥 𝑝 𝑧|𝑥
Bayesian Inference
𝑝 𝒛|𝑥 =
𝑝 𝑥|𝒛 𝑝 𝒛
𝑝 𝑥
posterior
likelihood prior
Posterior(사후확률) 구하기
20
관찰 값
다루기 쉬운 분포로 가정 ෍ ෍ ⋯ ෍ 𝑝 𝑥|𝒛 𝑝 𝒛
계산량이 너무 많다.
( 𝑚𝑛 )
𝑛 = 𝒛
𝑚
𝑝 𝑥 = ෍
𝒛
𝑝 𝑥|𝒛 𝑝 𝒛
=
c. f) classification 𝑝 𝒛|𝑥 ∝ 𝑝 𝑥|𝒛 𝑝 𝒛
관찰 데이터에 대한 분포 구할 수 있나?
intractable
Information, Entropy
21
𝐼 𝑥 = 𝑙𝑜𝑔
1
𝑝(𝑥)
𝐻 𝑋 = 𝐸 −𝑙𝑜𝑔𝑝 𝑋 = − ෍
𝑥
𝑝 𝑥 𝑙𝑜𝑔𝑝 𝑥
Expectation of Information
𝐻 𝑝(𝑋)
𝐾𝐿(𝑝| 𝑞 = − න 𝑝 𝑥 𝑙𝑜𝑔𝑞(𝑥)
𝑑𝑥 − − න 𝑝 𝑥 𝑙𝑜𝑔𝑝(𝑥)
𝑑𝑥 = − න 𝑝 𝑥 log
𝑞 𝑥
𝑝 𝑥
𝑑𝑥
𝑝(𝑥)에 대한
𝑝(𝑥)의 엔트로피
𝑝(𝑥)에 대한
𝑞(𝑥)의 엔트로피
22
𝑤𝑖𝑡ℎ 𝑟𝑒𝑠𝑝𝑒𝑐𝑡 𝑡𝑜
𝐾𝐿(𝑝| 𝑞 ≥ 0
𝐾𝐿(𝑝| 𝑞 ≠ 𝐾𝐿(𝑞| 𝑝
> 0
𝑝 𝑥 − 𝑞 𝑥 ≈
𝑞(𝑥)
𝑝(𝑥)
가중평균 구한 것
두 분포의 엔트로피가,
한 분포의 엔트로피 보다는 크겠지
엔트로피를 활용해 보자
KL-divergence
23
두 확률 분포의 어떤 차이
두 분포의 차이를 어떤 식으로 계산하면 좋을까?
credit: https://wiseodd.github.io/techblog/2016/12/21/forward-reverse-kl/
Variational Inference
𝑝 𝑧|𝑥
𝑞 𝑧|𝑥
구하기 어렵다.
꿩 대신 닭
변이
우리가 알고 있는 쉬운 분포; 정규분포로 대치하자.
𝑝 𝑧|𝑥 ≈ 𝑞 𝑧|𝑥
조건:
KL 최소화
min KL 𝑞 𝑧|𝑥 ||𝑝 𝑧|𝑥
24
Posterior 구하기
대체(변이) 사후확률 구함
𝑞 𝑧|𝑥
Reverse KL을 선호
VI : biased, low variance
MC: unbiased, high variance
𝐾𝐿 𝑞 𝑧|𝑥 ||𝑝 𝑧|𝑥 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑧|𝑥
𝑞 𝑧|𝑥
= − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑝 𝑥
𝑞 𝑧|𝑥
1
= − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑞 𝑧|𝑥
1
𝑝 𝑥
= − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑞 𝑧|𝑥
+ 𝑙𝑜𝑔
1
𝑝 𝑥
= − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑞 𝑧|𝑥
+ ෍
𝑧
𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥
= − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑞 𝑧|𝑥
+ 𝑙𝑜𝑔 𝑝 𝑥 ෍
𝑧
𝑞 𝑧|𝑥
= − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑞 𝑧|𝑥
+ 𝑙𝑜𝑔 𝑝 𝑥
1
𝑙𝑜𝑔 𝑝 𝑥 = 𝐾𝐿 𝑞 𝑧|𝑥 ||𝑝 𝑧|𝑥 + ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑞 𝑧|𝑥
𝑥 is given, then it is fixed
25
https://www.youtube.com/watch?v=uaaqyVS9-rM
𝑙𝑜𝑔 𝑝 𝑥 ≥
최소화
해야함
최대화
하면 된다.
꿩 대신 닭
≥ 0
෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑞 𝑧|𝑥
𝑥 in black: a random variable
𝑥 in gray: a fixed value of the random variable 𝑥
𝐾𝐿 𝑞 𝑧|𝑥 ||𝑝 𝑧|𝑥 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑧|𝑥
𝑞 𝑧|𝑥
= − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑝 𝑥
𝑞 𝑧|𝑥
1
= − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑞 𝑧|𝑥
1
𝑝 𝑥
= − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑞 𝑧|𝑥
+ 𝑙𝑜𝑔
1
𝑝 𝑥
= − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑞 𝑧|𝑥
+ ෍
𝑧
𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥
= − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑞 𝑧|𝑥
+ 𝑙𝑜𝑔 𝑝 𝑥 ෍
𝑧
𝑞 𝑧|𝑥
= − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑞 𝑧|𝑥
+ 𝑙𝑜𝑔 𝑝 𝑥
1
𝑙𝑜𝑔 𝑝 𝑥 = 𝐾𝐿 𝑞 𝑧|𝑥 ||𝑝 𝑧|𝑥 + ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑞 𝑧|𝑥
𝑥 is given, then it is fixed
26
https://www.youtube.com/watch?v=uaaqyVS9-rM
≥ 0
lower bound
𝑙𝑜𝑔 𝑝 𝑥 ≥
variational
최소화
해야함
최대화
하면 된다.
꿩 대신 닭
Log-Likelihood
크게 하는 것
𝑥 in black: a random variable
𝑥 in gray: a fixed value of the random variable 𝑥
෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥, 𝑧
𝑞 𝑧|𝑥
= ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑥|𝑧 𝑝 𝑧
𝑞 𝑧|𝑥
= ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥|𝑧 + 𝑙𝑜𝑔
𝑝 𝑧
𝑞 𝑧|𝑥
= ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥|𝑧 + ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔
𝑝 𝑧
𝑞 𝑧|𝑥
= 𝐸𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥|𝑧 − 𝐾𝐿 𝑞 𝑧|𝑥 ||𝑝 𝑧
27
Evidence Lower BOund (ELBO)
lower bound
𝑝 𝑧|𝑥 𝑝 𝑥
when 𝑥 is given
𝑙𝑜𝑔 𝑝 𝑥 ≥
Log-Likelihood
크게 하는 것
28
Z
X
𝑝(𝑥|𝑧) 𝑞(𝑧|𝑥)
𝑞 ∶ 𝑥 → 𝑧
𝑝 ∶ 𝑧 → 𝑥
𝑞(𝑧|𝑥)
𝑥
𝑧
𝑝(𝑥|𝑧) ො
𝑥
−𝐸𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥|𝑧 + 𝐾𝐿 𝑞 𝑧|𝑥 ||𝑝 𝑧
deterministic
function
= neural network
을 도입
그냥 신경망;
일반적인 복원 에러를 로스로 사용
Cross Entropy Loss
Loss for a given 𝑥:
≈ 𝑝(𝑧|𝑥)
29
𝑥 𝑞(𝑧|𝑥)
𝐾개
𝐾개
𝑧
𝜇𝑘, 𝜎𝑘
출력을 가우시안 분포의 파라미터로 간주
Loss Function 계산
෍ −𝐸𝑞 𝑧|𝑥𝑖
𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧 + 𝐾𝐿 𝑞 𝑧|𝑥𝑖 ||𝑝 𝑧
30
두 분포 모두 가우시안 가정
reconstruction term
regularizer term
베르누이 분포로 간주
෍ −𝐸𝑞 𝑧|𝑥𝑖
𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧 + 𝐾𝐿 𝑞 𝑧|𝑥𝑖 ||𝑝 𝑧
≈
1
𝐿
෍ 𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧𝑙
≈ 𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧1
= 𝑙𝑜𝑔 ෑ
𝑗=1
𝑁
𝑝 𝑥𝑖,𝑗|𝑧1
= ෍
𝑗=1
𝑁
𝑙𝑜𝑔 𝑝 𝑥𝑖,𝑗|𝑧1
= ෍
𝑗=1
𝑁
𝑙𝑜𝑔 𝑝𝑗
𝑥𝑖,𝑗
∙ 1 − 𝑝𝑗
1−𝑥𝑖,𝑗
= ෍
𝑗=1
𝑁
𝑥𝑖,𝑗𝑙𝑜𝑔 𝑝𝑗 + 1 − 𝑥𝑖,𝑗 𝑙𝑜𝑔 1 − 𝑝𝑗
Monte Carlo Sampling
경험적
31
network output
cross-entropy
network input (target)
N
𝑝𝑗
j번째 노드 출력이 1일 확률
가우시안 분포로 간주
෍ −𝐸𝑞 𝑧|𝑥𝑖
𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧 + 𝐾𝐿 𝑞 𝑧|𝑥𝑖 ||𝑝 𝑧
≈
1
𝐿
෍ 𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧𝑙
≈ 𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧1
= 𝑙𝑜𝑔 𝑁 𝜇𝑖, 𝜎𝑖
2
𝐼
= − ෍
𝑗=1
𝑁
1
2
𝑙𝑜𝑔 𝜎𝑖,𝑗
2
+
𝑥𝑖,𝑗 − 𝜇𝑖,𝑗
2
2𝜎𝑖,𝑗
2
Monte Carlo Sampling
32
𝑙𝑜𝑔 𝑁 𝜇𝑖, 𝜎2
𝐼
∝ − ෍
𝑗=1
𝑁
𝑥𝑖,𝑗 − 𝜇𝑖,𝑗
2
경험적
분산이 모두 같다고 가정
mean squared loss
N
𝜇𝑗
2N
𝜇𝑗
𝜎𝑗
?
KL regularizer term
33
𝐾𝐿 𝑁 𝑢𝑖, 𝜎𝑖
2
𝐼 ||𝑁 0, 𝐼
=
1
2
𝑡𝑟 𝜎𝑖
2
𝐼 + 𝜇𝑖
𝑇
𝜇𝑖 − 𝐾 − 𝑙𝑜𝑔 ෑ
𝑘=1
𝐾
𝜎𝑖,𝑘
2
=
1
2
෍
𝑘=1
𝐾
𝜎𝑖,𝑘
2
+ ෍
𝑘=1
𝐾
𝜇𝑖,𝑘
2
− ෍
𝑘=1
𝐾
1 − ෍
𝑘=1
𝐾
𝑙𝑜𝑔 𝜎𝑖,𝑘
2
=
1
2
෍
𝑘=1
𝐾
𝜎𝑖,𝑘
2
+ 𝜇𝑖,𝑘
2
− 𝑙𝑜𝑔 𝜎𝑖,𝑘
2
− 1
𝑥𝑖에 따라 달라지는 분포
초간단 분포
𝐾개
𝐾개
𝑞 𝑧|𝑥𝑖
covariance 0 가정,
𝑢𝑖 K개, 𝜎𝑖
2
K개
෍ −𝐸𝑞 𝑧|𝑥𝑖
𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧 + 𝐾𝐿 𝑞 𝑧|𝑥𝑖 ||𝑝 𝑧
=
1
2
෍
𝑘=1
𝐾
exp(log _𝜎𝑖,𝑘
2
) + 𝜇𝑖,𝑘
2
− log _𝜎𝑖,𝑘
2
− 1
구현에서는…
Loss for a given 𝑥𝑖
34
𝐿𝑖 𝜙, 𝜃, 𝑥𝑖 = − ෍
𝑗=1
𝑁
𝑥𝑖,𝑗𝑙𝑜𝑔 𝑥′𝑗 + 1 − 𝑥𝑖,𝑗 𝑙𝑜𝑔 1 − 𝑥′𝑗 +
1
2
෍
𝑘=1
𝐾
𝜎𝑖,𝑘
2
+ 𝜇𝑖,𝑘
2
− 𝑙𝑜𝑔 𝜎𝑖,𝑘
2
− 1
𝐿𝑖 𝜙, 𝜃, 𝑥𝑖 = ෍
𝑗=1
𝑁
1
2
𝑙𝑜𝑔 𝜎𝑖,𝑗
2
+
𝑥𝑖,𝑗 − 𝜇𝑖,𝑗
2
2𝜎𝑖,𝑗
2 +
1
2
෍
𝑘=1
𝐾
𝜎𝑖,𝑘
2
+ 𝜇𝑖,𝑘
2
− 𝑙𝑜𝑔 𝜎𝑖,𝑘
2
− 1
𝐿𝑖 𝜙, 𝜃, 𝑥𝑖 = ෍
𝑗=1
𝑁
𝑥𝑖,𝑗 − 𝜇𝑖,𝑗
2
+
1
2
෍
𝑘=1
𝐾
𝜎𝑖,𝑘
2
+ 𝜇𝑖,𝑘
2
− 𝑙𝑜𝑔 𝜎𝑖,𝑘
2
− 1
분산이 모두 같다고 가정
응용
35
36
https://www.youtube.com/watch?v=rZufA635dq4
37
https://www.youtube.com/watch?v=rZufA635dq4
38
https://www.youtube.com/watch?v=rZufA635dq4
39
https://www.youtube.com/watch?v=rZufA635dq4
40
https://www.youtube.com/watch?v=rZufA635dq4
41
https://www.youtube.com/watch?v=rZufA635dq4
42
https://www.youtube.com/watch?v=rZufA635dq4
43
https://www.youtube.com/watch?v=rZufA635dq4
44
https://www.youtube.com/watch?v=rZufA635dq4
45
https://www.youtube.com/watch?v=rZufA635dq4
추가 학습
46
• Conditional VAE
• 𝛽 −VAE
• Adversarial Autoencoder
• VQ-VAE
47
https://ijdykeman.github.io/ml/2016/12/21/cvae.html
48
https://ijdykeman.github.io/ml/2016/12/21/cvae.html
49
https://ijdykeman.github.io/ml/2016/12/21/cvae.html
50
https://ijdykeman.github.io/ml/2016/12/21/cvae.html
추가 학습
51
• Conditional VAE
• 𝜷 −VAE
• Adversarial Autoencoder
• VQ-VAE
52
https://www.youtube.com/watch?v=rZufA635dq4
53
https://www.youtube.com/watch?v=rZufA635dq4
54
https://www.youtube.com/watch?v=rZufA635dq4
55
https://www.youtube.com/watch?v=rZufA635dq4
56
Pose! + 𝜶
𝜷-VAE (ICLR 2017)
57
𝜷-VAE (ICLR 2017)
58
추가 학습
59
hidden code learns
to represent the style of the image
• Conditional VAE
• 𝛽 −VAE
• Adversarial Autoencoder
• VQ-VAE
https://arxiv.org/pdf/1511.05644.pdf
60
https://arxiv.org/pdf/1511.05644.pdf
추가 학습
61
• Conditional VAE
• 𝛽 −VAE
• Adversarial Autoencoder
• VQ-VAE
https://proceedings.neurips.cc/paper/2017/file/7a98af17e63a0ac09ce2e96d03992fbc-Paper.pdf
참고문헌
62
• Tutorial on Autoencoder, https://arxiv.org/pdf/1606.05908.pdf (2016)
• https://www.youtube.com/watch?v=uaaqyVS9-rM
• https://wiseodd.github.io/techblog/2016/12/10/variational-autoencoder/
• https://www.slideshare.net/NaverEngineering/ss-96581209

개념 이해가 쉬운 Variational Autoencoder (VAE)

  • 1.
  • 2.
  • 3.
    3 Autoencoder 𝑓1: 𝑥 →𝑧 𝑓2: 𝑧 → 𝑥 encoder decoder 𝒙 𝒙 𝑧1 𝑧2 𝑧3
  • 4.
    4 Autoencoder 𝑓1: 𝑥 →𝑧 𝑓2: 𝑧 → 𝑥 encoder decoder 𝒙 𝒙 입력이 같으면, 출력도 같다. deterministic function non-deterministic하게 하고 싶다. 𝑧1 𝑧2 𝑧3
  • 5.
    5 Autoencoder 𝑓1: 𝑥 →𝑧 𝑓2: 𝑧′ → 𝑥 무작위로 바꾸자! (주사위를 굴리자) encoder decoder 𝒙 𝒙 𝑧1 𝑧2 𝑧3
  • 6.
  • 7.
  • 8.
  • 9.
    9 credit: https://www.topbots.com/intuitively-understanding-variational-autoencoders/ 𝑝(𝑧|𝑥) 추출 =sampling 𝑧 ~ 𝑝 (𝑧|𝑥) 확률분포표, 확률분포함수 sample 𝑥
  • 10.
    10 credit: https://www.topbots.com/intuitively-understanding-variational-autoencoders/ Variational Autoencoder(VAE) 이 분포(함수)를 알아내는 것은 너무 어려워! 이 함수에 대한 식 알아 낼 수 있어? 이건 쉽지! 꿩 대신 닭! 𝑝(𝑧|𝑥) 𝑞(𝑧|𝑥) 𝑥
  • 11.
  • 12.
    12 credit: https://www.topbots.com/intuitively-understanding-variational-autoencoders/ Variational Autoencoder(VAE) 𝑞(𝑧|𝑥) 𝑧~𝑞(𝑧|𝑥) 이렇게 되도록 Loss 함수를 정의하고, Backpropagation으로 훈련을 시켜야 한다. 모든 화살표에 대한 미분이 가능해야 한다. 이 그림에서 미분이 안되는 화살표는? 𝑥
  • 13.
    13 credit: https://www.topbots.com/intuitively-understanding-variational-autoencoders/ Variational Autoencoder(VAE) 𝑞(𝑧|𝑥) 𝑧~𝑞(𝑧|𝑥) 𝑓(𝑥) = 𝑤𝑥 + 𝑏 미분이 되려면, 곱하기, 더하기 꼴로 표현되어 있으면 된다. 𝜕𝑓(𝑥) 𝜕𝑤 = 𝑥, 𝜕𝑓(𝑥) 𝜕𝑏 = 1 추출 (sampling)에 대해서는 미분적용을 못한다. 𝑥
  • 14.
    reparameterization trick ො 𝑥 𝑝 𝑥|𝑧 𝑞𝑧|𝑥 𝑥 14 𝜇1 𝜇2 𝜎1 𝜎2 Sampling 은 미분 불가능하므로 𝑧i ~𝑁 𝜇𝑖, 𝜎𝑖 2 𝑧i = 𝜇𝑖 + 𝜎𝑖 ∙ 𝜀 𝜀 ~ 𝑁 0,1 𝜇𝑖 𝜎𝑖 𝑧i 이것을 더하기 곱하기 식으로 표현하자! 𝜀~𝑁 0, 1
  • 15.
  • 16.
    16 credit: https://www.topbots.com/intuitively-understanding-variational-autoencoders/ Variational Autoencoder(VAE) 목적: q는 p와 최대한 유사하도록 신경망이 훈련되어져야 한다. 두 분포의 차이가 작아지도록 훈련 모르는 분포와의 차이를 어떻게 구해? 그래서, 이론이 필요 Bayesian Theorem(Rule), Information Theory 이건 쉽지! 𝑝(𝑧|𝑥) 𝑞(𝑧|𝑥) 우리가 원하는 목적대로 학습이 되도록 하려면, 손실함수를 어떻게 정해야 하나?
  • 17.
    17 𝑝(𝑧|𝑥) 𝑞(𝑧|𝑥) 이런 모양인지조차도 모르는 분포 모양은 이런데, 좌우 위치와 홀쭉인지 뚱뚱인지 아직 정해지지 않은 분포 이 둘의 차이는 어떻게 계산하나? 𝜇 𝜎 이 둘을 조정해서 왼쪽 분포와 그나마 유사하게 만들어 줄 수 있다. KL divergence 라는 식이 있다. (두 분포의 차이를 계산하는 식) 이 식은 엔트로피 항으로 이루어 진다. 엔트로피는 정보량의 평균이다. 정보량은 뉴스(확률사건)의 가치를 계산하는 식 KL divergence 식을 손실함수로 사용하면 된다!
  • 18.
    선수지식 𝑝 𝑥, 𝑦= 𝑝 𝑥 𝑝 𝑦|𝑥 = 𝑝 𝑦 𝑝(𝑥|𝑦) 𝑝 𝑥 = ෍ 𝑦 𝑝 𝑥, 𝑦 𝐸 𝑋 = ෍ 𝑥 𝑝 𝑥 𝑥 𝐸 𝑓 𝑋 = ෍ 𝑥 𝑝 𝑥 𝑓 𝑥 18 𝐸𝑝(𝑥)[𝑋] joint pdf, marginal pdf, conditional pdf random variable, 𝑋 𝑝 𝑋 = 𝑥 , 𝑝𝑋 𝑥 , 𝑝(𝑥)
  • 19.
    Bayes’ Rule 𝑝 𝑧|𝑥= 𝑝 𝑥, 𝑧 𝑝 𝑥 = 𝑝 𝑥|𝑧 𝑝 𝑧 𝑝 𝑥 = 𝑝 𝑥|𝑧 𝑝 𝑧 σ𝑧 𝑝 𝑥, 𝑧 = 𝑝 𝑥|𝑧 𝑝 𝑧 σ𝑧 𝑝 𝑥|𝑧 𝑝 𝑧 19 𝑝 𝑥, 𝑧 = 𝑝 𝑥 𝑝 𝑧|𝑥
  • 20.
    Bayesian Inference 𝑝 𝒛|𝑥= 𝑝 𝑥|𝒛 𝑝 𝒛 𝑝 𝑥 posterior likelihood prior Posterior(사후확률) 구하기 20 관찰 값 다루기 쉬운 분포로 가정 ෍ ෍ ⋯ ෍ 𝑝 𝑥|𝒛 𝑝 𝒛 계산량이 너무 많다. ( 𝑚𝑛 ) 𝑛 = 𝒛 𝑚 𝑝 𝑥 = ෍ 𝒛 𝑝 𝑥|𝒛 𝑝 𝒛 = c. f) classification 𝑝 𝒛|𝑥 ∝ 𝑝 𝑥|𝒛 𝑝 𝒛 관찰 데이터에 대한 분포 구할 수 있나? intractable
  • 21.
    Information, Entropy 21 𝐼 𝑥= 𝑙𝑜𝑔 1 𝑝(𝑥) 𝐻 𝑋 = 𝐸 −𝑙𝑜𝑔𝑝 𝑋 = − ෍ 𝑥 𝑝 𝑥 𝑙𝑜𝑔𝑝 𝑥 Expectation of Information 𝐻 𝑝(𝑋)
  • 22.
    𝐾𝐿(𝑝| 𝑞 =− න 𝑝 𝑥 𝑙𝑜𝑔𝑞(𝑥) 𝑑𝑥 − − න 𝑝 𝑥 𝑙𝑜𝑔𝑝(𝑥) 𝑑𝑥 = − න 𝑝 𝑥 log 𝑞 𝑥 𝑝 𝑥 𝑑𝑥 𝑝(𝑥)에 대한 𝑝(𝑥)의 엔트로피 𝑝(𝑥)에 대한 𝑞(𝑥)의 엔트로피 22 𝑤𝑖𝑡ℎ 𝑟𝑒𝑠𝑝𝑒𝑐𝑡 𝑡𝑜 𝐾𝐿(𝑝| 𝑞 ≥ 0 𝐾𝐿(𝑝| 𝑞 ≠ 𝐾𝐿(𝑞| 𝑝 > 0 𝑝 𝑥 − 𝑞 𝑥 ≈ 𝑞(𝑥) 𝑝(𝑥) 가중평균 구한 것 두 분포의 엔트로피가, 한 분포의 엔트로피 보다는 크겠지 엔트로피를 활용해 보자
  • 23.
    KL-divergence 23 두 확률 분포의어떤 차이 두 분포의 차이를 어떤 식으로 계산하면 좋을까? credit: https://wiseodd.github.io/techblog/2016/12/21/forward-reverse-kl/
  • 24.
    Variational Inference 𝑝 𝑧|𝑥 𝑞𝑧|𝑥 구하기 어렵다. 꿩 대신 닭 변이 우리가 알고 있는 쉬운 분포; 정규분포로 대치하자. 𝑝 𝑧|𝑥 ≈ 𝑞 𝑧|𝑥 조건: KL 최소화 min KL 𝑞 𝑧|𝑥 ||𝑝 𝑧|𝑥 24 Posterior 구하기 대체(변이) 사후확률 구함 𝑞 𝑧|𝑥 Reverse KL을 선호 VI : biased, low variance MC: unbiased, high variance
  • 25.
    𝐾𝐿 𝑞 𝑧|𝑥||𝑝 𝑧|𝑥 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑧|𝑥 𝑞 𝑧|𝑥 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑝 𝑥 𝑞 𝑧|𝑥 1 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑞 𝑧|𝑥 1 𝑝 𝑥 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑞 𝑧|𝑥 + 𝑙𝑜𝑔 1 𝑝 𝑥 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑞 𝑧|𝑥 + ෍ 𝑧 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑞 𝑧|𝑥 + 𝑙𝑜𝑔 𝑝 𝑥 ෍ 𝑧 𝑞 𝑧|𝑥 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑞 𝑧|𝑥 + 𝑙𝑜𝑔 𝑝 𝑥 1 𝑙𝑜𝑔 𝑝 𝑥 = 𝐾𝐿 𝑞 𝑧|𝑥 ||𝑝 𝑧|𝑥 + ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑞 𝑧|𝑥 𝑥 is given, then it is fixed 25 https://www.youtube.com/watch?v=uaaqyVS9-rM 𝑙𝑜𝑔 𝑝 𝑥 ≥ 최소화 해야함 최대화 하면 된다. 꿩 대신 닭 ≥ 0 ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑞 𝑧|𝑥 𝑥 in black: a random variable 𝑥 in gray: a fixed value of the random variable 𝑥
  • 26.
    𝐾𝐿 𝑞 𝑧|𝑥||𝑝 𝑧|𝑥 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑧|𝑥 𝑞 𝑧|𝑥 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑝 𝑥 𝑞 𝑧|𝑥 1 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑞 𝑧|𝑥 1 𝑝 𝑥 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑞 𝑧|𝑥 + 𝑙𝑜𝑔 1 𝑝 𝑥 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑞 𝑧|𝑥 + ෍ 𝑧 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑞 𝑧|𝑥 + 𝑙𝑜𝑔 𝑝 𝑥 ෍ 𝑧 𝑞 𝑧|𝑥 = − ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑞 𝑧|𝑥 + 𝑙𝑜𝑔 𝑝 𝑥 1 𝑙𝑜𝑔 𝑝 𝑥 = 𝐾𝐿 𝑞 𝑧|𝑥 ||𝑝 𝑧|𝑥 + ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑞 𝑧|𝑥 𝑥 is given, then it is fixed 26 https://www.youtube.com/watch?v=uaaqyVS9-rM ≥ 0 lower bound 𝑙𝑜𝑔 𝑝 𝑥 ≥ variational 최소화 해야함 최대화 하면 된다. 꿩 대신 닭 Log-Likelihood 크게 하는 것 𝑥 in black: a random variable 𝑥 in gray: a fixed value of the random variable 𝑥
  • 27.
    ෍ 𝑞 𝑧|𝑥𝑙𝑜𝑔 𝑝 𝑥, 𝑧 𝑞 𝑧|𝑥 = ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥|𝑧 𝑝 𝑧 𝑞 𝑧|𝑥 = ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥|𝑧 + 𝑙𝑜𝑔 𝑝 𝑧 𝑞 𝑧|𝑥 = ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥|𝑧 + ෍ 𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑧 𝑞 𝑧|𝑥 = 𝐸𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥|𝑧 − 𝐾𝐿 𝑞 𝑧|𝑥 ||𝑝 𝑧 27 Evidence Lower BOund (ELBO) lower bound 𝑝 𝑧|𝑥 𝑝 𝑥 when 𝑥 is given 𝑙𝑜𝑔 𝑝 𝑥 ≥ Log-Likelihood 크게 하는 것
  • 28.
    28 Z X 𝑝(𝑥|𝑧) 𝑞(𝑧|𝑥) 𝑞 ∶𝑥 → 𝑧 𝑝 ∶ 𝑧 → 𝑥 𝑞(𝑧|𝑥) 𝑥 𝑧 𝑝(𝑥|𝑧) ො 𝑥 −𝐸𝑞 𝑧|𝑥 𝑙𝑜𝑔 𝑝 𝑥|𝑧 + 𝐾𝐿 𝑞 𝑧|𝑥 ||𝑝 𝑧 deterministic function = neural network 을 도입 그냥 신경망; 일반적인 복원 에러를 로스로 사용 Cross Entropy Loss Loss for a given 𝑥: ≈ 𝑝(𝑧|𝑥)
  • 29.
  • 30.
    Loss Function 계산 ෍−𝐸𝑞 𝑧|𝑥𝑖 𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧 + 𝐾𝐿 𝑞 𝑧|𝑥𝑖 ||𝑝 𝑧 30 두 분포 모두 가우시안 가정 reconstruction term regularizer term
  • 31.
    베르누이 분포로 간주 ෍−𝐸𝑞 𝑧|𝑥𝑖 𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧 + 𝐾𝐿 𝑞 𝑧|𝑥𝑖 ||𝑝 𝑧 ≈ 1 𝐿 ෍ 𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧𝑙 ≈ 𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧1 = 𝑙𝑜𝑔 ෑ 𝑗=1 𝑁 𝑝 𝑥𝑖,𝑗|𝑧1 = ෍ 𝑗=1 𝑁 𝑙𝑜𝑔 𝑝 𝑥𝑖,𝑗|𝑧1 = ෍ 𝑗=1 𝑁 𝑙𝑜𝑔 𝑝𝑗 𝑥𝑖,𝑗 ∙ 1 − 𝑝𝑗 1−𝑥𝑖,𝑗 = ෍ 𝑗=1 𝑁 𝑥𝑖,𝑗𝑙𝑜𝑔 𝑝𝑗 + 1 − 𝑥𝑖,𝑗 𝑙𝑜𝑔 1 − 𝑝𝑗 Monte Carlo Sampling 경험적 31 network output cross-entropy network input (target) N 𝑝𝑗 j번째 노드 출력이 1일 확률
  • 32.
    가우시안 분포로 간주 ෍−𝐸𝑞 𝑧|𝑥𝑖 𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧 + 𝐾𝐿 𝑞 𝑧|𝑥𝑖 ||𝑝 𝑧 ≈ 1 𝐿 ෍ 𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧𝑙 ≈ 𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧1 = 𝑙𝑜𝑔 𝑁 𝜇𝑖, 𝜎𝑖 2 𝐼 = − ෍ 𝑗=1 𝑁 1 2 𝑙𝑜𝑔 𝜎𝑖,𝑗 2 + 𝑥𝑖,𝑗 − 𝜇𝑖,𝑗 2 2𝜎𝑖,𝑗 2 Monte Carlo Sampling 32 𝑙𝑜𝑔 𝑁 𝜇𝑖, 𝜎2 𝐼 ∝ − ෍ 𝑗=1 𝑁 𝑥𝑖,𝑗 − 𝜇𝑖,𝑗 2 경험적 분산이 모두 같다고 가정 mean squared loss N 𝜇𝑗 2N 𝜇𝑗 𝜎𝑗 ?
  • 33.
    KL regularizer term 33 𝐾𝐿𝑁 𝑢𝑖, 𝜎𝑖 2 𝐼 ||𝑁 0, 𝐼 = 1 2 𝑡𝑟 𝜎𝑖 2 𝐼 + 𝜇𝑖 𝑇 𝜇𝑖 − 𝐾 − 𝑙𝑜𝑔 ෑ 𝑘=1 𝐾 𝜎𝑖,𝑘 2 = 1 2 ෍ 𝑘=1 𝐾 𝜎𝑖,𝑘 2 + ෍ 𝑘=1 𝐾 𝜇𝑖,𝑘 2 − ෍ 𝑘=1 𝐾 1 − ෍ 𝑘=1 𝐾 𝑙𝑜𝑔 𝜎𝑖,𝑘 2 = 1 2 ෍ 𝑘=1 𝐾 𝜎𝑖,𝑘 2 + 𝜇𝑖,𝑘 2 − 𝑙𝑜𝑔 𝜎𝑖,𝑘 2 − 1 𝑥𝑖에 따라 달라지는 분포 초간단 분포 𝐾개 𝐾개 𝑞 𝑧|𝑥𝑖 covariance 0 가정, 𝑢𝑖 K개, 𝜎𝑖 2 K개 ෍ −𝐸𝑞 𝑧|𝑥𝑖 𝑙𝑜𝑔 𝑝 𝑥𝑖|𝑧 + 𝐾𝐿 𝑞 𝑧|𝑥𝑖 ||𝑝 𝑧 = 1 2 ෍ 𝑘=1 𝐾 exp(log _𝜎𝑖,𝑘 2 ) + 𝜇𝑖,𝑘 2 − log _𝜎𝑖,𝑘 2 − 1 구현에서는…
  • 34.
    Loss for agiven 𝑥𝑖 34 𝐿𝑖 𝜙, 𝜃, 𝑥𝑖 = − ෍ 𝑗=1 𝑁 𝑥𝑖,𝑗𝑙𝑜𝑔 𝑥′𝑗 + 1 − 𝑥𝑖,𝑗 𝑙𝑜𝑔 1 − 𝑥′𝑗 + 1 2 ෍ 𝑘=1 𝐾 𝜎𝑖,𝑘 2 + 𝜇𝑖,𝑘 2 − 𝑙𝑜𝑔 𝜎𝑖,𝑘 2 − 1 𝐿𝑖 𝜙, 𝜃, 𝑥𝑖 = ෍ 𝑗=1 𝑁 1 2 𝑙𝑜𝑔 𝜎𝑖,𝑗 2 + 𝑥𝑖,𝑗 − 𝜇𝑖,𝑗 2 2𝜎𝑖,𝑗 2 + 1 2 ෍ 𝑘=1 𝐾 𝜎𝑖,𝑘 2 + 𝜇𝑖,𝑘 2 − 𝑙𝑜𝑔 𝜎𝑖,𝑘 2 − 1 𝐿𝑖 𝜙, 𝜃, 𝑥𝑖 = ෍ 𝑗=1 𝑁 𝑥𝑖,𝑗 − 𝜇𝑖,𝑗 2 + 1 2 ෍ 𝑘=1 𝐾 𝜎𝑖,𝑘 2 + 𝜇𝑖,𝑘 2 − 𝑙𝑜𝑔 𝜎𝑖,𝑘 2 − 1 분산이 모두 같다고 가정
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
    추가 학습 46 • ConditionalVAE • 𝛽 −VAE • Adversarial Autoencoder • VQ-VAE
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
    추가 학습 51 • ConditionalVAE • 𝜷 −VAE • Adversarial Autoencoder • VQ-VAE
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
    추가 학습 59 hidden codelearns to represent the style of the image • Conditional VAE • 𝛽 −VAE • Adversarial Autoencoder • VQ-VAE https://arxiv.org/pdf/1511.05644.pdf
  • 60.
  • 61.
    추가 학습 61 • ConditionalVAE • 𝛽 −VAE • Adversarial Autoencoder • VQ-VAE https://proceedings.neurips.cc/paper/2017/file/7a98af17e63a0ac09ce2e96d03992fbc-Paper.pdf
  • 62.
    참고문헌 62 • Tutorial onAutoencoder, https://arxiv.org/pdf/1606.05908.pdf (2016) • https://www.youtube.com/watch?v=uaaqyVS9-rM • https://wiseodd.github.io/techblog/2016/12/10/variational-autoencoder/ • https://www.slideshare.net/NaverEngineering/ss-96581209