本文主要是介绍DBN---RBM简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
上图即是RBM(受限玻尔兹曼机)的网络结构图,与玻尔兹曼机的区别就在于没有层内连接,其中 v 为可见层,h为隐藏层,可见层用于输入数据和获取结果,隐藏层则表示状态的变化,另外
v=(v1,v2,...,vnv) 表示可见层神经元的状态,
h=(h1,h2,...,hnh) 表示隐藏层神经元的状态,
a=(a1,a2,...,anv) 表示可见层神经元的偏置,
b=(b1,b2,...,bnh) 表示隐藏层神经元的偏置,
W 则是层间连接权值矩阵
RBM是基于能量的模型(EBM),定义了一个能量函数,能量最小时,模型达到最优,
Eθ(v,h)=−∑i=1nvaivi−∑i=1nhbihi−∑i=1nv∑j=1nhwi,jhjviθ={a,b,W}
由此
v,h 间的联合概率分布可以得到,
Pθ(v,h)=1Zθe−Eθ(v,h),其中Zθ=∑v,he−Eθ(v,h)
Zθ 是相当于一个归一化因子的存在,还能得到
Pθ(v)=∑hPθ(v,h)Pθ(h)=∑vPθ(v,h)
对于后面得到更新规则,
P(vi|h)orP(hi|v) 这个条件概率很重要.
bk(h)=ak+∑j=1nhwk,jhjβ(h,vvk∉V)=∑i=1,i≠knvaivi+∑i=1nhbihi+∑i=1nv∑j=1,j≠knhwi,jhivj
因此
Eθ(v,h)=−β(h,vvk∉V)−vkbk(h)
那么
P(vk=1|h)=P(vk=1|vi,i≠k,h)=P(vk=1,vi,i≠k,h)P(vi,i≠k,h)=P(vk=1,vi,i≠k,h)P(vk=1,vi,i≠k,h)+P(vk=0,vi,i≠k,h)=1Ze−E(vk=1,vi,i≠k,h)1Ze−E(vk=1,vi,i≠k,h)+1Ze−E(vk=0,vi,i≠k,h)=11+eE(vk=1,vi,i≠k,h)−E(vk=0,vi,i≠k,h)=11+e[β(h,vi,i≠k)+0∗bk(h)]+[−β(h,vi,i≠k)−1∗bk(h)]=11+e−bk(h)=sigmoid(bk+∑j=1nhwk,jhj)
由此得到
P(v|h)=∏i=1nvP(vi|h)
RBM常用CD(Contrastive Divergence,对比散度)进行训练,这在后文在总结.
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
这篇关于DBN---RBM简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!