对比散度与原始数据和重建数据之间的二次差梯度的优势是什么?

数据挖掘 神经网络 深度学习 RBM
2021-10-11 02:43:59

在这个例子中,我有一个带有可见层和隐藏层的 RBM。原始数据为“data”,隐藏神经元的值为“hid”,从“hid”计算的可见神经元的值为“vis”,然后从“vis”计算的隐藏神经元的值为“隐藏2”。

我通过以下方式计算positive_association和negative_association:

pos_associations = T.dot(data.T, hid)
neg_associations = T.dot(vis.T, hid2)

其中 T.dot 表示通常的矩阵计算。然后我使用对比散度 (CD) 更新权重

w = w + (training_rate)*(pos_associations - neg_associations)

就像这篇文章中描述的那样

我确实得到了很好的重建(vis 看起来像数据),我可以看到代表权重的特征。然而,这需要一段时间和许多时代。

如果我不使用 CD 而不是简单地计算 data 和 vis 之间的二次差

cost = T.sum((data - vis)**2).mean()

我使用成本梯度更新权重,我得到了更快的数据近似值。所以我的问题是,使用 CD 有什么好处?

2个回答

RBM 需要一些时间来收敛是很自然的,但如果你看到重建是不错的,那么你的算法运行良好。

我不明白通过您的目标函数优化模型的想法: cost = T.sum((data - vis)**2).mean(). 我认为您不能以这种方式训练 RBM(或任何其他随机模型),因为 vis 是数据的非线性函数。如果您省略隐藏向量的采样,您可能会使用此公式并最终获得类似于学习恒等变换的前馈网络的模型。事实上它可以用作特征提取器。

另请注意,您的第二个网络不再是适当的生成模型,因为它的学习规则不遵循 RBM 成本函数的梯度。因此,它不能正确建模可见和隐藏向量的能量函数或联合概率 P(v, h)。

您可能也有兴趣阅读以下内容:

虽然很方便,但重构误差实际上是衡量学习进度的一个很差的衡量标准。CD 学习不是近似优化的功能,[...] 它系统地混淆了在学习过程中发生变化的两个不同的量。首先是训练数据的经验分布与 RBM 的平衡分布之间的差异。第二个是交替吉布斯马尔可夫链的混合速率。如果混合率非常低,即使数据和模型的分布非常不同,重建误差也会非常小。随着权重的增加,混合率下降,因此重建误差的减少并不一定意味着模型正在改进,相反,

那么 RBM 试图优化的成本函数是什么?可以在这里找到很好的描述

log(p(x))θ=F(x)θx~p(x~)F(x~)θ
在左侧,我们必须最小化数据的负对数概率以增加数据的概率。在右手边,我们有两个术语。功能F(x) 在给定数据的情况下,对应于网络的自由能 x 和当前权重 θ所以这个函数的最小化增加了我们数据的概率。另一方面,我们必须考虑归一化因子Z- 它的作用是给出输入向量的正确概率分布,方程中的这个和对应于归一化因子。换句话说,我们必须最大化所有输入集的自由能(降低概率)与其当前概率成比例p(x~). 如果我们忽略最大化这个总和,我们的模型将不会收敛到最优解。对比发散只是这个目标函数的粗略近似,但在实践中效果很好。我建议你看杰弗里·辛顿的这部电影

RBM 最大化可见单位的概率p(v),由模型定义,在所有训练数据上。它等效于最小化模型分布和(经验)数据分布之间的KL 散度(更多细节在这里)。

最大似然学习通常通过梯度下降来执行。对数似然 wrt 模型权重的梯度有解析表达式,但对于常规大小的 RBM,它们是难以处理的,因为相应总和中的项数呈指数级。因此,梯度本身由称为对比度散度(或其变体)的基于 MCMC 的算法近似。