VAE (variational autoencoders) 의 매개 변수화 트릭 은 어떻게 작동합니까? 기본 수학을 단순화하지 않고 직관적이고 쉬운 설명이 있습니까? 그리고 왜 '트릭'이 필요한가?
VAE (variational autoencoders) 의 매개 변수화 트릭 은 어떻게 작동합니까? 기본 수학을 단순화하지 않고 직관적이고 쉬운 설명이 있습니까? 그리고 왜 '트릭'이 필요한가?
답변:
Kingma의 NIPS 2015 워크숍 슬라이드를 읽은 후 임의 노드를 통해 역 전파하기 위해서는 매개 변수화 트릭이 필요하다는 것을 깨달았습니다.
직관적으로, VAE는 원래 형태로 임의의 노드 에서 샘플링하며, 이는 실제 후방 의 파라 메트릭 모델 에 의해 근사됩니다 . 백프로 프는 임의 노드를 통해 흐를 수 없습니다.q ( z ∣ ϕ , x )
새로운 매개 변수 도입 하면 백프로 프가 결정적 노드를 통해 흐를 수있는 방식으로 를 다시 매개 변수화 할 수 있습니다.z
θ , 특히 q θ ( x ) = N ( θ , 1 )으로 모수 된 정규 분포 가 있다고 가정합니다 . 우리는 아래의 문제 min θ 를 해결하고 싶습니다. 물론 이것은 다소 어리석은 문제이며 최적의 θ 는 분명합니다. 그러나 여기에서 우리는 단지 변수화 트릭이 목표의 기울기를 계산하는 데 도움이 방법을 이해하려면 E의 Q의 [ X 2 ] .
계산하는 한 가지 방법 다음과 같다 ∇ θ의 E에서 Q [ X 2 ] = ∇ θ ∫ Q의 θ ( X ) (X) 2 (D) X = ∫ X 2 ∇ θ 의 Q θ ( X ) 의 Q θ를 ( x )
이 예를 들어 여기서 이 방법이 제공 ∇ θ의 E에서 Q [ X 2 ] = E에서 Q [ X (2) ( X - θ가 ) ]
재 모수화 트릭은 기울기를 취하는 분포가 모수 무관하도록 기대치를 다시 작성하는 방법 입니다. 이를 달성하기 위해 q 의 확률 론적 요소 를 θ와 독립적으로 만들어야합니다 . 따라서, 우리가 쓰기 X를 같이 X = θ + ε , 그 다음, 우리가 쓸 수 E를 Q [ X 2 ] = E의 P는 [ ( θ +를 ε ) 2 ] 여기서, p는 의 분포 ε , 즉, N ( 0 , 1 ) . 이제 우리의 유도체 쓸 수 E에서 Q를 [ X는 2 ] 로 다음 ∇ θ의 E에서 Q [ X 2 ] =를
다음은 그라디언트를 계산하는 두 가지 방법의 차이를 살펴본 필자가 작성한 IPython 노트북입니다. http://nbviewer.jupyter.org/github/gokererdogan/Notebooks/blob/master/Reparameterization%20Trick.ipynb
"재 매개 변수화 트릭"의 수학의 합리적인 예는 goker의 답변에 나와 있지만 일부 동기 부여가 도움이 될 수 있습니다. (나는 그 답변에 대해 의견을 말할 권한이 없으므로 여기에 별도의 답변이 있습니다.)
이는 최적 (예를 들어, 임의로 선택된 초기 값)과는 거리가 멀다. 마치 키를 떨어 뜨린 곳이 아니라 가로등 근처에서 키를 찾는 사람의 이야기와 비슷합니다.
도움이 되길 바랍니다.
먼저 VAE에서 매개 변수화 트릭이 필요한 이유를 설명하겠습니다.
VAE에는 인코더와 디코더가 있습니다. 디코더는 실제 후방 Z ~ q (z∣ϕ, x) 에서 무작위로 샘플링합니다 . 신경망으로 인코더와 디코더를 구현하려면 랜덤 샘플링을 통해 백프로 포지션해야하며 이는 백프로 포지션이 랜덤 노드를 통해 흐를 수 없기 때문에 문제입니다. 이 장애물을 극복하기 위해 우리는 매개 변수화 트릭을 사용합니다.
이제 속임수를 쓰자. 우리의 후부는 정규 분포이므로 다른 정규 분포와 근사 할 수 있습니다. 정규 분포 ε로 Z 를 추정 합니다.
그러나 이것이 어떻게 관련이 있습니까?
대신에 그 말을 지금 Z를 에서 샘플링 (z|φ, 배) Q , 우리가 말할 수있는 Z는 매개 변수를 함수 (ε (μ는, L)) 이러한 μ는, L은 위 신경망 (인코더)에서 유래 . 따라서 역전 파는 우리가 필요로하는 부분 유도체 wrt µ, L 및 ε 은 유도체를 취하는 것과 관련이 없습니다.
나는 확률 적 그래픽 모델에 대한 스탠포드 CS228 과정에서 발견 된 설명이 매우 좋다고 생각했다. https://ermongroup.github.io/cs228-notes/extras/vae/ 에서 찾을 수 있습니다.
편의 / 나 자신의 이해를 위해 여기에서 중요한 부분을 요약 / 복사했습니다 (원래 링크를 확인하는 것이 좋습니다).
점수 함수 추정기에 익숙한 경우 (REINFORCE는이 경우의 특별한 경우라고 생각합니다), 이것이 그들이 해결하는 문제와 거의 비슷하다는 것을 알 수 있습니다. 그러나 점수 함수 추정기는 분산이 높기 때문에 모델 학습에 많은 시간이 소요됩니다.
예를 들어, 우리가 샘플링 한 매우 간단한 q를 사용합시다.
이것은 사소한 이유로 imo에 대한 분산이 적습니다. 설명은 부록의 D 부분을 확인하십시오. https://arxiv.org/pdf/1401.4082.pdf