大家好,欢迎来到IT知识分享网。
DBN由多层受限玻尔兹曼机(RBM)堆叠加输出层构成,RBM由隐层和显层构成,如下图所示
其中v为输入向量,h为隐层的节点。wij为vi到hj的权重,对于给定的状态(v,h),RBM的能量函数可表示为
其中ai为可见层的置偏值,bj为隐层的置偏值。
可见层和隐层相互独立,h在v上的最大似然估计为
i=1,2…….n
通过v可计算出隐层神经元激活的概率为:
通过p可计算出显层神经元激活的概率为:
训练采用cd-k(对比散度算法)
假设初始为v,h,迭代一轮之后为v’,h’,学习率为lr,则w,a,b的更新规则如下:
w=w+lr*(v*[p(h=1|v)]t-v’*[p(h’=1|v’)]t) 其中t表示转置
a=a+lr*(v-v’)
b=b+lr*([p(h=1|v)]-[p(h’=1|v’)])
初始化可将数据v归一化,[v-v(min)]/[v(max)-v(min)],w,a,b随机赋初值
整体的DBN如图:
先独立训练每一层的rbm,再把上一层的rbm的输出做为下一层rbm的输入,最后接上连接层,进行BP微调模型。
代码如下,采用sklearn中的rbm层实现
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/12382.html