VAE의 매개 변수화 트릭은 어떻게 작동하며 왜 중요합니까?


57

VAE (variational autoencoders) 의 매개 변수화 트릭 은 어떻게 작동합니까? 기본 수학을 단순화하지 않고 직관적이고 쉬운 설명이 있습니까? 그리고 왜 '트릭'이 필요한가?


5
답의 한 부분은 모든 정규 분포가 정규 (1, 0)의 스케일 및 변환 된 버전임을 알 수 있습니다. Normal (mu, sigma)에서 그리려면 Normal (1, 0)에서 sigma (scale)를 곱하고 mu (translate)를 더할 수 있습니다.
monk

@monk : (1,0) 대신 Normal (0,1)이어야합니다. 그렇지 않으면 곱하고 시프트하면 완전히 사라질 것입니다!
Rika

@Breeze Ha! 예, 물론 감사합니다.
스님

답변:


57

Kingma의 NIPS 2015 워크숍 슬라이드를 읽은 후 임의 노드를 통해 역 전파하기 위해서는 매개 변수화 트릭이 필요하다는 것을 깨달았습니다.

직관적으로, VAE는 원래 형태로 임의의 노드 에서 샘플링하며, 이는 실제 후방 의 파라 메트릭 모델 에 의해 근사됩니다 . 백프로 프는 임의 노드를 통해 흐를 수 없습니다.q ( z ϕ , x )(ϕ,엑스)

새로운 매개 변수 도입 하면 백프로 프가 결정적 노드를 통해 흐를 수있는 방식으로 를 다시 매개 변수화 할 수 있습니다.zϵ

독창적이고 재 매개 변수화 된 양식


3
지금 결정 론적입니까?
가져 오기

2
그것은 아니지만, 그것은 "난수의 발생원"아니다 -이 역할에 의해 점령 된 . ϵ
quant_dev

이 방법은 2014 년 전에 여러 차례 제안되었습니다 : blog.shakirm.com/2015/10/…
quant_dev

2
매우 간단하고 직관적입니다! 좋은 답변입니다!
Serhiy

2
불행히도 그렇지 않습니다. 원본 형식은 여전히 ​​역 확산이 가능하지만 분산이 더 높습니다. 자세한 내용은 내 게시물 에서 찾을 수 있습니다 .
JP Zhang

56

θ , 특히 q θ ( x ) = N ( θ , 1 )으로 모수 된 정규 분포 가 있다고 가정합니다 . 우리는 아래의 문제 min θ 를 해결하고 싶습니다. θθ(엑스)=(θ,1) 물론 이것은 다소 어리석은 문제이며 최적의 θ 는 분명합니다. 그러나 여기에서 우리는 단지 변수화 트릭이 목표의 기울기를 계산하는 데 도움이 방법을 이해하려면 E의 Q의 [ X 2 ] .

θ이자형[엑스2]
θ이자형[엑스2]

계산하는 한 가지 방법 다음과 같다 θ의 E에서 Q [ X 2 ] = θQ의 θ ( X ) (X) 2 (D) X = X 2 θ 의 Q θ ( X ) 의 Q θ를 ( x )θ이자형[엑스2]

θ이자형[엑스2]=θθ(엑스)엑스2엑스=엑스2θθ(엑스)θ(엑스)θ(엑스)엑스=θ(엑스)θ로그θ(엑스)엑스2엑스=이자형[엑스2θ로그θ(엑스)]

이 예를 들어 여기서 이 방법이 제공 θ의 E에서 Q [ X 2 ] = E에서 Q [ X (2) ( X - θ가 ) ]qθ(x)=N(θ,1)

θEq[x2]=Eq[x2(xθ)]

재 모수화 트릭은 기울기를 취하는 분포가 모수 무관하도록 기대치를 다시 작성하는 방법 입니다. 이를 달성하기 위해 q 의 확률 론적 요소 를 θ와 독립적으로 만들어야합니다 . 따라서, 우리가 쓰기 X를 같이 X = θ + ε ,θqθx 그 다음, 우리가 쓸 수 E를 Q [ X 2 ] = E의 P는 [ ( θ +를 ε ) 2 ] 여기서, p는 의 분포 ε , 즉, N ( 0 , 1 ) . 이제 우리의 유도체 쓸 수 E에서 Q를 [ X는 2 ] 로 다음 θ의 E에서 Q [ X 2 ] =를

x=θ+ϵ,ϵN(0,1)
Eq[x2]=Ep[(θ+ϵ)2]
pϵ(0,1)이자형[엑스2]
θ이자형[엑스2]=θ이자형[(θ+ϵ)2]=이자형[2(θ+ϵ)]

다음은 그라디언트를 계산하는 두 가지 방법의 차이를 살펴본 필자가 작성한 IPython 노트북입니다. http://nbviewer.jupyter.org/github/gokererdogan/Notebooks/blob/master/Reparameterization%20Trick.ipynb


4
첫 번째 방정식의 "명백한"세타는 무엇입니까?
gwg

2
그것을 보는 한 가지 방법은 E [x ^ 2] = E [x] ^ 2 + Var (x)이며,이 경우 theta ^ 2 + 1입니다. 따라서 theta = 0은이 목표를 최소화합니다.
goker

그렇다면 문제에 전적으로 달려 있습니까? 예를 들어 min_ \ theta E_q [| x | ^ (1/4)] 완전히 다를 수 있습니까?
앤 반 로섬

무엇이 문제에 달려 있습니까? 최적의 세타? 그렇다면, 그것은 확실히 문제에 달려 있습니다.
goker

θ이자형[엑스2]=이자형[엑스2(엑스θ)θ(엑스)]θ이자형[엑스2]=이자형[엑스2(엑스θ)]

17

"재 매개 변수화 트릭"의 수학의 합리적인 예는 goker의 답변에 나와 있지만 일부 동기 부여가 도움이 될 수 있습니다. (나는 그 답변에 대해 의견을 말할 권한이 없으므로 여기에 별도의 답변이 있습니다.)

θ

θ=θ이자형엑스θ[]

이자형엑스θ[θ이자형에스(엑스)]

θ이자형에스(엑스)=1θ(엑스)θθ(엑스)=θ로그(θ(엑스))

엑스θθ이자형에스θθ

θ이자형에스θ

θ엑스엑스θ(엑스)1θ(엑스)엑스θθθ이자형에스엑스θθ이는 최적 (예를 들어, 임의로 선택된 초기 값)과는 거리가 멀다. 마치 키를 떨어 뜨린 곳이 아니라 가로등 근처에서 키를 찾는 사람의 이야기와 비슷합니다.

엑스ϵθθ

θ=θ이자형ϵ[제이(θ,ϵ)]=이자형ϵ[θ제이(θ,ϵ)]
제이(θ,ϵ)

θ제이(θ,ϵ)ϵθ

θ제이(θ,ϵ)θθϵϵ제이

도움이 되길 바랍니다.


"1 / qθ (x)의 요인은이를 설명하기 위해 추정치를 확대하지만 x 값이 표시되지 않으면 해당 스케일링이 도움이되지 않습니다." 더 설명해 주시겠습니까?
czxttkl

θ엑스엑스θ이자형에스(엑스)1/θ

10

먼저 VAE에서 매개 변수화 트릭이 필요한 이유를 설명하겠습니다.

VAE에는 인코더와 디코더가 있습니다. 디코더는 실제 후방 Z ~ q (z∣ϕ, x) 에서 무작위로 샘플링합니다 . 신경망으로 인코더와 디코더를 구현하려면 랜덤 샘플링을 통해 백프로 포지션해야하며 이는 백프로 포지션이 랜덤 노드를 통해 흐를 수 없기 때문에 문제입니다. 이 장애물을 극복하기 위해 우리는 매개 변수화 트릭을 사용합니다.

이제 속임수를 쓰자. 우리의 후부는 정규 분포이므로 다른 정규 분포와 근사 할 수 있습니다. 정규 분포 ε로 Z 를 추정 합니다.

여기에 이미지 설명을 입력하십시오

그러나 이것이 어떻게 관련이 있습니까?

대신에 그 말을 지금 Z를 에서 샘플링 (z|φ, 배) Q , 우리가 말할 수있는 Z는 매개 변수를 함수 (ε (μ는, L)) 이러한 μ는, L은 위 신경망 (인코더)에서 유래 . 따라서 역전 파는 우리가 필요로하는 부분 유도체 wrt µ, Lε 은 유도체를 취하는 것과 관련이 없습니다.

여기에 이미지 설명을 입력하십시오


이 개념을 이해하기위한 최고의 비디오. 더 나은 이해를 위해 완전한 비디오를 보는 것이 좋지만 매개 변수화 트릭 만 이해하려면 8 분부터 시청하십시오. youtube.com/channel/UCNIkB2IeJ-6AmZv7bQ1oBYg
Sherlock

9

나는 확률 적 그래픽 모델에 대한 스탠포드 CS228 과정에서 발견 된 설명이 매우 좋다고 생각했다. https://ermongroup.github.io/cs228-notes/extras/vae/ 에서 찾을 수 있습니다.

편의 / 나 자신의 이해를 위해 여기에서 중요한 부분을 요약 / 복사했습니다 (원래 링크를 확인하는 것이 좋습니다).

ϕ이자형(|엑스)[에프(엑스,)]

점수 함수 추정기에 익숙한 경우 (REINFORCE는이 경우의 특별한 경우라고 생각합니다), 이것이 그들이 해결하는 문제와 거의 비슷하다는 것을 알 수 있습니다. 그러나 점수 함수 추정기는 분산이 높기 때문에 모델 학습에 많은 시간이 소요됩니다.

ϕ(|엑스)

ϵ(ϵ)ϕ(ϵ,엑스)ϕ

예를 들어, 우리가 샘플링 한 매우 간단한 q를 사용합시다.

μ,σ=(μ,σ)
=μ,σ(ϵ)=μ+ϵσ
ϵ(0,1)

(ϵ)

ϕ이자형(|엑스)[에프(엑스,)]=이자형ϵ(ϵ)[ϕ에프(엑스,(ϵ,엑스))]

이것은 사소한 이유로 imo에 대한 분산이 적습니다. 설명은 부록의 D 부분을 확인하십시오. https://arxiv.org/pdf/1401.4082.pdf


안녕, 왜 구현에서 std를 2로 나눕니 까? (즉, 매개 변수화에서 std = torch.exp (z_var / 2))?
Rika

4

확률 모델이 있습니다. 그리고 모델의 매개 변수를 복구하려고합니다. VLB (variational lower bound)를 최적화하는 작업을 줄입니다. 이를 위해 우리는 두 가지를 만들 수 있어야합니다.

  • VLB를 계산
  • VLB의 구배를 얻다

저자는 Monte Carlo Estimator를 둘 다 사용하는 것이 좋습니다. 그리고 실제로 그들은이 트릭을 도입하여 VLB의보다 정확한 Monte Carlo Gradient Estimator를 얻습니다.

수치 적 방법의 개선 일뿐입니다.


2

재 파라미터 화 트릭은 그래디언트에 대한 MC 추정기의 분산을 크게 줄입니다. 따라서 분산 감소 기술입니다.

ϕ이자형((나는)엑스(나는);ϕ)[로그(엑스(나는)(나는),)]

ϕ이자형((나는)엑스(나는);ϕ)[로그(엑스(나는)(나는),)]=이자형((나는)엑스(나는);ϕ)[로그(엑스(나는)(나는),)ϕ로그ϕ()]
(엑스(나는)(나는),)로그(엑스(나는)(나는),)매우 크고 값 자체는 음수입니다. 그래서 우리는 높은 분산을 가질 것입니다.

재 파라미터 화 (나는)=(ϵ(나는),엑스(나는),ϕ)

ϕ이자형((나는)엑스(나는);ϕ)[로그(엑스(나는)(나는),)]=이자형(ϵ(나는))[ϕ로그(엑스(나는)(ϵ(나는),엑스(나는),ϕ),)]

(ϵ(나는))(ϵ(나는))ϕ

(나는)(나는)=(ϵ(나는),엑스(나는),ϕ)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.