[딥러닝] VAE(Variational Autoencoders)


오토인코더

오토인코더는 레이블이 지정되지 않은 훈련 데이터에서 저차원 특징 표현을 학습하기 위한 비지도 학습 방법입니다. 이 표현은 종종 잠재 공간 특징 또는 인코더라고 하며, 그 목표는 입력 데이터의 효율적인 압축 표현을 찾는 것입니다.

구조

  • 인코더

    인코더는 xx를 입력할 코드입니다.x는 기능 zz에 매핑됩니다.딥 러닝 모델이거나 선형 또는 비선형 모델일 수 있는 z 의 함수입니다. 일반적인 비선형 함수에는 Sigmoid 및 ReLU가 포함됩니다. 인코더 아키텍처는 완전 연결형이거나 컨벌루션 신경망일 수 있습니다. 인코더의 목표는 차원 축소이므로 기능zzz 의 차원은 일반적으로 입력xxx 의 크기

    z = f θ ( x ) z = f_{\theta}(x)=에프( x )

    其中θ \thetaθ 는 인코더의 매개변수,f θ f_{\theta}에프인코더의 기능입니다.

  • 디코더

    디코더는 기능입니다 zzz를 다시 입력 공간에 매핑하여 재구성된 입력x ^ \hat x엑스^ . 디코더의 목표는 압축된 특징을 추출하는 것입니다.zzz 에서 원래 입력xx를x . 디코더 아키텍처는 심층형, 선형 또는 비선형이거나 완전 연결형 또는 컨벌루션(예: 업컨볼루션)일 수 있습니다.

    x ^ = g ф ( z ) \hat x = g_{\phi}(z)엑스^=gф( z )

    여기서 ф \phiф 는 디코더의 매개변수,g ф g_{\phi}gф디코더의 기능입니다.

기차

Autoencoder의 훈련 목표는 재구성된 입력 x ^ \hat x 를 만드는 것입니다.엑스^ 는 원래 입력 xx에 최대한 가깝습니다.x . 일반적으로 사용되는 손실 함수는 L2 손실입니다.

L ( x , x ^ ) = Bu x − x ^ Bu 2 L(x, \hat x) = \|x-\hat x\|^2( 엑스 ,엑스^ )=??? x-엑스^ rr2

이 손실함수를 최소화함으로써 Encoder와 Decoder의 매개변수를 학습할 수 있습니다.

애플리케이션

Autoencoder를 훈련한 후 Decoder는 일반적으로 폐기되고 Encoder만 입력 데이터에서 특징을 추출하는 데 사용됩니다. 필요한 경우 인코더와 분류기를 함께 미세 조정할 수도 있습니다.

x → z → y ^ x \rightarrow z \rightarrow \hat y엑스와이^

이 과정에서 y ^ \hat y와이^인코더와 분류기를 통해 얻은 예측 레이블, yyy 는 실제 레이블입니다. 소프트맥스 손실 함수는 분류 작업을 최적화하는 데 사용될 수 있습니다.

오토인코더는 데이터를 재구성하고 기능을 학습하여 지도 모델을 초기화할 수 있습니다. 이러한 기능은 훈련 데이터의 가변성을 포착합니다.

Autoencoder를 사용하여 새 이미지를 생성할 수 있지만 일반적으로 이것이 주요 용도는 아닙니다. Autoencoder를 사용하여 새로운 이미지를 생성하는 일반적인 방법은 Autoencoder가 학습한 잠재 공간에서 샘플링하고 Decoder를 통해 새로운 이미지를 생성하는 것입니다.

VAE(변형 자동 인코더)

VAE는 Autoencoder 아키텍처를 사용하고 확률 이론을 추가한 생성 모델입니다. 기존 Autoencoder와 달리 VAE의 Encoder는 특정 코드가 아닌 코딩된 확률 분포의 매개변수를 출력합니다.

구조

  • 인코더

    인코더의 목표는 입력 xx를 변환하는 것입니다.x를 잠재 공간에 매핑하는 분포 매개변수(일반적으로 다변량 가우스 분포의 평균 벡터mm)m 과 분산 벡터σ \sigmas .

    m = f θ(x), σ = g θ(x) m = f_{\theta}(x),\\sigma = g_{\theta}(x)=에프( x ) , =g( x )

  • 견본 추출

    샘플링 단계 에서는 인코더가 학습한 분포에서 인코딩 zz를 생성합니다.z . 이는 다음 공식을 사용하여 달성됩니다.

    ci = exp ⁡ ( σ i 2 ) ei + mi c_i = \exp(\frac{\sigma_i}{2})e_i+m_i=특급 (2) 전자+

    여기서 σ i \sigma_i는 잠재적 공간의 로그 분산을 나타냅니다. 따라서 exp ⁡ ( σ i 2 ) \exp(\frac{\sigma_i}{2})특급 (2) 는 표준편차,ei e_i이자형표준 정규 분포에서 샘플링된 난수입니다.

  • 디코더

    디코더가 zz를 샘플링합니다.z 는 다시 입력 공간에 매핑되어 재구성된 입력x ^ \hat x엑스^

    x ^ = h ф ( c ) \hat x = h_{\phi}(c)엑스^=시간ф( )

기차

VAE의 훈련 목표는 재구성 오류와 KL 발산(Kullback-Leibler 발산)을 최소화하는 것입니다. 여기서 재구성 오류는 입력 xx를 측정합니다.x 와 재구성된 입력x ^ \hat x엑스^ 차이가 있는 경우 평균 제곱 오차(MSE) 또는 교차 엔트로피(교차 엔트로피)를 손실 함수로 사용할 수 있습니다. KL 발산은 인코더가 학습한 기본 분포와 사전 분포(일반적으로 표준 정규 분포) 간의 차이를 측정합니다. 따라서 총 손실 함수는 다음과 같이 쓸 수 있습니다.

L = MSE ( x , x ^ ) + DKL ( p θ ( z ∣ x ) ∣ ∣ p ( z ) ) L = \text{MSE}(x, \hat x) + D_{KL}(p_{\theta }(z|x)||p(z))=MSE ( x ,엑스^ )+케이엘 _( ( z x ) ∣∣ p ( z ))

위 수식에서 DKL D_{KL}케이엘 _KL 발산을 나타냅니다. p θ ( z ∣ x ) p_{\theta}(z|x)( z x )는 인코더가 학습한 전위 분포p ( z ) p(z)를p ( z ) 는 사전 분포입니다. 일반적으로 KL 발산의 형식은 다음과 같습니다.

DKL ( p θ ( z ∣ x ) ∣ ∣ p ( z ) ) = 1 2 ∑ ( 1 + σ i − ( mi ) 2 − exp ⁡ ( σ i ) ) D_{KL}(p_{\theta}(z |x)||p(z)) = \frac{1}{2}\sum (1+\sigma_i-(m_i)^2-\exp(\sigma_i))케이엘 _( ( z x ) ∣∣ p ( z ))=21( 1+-( )2-특급 ( p))

재구성 오류와 KL 발산을 최소화함으로써 VAE는 잠재 공간의 분포를 미리 설정된 사전 분포(일반적으로 표준 정규 분포)에 가깝게 만들면서 입력 데이터를 재구성할 수 있는 입력 데이터를 생성할 수 있습니다. 이는 디코더가 잠재 공간에서 새롭고 의미 있는 샘플을 생성하는 데 도움이 됩니다.

애플리케이션

VAE가 데이터를 생성할 때 이전 배포판의 디코더 부분과 zz 만 사용합니다.z 를 샘플링합니다. 디코더는 잠재 공간에서 벡터z를z , 해당 데이터를 생성합니다. VAE에서 이 잠재 공간은 일반적으로 알려진 분포(일반적으로 가우스 분포)에 근접하도록 훈련됩니다. 이는 알려진 분포에서 샘플을 추출하여 디코더에 전달함으로써 새로운 데이터를 생성할 수 있음을 의미합니다.

z ∼ p ( z ), x ^ = h ф ( z ) z \sim p(z),\ \hat x = h_{\phi}(z)( z ) , 엑스^=시간ф( z )

표준 VAE에서는 재구성 오류(예: 평균 제곱 오류 또는 교차 엔트로피)를 사용하여 입력 데이터 xx 를 평가합니다.x 및 재구성된 데이터x ^ \hat x엑스^ 유사성. 그러나 이 평가 방법은 특히 이미지와 같은 고차원 데이터에서 데이터의 모든 복잡성을 완전히 포착하지 못하는 경우가 있습니다.

VAE-GAN 모델에서는 VAE의 인코더와 디코더를 유지하지만 GAN의 판별자를 사용하여 기존 재구성 오류를 대체합니다. 특히, 판별기의 목표는 이전 분포의 샘플과 인코더에서 생성된 샘플을 구별하는 것입니다. 이를 통해 VAE-GAN은 효과적인 잠재 공간 표현을 학습할 수 있을 뿐만 아니라 고차원의 복잡한 데이터를 처리할 때에도 고품질 샘플을 생성할 수 있습니다.

Guess you like

Origin blog.csdn.net/weixin_45427144/article/details/131097883