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

假设可见层和隐藏层单元都是二值的。学习的目的是针对训练数据构建一个好的生成模型。

更新隐藏层

假设隐藏层单元是二值的,而且使用的是 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 <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时,使用概率而非二值状态。保证权重有一个随机的初始值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值