24 直面配分函数——Confronting Partition Function

24 直面配分函数——Confronting Partition Function

24.1 Stochastic Gradient of log-likelihood——log配分函数在随机梯度上升中的应用

为什么要使用配分函数呢?简单来说就是为了在分布太复杂无法计算的时候,帮你把困难的分布转换为简单的分布。我们也经常在MLE中使用这种方法。

假如我们此时要在MLE的Learning问题中通过梯度上升求解参数,我们有以下条件:

  1. 数据: X ∈ R p , { 0 , 1 } p X \in {\mathbb R}^p, {\lbrace 0, 1 \rbrace}^p XRp,{0,1}p
  2. 分布转换: P ( X ∣ θ ) = 1 Z ( θ ) P ^ ( X ∣ θ ) , Z ( θ ) = ∫ P ^ ( X ∣ θ ) d x P(X | \theta) = \frac{1}{Z(\theta)} {\hat P}(X | \theta), Z(\theta) = \int {\hat P}(X | \theta) {\rm d}x P(Xθ)=Z(θ)1P^(Xθ),Z(θ)=P^(Xθ)dx

我们可以将MLE的公式写成(给定条件 X = { x i } i = 1 N X = {\lbrace x_i \rbrace}_{i=1}^N X={xi}i=1N,参数为 θ \theta θ​):
θ ^ = a r g max ⁡ θ P ( X ∣ θ ) = a r g max ⁡ θ ∏ i = 1 N P ( x i ∣ θ ) = a r g max ⁡ θ log ⁡ ∏ i = 1 N P ( x i ∣ θ ) = a r g max ⁡ θ ∑ i = 1 N l o g P ( x i ∣ θ ) = a r g max ⁡ θ ∑ i = 1 N l o g P ^ ( x i ∣ θ ) − N ⋅ log ⁡ Z ( θ ) = a r g max ⁡ θ 1 N ∑ i = 1 N l o g P ^ ( x i ∣ θ ) − ⋅ log ⁡ Z ( θ ) ⏟ L ( θ ) \begin{align} {\hat \theta} &= arg\max_\theta P(X|\theta) = arg\max_\theta \prod_{i=1}^N P(x_i|\theta) \\ &= arg\max_\theta \log \prod_{i=1}^N P(x_i|\theta) = arg\max_\theta \sum_{i=1}^N log P(x_i|\theta) \\ &= arg\max_\theta \sum_{i=1}^N log {\hat P}(x_i|\theta) - N \cdot \log Z(\theta) \\ &= arg\max_\theta \underbrace{ \frac{1}{N} \sum_{i=1}^N log {\hat P}(x_i|\theta) - \cdot \log Z(\theta)}_{{\mathcal L}(\theta)} \end{align} θ^=argθmaxP(Xθ)=argθmaxi=1NP(xiθ)=argθmaxlogi=1NP(xiθ)=argθmaxi=1NlogP(xiθ)=argθmaxi=1NlogP^(xiθ)NlogZ(θ)=argθmaxL(θ) N1i=1NlogP^(xiθ)logZ(θ)
此时我们采用梯度上升法求解的话,就需要求解梯度 ∇ θ L ( θ ) \nabla_\theta {\mathcal L}(\theta) θL(θ)​,我们可以对梯度做一些数学变换,使得要求的梯度变成几部分:
∇ θ L ( θ ) = 1 N ∑ i = 1 N ∇ θ log ⁡ P ^ ( x i ∣ θ ) ⏟ − ∇ θ log ⁡ Z ( θ ) ⏟ \nabla_\theta {\mathcal L}(\theta) = \frac{1}{N} \sum_{i=1}^N \underbrace{\nabla_\theta \log {\hat P}(x_i|\theta)} - \underbrace{\nabla_\theta \log Z(\theta)} θL(θ)=N1i=1N θlogP^(xiθ) θlogZ(θ)
第一部分的梯度很好求,因为我们假定的 l o g P ^ ( x i ∣ θ ) log {\hat P}(x_i|\theta) logP^(xiθ)​是一个简单分布,难点在右边,我们对右边进行数学变换:
∇ θ log ⁡ Z ( θ ) = 1 Z ( θ ) ∇ θ Z ( θ ) = P ( X ∣ θ ) P ^ ( X ∣ θ ) ∇ θ ∫ P ^ ( X ∣ θ ) = ∫ P ( X ∣ θ ) P ^ ( X ∣ θ ) ∇ θ P ^ ( X ∣ θ ) = ∫ P ( X ∣ θ ) ∇ θ log ⁡ P ^ ( X ∣ θ ) = E P ( X ∣ θ ) [ ∇ θ log ⁡ P ^ ( X ∣ θ ) ] \begin{align} \nabla_\theta \log Z(\theta) &= \frac{1}{Z(\theta)} \nabla_\theta Z(\theta) = \frac{P(X|\theta)}{{\hat P}(X|\theta)} \nabla_\theta \int {\hat P}(X|\theta) \\ &= \int \frac{P(X|\theta)}{{\hat P}(X|\theta)} \nabla_\theta {\hat P}(X|\theta) = \int {P(X|\theta)} \nabla_\theta \log {\hat P}(X|\theta) \\ &= E_{P(X|\theta)}[\nabla_\theta \log {\hat P}(X|\theta)] \end{align} θlogZ(θ)=Z(θ)1θZ(θ)=P^(Xθ)P(Xθ)θP^(Xθ)=P^(Xθ)P(Xθ)θP^(Xθ)=P(Xθ)θlogP^(Xθ)=EP(Xθ)[θlogP^(Xθ)]
经过转换,我们知道 ∇ θ log ⁡ P ^ ( X ∣ θ ) \nabla_\theta \log {\hat P}(X|\theta) θlogP^(Xθ),只要里面求得出来,且化成了期望的形式,我们就可以通过Monte Carlo方法求出近似解。若采样的数据是通过MCMC采样的且表示为 X ^ = { x ^ 1 , x ^ 2 , … , x ^ M } {\hat X} = {\lbrace {\hat x}_1, {\hat x}_2, \dots, {\hat x}_M \rbrace} X^={x^1,x^2,,x^M}具体的梯度上升公式可以写作(前半部分假设是从N个已知数据中采样出了M个):
θ ( t + 1 ) = θ ( t ) + η ∇ θ L ( θ ) = θ ( t ) + η ( ∑ i = 1 M ∇ θ log ⁡ P ^ ( x i ∣ θ ) − ∑ i = 1 M ∇ θ log ⁡ P ^ ( x ^ i ∣ θ ) ) \theta^{(t+1)} = \theta^{(t)} + \eta \nabla_\theta {\mathcal L}(\theta) = \theta^{(t)} + \eta \left( \sum_{i=1}^M \nabla_\theta \log {\hat P}(x_i|\theta) - \sum_{i=1}^M \nabla_\theta \log {\hat P}({\hat x}_i|\theta) \right) θ(t+1)=θ(t)+ηθL(θ)=θ(t)+η(i=1MθlogP^(xiθ)i=1MθlogP^(x^iθ))


通过上面的介绍已经能理解求解方法了,然后我们要对这个方法做一个解释。

上面的梯度公式,其实我们可以通过变换写作:
L ( θ ) = E P D a t a [ ∇ θ log ⁡ P ^ ( x i ∣ θ ) ] ⏟ positive phase − E P M o d e l [ ∇ θ log ⁡ P ^ ( X ∣ θ ) ] ⏟ negative phase {\mathcal L}(\theta) = \underbrace{E_{P_{Data}}[\nabla_\theta \log {\hat P}(x_i|\theta)]}_{\text{positive phase}} - \underbrace{E_{P_{Model}}[\nabla_\theta \log {\hat P}(X|\theta)]}_{\text{negative phase}} L(θ)=positive phase EPData[θlogP^(xiθ)]negative phase EPModel[θlogP^(Xθ)]
其中的 P D a t a P_{Data} PData P M o d e l P_{Model} PModel代表什么意思呢?

  1. P D a t a P_{Data} PData:表示现实分布,采样的结果其实就是用到的训练数据
  2. P M o d e l P_{Model} PModel:表示我们构建的模型分布,可以通过MCMC进行采样

其中两项分别说明:

  1. 现实分布:带来的结果毋庸置疑是给分布带来积极作用的,使得结果分布在 P D a t a P_{Data} PData的高概率区域取值更大
  2. 模型分布:由于模型是猜测的, P M o d e l P_{Model} PModel是不准确的,所以 P M o d e l P_{Model} PModel高概率区域反而应该降低

24.2 CD——Contrastive Divergence

24.2.1 CD简述

核心思想:由于采样的mixing time可能过长,所以通过修改初始值,选择一个更快可以到达均匀分布的初始值。

具体实现:初始值直接选用 P D a t a P_{Data} PData的值。

具体情况也会使用k-CD(CD-k),k表示mcmc的mixing time具体做几步。不一定要到达均匀分布再采样,忽略这个误差。

24.2.2 CD的由来——CD Learning

从MLE来看,我们可以将公式进行一个转换:
θ ^ = a r g max ⁡ θ ∑ i = 1 N log ⁡ θ ( x i ) = a r g max ⁡ θ 1 N ∑ i = 1 N log ⁡ ( x i ; θ ) = a r g max ⁡ θ E P d a t a [ log ⁡ P m o d e l ( x i ; θ ) ] = a r g max ⁡ θ ∫ P d a t a ⋅ log ⁡ P m o d e l d x = a r g max ⁡ θ ∫ P d a t a ⋅ log ⁡ P m o d e l P d a t a d x = a r g max ⁡ θ − K L ( P d a t a ∥ P m o d e l ) = a r g min ⁡ θ K L ( P d a t a ∥ P m o d e l ) \begin{align} {\hat \theta} &= arg\max_{\theta} \sum_{i=1}^{N} \log_\theta(x_i) \\ &= arg\max_{\theta} \frac{1}{N} \sum_{i=1}^{N} \log(x_i;\theta) \\ &= arg\max_{\theta} E_{P_{data}} \big[ \log_{P_{model}}(x_i;\theta) \big] \\ &= arg\max_{\theta} \int P_{data} \cdot \log P_{model} {\rm d}x \\ &= arg\max_{\theta} \int P_{data} \cdot \log \frac{P_{model}}{P_{data}} {\rm d}x \\ &= arg\max_{\theta} -KL(P_{data} \Vert P_{model}) \\ &= arg\min_{\theta} KL(P_{data} \Vert P_{model}) \\ \end{align} θ^=argθmaxi=1Nlogθ(xi)=argθmaxN1i=1Nlog(xi;θ)=argθmaxEPdata[logPmodel(xi;θ)]=argθmaxPdatalogPmodeldx=argθmaxPdatalogPdataPmodeldx=argθmaxKL(PdataPmodel)=argθminKL(PdataPmodel)
我们又假设 P ( 0 ) P^{(0)} P(0)表示样本数据(同时也是P_{model}原始数据), P ( ∞ ) P^{(\infty)} P()表示均匀分布的采样数据,而 P ( k ) P^{(k)} P(k)表示CD-k采样出来的数据。所以我们可以写得:
θ ^ = a r g min ⁡ θ K L ( P d a t a ∥ P m o d e l ) = a r g min ⁡ θ K L ( P ( 0 ) ∥ P ( ∞ ) ) {\hat \theta} = arg\min_{\theta} KL(P_{data} \Vert P_{model}) = arg\min_{\theta} KL(P^{(0)} \Vert P^{(\infty)}) θ^=argθminKL(PdataPmodel)=argθminKL(P(0)P())
根据以上的内容,我们引入CD-k的公式:
θ ^ = a r g min ⁡ θ [ K L ( P ( 0 ) ∥ P ( ∞ ) ) − K L ( P ( k ) ∥ P ( ∞ ) ) ] {\hat \theta} = arg\min_{\theta} \big[ KL(P^{(0)} \Vert P^{(\infty)}) - KL(P^{(k)} \Vert P^{(\infty)}) \big] θ^=argθmin[KL(P(0)P())KL(P(k)P())]
其中 K L ( P ( 0 ) ∥ P ( ∞ ) ) − K L ( P ( k ) ∥ P ( ∞ ) ) KL(P^{(0)} \Vert P^{(\infty)}) - KL(P^{(k)} \Vert P^{(\infty)}) KL(P(0)P())KL(P(k)P())被称作Contrastive Divergence,这一部分与过去求出的梯度公式 L ( θ ) = E P D a t a [ ∇ θ log ⁡ P ^ ( x i ∣ θ ) ] − E P M o d e l [ ∇ θ log ⁡ P ^ ( X ∣ θ ) ] {\mathcal L}(\theta) = {E_{P_{Data}}[\nabla_\theta \log {\hat P}(x_i|\theta)]} - {E_{P_{Model}}[\nabla_\theta \log {\hat P}(X|\theta)]} L(θ)=EPData[θlogP^(xiθ)]EPModel[θlogP^(Xθ)]近似。

24.3 RBM Learning

Learning问题我们已经做过很多了,无非就是通过其log-likelihood,然后通过求导得到其极值,从而求得其参数近似解。

首先回忆一下RBM中的公式是什么:
{ P ( V , H ) = 1 Z exp ⁡ { − E ( V , H ) } E ( V , H ) = − ( H T W V + α T V + β T H ) \begin{cases} P(V, H) = \frac{1}{Z} \exp{\lbrace - E(V, H) \rbrace} \\ E(V, H) = - {({H^T W V} + {\alpha^T V} + {\beta^T H})} \end{cases} {P(V,H)=Z1exp{E(V,H)}E(V,H)=(HTWV+αTV+βTH)
然后我们可以将其log-likelihood写出来,因为V表示为条件数据,所以Learning问题可以表示为:
θ ^ = 1 N ∑ v ∈ S log ⁡ P ( V ) {\hat \theta} = \frac{1}{N} \sum_{v \in S} \log P(V) θ^=N1vSlogP(V)
首先我们可以对 log ⁡ P ( V ) \log P(V) logP(V)做一个变换:
log ⁡ P ( V ) = log ⁡ ∑ H P ( H , V ) = l o g ∑ H 1 z exp ⁡ { − E ( H , V ) } = log ⁡ ∑ H exp ⁡ { − E ( H , V ) } − log ⁡ z = log ⁡ ∑ H exp ⁡ { − E ( H , V ) } − log ⁡ ∑ H , V exp ⁡ { − E ( H , V ) } \begin{align} \log P(V) &= \log \sum_{H} P(H, V) = log \sum_{H} \frac{1}{z} \exp {\lbrace -E(H, V) \rbrace} \\ &= \log \sum_{H} \exp {\lbrace -E(H, V) \rbrace} - \log z \\ &= \log \sum_{H} \exp {\lbrace -E(H, V) \rbrace} - \log \sum_{H, V} \exp {\lbrace -E(H, V) \rbrace} \\ \end{align} logP(V)=logHP(H,V)=logHz1exp{E(H,V)}=logHexp{E(H,V)}logz=logHexp{E(H,V)}logH,Vexp{E(H,V)}
我们分别对左右两项进行求导,左边通过变换可以得到:
∇ l e f t = ∇ log ⁡ ∑ H exp ⁡ { − E ( H , V ) } = 1 ∑ H exp ⁡ { − E ( H , V ) } ∇ ∑ H exp ⁡ { − E ( H , V ) } = − 1 ∑ H exp ⁡ { − E ( H , V ) } ∑ H [ exp ⁡ { − E ( H , V ) } ⋅ ∇ E ( H , V ) ] = − ∑ H [ exp ⁡ { − E ( H , V ) } ∑ H exp ⁡ { − E ( H , V ) } ⋅ ∇ E ( H , V ) ] = − ∑ H [ 1 z exp ⁡ { − E ( H , V ) } ∑ H 1 z exp ⁡ { − E ( H , V ) } ⋅ ∇ E ( H , V ) ] = − ∑ H [ P ( H , V ) P ( V ) ⋅ ∇ E ( H , V ) ] = − ∑ H [ P ( H ∣ V ) ⋅ ∇ E ( H , V ) ] \begin{align} \nabla left &= \nabla \log \sum_{H} \exp {\lbrace -E(H, V) \rbrace} \\ &= \frac{1}{\sum_{H} \exp {\lbrace -E(H, V) \rbrace}} \nabla \sum_{H} \exp {\lbrace -E(H, V) \rbrace} \\ &= - \frac{1}{\sum_{H} \exp {\lbrace -E(H, V) \rbrace}} \sum_{H} \left[ \exp {\lbrace -E(H, V) \rbrace} \cdot \nabla E(H, V) \right] \\ &= - \sum_{H} \left[ \frac{ \exp {\lbrace -E(H, V) \rbrace}}{\sum_{H} \exp {\lbrace -E(H, V) \rbrace}} \cdot \nabla E(H, V) \right] \\ &= - \sum_{H} \left[ \frac{\frac{1}{z} \exp {\lbrace -E(H, V) \rbrace}}{\sum_{H} \frac{1}{z} \exp {\lbrace -E(H, V) \rbrace}} \cdot \nabla E(H, V) \right] \\ &= - \sum_{H} \left[ \frac{P(H, V)}{P(V)} \cdot \nabla E(H, V) \right] \\ &= - \sum_{H} \left[ P(H|V) \cdot \nabla E(H, V) \right] \\ \end{align} left=logHexp{E(H,V)}=Hexp{E(H,V)}1Hexp{E(H,V)}=Hexp{E(H,V)}1H[exp{E(H,V)}E(H,V)]=H[Hexp{E(H,V)}exp{E(H,V)}E(H,V)]=H[Hz1exp{E(H,V)}z1exp{E(H,V)}E(H,V)]=H[P(V)P(H,V)E(H,V)]=H[P(HV)E(H,V)]
右边通过变换可以得到:
∇ r i g h t = ∇ log ⁡ ∑ H , V exp ⁡ { − E ( H , V ) } = 1 exp ⁡ { − E ( H , V ) } ∇ ∑ H , V exp ⁡ { − E ( H , V ) } = − 1 ∑ H , V exp ⁡ { − E ( H , V ) } ∑ H , V [ exp ⁡ { − E ( H , V ) } ⋅ ∇ E ( H , V ) ] = − ∑ H , V [ exp ⁡ { − E ( H , V ) } ∑ H , V exp ⁡ { − E ( H , V ) } ⋅ ∇ E ( H , V ) ] = − ∑ H , V [ 1 z exp ⁡ { − E ( H , V ) } ⋅ ∇ E ( H , V ) ] = − ∑ H , V [ P ( H , V ) ⋅ ∇ E ( H , V ) ] \begin{align} \nabla right &= \nabla \log \sum_{H, V} \exp {\lbrace -E(H, V) \rbrace} \\ &= \frac{1}{\exp {\lbrace -E(H, V) \rbrace}} \nabla \sum_{H, V} \exp {\lbrace -E(H, V) \rbrace} \\ &= - \frac{1}{\sum_{H, V} \exp {\lbrace -E(H, V) \rbrace}} \sum_{H, V} \left[ \exp {\lbrace -E(H, V) \rbrace} \cdot \nabla E(H, V) \right] \\ &= - \sum_{H, V} \left[ \frac{\exp {\lbrace -E(H, V) \rbrace}}{\sum_{H, V} \exp {\lbrace -E(H, V) \rbrace}} \cdot \nabla E(H, V) \right] \\ &= - \sum_{H, V} \left[ \frac{1}{z} \exp {\lbrace -E(H, V) \rbrace} \cdot \nabla E(H, V) \right] \\ &= - \sum_{H, V} \left[ P(H, V) \cdot \nabla E(H, V) \right] \\ \end{align} right=logH,Vexp{E(H,V)}=exp{E(H,V)}1H,Vexp{E(H,V)}=H,Vexp{E(H,V)}1H,V[exp{E(H,V)}E(H,V)]=H,V[H,Vexp{E(H,V)}exp{E(H,V)}E(H,V)]=H,V[z1exp{E(H,V)}E(H,V)]=H,V[P(H,V)E(H,V)]
所以我们可以得到结果为:
∇ log ⁡ P ( V ) = − ∑ H [ P ( H ∣ V ) ⋅ ∇ E ( H , V ) ] + ∑ H , V [ P ( H , V ) ⋅ ∇ E ( H , V ) ] \begin{align} \nabla \log P(V) &= - \sum_{H} \left[ P(H|V) \cdot \nabla E(H, V) \right] + \sum_{H, V} \left[ P(H, V) \cdot \nabla E(H, V) \right] \end{align} logP(V)=H[P(HV)E(H,V)]+H,V[P(H,V)E(H,V)]


参数 θ \theta θ中包含 H = ( h 1 , h 2 , … , h m ) T , V = ( v 1 , v 2 , … , v m ) T , W = [ w i j ] m × n H = (h_1, h_2, \dots, h_m)^T, V = (v_1, v_2, \dots, v_m)^T, W = [w_{ij}]_{m \times n} H=(h1,h2,,hm)T,V=(v1,v2,,vm)T,W=[wij]m×n具体以求解 w i j w_{ij} wij为例。

根据之前的公式,加上由于 ∇ w i j E ( H , V ) = − h i v j \nabla_{w_{ij}} E(H, V) = - h_i v_j wijE(H,V)=hivj,这个很简单。所以我们可以得到:
∇ w i j log ⁡ P ( V ) = − ∑ H [ P ( H ∣ V ) ⋅ ∇ w i j E ( H , V ) ] + ∑ H , V [ P ( H , V ) ⋅ ∇ w i j E ( H , V ) ] = − ∑ H [ P ( H ∣ V ) ⋅ ( − h i v j ) ] + ∑ H , V [ P ( H , V ) ⋅ ( − h i v j ) ] = ∑ H [ P ( H ∣ V ) ⋅ h i v j ] − ∑ H , V [ P ( H , V ) ⋅ h i v j ] \begin{align} \nabla_{w_{ij}} \log P(V) &= - \sum_{H} \left[ P(H|V) \cdot \nabla_{w_{ij}} E(H, V) \right] + \sum_{H, V} \left[ P(H, V) \cdot \nabla_{w_{ij}} E(H, V) \right] \\ &= - \sum_{H} \left[ P(H|V) \cdot (- h_i v_j) \right] + \sum_{H, V} \left[ P(H, V) \cdot (- h_i v_j) \right] \\ &= \sum_{H} \left[ P(H|V) \cdot h_i v_j \right] - \sum_{H, V} \left[ P(H, V) \cdot h_i v_j \right] \\ \end{align} wijlogP(V)=H[P(HV)wijE(H,V)]+H,V[P(H,V)wijE(H,V)]=H[P(HV)(hivj)]+H,V[P(H,V)(hivj)]=H[P(HV)hivj]H,V[P(H,V)hivj]
这里已经得出来结果了,但因为在RBM中,隐变量的值一般都是0/1变量,所以还可以继续化简:
l e f t = ∑ H [ P ( H ∣ V ) ⋅ h i v j ] = ∑ h 1 ∑ h 2 ⋯ ∑ h m [ P ( h 1 , h 2 , … , h m ∣ V ) ⋅ h i v j ] = ∑ h i [ P ( h i ∣ V ) ⋅ h i v j ] = P ( h i = 1 ∣ V ) ⋅ v j \begin{align} left &= \sum_{H} \left[ P(H|V) \cdot h_i v_j \right] \\ &= \sum_{h_1} \sum_{h_2} \dots \sum_{h_m} \left[ P(h1, h2, \dots, h_m|V) \cdot h_i v_j \right] \\ &= \sum_{h_i} \left[ P(hi|V) \cdot h_i v_j \right] \\ &= P(h_i=1|V) \cdot v_j \\ \end{align} left=H[P(HV)hivj]=h1h2hm[P(h1,h2,,hmV)hivj]=hi[P(hiV)hivj]=P(hi=1∣V)vj

r i g h t = ∑ H , V [ P ( H , V ) ⋅ h i v j ] = ∑ H ∑ V [ P ( V ) ⋅ P ( H ∣ V ) ⋅ h i v j ] = ∑ V [ P ( V ) ⋅ ∑ H [ P ( H ∣ V ) ⋅ h i v j ] ] = ∑ V [ P ( V ) ⋅ P ( h i = 1 ∣ V ) ⋅ v j ] \begin{align} right &= \sum_{H, V} \left[ P(H, V) \cdot h_i v_j \right] \\ &= \sum_{H} \sum_{V} \left[ P(V) \cdot P(H|V) \cdot h_i v_j \right] \\ &= \sum_{V} \left[ P(V) \cdot \sum_{H} \left[ P(H|V) \cdot h_i v_j \right] \right] \\ &= \sum_{V} \left[ P(V) \cdot P(h_i=1|V) \cdot v_j \right] \\ \end{align} right=H,V[P(H,V)hivj]=HV[P(V)P(HV)hivj]=V[P(V)H[P(HV)hivj]]=V[P(V)P(hi=1∣V)vj]

所以最终可以化为:
∇ w i j log ⁡ P ( V ) = P ( h i = 1 ∣ V ) ⋅ v j − ∑ V [ P ( V ) ⋅ P ( h i = 1 ∣ V ) ⋅ v j ] \begin{align} \nabla_{w_{ij}} \log P(V) &= P(h_i=1|V) \cdot v_j - \sum_{V} \left[ P(V) \cdot P(h_i=1|V) \cdot v_j \right] \end{align} wijlogP(V)=P(hi=1∣V)vjV[P(V)P(hi=1∣V)vj]


此时我们可以看出来公式的左边是可解的,不过公式的右边可能无法求出积分,所以要对右边进行采样,通过MCMC求解。我们在这里选取的采样方法就是CD-k,是一种特殊的Gibbs采样。

我们现在的核心就是对公式的右边进行采样求解,首先就要将其化为期望的形式:
∑ V [ P ( V ) ⋅ P ( h i = 1 ∣ V ) ⋅ v j ] = E P ( V ) [ P ( h i = 1 ∣ V ) ⋅ v j ] \sum_{V} \left[ P(V) \cdot P(h_i=1|V) \cdot v_j \right] = E_{P(V)} \left[ P(h_i=1|V) \cdot v_j \right] V[P(V)P(hi=1∣V)vj]=EP(V)[P(hi=1∣V)vj]
所以我们要在 P ( V ) P(V) P(V),也就是 P ( V ∣ H ) P(V|H) P(VH)中进行采样。根据这个我们也就知道,我们不止要对 V V V进行采样,也要对 H H H进行采样。具体的流程可以写为:

For V in S:
V V V <- V ( 0 ) V^{(0)} V(0)
For l = 0 to k-1:
For i = 1 to m:
get sample h i ( l ) ∽ P ( H ∣ V ( l ) ) h^{(l)}_{i} \backsim P(H | V^{(l)}) hi(l)P(HV(l))
For i = 1 to n:
get sample v j ( l + 1 ) ∽ P ( V ∣ H ( l ) ) v^{(l+1)}_{j} \backsim P(V | H^{(l)}) vj(l+1)P(VH(l))
For i = 1 to m:
For j = 1 to n:
∇ w i j \nabla w_{ij} wij <- ∇ w i j + ∇ log ⁡ P ( V ) \nabla w_{ij} + \nabla \log P(V) wij+logP(V)

我们可以看出来,我们是对 H H H V V V进行交替采样,并且最后进行梯度上升得到结果。其中 ∇ log ⁡ P ( V ) \nabla \log P(V) logP(V)就是之前求出来的公式,我们假设训练数据表示为 V ( 0 ) V^{(0)} V(0),CD-k采样出来的样本表示为 V ( k ) V^{(k)} V(k),则 ∇ log ⁡ P ( V ) \nabla \log P(V) logP(V)可以表示为:
∇ log ⁡ P ( V ) ≈ P ( h i = 1 ∣ V ( 0 ) ) ⋅ v j ( 0 ) − P ( h i = 1 ∣ V ( k ) ) ⋅ v j ( k ) \nabla \log P(V) \approx P(h_i=1|V^{(0)}) \cdot v^{(0)}_j - P(h_i=1|V^{(k)}) \cdot v^{(k)}_j logP(V)P(hi=1∣V(0))vj(0)P(hi=1∣V(k))vj(k)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值