假设可见层和隐藏层单元都是二值的。学习的目的是针对训练数据构建一个好的生成模型。
更新隐藏层
假设隐藏层单元是二值的,而且使用的是
CD1
,隐藏层单元在通过数据向量驱动得到时应该具有随机的二值状态。隐藏层单元置为1的概率为
p(hj=1)=σ(bj+∑iviWij)
随机生成一个均匀分布的0到1之间的值,如果该值大于概率,则隐藏层单元状态置为1,否则为0。
使用二值而非概率作为隐藏层状态是相当重要的。如果使用概率作为隐藏层的状态,在重建可见层的时候,每个隐藏层单元就是一个实数值,这违反了information bottleneck,因为隐藏层单元平均最多只能表达一位。这个information bottleneck是一个强的正则化。
而最后一次更新隐藏层的状态时,则应该使用概率作为隐藏层的状态。因为不再需要使用隐藏层的状态来重建可见层了。所以直接使用概率来避免不必要的采样的噪音。当使用
CDn
时,只有最后一次隐藏层单元的更新使用概率。
更新可见层
在更新可见层状态时,正确的做法是根据以下概率随机选择将可见层单元置为0或1。
pi=p(vi=1)=σ(ai+∑jhjwij
但是通常直接使用概率而非随机二值作为重建可见层的状态。
收集学习需要的统计数据
假设可见层使用实数概率而非随机二进制值。有两种收集positive static的方法。可见层单元
i
,隐藏层单元
<pihj>data
<script type="math/tex" id="MathJax-Element-7">
_{data}</script> or
<pipj>data
<script type="math/tex" id="MathJax-Element-8">
_{data}</script>
pj
是隐藏层的概率,
hj
是隐藏层的随机二值表示
使用
hj
更接近于RBM的数学模型。而实用
pj
通常能够减少采样的误差,能够学的更快。
CD1学习的建议
当隐藏层是由数据驱动时,总是使用随机的二值状态。当它们由重建驱动时,总是使用概率而不进行采样。
假设可见层使用逻辑函数。对于数据和重建都使用实数概率。
当为学习权重或偏置收集pairwise statics时,使用概率而非二值状态。保证权重有一个随机的初始值。