几个月来我一直在研究 RBM,一直在使用 Python,并且阅读了你所有的论文。我遇到了问题,我想,嘿嘿?为什么不去源头呢?我想我至少会抓住机会你可能有时间回复。
我的问题是关于受限玻尔兹曼机中的对数似然。我已经读过,除了非常小的模型之外,在所有模型中找到精确的对数似然是难以处理的,因此引入了对比散度、PCD、伪对数似然等。我的问题是,你如何找到精确的对数似然小模型?
我遇到过这个公式的几个定义,而且似乎都不同。在 Tielemen 2008 年的论文“Training Restricted Boltzmann Machines using Approximations To the Likelihood Gradient”中,他执行了一个对数似然版本的测试来与其他类型的近似值进行比较,但没有说明他使用的公式。我能找到的最接近的是使用能量函数而不是分区函数的概率,但我无法编写这个代码,因为我不完全理解语法。
在 Bengio 等人的“Representation Learning: A Review and New Perspectives”中,对数似然的等式是: sum_t=1 to T (log P(X^T, theta)) 等于 sum_t=1 to T( log * sum_h in {0,1}^d_h(P(x^(t), h; theta)) 其中 T 是训练样本。这是第 11 页的 (14)。
唯一的问题是没有定义其他变量。我假设 x 是训练数据实例,但上标 (t) 是什么?我还假设 theta 是潜在变量 h、W、v……但是如何将其转换为代码?
我想我要问的是你能给我一个代码(Python、伪代码或任何语言)算法来查找给定模型的对数似然,以便我可以理解变量代表什么?这样,在简单的情况下,我可以找到确切的对数似然,然后将它们与我的近似值进行比较,看看我的近似值到底有多好。