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