在变分自动编码器(见论文)第 5 页中,神经网络的损失函数定义为:
而在代码中,第二项实际上是通过: 实现的
binary_crossentropy(x, x_output)
,其中x
分别x_output
是自编码器的输入和输出。
我的问题是为什么输入和输出的损失等于?
在变分自动编码器(见论文)第 5 页中,神经网络的损失函数定义为:
而在代码中,第二项实际上是通过: 实现的
binary_crossentropy(x, x_output)
,其中x
分别x_output
是自编码器的输入和输出。
我的问题是为什么输入和输出的损失等于?
对于常规自动编码器,您从输入开始并对其进行编码以获得潜在变量(或代码),使用满足以下条件的函数:。获得潜在变量后,您的目标是使用其他函数重建输入。重建损失是另一个 用于反向传播和更新f和g的函数L(x,\hat{x})。
对于变分自动编码器,您仍将潜在变量解释为您的代码。因此,用作概率解码器,因为给定代码z ,它会在x的可能值上产生分布。因此,术语\log p_{\theta}(x|z)以某种方式与重构误差相关联是“有道理的” 。
编码器和解码器都是确定性函数。由于映射到的函数,因此您可以将此表达式视为。当您假设(如果我理解正确,他们在论文中假设)此分布具有高斯形式:
最后一个表达式与常规自动编码器中的重建误差成正比。
因为是和模型参数的确定性函数。
要回答这个问题,需要查看第 4 页 eq。其中 7 条及其下方的文字:
在我们的实验中,我们发现每个数据点的样本数 L 可以设置为 1,只要 minibatch 大小 M 足够大,例如 M = 100。
因此,从标准正态分布(从和个样本)的蒙特卡罗抽样的随机性可以忽略足够的小批量大小。因此,对求和变成了单个样本。所以剩下的只是网络输出,即伯努利分布的确定性函数)。因此:
其中假设来自伯努利分布(),第三个方程正是伯努利分布的概率质量函数。
至于为什么当 x 不是来自伯努利而是来自有界连续(如)时这有效,我不知道,但可能与此处提到的“黑暗知识”有关。