변형 자동 인코더에서 KLD 손실 대 재구성 손실을 가중시키는 방법


26

VAE에서 보았던 거의 모든 코드 예제에서 손실 함수는 다음과 같이 정의됩니다 (이것은 텐서 흐름 코드이지만 테 아노, 토치 등에서도 비슷합니다. 또한 convnet 용이지만 너무 관련이 없습니다. , 합계가 인수되는 축에만 영향을 미칩니다) :

# latent space loss. KL divergence between latent space distribution and unit gaussian, for each batch.
# first half of eq 10. in https://arxiv.org/abs/1312.6114
kl_loss = -0.5 * tf.reduce_sum(1 + log_sigma_sq - tf.square(mu) - tf.exp(log_sigma_sq), axis=1)

# reconstruction error, using pixel-wise L2 loss, for each batch
rec_loss = tf.reduce_sum(tf.squared_difference(y, x), axis=[1,2,3])

# or binary cross entropy (assuming 0...1 values)
y = tf.clip_by_value(y, 1e-8, 1-1e-8) # prevent nan on log(0)
rec_loss = -tf.reduce_sum(x * tf.log(y) + (1-x) * tf.log(1-y), axis=[1,2,3])

# sum the two and average over batches
loss = tf.reduce_mean(kl_loss + rec_loss)

그러나 kl_loss 및 rec_loss의 숫자 범위는 잠재 공간 디딤 및 입력 피처 크기 (예 : 픽셀 해상도)에 따라 크게 달라집니다. z_dim KLD 및 픽셀 (또는 기능) 당 LSE 또는 BCE를 얻기 위해 reduce_sum을 reduce_mean으로 바꾸는 것이 합리적입니까? 더 중요한 것은, 최종 손실을 위해 합산 할 때 재구성 손실과 어떻게 잠재적 손실을 가중 시키는가? 그냥 시행 착오입니까? 아니면 그것에 대한 어떤 이론이 있습니까? 나는 (원본을 포함하여) 이것에 관한 정보를 찾을 수 없었다.


내가 겪고있는 문제는 입력 기능 (x) 치수와 잠재 공간 (z) 치수 사이의 균형이 '최적화'가 아닌 경우 재구성이 매우 좋지만 학습 된 잠재 공간이 구조화되지 않은 것입니다 (x 치수의 경우) KLD에 비해 매우 높고 재구성 오류가 우세하거나 그 반대도 가능합니다 (재건은 좋지 않지만 KLD가 지배하는 경우 학습 된 잠재 공간이 잘 구성되어 있음)

재구성 손실 (입력 피처 크기로 나눔)과 KLD (z 치수로 나눔)를 정규화 한 다음 임의의 가중치로 KLD 항에 수동으로 가중치를 부여해야합니다 (정규화는 동일하거나 x 또는 z 치수무관 한 유사한 무게 ). 경험적으로 저는 0.1과 비슷한 것을 발견했습니다. 재구성과 잠재 공간 사이의 균형이 잘 잡히고 나에게 '달콤한 반점'인 느낌이 들었습니다. 이 분야의 사전 작업을 찾고 있습니다.


요청시, 위의 수학 표기법 (재구성 오류에 대한 L2 손실에 초점을 맞춤)

Llatent(i)=12j=1J(1+log(σj(i))2(μj(i))2(σj(i))2)

Lrecon(i)=k=1K(yk(i)xk(i))2

L(m)=1Mi=1M(Llatent(i)+Lrecon(i))

여기서 는 잠재 벡터 의 차원 (및 해당 평균 및 분산 ), 는 입력 피처의 차원, 은 미니 배치 크기, 위첨자 는 번째 데이터를 나타냅니다. point 및 은 번째 미니 배치 의 손실입니다 .z μ σ 2 K M ( i ) i L ( m ) mJzμσ2KM(i)iL(m)m

답변:


17

이 게시물에서 문제를 겪고 답을 찾고있는 사람에게는 이 트위터 스레드 가 매우 유용한 통찰력을 많이 추가했습니다.

즉:

베타 VAE : 제한된 변형 프레임 워크를 사용하여 기본 시각 개념 학습

몇 가지 실험으로 내 정확한 질문에 대해 설명합니다. 흥미롭게도, (나의 정규화 된 KLD 가중치와 비슷 함)도 0.1을 중심으로하며 값이 높을수록 재구성이 좋지 않은 비용으로 더 구조화 된 잠재 공간을 제공하고 값이 낮을수록 더 적은 구조로 더 나은 재구성을 제공합니다 잠재 공간 (그들의 초점은 구체적으로 얽힌 표현 을 배우는 데 있지만 ).βnorm

관련 독서 (유사한 문제가 논의되는 곳)


7

이 문제와 관련하여 논문을 하나 더 추가하고 싶습니다 (현재 평판이 낮아서 언급 할 수 없음).

이 논문의 3.1 절에서 저자들은 가능성과 KL의 발산에 동일한 가중치를 부여하는 VAE의 직접적인 구현을 훈련하지 못했다고 명시했다. 그들의 경우에, KL 손실은 바람직하지 않게 0으로 감소되었지만, 작은 값을 가질 것으로 예상되었다. 이를 극복하기 위해 KL 발산 항 (파란색 곡선)의 가중치를 0에서 1로 천천히 증가시킨 "KL 비용 어닐링"을 사용할 것을 제안했습니다.

그림 2. Penn TreeBank에서 VAE에 대한 KL 분기 항의 (가중치가없는) 값과 함께 플롯 된 전형적인 시그 모이 드 어닐링 스케쥴에 따른 변화 하한의 KL 분기 항의 가중치.

이 대안 솔루션은 Ladder VAE에도 적용됩니다.

종이:

Bowman, SR, Vilnis, L., Vinyals, O., Dai, AM, Jozefowicz, R. 및 Bengio, S., 2015. 연속 공간에서 문장 생성 . arXiv 프리 프린트 arXiv : 1511.06349.

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