您的位置:首页 > 其它

[DeepLearning]如何使用对比散度(How to use Contrastive Divergence)

2016-01-20 14:47 274 查看
假设可见层和隐藏层单元都是二值的。学习的目的是针对训练数据构建一个好的生成模型。

更新隐藏层

假设隐藏层单元是二值的,而且使用的是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,隐藏层单元j。

<pihj>data or <pipj>data

pj是隐藏层的概率,hj是隐藏层的随机二值表示

使用hj更接近于RBM的数学模型。而实用pj通常能够减少采样的误差,能够学的更快。

CD1学习的建议

当隐藏层是由数据驱动时,总是使用随机的二值状态。当它们由重建驱动时,总是使用概率而不进行采样。

假设可见层使用逻辑函数。对于数据和重建都使用实数概率。

当为学习权重或偏置收集pairwise statics时,使用概率而非二值状态。保证权重有一个随机的初始值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  深度学习