机器学习笔记之玻尔兹曼机——基本介绍
引言
在受限玻尔兹曼机——模型表示(Representation)一节中以玻尔兹曼机为引,介绍了受限玻尔兹曼机。从本节开始,将正式介绍玻尔兹曼机。相比于它的表示和推断过程,我们更关注它在求解过程中出现的问题。
回顾:玻尔兹曼机的模型表示
玻尔兹曼机本质上是一个马尔可夫随机场(MArkov Random Field),该概率图中结点均表示离散型随机变量,并被限定为伯努利分布。
并且,概率图中结点之间的边是随意的,并没有具体约束。但如果想要描述更加复杂的函数,自然需要结点之间复杂的边作为支撑:
其中左图表示全连接玻尔兹曼机,无论是观测变量,还是隐变量,结点之间均存在边相连接;而右图同样表示玻尔兹曼机,只不过结点之间无明确约束,结点之间的边连接更加随意。
并且玻尔兹曼机并没有被严格要求一定有隐变量。也就是说,玻尔兹曼机可能是一个非隐变量模型,它的结点均由观测变量构成(Fully Observed Model);与之相对的,从生成模型的角度考虑,我们更关注观测变量与隐变量相混合的概率图结构。
依然以包含隐变量的玻尔兹曼机为例,假设某玻尔兹曼机中包含观测变量集合 v v v和隐变量集合 h h h,并且 v v v中的 D \mathcal D D个分量和 h h h中的 P \mathcal P P个分量均服从伯努利分布:
{ v = ( v 1 , v 2 , ⋯ , v D ) T ∈ { 0 , 1 } D h = ( h 1 , h 2 , ⋯ , h P ) T ∈ { 0 , 1 } P \begin{cases} v = (v_1,v_2,\cdots,v_{\mathcal D})^T \in \{0,1\}^{\mathcal D} \\ h = (h_1,h_2,\cdots,h_{\mathcal P})^T \in \{0,1\}^{\mathcal P} \end{cases} {
v=(v1,v2,⋯,vD)T∈{
0,1}Dh=(h1,h2,⋯,hP)T∈{
0,1}P
关于结点之间边的权重,可以将其分成三类:
- 观测变量结点之间的边的权重表示:
L = [ L i j ] D × D \mathcal L = \left[\mathcal L_{ij}\right]_{\mathcal D \times \mathcal D} L=[Lij]D×D - 隐变量结点之间的边的权重表示:
J = [ J i j ] P × P \mathcal J = \left[\mathcal J_{ij}\right]_{\mathcal P \times \mathcal P} J=[Jij]P×P - 观测变量到隐变量结点之间的边的权重表示:
同理,隐变量到观测变量结点之间的权重表示为
[ W j i ] P × D [\mathcal W_{ji}]_{\mathcal P \times \mathcal D} [Wji]P×D,两者之间仅差一个转置,信息并没有发生变化。
W = [ W i j ] D × P \mathcal W = \left[\mathcal W_{ij}\right]_{\mathcal D \times \mathcal P} W=[Wij]D×P
至此,结点与边权重均已确定,关于玻尔兹曼机中随机变量(结点)的概率密度函数表示为:
P ( v , h ) = 1 Z exp { − E ( v , h ) } \begin{aligned} \mathcal P(v,h) = \frac{1}{\mathcal Z} \exp \{- \mathbb E(v,h)\} \end{aligned} P(v,h)=Z1exp{
−E(v,h)}
而能量函数 E ( v , h ) \mathbb E(v,h) E(v,h)可根据玻尔兹曼机的结构表示,有:
从能量的角度考虑,
v i ⋅ W i j ⋅ h j v_i \cdot \mathcal W_{ij} \cdot h_j vi⋅Wij⋅hj表示结点
v i v_i vi和结点
h j h_j hj之间的能量表示。
从概率角度考虑,无论是
v i ⋅ W i j ⋅ h j v_i \cdot \mathcal W_{ij} \cdot h_j vi⋅Wij⋅hj还是
v i ⋅ L i j ⋅ v j v_i \cdot \mathcal L_{ij} \cdot v_j vi⋅Lij⋅vj,还是
h i ⋅ J i j ⋅ h j h_i \cdot \mathcal J_{ij} \cdot h_j hi⋅Jij⋅hj,它们的‘配分函数结果’均表示‘基于某结点的条件下,其他结点发生的概率结果’。
观测变量
v v v和隐变量
h h h均需要乘以
1 2 \frac{1}{2} 21是因为无向图模型,仅需要计算一次边对应的能量即可,但实际上每条边在执行运算过程中,均加重了一次。
这里取上述‘全连接玻尔兹曼机’中的观测变量内部连接为例。
观察上图,观测变量内部仅包含三条边,仅需要计算
v 1 ⋅ L 12 ⋅ v 2 v_1 \cdot \mathcal L_{12} \cdot v_2 v1⋅L12⋅v2和
v 3 ⋅ L 32 ⋅ v 2 v_3 \cdot \mathcal L_{32} \cdot v_2 v3⋅L32⋅v2和
v 1 ⋅ L 13 ⋅ v 3 v_1 \cdot \mathcal L_{13} \cdot v_3 v1⋅L13⋅v3这三项即可。但实际上却加了9次
:
∑ i = 1 3 ∑ j = 1 3 v i ⋅ L i j ⋅ v j = ( v 1 , v 2 , v 3 ) ( L 11 = 0 , L 12 , L 13 L 21 , L 22 = 0 , L 23 L 31 , L 32 , L 33 = 0 ) ( v 1 v 2 v 3 ) \sum_{i=1}^3\sum_{j=1}^3 v_i \cdot \mathcal L_{ij} \cdot v_j = (v_1,v_2,v_3)\begin{pmatrix} \mathcal L_{11} = 0,\mathcal L_{12},\mathcal L_{13} \\ \mathcal L_{21},\mathcal L_{22} = 0,\mathcal L_{23} \\ \mathcal L_{31},\mathcal L_{32},\mathcal L_{33} = 0 \end{pmatrix}\begin{pmatrix} v_1 \\ v_2 \\ v_3 \end{pmatrix} i=1∑3j=1∑3vi⋅Lij⋅vj=(v1,v2,v3) L11=0,L12,L13L21,L22=0,L23L31,L32,L33=0 v1v2v3
其中
L \mathcal L L本身是实对称矩阵,对角线上包含
3 3 3个零项;并且
L i j = L j i ( i , j ∈ { 1 , 2 , 3 } ; i ≠ j ) \mathcal L_{ij} = \mathcal L_{ji}(i,j \in \{1,2,3\};i\neq j) Lij=Lji(i,j∈{ 1,2,3};i=j),因而剩余
6 6 6项加重了三项,使用
1 2 \frac{1}{2} 21将多加的项去掉。
E ( v , h ) = − [ ∑ i = 1 D ∑ j = 1 P v i ⋅ W i j ⋅ h j + 1 2