深度学习受限玻尔兹曼机

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

RestrictedBoltzmannMachine数媒学院-许鹏BoltzmannMachine—Review—Model𝐸=−𝑤𝑖𝑗𝑠𝑖𝑠𝑗𝑖,𝑗−𝜃𝑖𝑠𝑖𝑖𝑝(𝑠𝑖=1)=11+𝑒−𝛥𝐸𝑖𝑇𝛥𝐸𝑖=𝐸(𝑠𝑖=0)−𝐸(𝑠𝑖=1)=𝑤𝑖𝑗𝑠𝑗𝑗+𝜃𝑖𝑃(𝑣)=𝑒−𝐸(𝑣)𝑒−𝐸(𝑢)𝑢Minimize:𝐺=𝑃(𝑉𝛼)ln𝑃(𝑉𝛼)𝑃′(𝑉𝛼)𝛼Minimize:−𝐸𝑉~𝑃𝑑𝑎𝑡𝑎log𝑃(𝑣)𝛥𝑤𝑖𝑗=𝑠𝑖𝑠𝑗𝑑𝑎𝑡𝑎−𝑠𝑖𝑠𝑗mod𝑒𝑙BoltzmannMachine—Review—Algorithm𝛥𝑤𝑖𝑗=𝑠𝑖𝑠𝑗𝑑𝑎𝑡𝑎−𝑠𝑖𝑠𝑗mod𝑒𝑙1.对于每一个训练数据,我们都保存一个particle,即对于BM,我们用一个样本限制它的可见单元,然后更新隐藏单元,很长时间后达到平稳分布状态,这时候所有神经元的状态向量就是一个particle。2.我们保存一组这样的particle,然后在需要计算统计量的时候,对于每个particle都序列化的更新所有的隐藏单元,这样重复几次,并且更新所有的particle。3.最后对于每个更新完的particle,对𝑠𝑖𝑠𝑗采样,在所有particle上取均值,便计算出了𝑠𝑖𝑠𝑗𝑑𝑎𝑡𝑎。positivephaseAmoreefficientwayofcollectingthestatistics1.保存一组particle,这里的particle一般叫做fantasyparticle,每一个particle表示一个接近使网络达到平衡状态的神经元状态向量。2.然后在需要计算统计量的时候,对于每个particle都序列化的更新所有单元,这样重复几次,并且更新所有的particle。3.最后对于每个更新完的particle,对所有𝑠𝑖𝑠𝑗采样,在所有particle上取均值,便计算出了𝑠𝑖𝑠𝑗mod𝑒𝑙negativephaseRestrictedBoltzmannMachine前面介绍过玻尔兹曼机虽然有着良好的数学和物理原理,它把无向图和统计力学结合起来,最后能达到一种目的,就是让整个网络做动态演变,最终能生成一个概率分布来近似给定样本数据的概率分布,对于机器学习来说,这是一个生成模型。但是缺点就是它的学习算法效率太差,即使很多学者做了很多研究改进,但是还是不足以具有广泛应用的价值。直到RBM的出现,它对玻尔兹曼机模型做了一些结构上的改变,使得学习算法的效率大大提升,但是仍然具有很多玻尔兹曼机良好的性质,这算是玻尔兹曼机的一次复兴。visibleunitshiddenunits所谓受限玻尔兹曼机,其实就是BM的某些连接受到限制,使得学习算法更加简单,这里的限制就是可见层和隐藏层的层内没有连接。我们知道玻尔兹曼机训练之所以复杂,是因为网络到达平稳分布的时间很久,而受限玻尔兹曼机当可见单元赋予训练样本时,隐藏单元只需要一步计算就可以达到热平衡状态这大大提升了算法效率,不过当整个网络不受训练数据限制的时候,怎么达到平稳分布还是一个比较棘手的问题。𝛥𝑤𝑖𝑗=𝑣𝑖ℎ𝑗𝑑𝑎𝑡𝑎−𝑣𝑖ℎ𝑗mod𝑒𝑙exact:𝑣𝑖ℎ𝑗𝑑𝑎𝑡𝑎stillquestion:𝑣𝑖ℎ𝑗mod𝑒𝑙𝑝(ℎ𝑗=1)=𝜎(𝑏𝑗+𝑤𝑖𝑗𝑣𝑖𝑖∈𝑣𝑖𝑠)RBM-Model虽然RBM只是BM的层内连接受到了限制,但是在讨论RBM的学习算法和应用场景之前,还是先为RBM做一个模型定义,用比较严谨的数学方式把它表达出来。1.仍然把RBM看成一个能量模型,则可见单元和隐藏单元的总能量为:𝐸(𝑣,ℎ)=−𝑎𝑖𝑣𝑖𝑖∈𝑣𝑖𝑠−𝑏𝑗ℎ𝑗𝑗∈ℎ𝑖𝑑−𝑣𝑖ℎ𝑗𝑤𝑖𝑗𝑖𝑗𝛥𝐸𝑖=𝐸(𝑣𝑖=0)−𝐸(𝑣𝑖=1)=𝑎𝑖+𝑤𝑖𝑗ℎ𝑗𝑗∈ℎ𝑖𝑑2.我们要使得这个模型的能量减少到一个稳定状态,就需要更新神经元状态,那么首先要计算某个神经元开启和关闭时的能量差:𝛥𝐸𝑗=𝐸(ℎ𝑗=0)−𝐸(ℎ𝑗=1)=𝑏𝑗+𝑤𝑖𝑗𝑣𝑖𝑖∈𝑣𝑖𝑠3.所以某个神经元开启或者关闭的概率为:𝑝(𝑣𝑖|ℎ)=1(1+exp(−𝛥𝐸𝑖))𝑝(ℎ𝑗|𝑣)=1(1+exp(−𝛥𝐸𝑗))logisticfunctionBoltzmannMachineRBM-Model4.经过上述式子的更新方式,最终RBM会达到一个平稳分布,这个分布函数为:𝑝(𝑣,ℎ)=𝑒−𝐸(𝑣,ℎ)𝑒−𝐸(𝑣,ℎ)𝑣,ℎ5.因为RBM同一层内没有连接,所以可见单元和隐藏单元的条件概率分布可以连乘:𝑝(𝑣|ℎ)=𝑝(𝑣𝑖|ℎ)𝑚𝑖=1𝑝(ℎ|𝑣)=𝑝(ℎ𝑗|𝑣𝑛𝑗=16.现在我们已经有了RBM的模型,接下来就是学习算法,首先要找到损失函数,这里我们采用对数最大似然函数做损失函数。先只考虑单个样本v的对数最大似然。ln𝐿=ln𝑝(𝑣)=ln(1𝑍𝑒−𝐸(𝑣,ℎ)ℎ)𝑍=𝑒−𝐸(𝑣,ℎ)𝑣,ℎ=ln𝑒−𝐸(𝑣,ℎ)ℎ−ln𝑍=ln𝑒−𝐸(𝑣,ℎ)ℎ−ln𝑒−𝐸(𝑣,ℎ)𝑣,ℎRBM-Algorithmln𝑝(𝑣)=ln𝑒−𝐸(𝑣,ℎ)ℎ−ln𝑒−𝐸(𝑣,ℎ)𝑣,ℎ上述即最终的需要最大化的对数似然函数,其中红色标记表示某一个特定的训练样本,为了和后面的配分函数中的𝑣区别开来。最大化这个函数还是用梯度上升方法,所以我们需要求出这个模型对于其中的模型参数𝜃(𝑤,𝑎,𝑏),我们先用𝜃推导出一个统一的关于参数偏导数的式子。𝜕ln𝑝(𝑣)𝜕𝜃=𝜕𝜕𝜃(ln𝑒−𝐸(𝑣,ℎ)ℎ)−𝜕𝜕𝜃(ln𝑒−𝐸(𝑣,ℎ)𝑣,ℎ=−1𝑒−𝐸(𝑣,ℎ)ℎ𝑒−𝐸(𝑣,ℎ)ℎ𝜕𝐸(𝑣,ℎ)𝜕𝜃+1𝑒−𝐸(𝑣,ℎ)𝑣,ℎ𝑒−𝐸(𝑣,ℎ)𝑣,ℎ𝜕𝐸(𝑣,ℎ)𝜕𝜃=−𝑝(ℎ|𝑣)ℎ𝜕𝐸(𝑣,ℎ)𝜕𝜃+𝑝(𝑣,ℎ)𝑣,ℎ𝜕𝐸(𝑣,ℎ)𝜕𝜃𝑒−𝐸(𝑣,ℎ)𝑒−𝐸(𝑣,ℎ)ℎ=𝑒−𝐸(𝑣,ℎ)𝑍𝑒−𝐸(,ℎ)𝑣ℎ𝑍=𝑝(𝑣,ℎ)𝑝(𝑣)=𝑝(ℎ|𝑣)RBM-Algorithm上式右端两项分别对应两个期望:𝜕ln𝑝(𝑣)𝜕𝜃=−𝑝(ℎ|𝑣)ℎ𝜕𝐸(𝑣,ℎ)𝜕𝜃+𝑝(𝑣,ℎ)𝑣,ℎ𝜕𝐸(𝑣,ℎ)𝜕𝜃第一项对应𝜕𝐸(𝑣,ℎ)𝜕𝜃在条件分布𝑝(ℎ|𝑣)下的期望第二项对应𝜕𝐸(𝑣,ℎ)𝜕𝜃在条件分布𝑝(𝑣,ℎ)下的期望𝜕𝐸(𝑣,ℎ)𝜕𝜃𝑝(ℎ|𝑣)𝜕𝐸(𝑣,ℎ)𝜕𝜃𝑝(𝑣,ℎ)𝜕ln𝑝(𝑣)𝜕𝜃=−𝜕𝐸(𝑣,ℎ)𝜕𝜃𝑝(ℎ|𝑣)+𝜕𝐸(𝑣,ℎ)𝜕𝜃𝑝(𝑣,ℎ)𝑓𝑜𝑟𝐵𝑀:𝛥𝑤𝑖𝑗=𝑠𝑖𝑠𝑗𝑑𝑎𝑡𝑎−𝑠𝑖𝑠𝑗mod𝑒𝑙𝜕ln𝑝(𝑣)𝜕𝑤𝑖𝑗=−𝑣𝑖ℎ𝑗𝑝(ℎ|𝑣)+𝑣𝑖ℎ𝑗𝑝(𝑣,ℎ)𝜕ln𝑝(𝑣)𝜕𝑤𝑖𝑗=−𝑣𝑖ℎ𝑗𝑑𝑎𝑡𝑎+𝑣𝑖ℎ𝑗mod𝑒𝑙RBM-Algorithm𝜕ln𝑝(𝑣)𝜕𝜃=−𝑝(ℎ|𝑣)ℎ𝜕𝐸(𝑣,ℎ)𝜕𝜃+𝑝(𝑣,ℎ)𝑣,ℎ𝜕𝐸(𝑣,ℎ)𝜕𝜃刚才我们对这两项有了一个直观的认识,知道他们是关于两个分布的期望,现在来讨论具体怎么计算:𝑝(𝑣,ℎ)𝑣,ℎ𝜕𝐸(𝑣,ℎ)𝜕𝜃=𝑣ℎ𝑝(𝑣)𝑝(ℎ|𝑣)𝜕𝐸(𝑣,ℎ)𝜕𝜃=𝑝(𝑣)𝑣ℎ𝑝(ℎ|𝑣)𝜕𝐸(𝑣,ℎ)𝜕𝜃由上式可知,我们计算两项期望的时候,只需要讨论ℎ𝑝(ℎ|𝑣)𝜕𝐸(𝑣,ℎ)𝜕𝜃的计算即可,下面分布针对𝑤𝑖𝑗,𝑎𝑖,𝑏𝑗来计算对数似然函数对于模型参数的偏导数。𝑝(ℎ|𝑣)ℎ𝜕𝐸(𝑣,ℎ)𝜕𝑤𝑖𝑗=−𝑝(ℎ|𝑣)ℎ𝑗𝑣𝑖ℎ=−𝑝(ℎ𝑗=1|𝑣)𝑣𝑗RBM-Algorithm𝜕ln𝑝(𝑣)𝜕𝜃=−𝑝(ℎ|𝑣)ℎ𝜕𝐸(𝑣,ℎ)𝜕𝜃+𝑝(𝑣,ℎ)𝑣,ℎ𝜕𝐸(𝑣,ℎ)𝜕𝜃𝑝(ℎ|𝑣)ℎ𝜕𝐸(𝑣,ℎ)𝜕𝑤𝑖𝑗=−𝑝(ℎ|𝑣)ℎ𝑗𝑣𝑖=−𝑝(ℎ𝑗=1|𝑣)𝑣𝑖ℎ𝑝(ℎ|𝑣)ℎ𝜕𝐸(𝑣,ℎ)𝜕𝑎𝑖=−𝑝(ℎ|𝑣)𝑣𝑖ℎ=−𝑣𝑖𝑝(ℎ|𝑣)ℎ𝜕𝐸(𝑣,ℎ)𝜕𝑏𝑗=−𝑝ℎ𝑣ℎ𝑗ℎ=−𝑝(ℎ𝑗=1|𝑣)结合上面四个式子,最终可以推导出对数似然函数对于各参数的偏导数RBM-Algorithm𝜕ln𝑝(𝑣)𝜕𝜃=−𝑝(ℎ|𝑣)ℎ𝜕𝐸(𝑣,ℎ)𝜕𝜃+𝑝(𝑣,ℎ)𝑣,ℎ𝜕𝐸(𝑣,ℎ)𝜕𝜃𝜕ln𝑝(𝑣)𝜕𝑤𝑖𝑗=𝑝(ℎ𝑗=1|𝑣)𝑣𝑖−𝑝(𝑣)𝑝(ℎ𝑗=1|𝑣)𝑣𝑖𝑣𝜕ln𝑝(𝑣)𝜕𝑎𝑖=𝑣𝑖−𝑝(𝑣)𝑣𝑖𝑣𝜕ln𝑝(𝑣)𝜕𝑏𝑗=𝑝(ℎ𝑗=1|𝑣)−𝑝(𝑣)𝑝(ℎ𝑗=1|𝑣𝑣𝑝(ℎ𝑗=1|𝑣)=1(1+exp(−𝑏𝑗+𝑤𝑖𝑗𝑣𝑖𝑖∈𝑣𝑖𝑠))RBM-Algorithm𝜕ln𝑝(𝑣)𝜕𝑤𝑖𝑗=𝑝(ℎ𝑗=1|𝑣)𝑣𝑖−𝑝(𝑣)𝑝(ℎ𝑗=1|𝑣)𝑣𝑖𝑣现在我们的公式推导就算全部完成了,并且得到了对数似然函数对于各个参数的偏导数,那我们再具体看一下这个偏导数到底能不能直接计算出来。𝜕ln𝑝(𝑣)𝜕𝑤𝑖𝑗=𝑣𝑖ℎ𝑗𝑝(ℎ|𝑣)−𝑣𝑖ℎ𝑗𝑝(𝑣,ℎ)可以回忆一下玻尔兹曼机训练的时候,相当于上面的这个式子,分别是positive阶段和negative阶段,在正阶段限制可见单元,然后让整个网络运行到平稳分布,然后对𝑣𝑖ℎ𝑗多次采用求均值,就相当于求分布𝑝(ℎ|𝑣)下的𝑣𝑖ℎ𝑗均值;在负阶段我们不对任何单元做限制,同样方法求分布𝑝(ℎ|𝑣)下𝑣𝑖ℎ𝑗的期望。而现在对于RBM,我们求出了一个更加具体的形式,可以看出,在可见单元受限的时候,只需要一步计算便可以使网络达到平稳分布,即计算出𝑝(ℎ𝑗=1|𝑣)𝑣𝑖,这就大大提高了算法效率,可是负阶段,仍然要对𝑣进行估计,即仍然要按原来的方式让网络达到平稳分布再采用,我们可以采用Gibbs采样方法对𝑣进行估计,但是这种方法的算法效率还是比较低。RBM-Algorithm𝜕ln𝑝(𝑣)𝜕𝑤𝑖𝑗=𝑝(ℎ𝑗=1|𝑣)𝑣𝑖−𝑝(𝑣)𝑝(ℎ𝑗=1|𝑣)𝑣𝑖𝑣=𝑣𝑖ℎ𝑗𝑝(ℎ|𝑣)−𝑣𝑖ℎ𝑗𝑝(𝑣,ℎ)下面我们用图形象化的展示一下现在用于训练RBM的算法:𝑗𝑖𝑖𝑖𝑗𝑗𝑗𝑖t=0t=1t=2……𝑣𝑖ℎ𝑗0𝑣𝑖ℎ𝑗2𝑣𝑖ℎ𝑗1𝑣𝑖ℎ𝑗∞t=infinity上图中之所以之所以每一步用一个时间来表示,是因为这表示在马尔科夫链中的步骤,每一步就是一次隐藏层的更新和可见层的重构。对于训练算法的正阶段来讲,𝑣𝑖ℎ𝑗0即可得到结果,即一步达到热平衡状态,而对于负阶段,需要这样隐藏层和可见层依次更新很长时间,最后达到热平衡状态即得到𝑣𝑖ℎ𝑗∞结果。但其实结果证明,即使只运行这个链很短的时间,

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功