28 玻尔兹曼机

文章目录

  • 28 玻尔兹曼机
    • 28.1 模型定义
    • 28.2 梯度推导
    • 28.3 梯度上升
    • 28.4 基于VI[平均场理论]求解后验概率

28 玻尔兹曼机

28.1 模型定义

玻尔兹曼机是一张无向图,其中的隐节点和观测节点可以有任意连接如下图:

我们给其中的节点、连线做出一些定义:

  1. 节点:观测节点 V = { 0 , 1 } D V = {\lbrace 0, 1 \rbrace}^D V={0,1}D,隐节点 H = { 0 , 1 } P H = {\lbrace 0, 1 \rbrace}^P H={0,1}P
  2. 连线:观测节点之间 L = [ L i j ] D × D L = [L_{ij}]_{D \times D} L=[Lij]D×D,隐节点之间 J = [ J i j ] P × P J = [J_{ij}]_{P \times P} J=[Jij]P×P,观测节点与隐节点之间 W = [ W i j ] D × P W = [W_{ij}]_{D \times P} W=[Wij]D×P
  3. 参数: θ = { W , L , J } \theta = {\lbrace W, L, J \rbrace} θ={W,L,J}

则我们可以根据上面的定义,加上无向图能量方程的性质得到公式:
{ P ( V ∣ H ) = 1 z e x p − E ( V , H ) E ( V , H ) = − ( V T W H + 1 2 V T L V + 1 2 H T J H ⏟ 矩阵对称,参数除 2 ) \begin{cases} P(V|H) = \frac{1}{z} exp{-E(V, H)} \\ E(V, H) = -( {V^T W H} + \underbrace{\frac{1}{2} {V^T L V} + \frac{1}{2} {H^T J H}}_{矩阵对称,参数除2} ) \end{cases} P(VH)=z1expE(V,H)E(V,H)=(VTWH+矩阵对称,参数除2 21VTLV+21HTJH)

28.2 梯度推导

我们的目标函数就是 P ( V ) P(V) P(V),所以可以讲log-likelihood写作: 1 N ∑ v ∈ V log ⁡ P ( v ) \frac{1}{N} \sum_{v \in V} \log P(v) N1vVlogP(v),并且 ∣ V ∣ = N |V| = N V=N。所以我们可以将他的梯度写为 1 N ∑ v ∈ V ∇ θ log ⁡ P ( v ) \frac{1}{N} \sum_{v \in V} \nabla_\theta \log P(v) N1vVθlogP(v)。其中 ∇ θ log ⁡ P ( v ) \nabla_\theta \log P(v) θlogP(v)的推导在24-直面配分函数的RBM-Learning问题中已经推导过了,可以得到:
∇ θ log ⁡ P ( v ) = ∑ v ∑ H P ( v , H ) ⋅ ∇ θ E ( v , H ) − ∑ H P ( H ∣ v ) ⋅ ∇ θ E ( v , H ) \nabla_\theta \log P(v) = \sum_v \sum_H P(v, H) \cdot \nabla_\theta E(v, H) - \sum_H P(H| v) \cdot \nabla_\theta E(v, H) θlogP(v)=vHP(v,H)θE(v,H)HP(Hv)θE(v,H)
我们对E(v, H)求其中一个参数的导的结果很容易求,所以可以将公式写作:
∇ w log ⁡ P ( v ) = ∑ v ∑ H P ( v , H ) ⋅ ( − V H T ) − ∑ H P ( H ∣ v ) ⋅ ( − V H T ) = ∑ H P ( H ∣ v ) ⋅ V H T − ∑ v ∑ H P ( v , H ) ⋅ V H T \begin{align} \nabla_w \log P(v) &= \sum_v \sum_H P(v, H) \cdot (- V H^T) - \sum_H P(H| v) \cdot (- V H^T) \\ &= \sum_H P(H| v) \cdot V H^T - \sum_v \sum_H P(v, H) \cdot V H^T \end{align} wlogP(v)=vHP(v,H)(VHT)HP(Hv)(VHT)=HP(Hv)VHTvHP(v,H)VHT
将其带入原式可得:
∇ w L = 1 N ∑ v ∈ V ∇ θ log ⁡ P ( v ) = 1 N ∑ v ∈ V ∑ H P ( H ∣ v ) ⋅ V H T − 1 N ∑ v ∈ V ⏟ 1 N × N ∑ v ∑ H P ( v , H ) ⋅ V H T = 1 N ∑ v ∈ V ∑ H P ( H ∣ v ) ⋅ V H T − ∑ v ∑ H P ( v , H ) ⋅ V H T \begin{align} \nabla_w {\mathcal L} &= \frac{1}{N} \sum_{v \in V} \nabla_\theta \log P(v) \\ &= \frac{1}{N} \sum_{v \in V} \sum_H P(H| v) \cdot V H^T - \underbrace{\frac{1}{N} \sum_{v \in V}}_{\frac{1}{N} \times N} \sum_v \sum_H P(v, H) \cdot V H^T \\ &= \frac{1}{N} \sum_{v \in V} \sum_H P(H| v) \cdot V H^T - \sum_v \sum_H P(v, H) \cdot V H^T \\ \end{align} wL=N1vVθlogP(v)=N1vVHP(Hv)VHTN1×N N1vVvHP(v,H)VHT=N1vVHP(Hv)VHTvHP(v,H)VHT
我们用 P d a t a P_{data} Pdata表示 P d a t a ( v , H ) = P d a t a ( v ) ⋅ P m o d e l ( H ∣ v ) P_{data}(v, H) = P_{data}(v) \cdot P_{model}(H| v) Pdata(v,H)=Pdata(v)Pmodel(Hv) P m o d e l P_{model} Pmodel表示 P m o d e l ( v , H ) P_{model}(v, H) Pmodel(v,H),则可以将公式再转化为:
∇ w L = E P d a t a [ V H T ] − E P m o d e l [ V H T ] \begin{align} \nabla_w {\mathcal L} &= E_{P_{data}} \left[ V H^T \right] - E_{P_{model}} \left[ V H^T \right] \end{align} wL=EPdata[VHT]EPmodel[VHT]

28.3 梯度上升

给三个参数分别写出他们的变化量(系数 × \times ×梯度):
{ Δ W = α ( E P d a t a [ V H T ] − E P m o d e l [ V H T ] ) Δ L = α ( E P d a t a [ V V T ] − E P m o d e l [ V V T ] ) Δ J = α ( E P d a t a [ H H T ] − E P m o d e l [ H H T ] ) \begin{cases} \Delta W = \alpha (E_{P_{data}} \left[ V H^T \right] - E_{P_{model}} \left[ V H^T \right]) \\ \Delta L = \alpha (E_{P_{data}} \left[ V V^T \right] - E_{P_{model}} \left[ V V^T \right]) \\ \Delta J = \alpha (E_{P_{data}} \left[ H H^T \right] - E_{P_{model}} \left[ H H^T \right]) \\ \end{cases} ΔW=α(EPdata[VHT]EPmodel[VHT])ΔL=α(EPdata[VVT]EPmodel[VVT])ΔJ=α(EPdata[HHT]EPmodel[HHT])
这是用于表示在一次梯度上升中参数的改变量,由于 W , L , J W,L,J W,L,J​是矩阵,将他们拆的更细可以写作:
Δ w i j = α ( E P d a t a [ v i h j ] ⏟ positive phase − E P m o d e l [ v i h j ] ⏟ negative phase ) \Delta w_{ij} = \alpha ( \underbrace{E_{P_{data}} \left[ v_i h_j \right]}_{\text{positive phase}} - \underbrace{E_{P_{model}} \left[ v_i h_j \right]}_{\text{negative phase}} ) Δwij=α(positive phase EPdata[vihj]negative phase EPmodel[vihj])
但是这两项都很难求,因为要用到 P m o d e l P_{model} Pmodel,如果要得到 P m o d e l P_{model} Pmodel则要采用MCMC的方法,但对一个这样的图进行MCMC非常的消耗时间(不过这也给我们提供了一个解题思路)。

具体要用到MCMC的话,我们必须要有每一个维度的后验,所以我们根据复杂的推导(下面证明)可以得到每一个维度的后验——在固定其他维度求这一个维度的情况:
{ P ( v i = 1 ∣ H , V − i ) = σ ( ∑ j = 1 P w i j h j + ∑ k = 1 , − i D L i k v k ) P ( h j = 1 ∣ V , H − j ) = σ ( ∑ i = 1 P w i j v i + ∑ m = 1 , − i D J j m h m ) \begin{cases} P(v_i = 1|H, V_{-i}) = \sigma(\sum_{j=1}^P w_{ij} h_j + \sum_{k=1,-i}^D L_{ik} v_k) \\ P(h_j = 1|V, H_{-j}) = \sigma(\sum_{i=1}^P w_{ij} v_i + \sum_{m=1,-i}^D J_{jm} h_m) \\ \end{cases} {P(vi=1∣H,Vi)=σ(j=1Pwijhj+k=1,iDLikvk)P(hj=1∣V,Hj)=σ(i=1Pwijvi+m=1,iDJjmhm)
这个公式我们可以发现在RBM情况下也是符合RBM后验公式的。


接下来我们证明一下上面这个公式,下文验证 P ( v i ∣ H , V − i ) P(v_i|H, V_{-i}) P(viH,Vi)的情况, P ( h j ∣ V , H − j ) P(h_j|V, H_{-j}) P(hjV,Hj)​可以类比。首先对其进行变换:
P ( v i ∣ H , V − i ) = P ( H , V ) P ( H , V − i ) = 1 Z exp ⁡ { − E [ V , H ] } ∑ v i 1 Z exp ⁡ { − E [ V , H ] } = 1 Z exp ⁡ { V T W H + 1 2 V T L V + 1 2 H T J H } ∑ v i 1 Z exp ⁡ { V T W H + 1 2 V T L V + 1 2 H T J H } = 1 Z exp ⁡ { V T W H + 1 2 V T L V } ⋅ exp ⁡ { 1 2 H T J H } 1 Z exp ⁡ { 1 2 H T J H } ⋅ ∑ v i exp ⁡ { V T W H + 1 2 V T L V } = exp ⁡ { V T W H + 1 2 V T L V } ∑ v i exp ⁡ { V T W H + 1 2 V T L V } = exp ⁡ { V T W H + 1 2 V T L V } ∣ v i = 1 exp ⁡ { V T W H + 1 2 V T L V } ∣ v i = 0 + exp ⁡ { V T W H + 1 2 V T L V } ∣ v i = 1 \begin{align} P(v_i|H, V_{-i}) &= \frac{P(H, V)}{P(H, V_{-i})} \\ &= \frac{ \frac{1}{Z} \exp{\lbrace - E[V, H] \rbrace} }{ \sum_{v_i} \frac{1}{Z} \exp{\lbrace - E[V, H] \rbrace}} \\ &= \frac{ \frac{1}{Z} \exp{\lbrace {V^T W H} + \frac{1}{2} {V^T L V} + \frac{1}{2} {H^T J H} \rbrace} }{ \sum_{v_i} \frac{1}{Z} \exp{\lbrace {V^T W H} + \frac{1}{2} {V^T L V} + \frac{1}{2} {H^T J H} \rbrace}} \\ &= \frac{ \frac{1}{Z} \exp{\lbrace {V^T W H} + \frac{1}{2} {V^T L V} \rbrace} \cdot \exp{\lbrace \frac{1}{2} {H^T J H} \rbrace} }{ \frac{1}{Z} \exp{\lbrace \frac{1}{2} {H^T J H} \rbrace} \cdot \sum_{v_i} \exp{\lbrace {V^T W H} + \frac{1}{2} {V^T L V} \rbrace}} \\ &= \frac{ \exp{\lbrace {V^T W H} + \frac{1}{2} {V^T L V} \rbrace} }{ \sum_{v_i} \exp{\lbrace {V^T W H} + \frac{1}{2} {V^T L V} \rbrace}} \\ &= \frac{ \exp{\lbrace {V^T W H} + \frac{1}{2} {V^T L V} \rbrace}|_{v_i = 1} }{ \exp{\lbrace {V^T W H} + \frac{1}{2} {V^T L V} \rbrace}|_{v_i = 0} + \exp{\lbrace {V^T W H} + \frac{1}{2} {V^T L V} \rbrace}|_{v_i = 1} } \\ \end{align} P(viH,Vi)=P(H,Vi)P(H,V)=viZ1exp{E[V,H]}Z1exp{E[V,H]}=viZ1exp{VTWH+21VTLV+21HTJH}Z1exp{VTWH+21VTLV+21HTJH}=Z1exp{21HTJH}viexp{VTWH+21VTLV}Z1exp{VTWH+21VTLV}exp{21HTJH}=viexp{VTWH+21VTLV}exp{VTWH+21VTLV}=exp{VTWH+21VTLV}vi=0+exp{VTWH+21VTLV}vi=1exp{VTWH+21VTLV}vi=1
若我们将相同的部份表示为 Δ v i \Delta_{v_i} Δvi,则可以将公式写为:
P ( v i ∣ H , V − i ) = Δ v i ∣ v i = 1 Δ v i ∣ v i = 0 + Δ v i ∣ v i = 1 \begin{align} P(v_i|H, V_{-i}) &= \frac{ \Delta_{v_i}|_{v_i = 1} }{ \Delta_{v_i}|_{v_i = 0} + \Delta_{v_i}|_{v_i = 1} } \\ \end{align} P(viH,Vi)=Δvivi=0+Δvivi=1Δvivi=1
其中 Δ v i \Delta_{v_i} Δvi可以做如下变换:
Δ v i = exp ⁡ { V T W H + 1 2 V T L V } = exp ⁡ { ∑ i ^ = 1 D ∑ j = 1 P v i ^ W i ^ j h j + 1 2 ∑ i ^ = 1 D ∑ k = 1 D v i ^ L i ^ k v k } \begin{align} \Delta_{v_i} &= \exp{\lbrace {V^T W H} + \frac{1}{2} {V^T L V} \rbrace} \\ &= \exp{\lbrace \sum_{{\hat i} = 1}^{D} \sum_{j = 1}^{P} {v_{\hat i} W_{{\hat i} j} h_j} + \frac{1}{2} \sum_{{\hat i} = 1}^{D} \sum_{k = 1}^{D} {v_{\hat i} L_{{\hat i} k} v_k} \rbrace} \end{align} Δvi=exp{VTWH+21VTLV}=exp{i^=1Dj=1Pvi^Wi^jhj+21i^=1Dk=1Dvi^Li^kvk}
我们接下来将有 v i v_i vi的项全部拆分出来:
Δ v i = exp ⁡ { ∑ i ^ = 1 , − i D ∑ j = 1 P v i ^ W i ^ j h j + ∑ j = 1 P v i W i j h j } ⋅ exp ⁡ { 1 2 ( ∑ i ^ = 1 , − i D ∑ k = 1 , − i D v i ^ W i ^ k h k + v i L i i v i ⏟ 0 + ∑ i ^ = 1 , − i D v i ^ W i ^ i v i ⏟ 相同 + ∑ k = 1 , − i D v i L i k v k ) } = exp ⁡ { ∑ i ^ = 1 , − i D ∑ j = 1 P v i ^ W i ^ j h j + ∑ j = 1 P v i W i j h j + 1 2 ∑ i ^ = 1 , − i D ∑ k = 1 , − i D v i ^ W i ^ k h k + ∑ k = 1 , − i D v i L i k v k } \begin{align} \Delta_{v_i} &= \exp{\lbrace \sum_{{\hat i} = 1, -i}^{D} \sum_{j = 1}^{P} {v_{\hat i} W_{{\hat i} j} h_j} + \sum_{j = 1}^{P} {v_i W_{i j} h_j} \rbrace} \\ & \cdot \exp{\lbrace \frac{1}{2} \left( \sum_{{\hat i} = 1, -i}^{D} \sum_{k = 1,-i}^{D} {v_{\hat i} W_{{\hat i} k} h_k} + \underbrace{v_i L_{ii} v_i}_{0} + \underbrace{\sum_{{\hat i} = 1, -i}^{D} {v_{\hat i} W_{{\hat i} i} v_i}}_{相同} + \sum_{k = 1, -i}^{D} {v_i L_{i k} v_k} \right) \rbrace} \\ &= \exp{\lbrace \sum_{{\hat i} = 1, -i}^{D} \sum_{j = 1}^{P} {v_{\hat i} W_{{\hat i} j} h_j} + \sum_{j = 1}^{P} {v_i W_{i j} h_j} + \frac{1}{2} \sum_{{\hat i} = 1, -i}^{D} \sum_{k = 1,-i}^{D} {v_{\hat i} W_{{\hat i} k} h_k} + \sum_{k = 1, -i}^{D} {v_i L_{i k} v_k} \rbrace} \end{align} Δvi=exp{i^=1,iDj=1Pvi^Wi^jhj+j=1PviWijhj}exp{21 i^=1,iDk=1,iDvi^Wi^khk+0 viLiivi+相同 i^=1,iDvi^Wi^ivi+k=1,iDviLikvk }=exp{i^=1,iDj=1Pvi^Wi^jhj+j=1PviWijhj+21i^=1,iDk=1,iDvi^Wi^khk+k=1,iDviLikvk}
所以我们将 v i = 1 v_i = 1 vi=1 v i = 0 v_i = 0 vi=0代入该公式即可得出结果。
Δ v i = 0 = exp ⁡ { ∑ i ^ = 1 , − i D ∑ j = 1 P v i ^ W i ^ j h j + 1 2 ∑ i ^ = 1 , − i D ∑ k = 1 , − i D v i ^ W i ^ k h k } = exp ⁡ { A + B } Δ v i = 1 = exp ⁡ { A + B + ∑ j = 1 P W i j h j + ∑ k = 1 , − i D L i k v k } \begin{align} \Delta_{v_i = 0} &= \exp{\lbrace \sum_{{\hat i} = 1, -i}^{D} \sum_{j = 1}^{P} {v_{\hat i} W_{{\hat i} j} h_j} + \frac{1}{2} \sum_{{\hat i} = 1, -i}^{D} \sum_{k = 1,-i}^{D} {v_{\hat i} W_{{\hat i} k} h_k} \rbrace} = \exp{\lbrace A + B \rbrace} \\ \Delta_{v_i = 1} &= \exp{\lbrace A + B + \sum_{j = 1}^{P} {W_{i j} h_j} + \sum_{k = 1, -i}^{D} {L_{i k} v_k} \rbrace} \end{align} Δvi=0Δvi=1=exp{i^=1,iDj=1Pvi^Wi^jhj+21i^=1,iDk=1,iDvi^Wi^khk}=exp{A+B}=exp{A+B+j=1PWijhj+k=1,iDLikvk}

P ( v i ∣ H , V − i ) = Δ v i ∣ v i = 1 Δ v i ∣ v i = 0 + Δ v i ∣ v i = 1 = exp ⁡ { A + B + ∑ j = 1 P W i j h j + ∑ k = 1 , − i D L i k v k } exp ⁡ { A + B } + exp ⁡ { A + B + ∑ j = 1 P W i j h j + ∑ k = 1 , − i D L i k v k } = exp ⁡ { ∑ j = 1 P W i j h j + ∑ k = 1 , − i D L i k v k } 1 + exp ⁡ { ∑ j = 1 P W i j h j + ∑ k = 1 , − i D L i k v k } = σ ( ∑ j = 1 P W i j h j + ∑ k = 1 , − i D L i k v k ) \begin{align} P(v_i|H, V_{-i}) &= \frac{ \Delta_{v_i}|_{v_i = 1} }{ \Delta_{v_i}|_{v_i = 0} + \Delta_{v_i}|_{v_i = 1} } \\ &= \frac{ \exp{\lbrace A + B + \sum_{j = 1}^{P} {W_{i j} h_j} + \sum_{k = 1, -i}^{D} {L_{i k} v_k} \rbrace} }{ \exp{\lbrace A + B \rbrace} + \exp{\lbrace A + B + \sum_{j = 1}^{P} {W_{i j} h_j} + \sum_{k = 1, -i}^{D} {L_{i k} v_k} \rbrace} } \\ &= \frac{ \exp{\lbrace \sum_{j = 1}^{P} {W_{i j} h_j} + \sum_{k = 1, -i}^{D} {L_{i k} v_k} \rbrace} }{ 1 + \exp{\lbrace \sum_{j = 1}^{P} {W_{i j} h_j} + \sum_{k = 1, -i}^{D} {L_{i k} v_k} \rbrace} } \\ &= \sigma(\sum_{j = 1}^{P} {W_{i j} h_j} + \sum_{k = 1, -i}^{D} {L_{i k} v_k}) \end{align} P(viH,Vi)=Δvivi=0+Δvivi=1Δvivi=1=exp{A+B}+exp{A+B+j=1PWijhj+k=1,iDLikvk}exp{A+B+j=1PWijhj+k=1,iDLikvk}=1+exp{j=1PWijhj+k=1,iDLikvk}exp{j=1PWijhj+k=1,iDLikvk}=σ(j=1PWijhj+k=1,iDLikvk)

28.4 基于VI[平均场理论]求解后验概率

我们的参数,通过梯度求出的变化量可以表示为:
{ Δ W = α ( E P d a t a [ V H T ] − E P m o d e l [ V H T ] ) Δ L = α ( E P d a t a [ V V T ] − E P m o d e l [ V V T ] ) Δ J = α ( E P d a t a [ H H T ] − E P m o d e l [ H H T ] ) \begin{cases} \Delta W = \alpha (E_{P_{data}} \left[ V H^T \right] - E_{P_{model}} \left[ V H^T \right]) \\ \Delta L = \alpha (E_{P_{data}} \left[ V V^T \right] - E_{P_{model}} \left[ V V^T \right]) \\ \Delta J = \alpha (E_{P_{data}} \left[ H H^T \right] - E_{P_{model}} \left[ H H^T \right]) \\ \end{cases} ΔW=α(EPdata[VHT]EPmodel[VHT])ΔL=α(EPdata[VVT]EPmodel[VVT])ΔJ=α(EPdata[HHT]EPmodel[HHT])
但是如果要直接求出其后验概率,还应该从 L = E L B O {\mathcal L} = ELBO L=ELBO开始分析,通过平均场理论(在VI中使用过)进行分解:
L = E L B O = log ⁡ P θ ( V ) − K L ( q ϕ ∥ p θ ) = ∑ h q ϕ ( H ∣ V ) ⋅ log ⁡ P θ ( V , H ) + H [ q ] \begin{align} {\mathcal L} &= ELBO = \log P_\theta(V) - KL(q_\phi \Vert p_\theta) = \sum_h q_\phi(H|V) \cdot \log P_\theta(V,H) + H[q] \end{align} L=ELBO=logPθ(V)KL(qϕpθ)=hqϕ(HV)logPθ(V,H)+H[q]
我们在这里做出一些假设(将 q ( H ∣ V ) q(H|V) q(HV)拆分为P个维度之积):
{ q ϕ ( H ∣ V ) = ∏ j = 1 P q ϕ ( H j ∣ V ) q ϕ ( H j = 1 ∣ V ) = ϕ j ϕ = { ϕ j } j = 1 P \begin{cases} q_\phi(H|V) = \prod_{j=1}^{P} q_\phi(H_j|V) \\ q_\phi(H_j = 1| V) = \phi_j \\ \phi = \{\phi_j\}_{j=1}^P \\ \end{cases} qϕ(HV)=j=1Pqϕ(HjV)qϕ(Hj=1∣V)=ϕjϕ={ϕj}j=1P
如果我们要求出后验概率就是学习参数 θ \theta θ,在之类也等同于学习参数 ϕ \phi ϕ,于是我们可以对 a r g max ⁡ ϕ j L arg\max_{\phi_j}{\mathcal L} argmaxϕjL​进行求解,我们将其进行化简:
ϕ j ^ = a r g max ⁡ ϕ j L = a r g max ⁡ ϕ j E L B O = a r g max ⁡ ϕ j ∑ h q ϕ ( H ∣ V ) ⋅ log ⁡ P θ ( V , H ) + H [ q ] = a r g max ⁡ ϕ j ∑ h q ϕ ( H ∣ V ) ⋅ [ − log ⁡ Z + V T W H + 1 2 V T L V + 1 2 H T J H ] + H [ q ] = a r g max ⁡ ϕ j ∑ h q ϕ ( H ∣ V ) ⏟ = 1 ⋅ [ − log ⁡ Z + 1 2 V T L V ] ⏟ 与h和 ϕ j 都无关,为常数C + ∑ h q ϕ ( H ∣ V ) ⋅ [ V T W H + 1 2 H T J H ] + H [ q ] = a r g max ⁡ ϕ j ∑ h q ϕ ( H ∣ V ) ⋅ [ V T W H + 1 2 H T J H ] + H [ q ] = a r g max ⁡ ϕ j ∑ h q ϕ ( H ∣ V ) ⋅ V T W H ⏟ ( 1 ) + 1 2 ∑ h q ϕ ( H ∣ V ) ⋅ H T J H ⏟ ( 2 ) + H [ q ] ⏟ ( 3 ) \begin{align} {\hat {\phi_j}} &= arg\max_{\phi_j} {\mathcal L} = arg\max_{\phi_j} ELBO \\ &= arg\max_{\phi_j} \sum_h q_\phi(H|V) \cdot \log P_\theta(V,H) + H[q] \\ &= arg\max_{\phi_j} \sum_h q_\phi(H|V) \cdot \left[ -\log Z + {V^T W H} + \frac{1}{2} {V^T L V} + \frac{1}{2} {H^T J H} \right] + H[q] \\ &= arg\max_{\phi_j} \underbrace{\sum_h q_\phi(H|V)}_{=1} \cdot \underbrace{\left[ -\log Z + \frac{1}{2} {V^T L V} \right]}_{\text{与h和$\phi_j$都无关,为常数C}} + \sum_h q_\phi(H|V) \cdot \left[ {V^T W H} + \frac{1}{2} {H^T J H} \right] + H[q] \\ &= arg\max_{\phi_j} \sum_h q_\phi(H|V) \cdot \left[ {V^T W H} + \frac{1}{2} {H^T J H} \right] + H[q] \\ &= arg\max_{\phi_j} \underbrace{\sum_h q_\phi(H|V) \cdot {V^T W H}}_{(1)} + \underbrace{\frac{1}{2} \sum_h q_\phi(H|V) \cdot {H^T J H}}_{(2)} + \underbrace{H[q]}_{(3)} \\ \end{align} ϕj^=argϕjmaxL=argϕjmaxELBO=argϕjmaxhqϕ(HV)logPθ(V,H)+H[q]=argϕjmaxhqϕ(HV)[logZ+VTWH+21VTLV+21HTJH]+H[q]=argϕjmax=1 hqϕ(HV)hϕj都无关,为常数C [logZ+21VTLV]+hqϕ(HV)[VTWH+21HTJH]+H[q]=argϕjmaxhqϕ(HV)[VTWH+21HTJH]+H[q]=argϕjmax(1) hqϕ(HV)VTWH+(2) 21hqϕ(HV)HTJH+(3) H[q]
得到如上公式后,我们只需对每个部份进行求导即可得到结果,过程中引入假设(拆分维度)即可更加优化公式,我们以 ( 1 ) (1) (1)为例:
( 1 ) = ∑ h q ϕ ( H ∣ V ) ⋅ V T W H = ∑ h ∏ j ^ = 1 P q ϕ ( H j ^ ∣ V ) ⋅ ∑ i = 1 D ∑ j ^ = 1 P v i w i j ^ h j ^ \begin{align} (1) &= \sum_h q_\phi(H|V) \cdot {V^T W H} = \sum_h \prod_{{\hat j}=1}^{P} q_\phi(H_{\hat j}|V) \cdot \sum_{i=1}^{D} \sum_{{\hat j}=1}^{P} {v_i w_{i{\hat j}} h_{\hat j}} \end{align} (1)=hqϕ(HV)VTWH=hj^=1Pqϕ(Hj^V)i=1Dj^=1Pviwij^hj^
我们取出其中的一项,如 i = 1 , j ^ = 2 i = 1, {\hat j} = 2 i=1,j^=2,可以得到:
∑ h ∏ j ^ = 1 P q ϕ ( H j ^ ∣ V ) ⋅ v 1 w 12 h 2 = ∑ h 2 q ϕ ( H 2 ∣ V ) ⋅ v 1 w 12 h 2 ⏟ 提出 h 2 相关项 ⋅ ∑ h , − h 2 ∏ j ^ = 1 , − 2 P q ϕ ( H j ^ ∣ V ) ⏟ = 1 = ∑ h 2 q ϕ ( H 2 ∣ V ) ⋅ v 1 w 12 h 2 = q ϕ ( H 2 = 1 ∣ V ) ⋅ v 1 w 12 ⋅ 1 + q ϕ ( H 2 = 0 ∣ V ) ⋅ v 1 w 12 ⋅ 0 = ϕ 2 v 1 w 12 \begin{align} \sum_h \prod_{{\hat j}=1}^{P} q_\phi(H_{\hat j}|V) \cdot {v_1 w_{12} h_{2}} &= \underbrace{\sum_{h_2} q_\phi(H_2|V) \cdot {v_1 w_{12} h_{2}}}_{\text{提出$h_2$相关项}} \cdot \underbrace{\sum_{h, -h_2} \prod_{{\hat j}=1, -2}^{P} q_\phi(H_{\hat j}|V)}_{=1} \\ &= \sum_{h_2} q_\phi(H_2|V) \cdot {v_1 w_{12} h_{2}} \\ &= q_\phi(H_2 = 1|V) \cdot {v_1 w_{12} \cdot 1} + q_\phi(H_2 = 0|V) \cdot {v_1 w_{12} \cdot 0} \\ &= \phi_2 {v_1 w_{12}} \end{align} hj^=1Pqϕ(Hj^V)v1w12h2=提出h2相关项 h2qϕ(H2V)v1w12h2=1 h,h2j^=1,2Pqϕ(Hj^V)=h2qϕ(H2V)v1w12h2=qϕ(H2=1∣V)v1w121+qϕ(H2=0∣V)v1w120=ϕ2v1w12
所以 ( 1 ) (1) (1)的求和结果就应该是 ∑ i = 1 D ∑ j ^ = 1 P ϕ j ^ v i w i j ^ \sum_{i=1}^{D} \sum_{{\hat j}=1}^{P} \phi_{\hat j} v_i w_{i{\hat j}} i=1Dj^=1Pϕj^viwij^,同理可得 ( 2 ) , ( 3 ) (2), (3) (2),(3)结果为:
{ ( 1 ) = ∑ i = 1 D ∑ j ^ = 1 P ϕ j ^ v i w i j ^ ( 2 ) = ∑ j ^ = 1 P ∑ m = 1 , − j P ϕ j ^ ϕ m J j ^ m + C ( 3 ) = − ∑ j = 1 P [ ϕ j log ⁡ ϕ j + ( 1 − ϕ j ) log ⁡ ( 1 − ϕ j ) ] \begin{cases} (1) = \sum_{i=1}^{D} \sum_{{\hat j}=1}^{P} \phi_{\hat j} v_i w_{i{\hat j}} \\ (2) = \sum_{{\hat j}=1}^{P} \sum_{m=1, -j}^{P} \phi_{\hat j} \phi_m J_{{\hat j}m} + C \\ (3) = - \sum_{j=1}^P \left[ \phi_j \log \phi_j + (1-\phi_j) \log (1-\phi_j) \right] \\ \end{cases} (1)=i=1Dj^=1Pϕj^viwij^(2)=j^=1Pm=1,jPϕj^ϕmJj^m+C(3)=j=1P[ϕjlogϕj+(1ϕj)log(1ϕj)]
通过求导又可得:
{ ∇ ϕ j ( 1 ) = ∑ i = 1 D v i w i j ∇ ϕ j ( 2 ) = ∑ m = 1 , − j P ϕ m J j m ∇ ϕ j ( 3 ) = − log ⁡ ϕ j 1 − ϕ j \begin{cases} \nabla_{\phi_j} (1) = \sum_{i=1}^{D} v_i w_{ij} \\ \nabla_{\phi_j} (2) = \sum_{m=1, -j}^{P} \phi_m J_{jm} \\ \nabla_{\phi_j} (3) = - \log \frac{\phi_j}{1 - \phi_j} \\ \end{cases} ϕj(1)=i=1Dviwijϕj(2)=m=1,jPϕmJjmϕj(3)=log1ϕjϕj
根据 ∇ ϕ j ( 1 ) + ∇ ϕ j ( 2 ) + ∇ ϕ j ( 3 ) = 0 \nabla_{\phi_j} (1) + \nabla_{\phi_j} (2) + \nabla_{\phi_j} (3) = 0 ϕj(1)+ϕj(2)+ϕj(3)=0可得:
ϕ j = σ ( ∑ i = 1 D v i w i j + ∑ m = 1 , − j P ϕ m J j m ) \phi_j = \sigma(\sum_{i=1}^{D} v_i w_{ij} + \sum_{m=1, -j}^{P} \phi_m J_{jm}) ϕj=σ(i=1Dviwij+m=1,jPϕmJjm)
由于 ϕ j \phi_j ϕj用于表示每一个维度的数据,所以我们可以使用 ϕ = { ϕ j } j = 1 P \phi = \{\phi_j\}_{j=1}^{P} ϕ={ϕj}j=1P通过坐标上升的方法进行求解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/32055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件功能测试有什么注意事项?功能测试报告起到什么作用?

软件功能测试是软件开发过程中至关重要的一环,它用于评估软件功能的质量和稳定性,并确保软件能够按照预期进行工作。然而,在进行功能测试时,有一些注意事项需要特别关注,以确保测试的准确性和有效性。 一、软件功能测…

c++继承总结

一 继承的由来 我使用类也有一段时间了,慢慢觉得我们做一件事时,就是要先描述,例如写一个管理系统登记学校成员的信息,我们就要先对在学校内的老师和学生做描述,学生要有年龄,班级,姓名&#xf…

使用C#加载TOOLBLOCK

前言 因为Vpp文件类型包含了以下三种 QuickBuidJobToolBlock 不同类型的打开方式不同,需要提前知道vpp是什么类型 例如 这个TB.vpp文件是TOOLBLOCK,就不能直接在visionpro中打开(直接打开需要QuickBuid文件), 可以…

在centos7下通过docker 安装onlyoffice

因为需要调试网盘,所以今天安装一下centos7的onlyoffice 官方介绍如下: 为了方便,还是通过docker方式来安装onlyoffice了,这里我们采用社区版本了。 1、下载docker安装包 如下: docker pull onlyoffice/documentserv…

uniapp 将标题背景更换背景图片 完美解决(附加源码+实现效果图)

问题描述 今天拿到小程序的设计效果图后,标题部分背景需要加背景图片,以往我做的都是标题背景更换颜色等,加背景图片还是第一次遇到,大家可以先看下我的效果图是否与你遇到的问题一致! 首页标题的背景是个背景图片。 …

构建高性能的MongoDB数据迁移工具:Java的开发实践

随着大数据时代的到来,数据迁移成为许多企业和组织必须面对的挑战之一。作为一种非关系型数据库,MongoDB在应用开发中得到了广泛的应用。为了满足数据迁移的需求,我们需要一个高性能、稳定可靠的MongoDB数据迁移工具。下面将分享使用Java开发…

Leetcode 977. 有序数组的平方

题目: Leetcode 977. 有序数组的平方 描述: 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序 思路: 双指针法 数组其实是有序的, 只不过负数平方之…

将vsCode 打开的多个文件分行(栏)排列,实现全部显示,便于切换文件

目录 1. 前言 2. 设置VsCode 多文件分行(栏)排列显示 1. 前言 主流编程IDE几乎都有排列切换选择所要查看的文件功能,如下为Visual Studio 2022的该功能界面: 图 1 图 2 当在Visual Studio 2022打开很多文件时,可以按照图1、图2所示找到自…

基于Selenium技术方案的爬虫入门实践

通过爬虫技术抓取网页,动态加载的数据或包含 JavaScript 的页面,需要使用一些特殊的技术和工具。以下是一些常用的技术方法: 使用浏览器模拟器:使用像 Selenium、PhantomJS 或其他类似工具可以模拟一个完整的浏览器环境&#xff0…

Redis实战案例27-UV统计

1. Redis的HyperLogLog的统计功能 示例: 表明HyperLogLog不管加入重复元素多少次都不会让count,不会计数重复元素,所以适合做UV计数 2. 简单实现UV测试 通过单元测试,向 HyperLogLog 中添加 100 万条数据,看看内存占…

python3.6 安装pillow失败

问题描述 python3 安装 pillow 失败 错误原因 python3.6 不支持 pillow9.0 以上的版本 解决方法: 指定版本安装 e.g., pillow8.0 pip3 install pillow8.0

看漫画学python!一天一个小惊喜有趣好用(全彩版)?

新手如何: 搭建Python开发环境 我们在Python官网可以下载Python安装包,在这个安装包里有Python解释器、Python运行所需要的基础库,以及交互式运行工具——Python 在下载完成后就可以安装Python了,在安装过程中会弹出内容选择对话…

水库大坝安全监测系统实施方案

一、方案概述 水库大坝作为特殊的建筑,其安全性质与房屋等建筑物完全不同,并且建造在地质构造复杂、岩土特性不均匀的地基上,目前对于大坝监测多采用人工巡查的方法,存在一定的系统误差,其工作性态和安全状况随时都在变…

怎么学习机械学习相关的技术? - 易智编译EaseEditing

学习DOM(文档对象模型)相关技术是成为前端开发者的关键一步,因为DOM是用于操作和控制网页内容的基础。以下是学习DOM相关技术的步骤和方法: 了解基础知识: 首先,了解什么是DOM,它如何表示HTML…

刘汉清:从生活到画布,宠物成为灵感源泉

出生于中国镇江的艺术家刘汉清,其作品展现出他对日常生活的深入洞察力,以及对美的独特理解。他的作品通常没有视觉参考,而是通过对他周围环境的理解,尤其是他的宠物,来进行创作。 在刘汉清的创作过程中,他…

从零实战SLAM-第一课(SLAM概览)

在七月算法报的班,老师讲的蛮好。好记性不如烂笔头,关键内容还是记录一下吧, 课程入口,感兴趣的同学可以学习一下。 --------------------------------------------------------------------------------------------------------…

(具体解决方案)训练GAN深度学习的时候出现生成器loss一直上升但判别器loss趋于0

今天小陶在训练CGAN的时候出现了绷不住的情况,那就是G_loss(生成器的loss值)一路狂飙,一直上升到了6才逐渐平稳。而D_loss(判别器的loss值)却越来越小,具体的情况就看下面的图片吧。其实这在GAN…

柜柜软件报价单滑动闪屏解决办法

柜柜下载地址:家具设计软件免费下载-家居设计软件手机版下载-柜柜App官网 出现的问题现象: 原因:笔记本使用的集成显卡,切换到独立显卡即可解决 异常修复.

Go context.WithCancel()的使用

WithCancel可以将一个Context包装为cancelCtx,并提供一个取消函数,调用这个取消函数,可以Cancel对应的Context Go语言context包-cancelCtx 疑问 context.WithCancel()取消机制的理解 父母5s钟后出门,倒计时,父母在时要学习,父母一走就可以玩 …

【华秋推荐】新能源汽车中的T-BOX系统,你了解多少?

近几年,新能源汽车产业进入了加速发展的阶段。我国的新能源汽车产业,经过多年的持续努力,技术水平显著提升、产业体系日趋完善、企业竞争力大幅增强,呈现市场规模、发展质量“双提升”的良好局面。同时,通过国家多年来…