gam*_*erm 6 artificial-intelligence machine-learning neural-network deep-learning
我试图通过自己实现 VAE 来深入理解 VAE,并且在将解码器输入层的损失反向传播到编码器输出层时遇到困难。

我的编码器网络输出 8 对(sigma, mu),然后我将它们与随机采样器的结果结合为解码器网络生成 8 个输入值(z):
decoder_in = sigma * N(0,I) + mu
Run Code Online (Sandbox Code Playgroud)
然后我为解码器网络运行前向传播,计算 MSE 重建损失和反向传播权重,以及直到解码器输入层的损失。
在这里我完全卡住了,因为没有关于如何将损失从解码器输入层反向传播到编码器输出层的易于理解的解释。
我最好的想法是存储从N(0,I)到 ( epsilon )的采样结果并以这样的方式使用它们:
L(sigma) = epsilon * dLz(decoder_in)
L(mu) = 1.0 * dLz(decoder_in)
Run Code Online (Sandbox Code Playgroud)
它有点工作,但从长远来看,分布的编码向量的西格玛分量往往会回归零,因此我的 VAE 结果也回归到 AE。
另外,我仍然不知道如何在这个方案中整合 KL-loss。我应该将它添加到编码器损失中还是以某种方式将其与解码器 MSE 损失相结合?
小智 3
如果您使用模型只是返回到自动编码器,那么 VAE 不会使用重建误差作为成本目标。VAE 使用变分下界和一些巧妙的技巧来使其易于计算。
\n参考原版\xe2\x80\x9cauto-encodingvariational bayes\xe2\x80\x9d论文
\n变分下界目标为 (eq 10):
\n1/2( d+log(sigmaTsigma) -(muTmu) - (sigmaTsigma)) + log p(x/z)
\n其中 d 是潜在变量的数量,mu 和 sigma 是用于缩放标准正态样本的编码神经网络的输出,z 是编码样本。p(x/z) 只是生成回输入 x 的解码器概率。
\n上述方程中的所有变量都是完全可微的,因此可以使用梯度下降或在张量流中找到的任何其他基于梯度的优化器进行优化
\n| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |