机器学习笔记之Sigmoid信念网络(二)醒眠算法

news2024/12/24 21:39:12

机器学习笔记之Sigmoid信念网络——醒眠算法

引言

上一节介绍了对 Sigmoid \text{Sigmoid} Sigmoid信念网络学习任务过程中,对模型参数的对数似然梯度进行求解,并描述了梯度求解过程中的问题。本节将针对该问题介绍醒眠算法

回顾

Sigmoid \text{Sigmoid} Sigmoid信念网络的模型表示

Sigmoid \text{Sigmoid} Sigmoid信念网络是一个有向概率图模型。已知一个模型表示如下:
Sigmoid信念网络——示例
隐变量 h i ( 1 ) h_i^{(1)} hi(1)为例,如果将其作为后验结点,它的条件结点 h j ( 2 ) , h j + 1 ( 2 ) h_j^{(2)},h_{j+1}^{(2)} hj(2),hj+1(2)两个。根据 Sigmoid \text{Sigmoid} Sigmoid信念网络的定义,关于 h i ( 1 ) h_i^{(1)} hi(1)的后验概率表示如下:
P ( h i ( 1 ) ∣ h j ( 2 ) , h j + 1 ( 2 ) ) = { σ ( W j → i ⋅ h j ( 2 ) + W j + 1 → i ⋅ h j + 1 ( 2 ) ) h i ( 1 ) = 1 1 − σ ( W j → i ⋅ h j ( 2 ) + W j + 1 → i ⋅ h j + 1 ( 2 ) ) h i ( 1 ) = 0 \mathcal P(h_i^{(1)} \mid h_j^{(2)},h_{j+1}^{(2)}) = \begin{cases} \sigma \left(\mathcal W_{j \to i} \cdot h_j^{(2)} + \mathcal W_{j+1 \to i} \cdot h_{j+1}^{(2)}\right) \quad h_i^{(1)} = 1 \\ 1 - \sigma\left(\mathcal W_{j \to i} \cdot h_j^{(2)} + \mathcal W_{j+1 \to i} \cdot h_{j+1}^{(2)}\right) \quad h_i^{(1)} = 0 \end{cases} P(hi(1)hj(2),hj+1(2))= σ(Wjihj(2)+Wj+1ihj+1(2))hi(1)=11σ(Wjihj(2)+Wj+1ihj+1(2))hi(1)=0
其中 σ \sigma σ表示 Sigmoid \text{Sigmoid} Sigmoid函数。仔细观察发现, P ( h i ( 1 ) = 1 ∣ h j ( 2 ) , h j + 1 ( 2 ) ) \mathcal P(h_i^{(1)} = 1 \mid h_j^{(2)},h_{j+1}^{(2)}) P(hi(1)=1hj(2),hj+1(2))就可以看作是 h i ( 1 ) h_i^{(1)} hi(1)作为入度相关联结点的线性组合后套一层 Sigmoid \text{Sigmoid} Sigmoid函数。因而可以通过该规律描述所有结点的后验概率
P ( h i ∣ h j ; j → i ) = { σ ( ∑ j → i W j → i ⋅ h j ) h i = 1 1 − σ ( ∑ j → i W j → i ⋅ h j ) h i = 0 \mathcal P(h_i \mid h_j;j \to i) = \begin{cases} \sigma \left(\sum_{j \to i} \mathcal W_{j \to i} \cdot h_j\right) \quad h_i = 1\\ 1 - \sigma \left(\sum_{j \to i} \mathcal W_{j \to i} \cdot h_j \right) \quad h_i = 0 \end{cases} P(hihj;ji)= σ(jiWjihj)hi=11σ(jiWjihj)hi=0
将上述分段结果描述成一个通式,可以表达为:
P ( h i ∣ h j ; j → i ) = σ [ ( 2 h i − 1 ) ∑ j → i W j → i ⋅ h j ] \mathcal P(h_i \mid h_j;j \to i) = \sigma \left[(2h_i - 1) \sum_{j \to i} \mathcal W_{j \to i} \cdot h_j \right] P(hihj;ji)=σ[(2hi1)jiWjihj]

Sigmoid \text{Sigmoid} Sigmoid信念网络——对数似然梯度求解过程中的问题

玻尔兹曼机、受限玻尔兹曼机相同,概率图模型中的观测变量均来自 样本集合 V = { v ( i ) } i = 1 N \mathcal V = \{v^{(i)}\}_{i=1}^N V={v(i)}i=1N。以某一具体样本 v ( k ) ∈ V v^{(k)} \in \mathcal V v(k)V为例,在 Sigmoid \text{Sigmoid} Sigmoid信念网络中的随机变量集合 S ( k ) \mathcal S^{(k)} S(k)表示如下:
S ( k ) = { v ( k ) , h ( k ) } \mathcal S^{(k)} = \{v^{(k)},h^{(k)}\} S(k)={v(k),h(k)}
此时,以某隐变量 h i ( k ) h_i^{(k)} hi(k)隐变量 h j ( k ) h_j^{(k)} hj(k)之间的因果关系为例,其在概率图中的表示如下: ( h i ( k ) , h j ( k ) ∈ h ( k ) ) (h_i^{(k)},h_j^{(k)} \in h^{(k)}) (hi(k),hj(k)h(k))
这仅仅是一个示例,概率图中任意一组包含因果关系的随机变量结点均可以进行表示,无论它是观测变量还是隐变量。
隐变量之间模型参数——示例
对应两隐变量之间 模型参数 W j → i ( k ) \mathcal W_{j \to i}^{(k)} Wji(k)的对数似然梯度 表示如下:
详细推导过程见 Sigmoid \text{Sigmoid} Sigmoid信念网络(一)对数似然梯度
∂ ∂ W j → i [ ∑ v ( k ) ∈ V log ⁡ P ( v ( k ) ) ] = ∑ v ( k ) ∈ V ∑ h ( k ) P ( h ( k ) ∣ v ( k ) ) ⋅ σ [ − ( 2 h i ( k ) − 1 ) ⋅ ∑ j → i W j → i ( k ) ⋅ h j ( k ) ] ⋅ ( 2 h i ( k ) − 1 ) ⋅ h j ( k ) \begin{aligned} \frac{\partial}{\partial \mathcal W_{j \to i}} \left[\sum_{v^{(k)} \in \mathcal V}\log \mathcal P(v^{(k)})\right] & = \sum_{v^{(k)} \in \mathcal V} \sum_{h^{(k)}}\mathcal P(h^{(k)} \mid v^{(k)}) \cdot \sigma \left[- (2h_i^{(k)} - 1)\cdot \sum_{j \to i} \mathcal W_{j \to i}^{(k)} \cdot h_j^{(k)}\right] \cdot (2h_i^{(k)} - 1) \cdot h_j^{(k)} \\ \end{aligned} Wji v(k)VlogP(v(k)) =v(k)Vh(k)P(h(k)v(k))σ[(2hi(k)1)jiWji(k)hj(k)](2hi(k)1)hj(k)

通过观察可以发现,关于 W j → i ( k ) \mathcal W_{j \to i}^{(k)} Wji(k)梯度中包含隐变量的后验概率分布,这个后验分布没有办法直接进行求解。 Neal \text{Neal} Neal本人针对该后验的求解使用MCMC方法进行处理:
Explain Away \text{Explain Away} Explain Away现象,本质原因是观测变量与‘和其存在因果关系的’隐变量之间属于 V \mathcal V V型结构,在给定观测变量(样本)的条件下,对应隐变量之间并不是条件独立关系。
∇ W j → i ( k ) [ ∑ v ( k ) ∈ V log ⁡ P ( v ( k ) ) ] = { E P d a t a [ σ ( − ( 2 h i ( k ) − 1 ) ⋅ ∑ j → i W j → i ( k ) ⋅ h j ( k ) ) ⋅ ( 2 h i ( k ) − 1 ) ⋅ h j ( k ) ] P d a t a ⇒ P d a t a ( v ( k ) ∈ V ) ⋅ P m o d e l ( h ( k ) ∣ v ( k ) ) \nabla_{\mathcal W_{j \to i}^{(k)}} \left[\sum_{v^{(k)} \in \mathcal V} \log \mathcal P(v^{(k)})\right] = \begin{cases} \mathbb E_{\mathcal P_{data}} \left[ \sigma \left( - (2h_i^{(k)} - 1) \cdot \sum_{j \to i} \mathcal W_{j \to i}^{(k)} \cdot h_{j}^{(k)}\right)\cdot (2h_i^{(k)} - 1) \cdot h_j^{(k)}\right] \\ \mathcal P_{data} \Rightarrow \mathcal P_{data}(v^{(k)} \in \mathcal V) \cdot \mathcal P_{model}(h^{(k)} \mid v^{(k)}) \end{cases} Wji(k) v(k)VlogP(v(k)) ={EPdata[σ((2hi(k)1)jiWji(k)hj(k))(2hi(k)1)hj(k)]PdataPdata(v(k)V)Pmodel(h(k)v(k))

关于MCMC方法求解过程,可能仅能在小规模的随机变量集合中使用,如果随机变量集合规模较大,实际上求解复杂度会呈指数级别增长,并且极难收敛至平稳分布

醒眠算法

基于平均场假设变分推断求解后验概率

关于后验概率 P ( h k ∣ v k ) \mathcal P(h^{k} \mid v^{k}) P(hkvk)的求解,在玻尔兹曼机——梯度求解过程中介绍了基于平均场理论的变分推断求解方式。其核心思想是:基于平均场理论假设出的近似后验分布 Q ( h ( k ) ∣ v ( k ) ) \mathcal Q(h^{(k)} \mid v^{(k)}) Q(h(k)v(k))各个隐变量之间相互独立
D \mathcal D D表示 Sigmoid \text{Sigmoid} Sigmoid信念网络中隐变量的数量,也可看做隐变量的下标编号。
Q ( h ( k ) ∣ v ( k ) ) = ∏ i = 1 D Q ( h i ( k ) ∣ v ( k ) ) h ( k ) ∈ { 0 , 1 } D \mathcal Q(h^{(k)} \mid v^{(k)}) = \prod_{i=1}^{\mathcal D} \mathcal Q(h_i^{(k)} \mid v^{(k)}) \quad h^{(k)} \in \{0,1\}^{\mathcal D} Q(h(k)v(k))=i=1DQ(hi(k)v(k))h(k){0,1}D
而基于平均场理论近似后验分布 Q ( h ( k ) ∣ v ( k ) ) \mathcal Q(h^{(k)} \mid v^{(k)}) Q(h(k)v(k))可以得到一个关于模型参数的迭代关系。从而使用坐标上升法(Coordinate Ascent),每次固定其他随机变量的信息来更新一个随机变量的模型参数,直到所有模型参数均被更新一次,视作一次迭代;根据不动点方程必收敛的性质,最终必然会得到一个稳定的后验分布结果

平均场理论求解后验的弊端

即便上面的描述无懈可击,但是平均场理论变分推断的计算过程同样是非常复杂的。假设在迭代若干次后,得到了一个稳定的后验结果,将其带入上式,得到一个梯度结果 ∇ W j → i ( k ) [ ∑ v ( k ) ∈ V log ⁡ P ( v ( k ) ) ] \nabla_{\mathcal W_{j \to i}^{(k)}} \left[\sum_{v^{(k)}\in \mathcal V} \log \mathcal P(v^{(k)})\right] Wji(k)[v(k)VlogP(v(k))]

但仅仅得到一个梯度结果自然是不够的,这个梯度结果同样需要迭代。由于这里求解的是对数似然梯度,使用的策略通常是极大似然估计(Maximum Likelihood Estimation,MLE)。对应的算法通常是梯度上升法。而梯度上升法同样是需要迭代的:
W j → i ( t + 1 ) = W j → i ( t ) + η ∇ w j → i ( t ) [ ∑ v ( k ) ∈ V log ⁡ P ( v ( k ) ) ] \mathcal W_{j \to i}^{(t+1)} = \mathcal W_{j \to i}^{(t)} + \eta \nabla_{w_{j \to i}^{(t)}} \left[\sum_{v^{(k)}\in \mathcal V} \log \mathcal P(v^{(k)})\right] Wji(t+1)=Wji(t)+ηwji(t) v(k)VlogP(v(k))
加上平均场理论变分推断的迭代,这明显是一个嵌套循环。复杂度同样是非常高的。

醒眠算法

醒眠算法(Wake-Sleep Algorithm)于 1995 1995 1995年被提出。该算法的作用在于对近似后验概率 Q ( h ( i ) ∣ v ( i ) ) \mathcal Q(h^{(i)} \mid v^{(i)}) Q(h(i)v(i))进行估计,相比于平均场理论的变分推断方法求解效率更高。

醒眠算法关于 Q ( h ( i ) ∣ v ( i ) ) \mathcal Q(h^{(i)} \mid v^{(i)}) Q(h(i)v(i))求解思路在于:它并没有将 Q ( h ( i ) ∣ v ( i ) ) \mathcal Q(h^{(i)} \mid v^{(i)}) Q(h(i)v(i))视作一个概率分布,而是将其视作一个函数。从而基于神经网络的函数逼近定理对函数 Q ( h ( i ) ∣ v ( i ) ) \mathcal Q(h^{(i)} \mid v^{(i)}) Q(h(i)v(i))进行学习。

很明显,思路性质变了,这将关于 Q ( h ( i ) ∣ v ( i ) ) \mathcal Q(h^{(i)} \mid v^{(i)}) Q(h(i)v(i))近似推断任务 转换成了关于 Q ( h ( i ) ∣ v ( i ) ) \mathcal Q(h^{(i)} \mid v^{(i)}) Q(h(i)v(i))函数的学习任务
该思想就是‘花书’在P397页中提到的‘学成近似推断’。

关于醒眠算法,它提出一个假设作为前提:如果将 Sigmoid \text{Sigmoid} Sigmoid信念网络中隐变量信息向观测变量传递的过程称作生成过程 (Generative Connection) \text{(Generative Connection)} (Generative Connection) 的话,假设对应的存在识别过程 (Recognization Connection) \text{(Recognization Connection)} (Recognization Connection),也可以称作反馈过程,其意思是从观测变量反过来向隐变量反馈信息。具体模型表示如下:
醒眠算法——识别过程与生成过程

通过观察可以发现,结点之间的生成过程与识别过程是相对应的,识别过程中的参数使用 r r r 进行表示。

醒眠算法本身也是一个迭代算法。每次迭代过程中包含两个步骤:

  • Weak Phase \text{Weak Phase} Weak Phase:由于 v ( i ) = ( v 1 ( i ) , v 2 ( i ) , ⋯   , v P ( i ) ) v^{(i)} = (v_1^{(i)},v_2^{(i)},\cdots,v_{\mathcal P}^{(i)}) v(i)=(v1(i),v2(i),,vP(i))都是基于样本集合给定的样本,因此执行如下操作:

    • Bottom-up Activate Neuron \text{Bottom-up Activate Neuron} Bottom-up Activate Neuron目标是获取各层隐变量的后验样本:以随机变量 v 1 ( i ) , ⋯   , v P ( i ) v_1^{(i)},\cdots,v_{\mathcal P}^{(i)} v1(i),,vP(i)为起点,对与其相关联的隐变量结点逐层进行激活
      以上图描述的结点为例。再次提醒 v 1 ( i ) v_1^{(i)} v1(i)中的上标表示样本编号 ( i = 1 , 2 , ⋯   , N ) (i=1,2,\cdots,N) (i=1,2,,N),下面公式中的上标是层的编号:
      S = { v ( 1 ) , h ( 1 ) , h ( 2 ) } = { v i ( 1 ) , v i + 1 ( 1 ) , h i ( 1 ) , h i + 1 ( 1 ) , h i + 2 ( 1 ) , ⋯   } h ( 1 ) : { h i ( 1 ) ⇒ P ( h i ( 1 ) ∣ v i ( 1 ) ) h i + 1 ( 1 ) ⇒ P ( h i + 1 ( 1 ) ∣ v i ( 1 ) , v i + 1 ( 1 ) ) h i + 2 ( 1 ) ⇒ P ( h i + 2 ( 1 ) ∣ v i + 1 ( 1 ) ) h ( 2 ) : { h j ( 2 ) ⇒ P ( h j ( 2 ) ∣ h i ( 1 ) , h i + 1 ( 1 ) ) h j + 1 ( 2 ) ⇒ P ( h j + 1 ( 2 ) ∣ h i ( 1 ) , h i + 1 ( 1 ) ) \begin{aligned} \mathcal S = \{v^{(1)},h^{(1)},h^{(2)}\} & = \{v_i^{(1)},v_{i+1}^{(1)},h_{i}^{(1)},h_{i+1}^{(1)},h_{i+2}^{(1)},\cdots\} \\ h^{(1)} & :\begin{cases} h_i^{(1)} \Rightarrow \mathcal P(h_i^{(1)} \mid v_i^{(1)}) \\ h_{i+1}^{(1)} \Rightarrow \mathcal P(h_{i+1}^{(1)} \mid v_i^{(1)},v_{i+1}^{(1)}) \\ h_{i+2}^{(1)} \Rightarrow \mathcal P(h_{i+2}^{(1)} \mid v_{i+1}^{(1)}) \end{cases} \\ h^{(2)} &: \begin{cases} h_j^{(2)} \Rightarrow \mathcal P(h_j^{(2)} \mid h_{i}^{(1)},h_{i+1}^{(1)}) \\ h_{j+1}^{(2)} \Rightarrow \mathcal P(h_{j+1}^{(2)} \mid h_{i}^{(1)},h_{i+1}^{(1)}) \end{cases} \end{aligned} S={v(1),h(1),h(2)}h(1)h(2)={vi(1),vi+1(1),hi(1),hi+1(1),hi+2(1),}: hi(1)P(hi(1)vi(1))hi+1(1)P(hi+1(1)vi(1),vi+1(1))hi+2(1)P(hi+2(1)vi+1(1)):{hj(2)P(hj(2)hi(1),hi+1(1))hj+1(2)P(hj+1(2)hi(1),hi+1(1))
      关于隐变量的后验具体如何求解呢?通过采样的方式。以 h i + 1 ( 1 ) h_{i+1}^{(1)} hi+1(1)后验概率示例。由于 h i + 1 ( 1 ) h_{i+1}^{(1)} hi+1(1)同样服从伯努利分布,它的后验概率分布表示如下:
      P ( h i + 1 ( 1 ) ∣ v i ( 1 ) , v i + 1 ( 1 ) ) = { P ( h i + 1 ( 1 ) = 1 ∣ v i ( 1 ) , v i + 1 ( 1 ) ) P ( h i + 1 ( 1 ) = 0 ∣ v i ( 1 ) , v i + 1 ( 1 ) ) \mathcal P(h_{i+1}^{(1)} \mid v_i^{(1)},v_{i+1}^{(1)}) = \begin{cases} \mathcal P(h_{i+1}^{(1)} =1\mid v_i^{(1)},v_{i+1}^{(1)}) \\ \mathcal P(h_{i+1}^{(1)} = 0\mid v_i^{(1)},v_{i+1}^{(1)}) \end{cases} P(hi+1(1)vi(1),vi+1(1))={P(hi+1(1)=1vi(1),vi+1(1))P(hi+1(1)=0vi(1),vi+1(1))
      由于是迭代算法,因此,在初始状态下,给对应识别过程的模型参数 r v i ( 1 ) → h i + 1 ( 1 ) , r v i + 1 ( 1 ) → h i + 1 ( 1 ) r_{v_i^{(1)} \to h_{i+1}^{(1)}},r_{v_{i+1}^{(1)} \to h_{i+1}^{(1)}} rvi(1)hi+1(1),rvi+1(1)hi+1(1)随机初始值,对应 P ( h i + 1 ( 1 ) ∣ v i ( 1 ) , v i + 1 ( 1 ) ) \mathcal P(h_{i+1}^{(1)} \mid v_i^{(1)},v_{i+1}^{(1)}) P(hi+1(1)vi(1),vi+1(1))表示如下:
      识别过程同样使用 Sigmoid \text{Sigmoid} Sigmoid函数~
      得到的结果就是一个关于 h i + 1 ( 1 ) h_{i+1}^{(1)} hi+1(1)后验的伯努利分布。
      P ( h i + 1 ( 1 ) ∣ v i ( 1 ) , v i + 1 ( 1 ) ) = { σ ( v i ( 1 ) ⋅ r v i ( 1 ) → h i + 1 ( 1 ) + v i + 1 ( 1 ) ⋅ r v i + 1 ( 1 ) → h i + 1 ( 1 ) ) h i + 1 ( 1 ) = 1 1 − σ ( v i ( 1 ) ⋅ r v i ( 1 ) → h i + 1 ( 1 ) + v i + 1 ( 1 ) ⋅ r v i + 1 ( 1 ) → h i + 1 ( 1 ) ) h i + 1 ( 1 ) = 0 \mathcal P(h_{i+1}^{(1)} \mid v_i^{(1)},v_{i+1}^{(1)}) = \begin{cases} \sigma \left(v_i^{(1)} \cdot r_{v_i^{(1)} \to h_{i+1}^{(1)}} + v_{i+1}^{(1)} \cdot r_{v_{i+1}^{(1)} \to h_{i+1}^{(1)}}\right) \quad h_{i+1}^{(1)} = 1\\ 1 - \sigma \left(v_i^{(1)} \cdot r_{v_i^{(1)} \to h_{i+1}^{(1)}} + v_{i+1}^{(1)} \cdot r_{v_{i+1}^{(1)} \to h_{i+1}^{(1)}}\right) \quad h_{i+1}^{(1)} = 0 \end{cases} P(hi+1(1)vi(1),vi+1(1))= σ(vi(1)rvi(1)hi+1(1)+vi+1(1)rvi+1(1)hi+1(1))hi+1(1)=11σ(vi(1)rvi(1)hi+1(1)+vi+1(1)rvi+1(1)hi+1(1))hi+1(1)=0
      基于该分布进行采样,最终可以得到关于 h i + 1 ( 1 ) h_{i+1}^{(1)} hi+1(1)后验的具体样本。并以该样本为基础,继续向下延伸,最终直到得出所有隐变量后验的具体样本。
    • 基于 Bottom-up Activate Neuron \text{Bottom-up Activate Neuron} Bottom-up Activate Neuron中产生的样本,去学习生成过程的模型参数 W ( Learning Generative Connection ) \mathcal W(\text{Learning Generative Connection}) W(Learning Generative Connection)
      此时各个隐变量后验概率分布的样本都已经得到,自然可以求解模型参数 W \mathcal W W的梯度。虽然 Bottom-up \text{Bottom-up} Bottom-up过程中各层之间的结构中有‘同父结构’和 V \mathcal V V型结构,但并不影响 P ( h ( k ) ∣ v ( k ) ) \mathcal P(h^{(k)} \mid v^{(k)}) P(h(k)v(k))的近似计算。
      依然以上图为例:
      将‘同父结构’的部分进行展开。同父结构考古概率图模型——贝叶斯网络的结构表示
      这里仅介绍了一项 P ( h i + 1 ( 1 ) ∣ v i ( 1 ) , v i + 1 ( 1 ) ) \mathcal P(h_{i+1}^{(1)} \mid v_i^{(1)},v_{i+1}^{(1)}) P(hi+1(1)vi(1),vi+1(1)),其余项大家自行脑补~
      P ( h ( k ) ∣ v ( k ) ) = P ( h i ( 1 ) , h i + 1 ( 1 ) , h i + 2 ( 1 ) , h j ( 2 ) , h j + 1 ( 2 ) ∣ v i ( 1 ) , v i + 1 ( 1 ) ) = P ( h i ( 1 ) , h i + 1 ( 1 ) ∣ v i ( 1 ) ) ⋅ P ( h i + 1 ( 1 ) ∣ v i ( 1 ) , v i + 1 ( 1 ) ) ⋅ P ( h i + 1 ( 1 ) , h i + 2 ( 1 ) ∣ v i + 1 ( 1 ) ) ⏟ L a y e r − 1 ⋅ P ( h j ( 2 ) , h j + 1 ( 2 ) ∣ h i ( 1 ) ) ⋅ P ( h j ( 2 ) , h j + 1 ( 2 ) ∣ h i + 1 ( 1 ) ) ⏟ L a y e r − 2 = { Layer-1:  [ P ( h i ( 1 ) ∣ v i ( 1 ) ) ⋅ P ( h i + 1 ( 1 ) ∣ v i ( 1 ) , v i + 1 ( 1 ) ) ⋅ P ( h i + 2 ( 1 ) ∣ v i + 1 ( 1 ) ) ] Layer-2:  [ P ( h j ( 2 ) ∣ h i ( 1 ) , h i + 1 ( 1 ) ) ⋅ P ( h j + 1 ( 2 ) ∣ h i ( 1 ) , h i + 1 ( 1 ) ) ] \begin{aligned} \mathcal P(h^{(k)} \mid v^{(k)}) & = \mathcal P (h_i^{(1)},h_{i+1}^{(1)},h_{i+2}^{(1)},h_{j}^{(2)},h_{j+1}^{(2)} \mid v_i^{(1)},v_{i+1}^{(1)}) \\ & = \underbrace{\mathcal P(h_i^{(1)},h_{i+1}^{(1)}\mid v_i^{(1)}) \cdot \mathcal P(h_{i+1}^{(1)} \mid v_i^{(1)},v_{i+1}^{(1)}) \cdot \mathcal P(h_{i+1}^{(1)},h_{i+2}^{(1)}\mid v_{i+1}^{(1)})}_{Layer-1} \cdot \underbrace{\mathcal P(h_{j}^{(2)},h_{j+1}^{(2)}\mid h_{i}^{(1)}) \cdot \mathcal P(h_{j}^{(2)},h_{j+1}^{(2)} \mid h_{i+1}^{(1)})}_{Layer-2} \\ & = \begin{cases} \text{Layer-1: } \left[\mathcal P(h_i^{(1)} \mid v_i^{(1)}) \cdot \mathcal P(h_{i+1}^{(1)} \mid v_{i}^{(1)},v_{i+1}^{(1)}) \cdot \mathcal P(h_{i+2}^{(1)} \mid v_{i+1}^{(1)})\right] \\ \text{Layer-2: } \left[\mathcal P(h_j^{(2)}\mid h_i^{(1)},h_{i+1}^{(1)}) \cdot \mathcal P(h_{j+1}^{(2)}\mid h_i^{(1)},h_{i+1}^{(1)})\right] \end{cases} \end{aligned} P(h(k)v(k))=P(hi(1),hi+1(1),hi+2(1),hj(2),hj+1(2)vi(1),vi+1(1))=Layer1 P(hi(1),hi+1(1)vi(1))P(hi+1(1)vi(1),vi+1(1))P(hi+1(1),hi+2(1)vi+1(1))Layer2 P(hj(2),hj+1(2)hi(1))P(hj(2),hj+1(2)hi+1(1))= Layer-1: [P(hi(1)vi(1))P(hi+1(1)vi(1),vi+1(1))P(hi+2(1)vi+1(1))]Layer-2: [P(hj(2)hi(1),hi+1(1))P(hj+1(2)hi(1),hi+1(1))]
      此时, P ( h ( k ) ∣ v ( k ) ) \mathcal P(h^{(k)} \mid v^{(k)}) P(h(k)v(k))求解结束后,继续求解模型参数 W \mathcal W W的梯度:
      ∇ W j → i [ ∑ v ( k ) ∈ V log ⁡ P ( v ( k ) ) ] = ∑ v ( k ) ∈ V ∑ h ( k ) P ( h ( k ) ∣ v ( k ) ) ⋅ σ [ − ( 2 h i ( k ) − 1 ) ⋅ ∑ j → i W j → i ( k ) ⋅ h j ( k ) ] ⋅ ( 2 h i ( k ) − 1 ) ⋅ h j ( k ) \begin{aligned} \nabla_{\mathcal W_{j \to i}} \left[\sum_{v^{(k)} \in \mathcal V}\log \mathcal P(v^{(k)})\right] & = \sum_{v^{(k)} \in \mathcal V} \sum_{h^{(k)}}\mathcal P(h^{(k)} \mid v^{(k)}) \cdot \sigma \left[- (2h_i^{(k)} - 1)\cdot \sum_{j \to i} \mathcal W_{j \to i}^{(k)} \cdot h_j^{(k)}\right] \cdot (2h_i^{(k)} - 1) \cdot h_j^{(k)} \\ \end{aligned} Wji v(k)VlogP(v(k)) =v(k)Vh(k)P(h(k)v(k))σ[(2hi(k)1)jiWji(k)hj(k)](2hi(k)1)hj(k)
      最终使用梯度上升法,近似求解当前迭代步骤的最优模型参数 W ^ \hat {\mathcal W} W^
      W j → i ( t + 1 ) = W j → i ( t ) + η ∇ w j → i ( t ) [ ∑ v ( k ) ∈ V log ⁡ P ( v ( k ) ) ] \mathcal W_{j \to i}^{(t+1)} = \mathcal W_{j \to i}^{(t)} + \eta \nabla_{w_{j \to i}^{(t)}} \left[\sum_{v^{(k)}\in \mathcal V} \log \mathcal P(v^{(k)})\right] Wji(t+1)=Wji(t)+ηwji(t) v(k)VlogP(v(k))
  • Sleep Phase:  \text{Sleep Phase: } Sleep Phase:  Weak Phase \text{Weak Phase} Weak Phase基础上,我们得到了关于隐变量后验分布的样本,执行如下操作:

    • Top-Down Activate Neuron:  \text{Top-Down Activate Neuron: } Top-Down Activate Neuron: 入度为零的隐变量结点开始,按照拓扑排序的顺序进行采样:
      其采样操作和 Bottom-up Activate Neuron \text{Bottom-up Activate Neuron} Bottom-up Activate Neuron步骤基本相同,正常按照‘祖先采样方法’进行采样。这里同样使用 h i + 1 ( 1 ) h_{i+1}^{(1)} hi+1(1)为例,进行采样.
      需要注意的是,此时的采样起点是从隐变量开始的,从而采出的基于所有随机变量结点的样本点不同于 Weak Phase \text{Weak Phase} Weak Phase,这些样本点没有真实样本做支撑,是虚拟出来的样本点。
      虽然 h j ( 2 ) , h j + 1 ( 2 ) , h i + 1 ( 1 ) h_{j}^{(2)},h_{j+1}^{(2)},h_{i+1}^{(1)} hj(2),hj+1(2),hi+1(1)之间属于 V \mathcal V V型结构,但是 h i + 1 ( 1 ) h_{i+1}^{(1)} hi+1(1)作为后验,是未知(未被观测)的,因此可以写成如下形式。
      Q ( h i + 1 ( 1 ) ∣ h j ( 2 ) , h j + 1 ( 2 ) ) = Q ( h i + 1 ( 1 ) ∣ h j ( 2 ) ) ⋅ Q ( h i + 1 ( 1 ) ∣ h j + 1 ( 2 ) ) \mathcal Q(h_{i+1}^{(1)} \mid h_{j}^{(2)},h_{j+1}^{(2)}) = \mathcal Q(h_{i+1}^{(1)} \mid h_j^{(2)}) \cdot \mathcal Q(h_{i+1}^{(1)} \mid h_{j+1}^{(2)}) Q(hi+1(1)hj(2),hj+1(2))=Q(hi+1(1)hj(2))Q(hi+1(1)hj+1(2))
      对应的概率分布可表示为:
      Q ( h i + 1 ( 1 ) ∣ h j ( 2 ) ) = { σ ( W h j ( 2 ) → h i + 1 ( 1 ) ⋅ h j ( 2 ) ) h i + 1 ( 1 ) = 1 1 − σ ( W h j ( 2 ) → h i + 1 ( 1 ) ⋅ h j ( 2 ) ) h i + 1 ( 1 ) = 0 Q ( h i + 1 ( 1 ) ∣ h j + 1 ( 2 ) ) = { σ ( W h j + 1 ( 2 ) → h i + 1 ( 1 ) ⋅ h j + 1 ( 2 ) ) h i + 1 ( 1 ) = 1 1 − σ ( W h j + 1 ( 2 ) → h i + 1 ( 1 ) ⋅ h j + 1 ( 2 ) ) h i + 1 ( 1 ) = 0 \begin{aligned} \mathcal Q(h_{i+1}^{(1)} \mid h_j^{(2)}) = \begin{cases} \sigma \left(\mathcal W_{h_{j}^{(2)} \to h_{i+1}^{(1)}} \cdot h_j^{(2)}\right) \quad h_{i+1}^{(1)} = 1 \\ 1 - \sigma \left(\mathcal W_{h_{j}^{(2)} \to h_{i+1}^{(1)}} \cdot h_j^{(2)}\right) \quad h_{i+1}^{(1)} = 0 \end{cases} \\ \mathcal Q(h_{i+1}^{(1)} \mid h_{j+1}^{(2)}) = \begin{cases} \sigma \left(\mathcal W_{h_{j+1}^{(2)} \to h_{i+1}^{(1)}} \cdot h_{j+1}^{(2)}\right) \quad h_{i+1}^{(1)} = 1 \\ 1 - \sigma \left(\mathcal W_{h_{j+1}^{(2)} \to h_{i+1}^{(1)}} \cdot h_{j+1}^{(2)}\right) \quad h_{i+1}^{(1)} = 0 \end{cases} \end{aligned} Q(hi+1(1)hj(2))= σ(Whj(2)hi+1(1)hj(2))hi+1(1)=11σ(Whj(2)hi+1(1)hj(2))hi+1(1)=0Q(hi+1(1)hj+1(2))= σ(Whj+1(2)hi+1(1)hj+1(2))hi+1(1)=11σ(Whj+1(2)hi+1(1)hj+1(2))hi+1(1)=0
      最终,同样可以得到关于隐变量虚拟的概率分布 Q ( h ( k ) ∣ v ( k ) ) \mathcal Q(h^{(k)} \mid v^{(k)}) Q(h(k)v(k))的样本。
      个人疑问: Q ( h ( k ) ∣ v ( k ) ) \mathcal Q(h^{(k)} \mid v^{(k)}) Q(h(k)v(k))既然是关于隐变量 h ( k ) h^{(k)} h(k)后验的一个概率分布,那么在 Sleep Phase \text{Sleep Phase} Sleep Phase过程中是否采到结尾,也就是如 Q ( v i ( 1 ) ∣ h i ( i ) ) \mathcal Q(v_i^{(1)} \mid h_i^{(i)}) Q(vi(1)hi(i)).虽然已经这道这里关于 v i ( 1 ) v_i^{(1)} vi(1)的后验并不是基于真实样本产生的,是虚拟的,但它仍然是关于 v i ( 1 ) v_i^{(1)} vi(1)的后验。这就不是隐变量的后验了,那么 Q ( h ( k ) ∣ v ( k ) ) \mathcal Q(h^{(k)} \mid v^{(k)}) Q(h(k)v(k))要如何表示?
      其次,如果不采到结尾,那么如上图中的 h i + 2 ( 1 ) h_{i+2}^{(1)} hi+2(1)就没有机会采到了。因为它是入度为零的结点,并且它的后验就是观测变量。
    • 基于求解的 Q ( h ( k ) ∣ v ( k ) ) \mathcal Q(h^{(k)} \mid v^{(k)}) Q(h(k)v(k))求解参数 r r r,首先,依然求解参数 r r r的梯度。
      直接将 Q ( h ( k ) ∣ v ( k ) ) \mathcal Q(h^{(k)} \mid v^{(k)}) Q(h(k)v(k))带回原式,替换 P ( h ( k ) ∣ v ( k ) ) \mathcal P(h^{(k)} \mid v^{(k)}) P(h(k)v(k)).并且此时的 V ′ \mathcal V' V也不再是真实样本,而是经过后验采样出的样本结果。
      ∇ r j → i [ ∑ v ( k ) ∈ V ′ log ⁡ P ( v ( k ) ) ] \nabla_{r_{j \to i}} \left[\sum_{v^{(k)} \in \mathcal V'} \log \mathcal P(v^{(k)})\right] rji v(k)VlogP(v(k))
      最终近似求解模型参数 r r r
      r j → i ( t + 1 ) = r j → i ( t ) + η ∇ r j → i ( t ) [ ∑ v ( k ) ∈ V ′ log ⁡ P ( v ( k ) ) ] r_{j \to i}^{(t+1)} = r_{j \to i}^{(t)} + \eta \nabla_{r_{j \to i}^{(t)}} \left[\sum_{v^{(k)} \in \mathcal V'} \log \mathcal P(v^{(k)})\right] rji(t+1)=rji(t)+ηrji(t) v(k)VlogP(v(k))

下一节将介绍醒眠算法 EM \text{EM} EM算法之间的比较。

相关参考:
(系列二十六)Sigmoid Belief Network4-睡眠算法-介绍

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

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

相关文章

jsp+servlet+mysql实现的在线图书商城源码附带论文开题报告及视频指导教程

今天给大家演示的是一款由jspservletmysql实现的在线图书商城系统,主要分为前台后后台管理员功能,前台用户可以浏览查看各类图书信息,可自定义搜索,注册登录后可以将书添加到购物车,购物车中的商品可以提交订单&#x…

【复习笔记】JavaWeb实验重点代码

JavaWeb实验重点代码笔记 一、课上练习题目汇总(部分) 题目一 基础HTML、CSS和JavaScript 1.1 问题要求 页面上有下拉菜单、文本框、跳转按钮并排放置,当下拉菜单选中某个具体网站名称时,文本框出现其对应的链接地址&#xff0…

Linux环境下vs code中Markdown与PlantUML联合工作

PlantUML是一个可以让你快速编写UML图的组件。 在线服务器 https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000 Markdown是一种轻量级标记语言,排版语法简洁,让人们更多地关注内容本身而非排版。它使用易读易写的纯文本格式编写…

零膨胀泊松回归案例分析

零膨胀泊松回归分析 计数研究模型中,常用泊松回归模型,但泊松回归模型理论上是要求平均值与标准差相等,如果不满足,则可使用负二项回归模型 在实际研究中,会出现一种情况即因变量为计数变量,并且该变量包…

Lua闭包和Upvalue上值

一、lua中的作用域 在Lua语言中声明的变量默认是全局变量,声明局部变量需要使用local关键字,和其他语言相比这有点特殊。 -- 全局变量 a 10function func()b 100 -- 仍然是全局变量local c 20 -- func的局部变量 end func()print(a b) -- 输出…

终极.NET混淆器丨.NET Reactor产品介绍

无与伦比的 .NET 代码保护系统,可完全阻止任何人反编译您的代码。 产品优势 01、混淆技术 .NET Reactor通过向 .NET 程序集添加不同的保护层来防止逆向工程。除了标准的混淆技术之外,它还包括NecroBit、虚拟化、x86代码生成或防篡改等特殊功能。NET Re…

xilinx srio ip学习笔记之初识srio

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 xilinx srio ip学习笔记之初识srio前言IP 设置总结前言 因为工作原因,需要对rapidio 的协议进行了解,在xilinx的IP核中,是对应着Serial R…

这支隐藏“球队”,颠覆消费品「赛场」

【潮汐商业评论/原创】 大好的黄金周末,Fred约了几个朋友来家里看球。按照他的计划,周五准备下班后,他赶紧得去一趟附近的大型超市扫货,买一批零食酒水招待朋友。没想到的是,好不容易等到快下班了,领导通知…

外包呆一年,外包的工作经历怎么写?外包的项目经验怎么写?

0. 先来看下大家的各种问题? 外包的工作经历怎么写?外包的项目经验怎么写?外包如何优化简历?进入外包后黑化了简历,如何成功跳出外包圈?外包该如何提升自己?外包仔如何自我救赎? ……

前端基础_离线Web应用概述

离线Web应用概述 在Web应用中使用缓存的原因之一是为了支持离线应用。在全球互联的时代,离线应用仍有其实用价值。当无法上网的时候,你会做什么呢?你可能会说如今网络无处不在,而且非常稳定,不存在没有网络的情况。但…

【服务器数据恢复】误操作导致ocfs2文件系统被格式化的数据恢复案例

服务器故障: 用户误操作将linux文件系统误装入到Ocfs2文件系统的数据卷上,导致原始Ocfs2文件系统被格式化为Ext4文件系统。 因为Ext4文件系统每隔几百兆就会写入文件系统的原始信息,所以本案例中的原始Ocfs2文件系统中的数据可能受到一定程度…

搭建开源版个人图床

在微博图床、gitee、jsDelivr 陆续被 ban 的今天,很有必要搭建自己的图床系统了。 兰空图床 兰空图床官网:https://www.lsky.pro docker版本:https://hub.docker.com/r/halcyonazure/lsky-pro-docker 本次讲解使用 docker 版本进行部署使用 …

linux跟踪技术之ebpf

ebpf简介 eBPF是一项革命性的技术,起源于 Linux 内核,可以在操作系统内核等特权上下文中运行沙盒程序。它可以安全有效地扩展内核的功能,而无需更改内核源代码或加载内核模块。 比如,使用ebpf可以追踪任何内核导出函数的参数&…

漫画电学原理

电是什么 电压 电压是两点的电势差。 电流是指每秒在导线中流动的电量。 电功率是指在1s内消耗的电能。 电的本质是什么 万物都是有原子构成,原子有原子核(正电),核外电子(负电)构成。电子的定向移动形成了电。 电子离开原子,原子的电子减少,从而带正电。带正电的…

互联网时代“陨落”,国家发布元宇宙战略的信号对失业和担心失业的我们带来了什么启迪?

互联网这头“猪 ”真的掉下来了 流量红利已经一去不复返了!3年前业界其实已经发出各种密集信号,在当时无论是BAT还是一些经济学家在3年前都已经预测过,互联网的流量模式已经衰竭,并且它将一去不复返。 曾经处于互联网大潮的我们…

day10Git

1.Git介绍 1.1版本控制(理解) 无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况 1.2开发中存在的问题(理解) 程序员小明负责的模块就要完成了,就在即将提交发布之前的一瞬间,电脑突然蓝屏,硬盘光…

HTC FOCUS 3连接FOHEART H1数据手套

本教程介绍使用H1数据手套与HTC腕带式追踪器驱动VR中的虚拟手运动,实现手部的追踪及定位。 需要准备的硬件: 1、FOHEART H1数据手套 2、HTC VIVE Focus 3一体机 3、HTC VIVE 腕带式追踪器 01 一体机连接腕带追踪器 首先断开Focus3的手柄&#x…

【JavaWeb】Mybatis深度进阶练习

学习目标 能够使用映射配置文件实现CRUD操作能够使用注解实现CRUD操作 文章目录1、配置文件实现CRUD1.1 环境准备1.2 查询所有数据1.2.1 编写接口方法1.2.2 编写SQL语句1.2.3 编写测试方法1.2.4 起别名解决上述问题1.2.5 使用resultMap解决上述问题1.2.6 小结1.3 查询详情1.3.1…

(一) 初识python

1. python的特点: 可读性强 可读性远比听上去重要的多得多。一个程序会被反复的修改,可读性意味这让你可以在更短时间内学习和记忆,直接提高生产率。高效、简洁 研究证明,程序员每天可编写的有效代码是有限的。完成同样功能只用一…

浙大MBA复试经验分享——复试备考流程及要点提醒

最近身边有很多小伙伴都在咨询关于复试的问题,趁着今天有空把我的复试准备过程按照时间线梳理出来分享给大家,希望可以帮助到大家。 联考结束后,趁着考完印象还深刻,我们首先要做的就是估分(辅导班或者小红书、知…