机器学习笔记之深度玻尔兹曼机(三)预训练思路整理

news2024/7/6 18:25:19

机器学习笔记之深度玻尔兹曼机——预训练思路整理

  • 引言
    • 回顾:受限玻尔兹曼机的叠加逻辑
    • 回顾:受限玻尔兹曼机叠加过程中的计算方式
    • 关于计算过程的优化

引言

上一节介绍了受限玻尔兹曼机叠加的逻辑,以及叠加过程中出现的 Double Counting \text{Double Counting} Double Counting问题。本节将继续介绍,如何优化 Double Counting \text{Double Counting} Double Counting问题,并对受限玻尔兹曼机叠加的整个思路进行总结。

回顾:受限玻尔兹曼机的叠加逻辑

在深度信念网络——模型构建思想中介绍了关于受限玻尔兹曼机叠加的底层逻辑——相比于单纯的受限玻尔兹曼机结构,虽然受限玻尔兹曼机因自身特殊的结构性质能够通过 极大似然估计 + 梯度上升 的方式对模型结构中的参数进行近似求解:

  • 牛顿-莱布尼兹公式
  • 在第 t t t次迭代过程中,并没有对完整 W ( t ) \mathcal W^{(t)} W(t)进行梯度求解,而仅仅示例了样本 v ( i ) v^{(i)} v(i)对应的某隐变量 h k ( i ) h_{k}^{(i)} hk(i)与某观测变量 v j ( i ) v_j^{(i)} vj(i)之间关联关系的参数 W j ⇔ k ( i ) \mathcal W_{j \Leftrightarrow k}^{(i)} Wjk(i)的梯度结果。
  • 其中 ∑ v ( i ) P ( v ( i ) ) ⋅ P ( h k ( i ) = 1 ∣ v ( i ) ) ⋅ v j ( i ) \sum_{v^{(i)}} \mathcal P(v^{(i)}) \cdot \mathcal P(h_k^{(i)} = 1 \mid v^{(i)}) \cdot v_j^{(i)} v(i)P(v(i))P(hk(i)=1v(i))vj(i)部分使用‘对比散度’加快采样和计算过程。
    W ( t + 1 ) ⇐ W ( t ) + η ∇ W ( t ) L ( W ( t ) ) ∇ W ( t ) L ( W ( t ) ) = ∇ W ( t ) [ ∑ i = 1 N log ⁡ P ( x ( i ) ; W ( t ) ) ] = ∑ i = 1 N ∇ W ( t ) [ log ⁡ P ( x ( i ) ; W ( t ) ) ] ∇ W ( t ) [ log ⁡ P ( x ( i ) ; W ( t ) ) ] ⇒ ∂ ∂ W j ⇔ k ( i ) [ log ⁡ P ( x ( i ) ; W ( t ) ) ] = P ( h k ( i ) = 1 ∣ v ( i ) ) ⋅ v j ( i ) − ∑ v ( i ) P ( v ( i ) ) ⋅ P ( h k ( i ) = 1 ∣ v ( i ) ) ⋅ v j ( i ) \begin{aligned} \mathcal W^{(t+1)} & \Leftarrow \mathcal W^{(t)} + \eta\nabla_{\mathcal W^{(t)}} \mathcal L(\mathcal W^{(t)}) \\ \nabla_{\mathcal W^{(t)}}\mathcal L(\mathcal W^{(t)}) & = \nabla_{\mathcal W^{(t)}} \left[\sum_{i=1}^N \log \mathcal P(x^{(i)};\mathcal W^{(t)})\right] \\ & = \sum_{i=1}^N \nabla_{\mathcal W^{(t)}} \left[\log \mathcal P(x^{(i)};\mathcal W^{(t)})\right] \\ \nabla_{\mathcal W^{(t)}} \left[\log \mathcal P(x^{(i)};\mathcal W^{(t)})\right] & \Rightarrow \frac{\partial}{\partial \mathcal W_{j \Leftrightarrow k}^{(i)}} \left[\log \mathcal P(x^{(i)};\mathcal W^{(t)})\right] \\ & = \mathcal P(h_k^{(i)} = 1 \mid v^{(i)}) \cdot v_j^{(i)} - \sum_{v^{(i)}} \mathcal P(v^{(i)}) \cdot \mathcal P(h_k^{(i)} = 1 \mid v^{(i)}) \cdot v_j^{(i)} \end{aligned} W(t+1)W(t)L(W(t))W(t)[logP(x(i);W(t))]W(t)+ηW(t)L(W(t))=W(t)[i=1NlogP(x(i);W(t))]=i=1NW(t)[logP(x(i);W(t))]Wjk(i)[logP(x(i);W(t))]=P(hk(i)=1v(i))vj(i)v(i)P(v(i))P(hk(i)=1v(i))vj(i)

但这种方式仅能保证将梯度参数向最优参数方向收敛,在每次迭代过程内部可能并没有达到最优性能。也就是说,梯度更新过程中性能可以进一步提升。而 受限玻尔兹曼机叠加 思想为迭代过程中性能提升做了理论上的背书

  • 变分推断的角度观察,可以将对数似然函数 log ⁡ P ( v ) \log \mathcal P(v) logP(v)表示成如下形式:
    • 其中 h ( i ) h^{(i)} h(i)表示某具体样本 v ( i ) v^{(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))也不麻烦,因为受限玻尔兹曼机的结构性质可以对条件概率分布直接求解。详见受限玻尔兹曼机——后验概率

log ⁡ P ( v ) = ∑ i = 1 N log ⁡ P ( v ( i ) ) log ⁡ P ( v ( i ) ) = log ⁡ ∑ h ( i ) Q ( h ( i ) ∣ v ( i ) ) ⋅ P ( h ( i ) , v ( i ) ) Q ( h ( i ) ∣ v ( i ) ) = log ⁡ E Q ( h ( i ) ∣ v ( i ) ) [ P ( h ( i ) , v ( i ) ) Q ( h ( i ) ∣ v ( i ) ) ] \begin{aligned} \log \mathcal P(v) & = \sum_{i=1}^N \log \mathcal P(v^{(i)}) \\ \log \mathcal P(v^{(i)}) & = \log \sum_{h^{(i)}} \mathcal Q(h^{(i)} \mid v^{(i)}) \cdot \frac{\mathcal P(h^{(i)},v^{(i)})}{\mathcal Q(h^{(i)} \mid v^{(i)})} \\ & = \log \mathbb E_{\mathcal Q(h^{(i)} \mid v^{(i)})} \left[\frac{\mathcal P(h^{(i)},v^{(i)})}{\mathcal Q(h^{(i)} \mid v^{(i)})}\right] \end{aligned} logP(v)logP(v(i))=i=1NlogP(v(i))=logh(i)Q(h(i)v(i))Q(h(i)v(i))P(h(i),v(i))=logEQ(h(i)v(i))[Q(h(i)v(i))P(h(i),v(i))]

  • 由于 log ⁡ \log log函数是凹函数,那么必然有:
    这里是通过杰森不等式的逻辑推导的,也可以通过变分推断 ELBO + KLDivergence \text{ELBO + KLDivergence} ELBO + KLDivergence角度进行描述。
    log ⁡ P ( v ( i ) ) = log ⁡ E Q ( h ( i ) ∣ v ( i ) ) [ P ( h ( i ) , v ( i ) ) Q ( h ( i ) ∣ v ( i ) ) ] ≥ E Q ( h ( i ) ∣ v ( i ) ) [ log ⁡ P ( h ( i ) , v ( i ) ) Q ( h ( i ) ∣ v ( i ) ) ] = ELBO \begin{aligned} \log \mathcal P(v^{(i)}) & = \log \mathbb E_{\mathcal Q(h^{(i)} \mid v^{(i)})} \left[\frac{\mathcal P(h^{(i)},v^{(i)})}{\mathcal Q(h^{(i)} \mid v^{(i)})}\right] \\ & \geq \mathbb E_{\mathcal Q(h^{(i)} \mid v^{(i)})} \left[\log \frac{\mathcal P(h^{(i)},v^{(i)})}{\mathcal Q(h^{(i)} \mid v^{(i)})}\right] = \text{ELBO} \end{aligned} logP(v(i))=logEQ(h(i)v(i))[Q(h(i)v(i))P(h(i),v(i))]EQ(h(i)v(i))[logQ(h(i)v(i))P(h(i),v(i))]=ELBO
    ELBO \text{ELBO} ELBO被称为证据下界( Evidence of Lower Bound \text{Evidence of Lower Bound} Evidence of Lower Bound),其本质就是对数似然函数的下界结果。如果能够使证据下界达到最大,当前迭代步骤的对数似然函数也能够被提升到极致。
  • 但在正常的梯度上升过程中,可以通过 上一迭代步骤产生的模型参数计算出当前步骤的 ELBO \text{ELBO} ELBO,但不能保证它是当前步骤的最大值,为了改进该问题,可以将上式继续展开:
    • 后项是常数的原因在于,基于样本条件下,完全可以通过当前样本计算 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))计算结束之后,通过该分布可以采集大量关于隐变量后验样本,并基于该样本得到观测变量 P ( v ( i ) ∣ h ( i ) ) \mathcal P(v^{(i)} \mid h^{(i)}) P(v(i)h(i))的后验结果(幻想粒子的生成过程)。
      ELBO = ∑ h ( i ) Q ( h ( i ) ∣ v ( i ) ) log ⁡ [ P ( h ) ⋅ P ( v ( i ) ∣ h ( i ) ) Q ( h ( i ) ∣ v ( i ) ) ] = ∑ h ( i ) Q ( h ( i ) ∣ v ( i ) ) log ⁡ P ( h ( i ) ) + ∑ h ( i ) Q ( h ( i ) ∣ v ( i ) ) log ⁡ [ P ( v ( i ) ∣ h ( i ) ) Q ( h ( i ) ∣ v ( i ) ) ] ⏟ 常数 \begin{aligned} \text{ELBO} & = \sum_{h^{(i)}} \mathcal Q(h^{(i)} \mid v^{(i)}) \log\left[\mathcal P(h) \cdot \frac{\mathcal P(v^{(i)} \mid h^{(i)})}{\mathcal Q(h^{(i)} \mid v^{(i)})}\right] \\ & = \sum_{h^{(i)}} \mathcal Q(h^{(i)} \mid v^{(i)}) \log \mathcal P(h^{(i)}) + \underbrace{\sum_{h^{(i)}}\mathcal Q(h^{(i)} \mid v^{(i)}) \log \left[\frac{\mathcal P(v^{(i)} \mid h^{(i)})}{\mathcal Q(h^{(i)} \mid v^{(i)})}\right]}_{常数} \end{aligned} ELBO=h(i)Q(h(i)v(i))log[P(h)Q(h(i)v(i))P(v(i)h(i))]=h(i)Q(h(i)v(i))logP(h(i))+常数 h(i)Q(h(i)v(i))log[Q(h(i)v(i))P(v(i)h(i))]
  • 如果是受限玻尔兹曼机,在当前迭代步骤中,确实可以通过当前迭代步骤的模型参数 P ( h ( i ) ) \mathcal P(h^{(i)}) P(h(i))进行求解:
    概率密度函数 P ( h ( i ) , v ( i ) ) \mathcal P(h^{(i)},v^{(i)}) P(h(i),v(i))完全可以通过模型参数进行精确表示。
    P ( h ( i ) ) = ∑ v ( i ) P ( h ( i ) , v ( i ) ) \mathcal P(h^{(i)}) = \sum_{v^{(i)}} \mathcal P(h^{(i)},v^{(i)}) P(h(i))=v(i)P(h(i),v(i))
    但也仅限于能够求解,该结果是否优秀并不知晓;如果将受限玻尔兹曼机叠加,也就是说,使用另一组隐变量学习 h ( i ) h^{(i)} h(i);这里称之为 h ( i ; 2 ) h^{(i;2)} h(i;2), h ( i ; 2 ) h^{(i;2)} h(i;2)中的各隐变量节点与 h ( i ) h^{(i)} h(i)中的各节点之间也存在关联关系。此时就出现另一个 h ( i ) , h ( i ; 2 ) h^{(i)},h^{(i;2)} h(i),h(i;2)节点构成的新的受限玻尔兹曼机
    该受限玻尔兹曼机在参数学习过程中通过极大似然估计 log ⁡ P ( h ( i ) ) \log \mathcal P(h^{(i)}) logP(h(i))做理论背书:通过叠加产生的新 RBM \text{RBM} RBM,其模型参数必然满足 log ⁡ P ( h ( i ) ) \log \mathcal P(h^{(i)}) logP(h(i))达到最大;从而使 ELBO \text{ELBO} ELBO达到最大;最终使 log ⁡ P ( v ( i ) ) \log \mathcal P(v^{(i)}) logP(v(i))达到最大。

至此,受限玻尔兹曼机叠加可以提高模型的学习性能。

回顾:受限玻尔兹曼机叠加过程中的计算方式

如果仅仅是将两个受限玻尔兹曼机叠加成一个三层混合模型,那么需要观察隐变量集合 h ( i ) h^{(i)} h(i)对于不同层的后验概率
P ( h ( i ) ) = { ∑ h ( i ; 2 ) P ( h ( i ) , h ( i ; 2 ) ; W ( i ; 2 ) ) ∑ v ( i ) P ( h ( i ) , v ( i ) ; W ( i ) ) \mathcal P(h^{(i)}) = \begin{cases} \sum_{h^{(i;2)}}\mathcal P(h^{(i)}, h^{(i;2)};\mathcal W^{(i;2)}) \\ \sum_{v^{(i)}}\mathcal P(h^{(i)}, v^{(i)};\mathcal W^{(i)}) \end{cases} P(h(i))={h(i;2)P(h(i),h(i;2);W(i;2))v(i)P(h(i),v(i);W(i))
这两个受限玻尔兹曼机都有各自的参数去表示 P ( h ( i ) ) \mathcal P(h^{(i)}) P(h(i))

  • 普通的 RBM \text{RBM} RBM自然是仅使用 P ( h ( i ) , v ( i ) ) \mathcal P(h^{(i)},v^{(i)}) P(h(i),v(i))中的模型参数 W ( i ) \mathcal W^{(i)} W(i)进行表示;
  • 如果仅使用 P ( h ( i ) , h ( i ; 2 ) ) \mathcal P(h^{(i)},h^{(i;2)}) P(h(i),h(i;2))中的模型参数 W ( i ; 2 ) \mathcal W^{(i;2)} W(i;2)进行表示,那意味着 P ( h ( i ) ) \mathcal P(h^{(i)}) P(h(i))只和 h ( i ) , h ( i ; 2 ) h^{(i)},h^{(i;2)} h(i),h(i;2)组成的受限玻尔兹曼机有关。这需要 h ( i ; 2 ) h^{(i;2)} h(i;2) v ( i ) v^{(i)} v(i)之间没有关联关系,对应产生的模型结构就是深度信念网络结构。

但如果从客观角度观察,在混合模型中,无论是使用哪个受限玻尔兹曼机单独表示,都是不准确的。一种朴素想法在于:无论是 P ( h ( i ) ; W ( i ) ) \mathcal P(h^{(i)};\mathcal W^{(i)}) P(h(i);W(i))还是 P ( h ( i ; 2 ) ; W ( i ; 2 ) ) \mathcal P(h^{(i;2)};\mathcal W^{(i;2)}) P(h(i;2);W(i;2)),都将其计算出来,并将其结果结合起来
P ( h ( i ) ; W ( i ) , W i ; 2 ) = P ( h ( i ) ; W ( i ) ) + P ( h ( i ) ; W ( i ; 2 ) ) \mathcal P(h^{(i)};\mathcal W^{(i)},\mathcal W^{i;2}) = \mathcal P(h^{(i)};\mathcal W^{(i)}) + \mathcal P(h^{(i)};\mathcal W^{(i;2)}) P(h(i);W(i),Wi;2)=P(h(i);W(i))+P(h(i);W(i;2))

但这种直接结合的方式本身存在 Double Counting \text{Double Counting} Double Counting问题,在计算 P ( h ( i ) ) \mathcal P(h^{(i)}) P(h(i))时,样本集合 { v ( i ) } i = 1 N \left\{v^{(i)}\right\}_{i=1}^N {v(i)}i=1N在采样过程中,被重复使用两次
这仅仅是原始 RBM \text{RBM} RBM基础上多叠加了一层,叠加的层数越多,被重复利用的次数越多。
详见深度玻尔兹曼机——预训练过程

关于计算过程的优化

针对上述描述,可以知道:

  • 受限玻尔兹曼机叠加产生的混合模型能够增加模型性能;
  • 无论使用哪一个受限玻尔兹曼机描述 P ( h ( i ) ) \mathcal P(h^{(i)}) P(h(i)),都不准确;但仅将不同模型对于 P ( h ( i ) ) \mathcal P(h^{(i)}) P(h(i))的结果相加,会出现 Double Counting \text{Double Counting} Double Counting现象。因此需要对该操作进行优化。

常见的方式,可以将系数减半,也就是取算数平均值
值得注意的是,这种操作并不仅仅是将 P ( h ( i ) , W ( i ) ) \mathcal P(h^{(i)},\mathcal W^{(i)}) P(h(i),W(i)) P ( h ( i ) ; W ( i ; 2 ) ) \mathcal P(h^{(i)};\mathcal W^{(i;2)}) P(h(i);W(i;2))的结果取平均,而是将各权重 W ( i ) , W ( i ; 2 ) \mathcal W^{(i)},\mathcal W^{(i;2)} W(i),W(i;2) 消减一半后,将产生的结果相加。
P ( h ( i ) ; W ( i ) ; W ( i ; 2 ) ) ⇒ P ( h ( i ) ; 1 2 W ( i ) ) + P ( h ( i ) ; 1 2 W ( i ; 2 ) ) \mathcal P(h^{(i)};\mathcal W^{(i)};\mathcal W^{(i;2)}) \Rightarrow \mathcal P(h^{(i)};\frac{1}{2}\mathcal W^{(i)}) + \mathcal P(h^{(i)};\frac{1}{2} \mathcal W^{(i;2)}) P(h(i);W(i);W(i;2))P(h(i);21W(i))+P(h(i);21W(i;2))
假如像求解 P ( h ( i ) ; W ( i ) , W ( i ; 2 ) ) \mathcal P(h^{(i)};\mathcal W^{(i)},\mathcal W^{(i;2)}) P(h(i);W(i),W(i;2))这样, h ( i ) h^{(i)} h(i) 既有 P ( h ( i ) ; W ( i ) ) \mathcal P(h^{(i)};\mathcal W^{(i)}) P(h(i);W(i))进行表示,也有 P ( h ( i ) ; W ( i ; 2 ) ) \mathcal P(h^{(i)};\mathcal W^{(i;2)}) P(h(i);W(i;2))进行表示,这种方式看起来是可行的但是如果像求解 P ( v ( i ) ) \mathcal P(v^{(i)}) P(v(i))或者是 P ( h ( i ; 2 ) ) \mathcal P(h^{(i;2)}) P(h(i;2))这种没有前驱/后继结点相关联的随机变量,它们使用系数减半可能并不可取
由于与这种网络层相关联的结点信息相关联的其他结点仅有唯一一层,如果将这种层的权重信息也减半的话,那么它就真的被减半了,没有其他层进行互补。

因此,需要对整个网络的边缘层结构进行优化。以观测变量层为例:基于上述思想,我们更希望 h ( i ) → v ( i ) h^{(i)} \to v^{(i)} h(i)v(i)层传递信息时不丢失权重信息,而仅将 v ( i ) → h ( i ) v^{(i)} \to h^{(i)} v(i)h(i)信息传递的过程权重减半。见下图(局部):
关于权重基于边缘层结构的优化
这种操作是容易实现的:
P ( v ( i ) ; W ( i ) ) = ∑ h ( i ) P ( v ( i ) , h ( i ) ; W ( i ) ) = ∑ h ( i ) P ( h ( i ) ; W ( i ) ) ⋅ P ( v ( i ) ∣ h ( i ) ; W ( i ) ) ⏟ 后验概率, S i g m o i d 函数可精确描述 P ( h ( i ) ; 1 2 W ( i ) ) = ∑ v ( i ) P ( v ( i ) , h ( i ) ; 1 2 W ( i ) ) = ∑ v ( i ) P ( v ( i ) ; 1 2 W ( i ) ) ⋅ P ( h ( i ) ∣ v ( i ) ; 1 2 W ( i ) ) ⏟ 同样是 S i g m o i d 函数,但权重减半 \begin{aligned} \mathcal P(v^{(i)};\mathcal W^{(i)}) & = \sum_{h^{(i)}} \mathcal P(v^{(i)},h^{(i)};\mathcal W^{(i)}) \\ & = \sum_{h^{(i)}} \mathcal P(h^{(i)};\mathcal W^{(i)}) \cdot \underbrace{\mathcal P(v^{(i)} \mid h^{(i)};\mathcal W^{(i)})}_{后验概率,Sigmoid函数可精确描述} \\ \mathcal P(h^{(i)};\frac{1}{2}\mathcal W^{(i)}) & = \sum_{v^{(i)}} \mathcal P(v^{(i)},h^{(i)};\frac{1}{2}\mathcal W^{(i)}) \\ & = \sum_{v^{(i)}} \mathcal P(v^{(i)};\frac{1}{2}\mathcal W^{(i)}) \cdot \underbrace{\mathcal P(h^{(i)} \mid v^{(i)};\frac{1}{2}\mathcal W^{(i)})}_{同样是Sigmoid函数,但权重减半} \end{aligned} P(v(i);W(i))P(h(i);21W(i))=h(i)P(v(i),h(i);W(i))=h(i)P(h(i);W(i))后验概率,Sigmoid函数可精确描述 P(v(i)h(i);W(i))=v(i)P(v(i),h(i);21W(i))=v(i)P(v(i);21W(i))同样是Sigmoid函数,但权重减半 P(h(i)v(i);21W(i))
然后, P ( v ( i ) ; W ( i ) ) \mathcal P(v^{(i)};\mathcal W^{(i)}) P(v(i);W(i))不再发生变化,关于 W ( i ; 2 ) \mathcal W^{(i;2)} W(i;2)表示 h ( i ) h^{(i)} h(i)边缘概率分布 P ( h ( i ) ; W ( i ; 2 ) ) \mathcal P(h^{(i)};\mathcal W^{(i;2)}) P(h(i);W(i;2))同上,最终将两结果相加,得到最终的边缘概率结果 P ( h ( i ) ) \mathcal P(h^{(i)}) P(h(i))
P ( h ( i ) ; 1 2 W ( i ; 2 ) ) = ∑ h ( i ; 2 ) P ( h ( i ) , h ( i ; 2 ) ; 1 2 W ( i ; 2 ) ) = ∑ h ( i ; 2 ) P ( h ( i ; 2 ) ; 1 2 W ( i ; 2 ) ) ⋅ P ( h ( i ) ∣ h ( i ; 2 ) ; 1 2 W ( i ; 2 ) ) P ( h ( i ) ; W ( i ) , W ( i ; 2 ) ) = P ( h ( i ) ; 1 2 W ( i ) ) + P ( h ( i ) ; 1 2 W ( i ; 2 ) ) \begin{aligned} \mathcal P(h^{(i)};\frac{1}{2}\mathcal W^{(i;2)}) & = \sum_{h^{(i;2)}} \mathcal P(h^{(i)},h^{(i;2)};\frac{1}{2}\mathcal W^{(i;2)}) \\ & = \sum_{h^{(i;2)}} \mathcal P(h^{(i;2)};\frac{1}{2}\mathcal W^{(i;2)}) \cdot \mathcal P(h^{(i)} \mid h^{(i;2)};\frac{1}{2}\mathcal W^{(i;2)}) \\ \mathcal P(h^{(i)};\mathcal W^{(i)},\mathcal W^{(i;2)}) & = \mathcal P(h^{(i)};\frac{1}{2}\mathcal W^{(i)}) + \mathcal P(h^{(i)};\frac{1}{2}\mathcal W^{(i;2)}) \end{aligned} P(h(i);21W(i;2))P(h(i);W(i),W(i;2))=h(i;2)P(h(i),h(i;2);21W(i;2))=h(i;2)P(h(i;2);21W(i;2))P(h(i)h(i;2);21W(i;2))=P(h(i);21W(i))+P(h(i);21W(i;2))
使用这种方式去优化受限玻尔兹曼机叠加结构中对不同层结构权重参数的平衡。需要注意的是,这意味着边缘层组成的结构不再是纯粹的受限波尔兹曼机结构了

这种权重减半的预训练方式去学习深度玻尔兹曼机结构,并没有涉及到大量的数学描述,从权重减半边缘层优化,都仅仅是很朴素的想法
P ( h ( i ) ; W ( i ) , W ( i ; 2 ) ) ⇐ ? P ( h ( i ) ; W ( i ) ) ; P ( h ( i ) ; W ( i ; 2 ) ) \mathcal P(h^{(i)};\mathcal W^{(i)},\mathcal W^{(i;2)}) \overset{?}{\Leftarrow} \mathcal P(h^{(i)};\mathcal W^{(i)});\mathcal P(h^{(i)};\mathcal W^{(i;2)}) P(h(i);W(i),W(i;2))?P(h(i);W(i));P(h(i);W(i;2))
这种方式同样被数学证明了,基于权重减半+边缘层优化深度玻尔兹曼机的预训练方式相比深度信念网络中关于 P ( h ( i ) ) \mathcal P(h^{(i)}) P(h(i))的性能再向上提升一步,从而能够使 ELBO \text{ELBO} ELBO值更大。

下一节将介绍生成对抗网络

相关参考:
深度玻尔兹曼机4-预训练3-小节

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

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

相关文章

理解 TypeScript 背后的结构化类型系统

前言 你能说清楚类型、类型系统、类型检查这三个的区别吗?在理解TypeScript的结构化类型系统之前,我们首先要搞清楚这三个概念和它们之间的关系 类型:即对变量的访问限制与赋值限制。如 TypeScript 中的原始类型、对象类型、函数类型和字面…

python代码实现批量yunfile文件下载

建议下载文件大小不要超过1M吧,超过的话,把等待下载时间加大点 —>说明: 使用python2.7+selenium+chrome v49+百度ocr识别,基本上pip install 相关的程序,源码就可以直接运行了,exe文件也编译了,去别的电脑运行感觉有各种问题,大家自己用源码跑吧,最新chrome版本的…

如何实现报表集成?(一)

报表需求在每个企业都是“刚需”,而报表的应用又是其中的关键之一,并不是说报表开发出来就万事大吉了,怎么用、怎么用得好,也是用户非常关注的。在这个话题中,报表的集成是个绕不过去的坎,如何通过集成&…

机器学习之参数学习

下述内容为课程小结 定义 参数估计的方法包括经验风险最小化、结构风险最小化、最大似然估计、最大后验估计。 参数估计用于学习模型参数,以达到最优的目的,如线性回归的模型参数 经验风险最小化 对于输入的待处理数据格式为(x,y){(x&…

Plant Simulation热力图工具V2.1全新发布

在做AGV路径规划或人员路径规划时,如果配套热力图,是可以非常方便的分析出相应位置的热点情况,决策人员可以更加方便的确定方案修改思路,比如下图可以非常清晰地看到AGV的停顿位置和路口的使用情况。较早之前,波哥开发…

Vue3+Vite+Element-Plus实现CRUD常见表单项目

效果有 查询,增加,表格,删除,编辑 其实CRUD,就是一个管理项目最常见的功能 C增加 (Create) R读取 (Read) U更新 (Update) D删除 (Delete) 一、创建项目 vue3用vite创建项目 1 对应路径cmd 输入 npm create vitelates…

C 语言零基础入门教程(十八)

C 输入 & 输出 当我们提到输入时,这意味着要向程序填充一些数据。输入可以是以文件的形式或从命令行中进行。C 语言提供了一系列内置的函数来读取给定的输入,并根据需要填充到程序中。 当我们提到输出时,这意味着要在屏幕上、打印机上或…

SSM框架整合(Spring+SpringMVC+MyBatis)

一、创建MAVEN工程 二、导入pom依赖 <dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version></dependency><!-- https://mvnrepository.com/artifact/commons-logging/comm…

项目错误排查

项目运行不起来&#xff0c;先观察表现&#xff0c;就像中医所讲的望。复现&#xff0c;了解触发问题的时机和过程。在哪个步骤&#xff0c;哪个接口出了问题。闻问切浏览器f12&#xff0c;根据请求参数和响应码判断问题出在前端还是后端。查看错误日志&#xff0c;一般写的还是…

LeetCode011之盛最多水的容器(相关话题:双指针,逻辑分析)

题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容…

小程序 --- 收货地址 --- 定位功能

一、整体功能如下图二、功能点定位选择自己的位置手动选择省市县后输入详细地址关键词搜索地址&#xff0c;然后进行选择三、如何实现定位采用小程序API wx.chooseLocation 调出地图选择位置 API wx.chooseLocation 详细说明根据地址解析出省市县以及详细地址及经纬度代码实现c…

【Linux】-- 进程概念

目录 一、进程概念 二、PCB 1.什么是PCB 2.什么是task_struct 3.task_struct包含内容 三、task_struct内容详解 1.查看进程 &#xff08;1&#xff09;通过系统目录查看 &#xff08;2&#xff09;通过ps命令查看 &#xff08;3&#xff09;通过top命令查看 &…

Mysql自定义变量在递归遍历中的妙用

借着在解决一个递归查询父目录的问题&#xff0c;学习了一下mysql变量的用法&#xff0c;在某些场景下这种解法还是比较有特效的&#xff0c;下面具体来聊一下场景&#xff0c;同时也会详细分析下mysql自定义变量的用法 场景&#xff1a; 获取从树的根节点到叶子节点的全路径&…

图解基于UDS的Flash BootLoader

图解基于UDS的Flash BootLoader一、为什么要搞Bootloader&#xff1f;为什么要基于UDS搞Bootloader二、Bootloader应支持的UDS服务三、Bootloader——三段式(1) 预编程阶段(2) 主编程阶段(3)后编程状态四、BootLoader的启动顺序与转换流程五、问题点疑问点 Q:图中的烧写顺序是…

点云 3D 目标检测 - RangeDet(ICCV 2021)

点云 3D 目标检测 - RangeDet&#xff08;ICCV 2021&#xff09;摘要1. 引言2. 相关工作3. 距离视图表示的回顾4. 方法4.1 距离条件金字塔4.2 元核卷积4.3 加权非最大抑制4.4 距离视图中的数据增强4.5 体系结构5. 实验5.1 元核卷积的研究5.2 距离条件金字塔的研究5.3 加权非最大…

基于android的有声听书系统

需求信息&#xff1a; 1&#xff1a;注册登录&#xff1a;未注册用户首先进行账号注册&#xff0c;注册成功后进行登录&#xff0c;已注册用户直接输入账号密码进行登录&#xff0c;登录成功后进入主页面。 2&#xff1a;主页面&#xff1a;通过左右滑动可以实现对推荐界面、订…

Activity7工作流介绍_和BPM语言介绍---工作流工作笔记003

只说经典,重要的部分,节省学习时间,用最快的速度学习掌握 看一个简单审批流程,要知道工作流是基于状态驱动的,就是比如,状态有: 0 已创建 1 已提交 2 已部门经理审核 3 已总经理审核 4 审核通过 5 审核拒绝 根据这些状态来做驱动. 这里需要用到流程引擎,常见的比如有Drools规…

不看后悔,一文入门Go云原生微服务

文章目录打好基础微服务框架对比简单横评各个框架微服务概念软件架构演进史简单理解微服务的好处go-micro概述构成组件Go MicroAPISidecarWebCLIBot总结Go Micro组件架构Registry注册中心Selector负载均衡Broker事件驱动&#xff1a;发布订阅Transport消息传输总结快速入门准备…

使用Java8优化模板方法模式

目录 前言 以前的模板方法 Java 8 的函数式编程 Java 8以后的模板方法 总结 前言 我们在日常开发中&#xff0c;经常会遇到类似的场景&#xff1a;当要做一件事儿的时候&#xff0c;这件事儿的步骤是固定好的&#xff0c;但是每一个步骤的具体实现方式是不一定的。 通…

网络 随笔 2-linux的三种网络模式

0. 前面的科普对操作系统网络的理解还有帮助的 简单点&#xff0c;linux三种网络模式 linux中的三种网络模式 1. bridge 物理网卡使用虚拟网桥作为虚拟交换机的输入物理机以及虚拟网卡接入这个虚拟交换机虚拟网卡与物理网卡处于一个网段下(网关与DNS 一致) 2. NAT 虚拟的N…