面对配分函数 - 随机最大似然和对比散度篇

news2025/1/14 1:24:38

序言

在统计学和机器学习的领域中,随机最大似然( Stochastic Maximum Likelihood \text{Stochastic Maximum Likelihood} Stochastic Maximum Likelihood)和对比散度( Contrastive Divergence \text{Contrastive Divergence} Contrastive Divergence)是两种重要的方法,它们在无向模型学习中扮演着关键角色。随机最大似然主要用于估计满足给定样本分布的参数,通过最大化似然函数来找到最可能的参数值。这一过程通常涉及正相和负相的平衡,其中正相基于真实数据的期望,而负相则基于模型分布的期望。然而,随机最大似然在某些情况下可能面临计算成本高和效率低的问题。

随机最大似然和对比散度

  • 实现方程式一个很简单的方法是,每次需要计算梯度时, 预烧随机初化的一组马尔可夫链。

    • 当使用随机梯度下降进行学习时,这意味着马尔可夫链必须在每次梯度步骤中预烧。
    • 这种方法引导下的训练过程如算法1所示。
    • 内循环中预烧马尔可夫链的计算代价过高,导致这个过程在实际中是不可行的,不过该过程启发了其他计算代价较低的近似算法。
  • 我们可以将 MCMC \text{MCMC} MCMC方法视为在两种力之间平衡最大似然,一种力增大数据发生概率的模型分布,另一种力减小模型样本发生概率的模型分布。

    • 图例1展示了这个过程。
    • 这两种力分别对应最大化 $\log\tilde{p} $ 和最小化 log ⁡ Z \log Z logZ
    • 还有一些对负相的近似。
    • 这些近似都可以理解为使负相更容易计算,但是也可能将其推向错误的位置。
  • 因为负相涉及到从模型分布中采样,所以我们可以认为它在找模型信任度很高的点。

    • 因为负相减少了这些点的概率,它们一般被认为代表了模型不正确的信念。
    • 在文献中,它们经常被称为 ‘‘幻觉’’ 或 ‘‘幻想粒子’’。事实上,负相已经被作为人类和其他动物做梦的一种可能解释 ( Crick and Mitchison, 1983 \text{Crick and Mitchison, 1983} Crick and Mitchison, 1983)。
    • 这个想法是说,大脑维持着世界的概率模型,并且在醒着经历真实事件时会遵循 $\log\tilde{p} $ 的梯度,在睡觉时会遵循 $\log\tilde{p} $ 的梯度最小化 log ⁡ Z \log Z logZ,其经历的样本采样自当前的模型。
    • 这个视角解释了具有正相和负相的大多数算法,但是它还没有被神经科学实验证明是正确的。在机器学习模型中,通常有必要同时使用正相和负相,而不是分为清醒和 REM \text{REM} REM 睡眠时期。
  • 这样理解学习正相和负相的作用之后,我们设计了一个比算法1计算代价更低的替代算法。

    • 简单的 MCMC \text{MCMC} MCMC算法的计算成本主要来自每一步的随机初始化预烧马尔可夫链。
    • 一个自然的解决方法是初始化马尔可夫链为一个非常接近模型分布的分布,从而大大减少预烧步骤。
  • 对比散度 CD \text{CD} CD,或者是具有 k k k Gibbs \text{Gibbs} Gibbs 步骤的 CD − k \text{CD}-k CDk)算法在每个步骤中初始化马尔可夫链为采样自数据分布中的样本 ( Hinton, 2000, 2010 \text{Hinton, 2000, 2010} Hinton, 2000, 2010),如算法2所示。

    • 从数据分布中获取样本是计算代价最小的,因为它们已经在数据集中了。
    • 初始时,数据分布并不接近模型分布,因此负相不是非常准确。
    • 幸运的是, 正相仍然可以准确地增加数据的模型概率。
    • 进行正相阶段一段时间之后,模型分布会更接近于数据分布,并且负相开始变得准确。
  • 当然, CD \text{CD} CD仍然是负相的一个近似。

    • CD \text{CD} CD未能定性地实现真实负相的主要原因是,它不能抑制远离真实训练样本的高概率区域。
    • 这些区域在模型上具有高概率,但是在数据生成区域上具有低概率,被称为虚假模态 ( spurious modes \text{spurious modes} spurious modes)。
    • 图例2解释了这种现象发生的原因。
    • 基本上,除非 k k k 非常大,否则远离数据分布的模型分布中的模态不会被马尔可夫链在初始化的训练点中探索。
  • Carreira-Perpi n ˜ an and Hinton (2005) \text{Carreira-Perpiñan and Hinton (2005)} Carreira-Perpin˜an and Hinton (2005) 实验上证明 CD \text{CD} CD估计偏向于 RBM \text{RBM} RBM和完全可见的玻尔兹曼机,因为它会收敛到与最大似然学习不同的点。他们认为,由于偏差较小, CD \text{CD} CD可以作为一种计算代价低的方式来初始化模型,之后可以通过计算代价高的 MCMC \text{MCMC} MCMC方法进行细调。 Bengio and Delalleau (2009) \text{Bengio and Delalleau (2009)} Bengio and Delalleau (2009) 表明, CD \text{CD} CD可以被理解为去掉了正确 MCMC \text{MCMC} MCMC梯度更新中的最小项,这解释了偏差的由来。

  • 在训练诸如 RBM \text{RBM} RBM的浅层网络时 CD \text{CD} CD估计是很有用的。反过来,这些可以堆叠起来初始化更深的模型,如 DBN \text{DBN} DBN DBM \text{DBM} DBM。但是 CD \text{CD} CD并不直接有助于训练更深的模型。这是因为在给定可见单元样本的情况下,很难采样隐藏单元。由于隐藏单元不包括在数据中,所以使用训练点初始化无法解决这个问题。即使我们使用数据初始化可见单元,我们仍然需要预烧在给定这些可见单元的隐藏单元条件分布上采样的马尔可夫链。

  • CD \text{CD} CD算法可以被理解为惩罚具有马尔科夫链的模型,当输入来自数据时, 马尔可夫链会迅速改变。

    • 这意味着使用 CD \text{CD} CD估计训练有点类似于训练自编码器。
    • 即使 CD \text{CD} CD估计比一些其他训练方法具有更大偏差,但是它有助于预训练之后会堆叠起来的浅层模型。
    • 这是因为堆栈中最早的模型会受激励复制更多的信息到其潜变量,使其可用于随后的模型。
    • 这应该更多地被认为是 CD \text{CD} CD训练中经常可利用的副作用,而不是原本的设计优势。
  • Sutskever and Tieleman (2010) \text{Sutskever and Tieleman (2010)} Sutskever and Tieleman (2010) 表明, CD \text{CD} CD的更新方向不是任何函数的梯度。这使得 CD \text{CD} CD可能存在永久循环的情况,但在实践中这并不是一个严重的问题。

  • 另一个解决 CD \text{CD} CD中许多问题的不同策略是,在每个梯度步骤中初始化马尔可夫链为先前梯度步骤的状态值。

    • 这个方法首先被应用数学和统计学社群发现,命名为随机最大似然 SML \text{SML} SML)( Younes, 1998 \text{Younes, 1998} Younes, 1998),后来又在深度学习社区中以名称持续性对比散度 PCD \text{PCD} PCD,或者每个更新中具有 k k k Gibbs \text{Gibbs} Gibbs 步骤的 PCD-k \text{PCD-k} PCD-k)独立地被重新发现( Tieleman, 2008 \text{Tieleman, 2008} Tieleman, 2008)。
    • 具体请看算法3。
    • 这种方法的基本思想是,只要随机梯度算法得到的步长很小,那么前一步骤的模型将类似于当前步骤的模型。
    • 因此,来自先前模型分布的样本将非常接近于来自当前模型分布的样本,因此用这些样本初始化的马尔可夫链将不需要花费很多时间来完成混合。
  • 因为每个马尔可夫链在整个学习过程中不断更新,而不是在每个梯度步骤中重新开始, 马尔可夫链可以自由探索很远,以找到所有模型的模态。

    • 因此, SML \text{SML} SML CD \text{CD} CD具有更强的鲁棒性,以免形成具有虚假模态的模型。
    • 此外,因为有可能存储所有采样变量的状态,无论是可见的还是潜在的, SML \text{SML} SML为隐藏单元和可见单元都提供了初始值。
    • CD \text{CD} CD只能为可见单元提供初始化,因此深度模型需要进行预烧步骤。
    • SML \text{SML} SML能够有效地训练深度模型。
    • Marlin et al. (2010) \text{Marlin et al. (2010)} Marlin et al. (2010) SML \text{SML} SML与本章中提出的许多其他标准方法进行比较。
    • 他们发现, SML \text{SML} SML RBM \text{RBM} RBM上得到了最佳的测试集对数似然,并且如果 RBM \text{RBM} RBM的隐藏单元被用作 SVM \text{SVM} SVM分类器的特征,那么 SML \text{SML} SML会得到最好的分类精度。
  • 如果随机梯度算法移动模型的速率可以比马尔可夫链在迭代步中混合更快,那么 SML \text{SML} SML容易变得不准确。

    • 如果 k k k 太小或 ϵ \epsilon ϵ 太大,那么这有可能发生。
    • 不幸的是,这些值的容许范围与问题有很大关联。
    • 现在还没有方法能够正式地测试马尔可夫链是否能够在迭代步骤之间成功混合。
    • 主观地,如果学习速率对于 Gibbs \text{Gibbs} Gibbs 步骤数目而言太大的话,那么梯度步骤中负相采样的方差会比不同马尔可夫链中负相采样的方差更大。
    • 例如, MNIST \text{MNIST} MNIST 上训练的模型在一个步骤中采样 7 7 7 秒; 那么,学习过程将会强烈地让模型学习对应于 7 7 7 秒的模态,并且模型可能会在下一步骤中采样 9 9 9 秒。
  • 从使用 SML \text{SML} SML训练的模型中评估采样必须非常小心。

    • 在模型训练完之后,有必要从一个随机起点初始化的新马尔可夫链抽取样本。
    • 用于训练的连续负相链中的样本受到了模型最近几个版本的影响,会使模型看起来具有比其实际更大的容量。
  • Berglund and Raiko (2013) \text{Berglund and Raiko (2013)} Berglund and Raiko (2013) 进行了实验来检验由 CD \text{CD} CD SML \text{SML} SML进行梯度估计带来的偏差和方差。

    • 结果证明 CD \text{CD} CD比基于精确采样的估计具有更低的方差。
    • SML \text{SML} SML有更高的方差。 CD \text{CD} CD方差低的原因是,其在正相和负相中使用了相同的训练点。
    • 如果从不同的训练点来初始化负相,那么方差会比基于精确采样的估计的方差更大。
  • 所有基于 MCMC \text{MCMC} MCMC从模型中抽取样本的方法在原则上几乎可以与 MCMC \text{MCMC} MCMC的任何变体一起使用。这意味着诸如 SML \text{SML} SML这样的技术可以使用篇章:蒙特卡洛方法中描述的任何增强 MCMC \text{MCMC} MCMC的技术(例如并行回火)来加以改进 ( Desjardins et al., 2010b; Cho et al., 2010b \text{Desjardins et al., 2010b; Cho et al., 2010b} Desjardins et al., 2010b; Cho et al., 2010b)。

  • 一种在学习期间加速混合的方法是,不改变蒙特卡罗采样技术,而是改变模型的参数化和代价函数。

    • 快速持续性对比散度 ( fast persistent contrastive divergence \text{fast persistent contrastive divergence} fast persistent contrastive divergence),或者 FPCD \text{FPCD} FPCD ( Tieleman and Hinton, 2009 \text{Tieleman and Hinton, 2009} Tieleman and Hinton, 2009) 使用如下表达式去替换传统模型的参数 θ \boldsymbol{\theta} θ θ = θ ( slow ) + θ ( fast ) \boldsymbol{\theta}=\boldsymbol{\theta}^{(\text{slow})}+\boldsymbol{\theta}^{(\text{fast})} θ=θ(slow)+θ(fast) — 公式1 \quad\textbf{---\footnotesize{公式1}} 公式1

    • 现在的参数是以前的两倍多,逐位相加定义原始模型的参数。

    • 参数的快速复制用更大的学习速率来训练,从而使其快速响应学习的负相,并使马尔可夫链探索新的值域。

    • 这能够使马尔可夫链快速混合,尽管这种效应只会发生在学习期间快速权重可以自由改变的时候。

    • 通常,在短时间地将快速权重设为大值并保持足够长时间,使马尔可夫链改变模式之后,我们会对快速权重使用显著的权重衰减,促使它们收敛到小值。

  • 本篇介绍的基于 MCMC \text{MCMC} MCMC的方法的一个关键优点是它们提供了 log ⁡ Z \log Z logZ 梯度的估计,因此我们可以从本质上将问题分解为 log ⁡ p ~ \log \tilde{p} logp~ log ⁡ Z \log Z logZ 两块。然后我们可以使用任何其他的方法来处理 log ⁡ p ~ ( x ) \log \tilde{p}(\textbf{x}) logp~(x),只需将我们的负相梯度加到其他方法的梯度中。特别地,这意味着正相可以使用在 p ~ \tilde{p} p~ 上仅有下限的方法。然而,本篇介绍处理 log ⁡ Z \log Z logZ 的大多数其他方法都和基于边界的正相方法是不兼容的。


  • 图例1:算法1角度的“正相” 和“负相”。
    • 算法1角度的“正相” 和“负相”
      在这里插入图片描述

    • 说明:

      • 左图:
        • 在正相中,我们从数据分布中采样,然后 push up \text{push up} push up 到它们的未经归一化的概率上。
        • 这意味着在 push on up \text{push on up} push on up 越多的地方数据点的概率越高。
      • 右图:
        • 在负相中,我们从模型分布中采样,然后 push down \text{push down} push down 到它们的未经归一化的概率上。
        • 这与正相的作用相反,给未经归一化概率处处添加了一个大常数。
        • 当数据分布和模型分布相等时,正相 push up \text{push up} push up 数据点和负相 push down \text{push down} push down 数据点的机会相等。
        • 此时,不再有任何的梯度(期望上说),训练也必须停止。

  • 图例2:一个虚假模态。
    • 一个虚假模态
      在这里插入图片描述

    • 说明:

      • 说明对比散度(算法2)的负相为何无法压缩虚假模态的例子。
      • 一个虚假模态指的是一个在模型分布中出现数据分布中却不存在的模式。
      • 由于对比散度从数据点中初始化它的马尔可夫链然后运行马尔可夫链了仅仅几步,不太可能到达模型中离数据点较远的模式。
      • 这意味着从模型中采样时,我们有时候会得到一些与数据并不相似的样本。
      • 这也意味着由于在这些模式上浪费了一些概率质量,模型很难把较高的概率质量集中于正确的模式上。
      • 出于可视化的目的,这个图使用了某种程度上说更加简单的距离的概念——在 R \mathbb{R} R 的数轴上虚假模态与正确的模式有很大的距离。
      • 这对应着基于局部移动 R \mathbb{R} R 上的单个变量 x x x 的马尔可夫链。
      • 对于大部分深度概率模型来说,马尔可夫链是基于 Gibbs \text{Gibbs} Gibbs 采样的,并且对于单个变量产生非局部的移动但是无法同时移动所有的变量。
      • 对于这些问题来说,考虑 edit \text{edit} edit 距离比欧式距离通常更好。
      • 然而,高维空间的 edit \text{edit} edit 距离很难在二维空间作图展示。

  • 算法1:一种朴素的 MCMC \text{MCMC} MCMC算法,使用梯度上升最大化具有难解配分函数的对数似然。

  • 算法1伪代码,如下:
    \quad 设步长 ϵ \epsilon ϵ 为一个小正数。
    \quad 设吉布斯步数 k k k 大到足以允许预烧。在小图像集上训练一个 RBM \text{RBM} RBM大致设为 100 100 100
    while \quad\textbf{while} while 不收敛 do \textbf{do} do
    \quad\quad 从训练集中采包含 m m m 个样本 { x ( 1 ) , … , x ( m ) } \{\textbf{x}^{(1)},\dots,\textbf{x}^{(m)}\} {x(1),,x(m)} minibatch \text{minibatch} minibatch
    g ← 1 m ∑ i = 1 m ∇ θ log ⁡ p ~ ( x ( i ) ; θ ) \quad\quad \text{g} \gets \frac{1}{m}\sum_{i=1}^m\nabla_{\boldsymbol{\theta}}\log \tilde{p}(\textbf{x}^{(i)};\boldsymbol{\theta}) gm1i=1mθlogp~(x(i);θ)
    \quad\quad 初始化 m m m 个样本 { x ~ ( 1 ) , … , x ~ ( m ) } \{\tilde{\textbf{x}}^{(1)},\dots,\tilde{\textbf{x}}^{(m)}\} {x~(1),,x~(m)} 为随机值(例如,从均匀或正态分布中采,或大致与模型边缘分布匹配的分布)。
    for \quad\quad \textbf{for} for i = 1 i = 1 i=1 to \textbf{to} to k k k do \textbf{do} do
    for \quad\quad\quad \textbf{for} for j = 1 j = 1 j=1 to \textbf{to} to m m m do \textbf{do} do
    x ~ ( j ) ← gibbs _ update ( x ~ ( j ) ) \quad\quad\quad\quad \tilde{\textbf{x}}^{(j)}\gets \text{gibbs}\_\text{update}(\tilde{\textbf{x}}^{(j)}) x~(j)gibbs_update(x~(j))
    end \quad\quad\quad \textbf{end} end for \textbf{for} for
    end \quad\quad \textbf{end} end for \textbf{for} for
    g ← 1 m ∑ i = 1 m ∇ θ log ⁡ p ~ ( x ( i ) ; θ ) \quad\quad \text{g} \gets \frac{1}{m}\sum_{i=1}^m\nabla_{\boldsymbol{\theta}}\log \tilde{p}(\textbf{x}^{(i)};\boldsymbol{\theta}) gm1i=1mθlogp~(x(i);θ)
    θ ← θ + ϵ g \quad\quad \boldsymbol{\theta}\gets \boldsymbol{\theta} + \epsilon\text{g} θθ+ϵg
    end \quad\textbf{end} end while \textbf{while} while


  • 算法2:对比散度算法,使用梯度上升作为优化程序。
  • 算法2伪代码,如下:
    \quad 设步长 ϵ \epsilon ϵ 为一个小正数。
    \quad 设吉布斯步数 k k k 大到足以让从 p data p_{\text{data}} pdata 初始化并从 p ( x ; θ ) p(\textbf{x}; \boldsymbol{\theta}) p(x;θ) 采样的马尔可夫链混合。
    \quad 在小图像集上训练一个 RBM \text{RBM} RBM大致设为 1 − 20 1-20 120
    while \quad\textbf{while} while 不收敛 do \textbf{do} do
    \quad\quad 从训练集中采包含 m m m 个样本 { x ( 1 ) , … , x ( m ) } \{\textbf{x}^{(1)},\dots,\textbf{x}^{(m)}\} {x(1),,x(m)} minibatch \text{minibatch} minibatch
    g ← 1 m ∑ i = 1 m ∇ θ log ⁡ p ~ ( x ( i ) ; θ ) \quad\quad \text{g} \gets \frac{1}{m}\sum_{i=1}^m\nabla_{\boldsymbol{\theta}}\log \tilde{p}(\textbf{x}^{(i)};\boldsymbol{\theta}) gm1i=1mθlogp~(x(i);θ)
    for \quad\quad \textbf{for} for i = 1 i = 1 i=1 to \textbf{to} to m m m do \textbf{do} do
    x ~ ( i ) ← x ( i ) \quad\quad\quad \tilde{\textbf{x}}^{(i)}\gets \textbf{x}^{(i)} x~(i)x(i)
    end \quad\quad \textbf{end} end for \textbf{for} for
    \quad\quad 初始化 m m m 个样本 { x ~ ( 1 ) , … , x ~ ( m ) } \{\tilde{\textbf{x}}^{(1)},\dots,\tilde{\textbf{x}}^{(m)}\} {x~(1),,x~(m)} 为随机值(例如,从均匀或正态分布中采,或大致与模型边缘分布匹配的分布)。
    for \quad\quad \textbf{for} for i = 1 i = 1 i=1 to \textbf{to} to k k k do \textbf{do} do
    for \quad\quad\quad \textbf{for} for j = 1 j = 1 j=1 to \textbf{to} to m m m do \textbf{do} do
    x ~ ( j ) ← gibbs _ update ( x ~ ( j ) ) \quad\quad\quad\quad \tilde{\textbf{x}}^{(j)}\gets \text{gibbs}\_\text{update}(\tilde{\textbf{x}}^{(j)}) x~(j)gibbs_update(x~(j))
    end \quad\quad\quad \textbf{end} end for \textbf{for} for
    end \quad\quad \textbf{end} end for \textbf{for} for
    g ← g − 1 m ∑ i = 1 m ∇ θ log ⁡ p ~ ( x ( i ) ; θ ) \quad\quad \text{g} \gets \text{g} - \frac{1}{m}\sum_{i=1}^m\nabla_{\boldsymbol{\theta}}\log \tilde{p}(\textbf{x}^{(i)};\boldsymbol{\theta}) ggm1i=1mθlogp~(x(i);θ)
    θ ← θ + ϵ g \quad\quad \boldsymbol{\theta}\gets \boldsymbol{\theta} + \epsilon\text{g} θθ+ϵg
    end \quad \textbf{end} end while \textbf{while} while

  • 算法3:随机最大似然/持续性对比散度算法,使用梯度上升作为优化程序。
  • 算法3伪代码,如下:
    \quad 设步长 ϵ \epsilon ϵ 为一个小正数。
    \quad 设吉布斯步数 k k k 大到足以让从 p ( x ; θ + ϵ g ) p(\textbf{x};\boldsymbol{\theta}+\epsilon\textbf{g}) p(x;θ+ϵg) 采样的马尔可夫链预烧(从采自 p ( x ; θ p(\textbf{x};\boldsymbol{\theta} p(x;θ)的样本开始)。在小图像集上训练一个 RBM \text{RBM} RBM大致设为 1 1 1,对于更复杂的模型如深度玻尔兹曼机可能要设为 5 − 50 5-50 550
    \quad 初始化 m m m 个样本 { x ~ ( 1 ) , … , x ~ ( m ) } \{\tilde{\textbf{x}}^{(1)},\dots,\tilde{\textbf{x}}^{(m)}\} {x~(1),,x~(m)} 为随机值(例如,从均匀或正态分布中采,或大致与模型边缘分布匹配的分布)。
    while \quad\textbf{while} while 不收敛 do \textbf{do} do
    \quad\quad 从训练集中采包含 m m m 个样本 { x ( 1 ) , … , x ( m ) } \{\textbf{x}^{(1)},\dots,\textbf{x}^{(m)}\} {x(1),,x(m)} minibatch \text{minibatch} minibatch
    g ← 1 m ∑ i = 1 m ∇ θ log ⁡ p ~ ( x ( i ) ; θ ) \quad\quad \text{g} \gets \frac{1}{m}\sum_{i=1}^m\nabla_{\boldsymbol{\theta}}\log \tilde{p}(\textbf{x}^{(i)};\boldsymbol{\theta}) gm1i=1mθlogp~(x(i);θ)
    for \quad\quad \textbf{for} for i = 1 i = 1 i=1 to \textbf{to} to k k k do \textbf{do} do
    for \quad\quad\quad \textbf{for} for j = 1 j = 1 j=1 to \textbf{to} to m m m do \textbf{do} do
    x ~ ( j ) ← gibbs _ update ( x ~ ( j ) ) \quad\quad\quad\quad \tilde{\textbf{x}}^{(j)}\gets \text{gibbs}\_\text{update}(\tilde{\textbf{x}}^{(j)}) x~(j)gibbs_update(x~(j))
    end \quad\quad\quad \textbf{end} end for \textbf{for} for
    end \quad\quad \textbf{end} end for \textbf{for} for
    g ← g − 1 m ∑ i = 1 m ∇ θ log ⁡ p ~ ( x ( i ) ; θ ) \quad\quad \text{g} \gets \text{g} - \frac{1}{m}\sum_{i=1}^m\nabla_{\boldsymbol{\theta}}\log \tilde{p}(\textbf{x}^{(i)};\boldsymbol{\theta}) ggm1i=1mθlogp~(x(i);θ)
    θ ← θ + ϵ g \quad\quad \boldsymbol{\theta}\gets \boldsymbol{\theta} + \epsilon\text{g} θθ+ϵg
    end \quad \textbf{end} end while \textbf{while} while

总结

为了解决这些问题,对比散度算法应运而生。对比散度是由 Hinton \text{Hinton} Hinton 2002 2002 2002年提出的一种快速学习算法,特别适用于训练受限玻尔兹曼机( RBM \text{RBM} RBM)。与随机最大似然相比,对比散度通过初始化接近模型分布的马尔可夫链来显著降低计算成本。它利用较少的 Gibbs \text{Gibbs} Gibbs采样步数就能得到足够好的近似,从而提高了训练效率。然而,对比散度也可能引入虚假模态,这是其局限性之一。尽管如此,对比散度仍然在许多深度学习任务中表现出色,成为训练深度模型的一种有效方法。

综上所述,随机最大似然和对比散度是统计学和机器学习领域中不可或缺的工具。随机最大似然通过最大化似然函数来估计参数,而对比散度则通过降低计算成本来提高训练效率。这两种方法各有优缺点,但在实际应用中往往能够相互补充,共同推动机器学习领域的发展。

往期内容回顾

面对配分函数 - 对数似然梯度篇
蒙特卡罗方法 - 马尔可夫链蒙特卡罗方法篇

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

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

相关文章

使用docker部署Sentinel

Sentinel 是一个由 Redis 开发的高可用性解决方案,主要用于监控和管理 Redis 集群中的节点。其主要功能包括: 监控:Sentinel 监控 Redis 集群中的各个节点的状态,包括主节点、从节点和 Sentinel 自身的状态。它会定期检查节点是否…

Video-LLaMA论文解读和项目部署教程

Video-LLaMA: An Instruction-tuned Audio-Visual Language Model for Video Understanding 相关工作 大型语言模型: 本文的工作基于这些LLM,并提供即插即用插件,使其能够理解视频中的视觉和听觉内容。 多模态大型语言模型: 现有的方法可以分为两大类。 第一类包括使用LL…

Flutter 获取手机传感器数据

前言 在Flutter中可以使用sensors_plus插件来访问加速度计、陀螺仪、磁力计以及气压传感器 sensors_plue的平台支持 平台 是否支持 Android✅iOS✅MacOS❌Web✅Linux❌Windows❌ sensors_plue的要求 Flutter >3.19.0Dart >3.3.0 <4.0.0iOS >12.0MacOS >10.…

Mac 编译 Unreal 源码版本

Mac M3 Pro、XCode 16.0、Unreal 5.4 分享下我本地操作的全流程和遇到的问题 安装 XCodeGithubDesktop 克隆自己 Fork 的仓库运行 Setup.command运行 GenerateProjectFiles.command 出现警告&#xff1a;Platform Mac is not a valid platform to build. Check that the SDK i…

【C】分支与循环1----if与switch

分支与循环 C语言是一门结构化的程序设计语言 顺序结构选择结构循环结构 if语句 if if 语句的语法形式如下: if(表达式)语句表达式成立(为真)&#xff0c;则语句执行&#xff0c;表达式不成立(为假)&#xff0c;则语句不执行 在C语言中&#xff0c;0为假&#xff0c;非0表…

【React】使用脚手架或Vite包两种方式创建react项目

1.使用脚手架搭建React项目&#xff1a; 在终端窗口运行如下命令即可&#xff1a; npx create-react-app react-basic(创建的文件目录) npx&#xff1a;Node.js工具命令&#xff0c;用于查找并执行后续的包命令。 2.使用Vite包创建React项目&#xff1a; 在终端窗口运行如…

Jetpack-Room

Room是Android Jetpack中的一个组件&#xff0c;它提供了一个抽象层&#xff0c;帮助开发者在本地数据库&#xff08;如SQLite&#xff09;上进行持久化数据存储。Room通过简化数据库操作&#xff0c;使得数据管理变得更加容易和高效。 Room重要的概念 实体&#xff08;Entit…

Facebook上的隐私保护:如何加强个人数据的安全性?

在数字化时代&#xff0c;个人数据的保护已成为用户日益关注的话题&#xff0c;尤其是在社交媒体平台如Facebook上。用户在享受社交媒体带来的便利时&#xff0c;如何有效保护个人隐私&#xff0c;维护自身的数据安全&#xff0c;成为了一个亟需解决的问题。 Facebook的隐私保护…

具备技术二:正则表达式

一、C正则库 regex 用于报文的解析。 使用接口&#xff1a;bool regex_match(const string &src, smatch &matches, regex &e); src&#xff1a;要解释的字符串。 smatch&#xff1a;一个类似于数组的结构&#xff0c;用于存储一个个解释之后的字符串。 matche…

若依-医疗系统

项目介绍 湘雅三医院医疗系统是根据长沙市湘雅第三医院来开发的一款后台管理系统&#xff0c;是基于SpringBoot和Vue2开发的一款前端后端分离项目&#xff0c; 项目中包括&#xff1a;1&#xff1a;权限认证&#xff0c;动态菜单2&#xff1a;用户管理&#xff0c;部门管理&am…

2024年诺贝尔物理学奖:机器学习与神经网络的历史性突破

2024年诺贝尔物理学奖的揭晓引发了广泛的讨论&#xff0c;因为这次的获奖者并非传统意义上的物理学家&#xff0c;而是来自机器学习与神经网络领域的研究者——John J. Hopfield 和 Geoffrey E. Hinton。这一决定不仅让人惊讶&#xff0c;也让我们重新思考物理学的边界和诺贝尔…

Microsoft 的指南可帮助缓解 Kerberoasting

随着网络威胁不断演变&#xff0c;安全专业人员必须了解最新的攻击媒介和防御机制。 Kerberoasting是一种众所周知的 Active Directory (AD) 攻击媒介&#xff0c;由于使用 GPU 加速密码破解技术&#xff0c;其有效性正在不断提高。 由于 Kerberoasting 可让网络威胁者窃取凭…

模拟电路设计期末速成总结

模拟电路设计期末速成总结 模拟电路设计是电子工程和电气工程专业中的一门重要基础课&#xff0c;主要研究连续时间信号&#xff08;模拟信号&#xff09;的处理和应用。期末复习时&#xff0c;针对这门课可以分为以下几个关键内容进行速成总结。 一、基本概念与元件 模拟信号…

Python酷库之旅-第三方库Pandas(150)

目录 一、用法精讲 681、pandas.Timestamp.now方法 681-1、语法 681-2、参数 681-3、功能 681-4、返回值 681-5、说明 681-6、用法 681-6-1、数据准备 681-6-2、代码示例 681-6-3、结果输出 682、pandas.Timestamp.replace方法 682-1、语法 682-2、参数 682-3、…

Nest.js 实战 (十四):如何获取客户端真实 IP

问题解析 在 Nest.js 应用中&#xff0c;当你试图通过 request.ip 获取客户端的 IP 地址时&#xff0c;如果总是返回 ::1 或者 ::ffff:127.0.0.1&#xff0c;这通常意味着请求来自本地主机。 因为在前后端分离应用中&#xff0c;前端请求后端服务一般的做法都是通过代理&…

查看记录Linux当前系统环境下已经安装好的CUDA和cuDNN版本信息

在实际工作中&#xff0c;经常需要接触服务器&#xff0c;有时候在实施部署的时候需要对裸机进行安装和部署&#xff0c;涉及到深度学习环境搭建的话就会比较耗时一些&#xff0c;为了简化操作工作以及保证与开发好的模型完美兼容最好的办法就是与我们自己的开发机器保持完全相…

Unity 2D角色的跳跃与二段跳示例

如图&#xff0c;实现这样的效果 其实非常简单&#xff0c;就两个必要条件 触发&#xff1a;一定是按下触发 跳跃次数&#xff1a;一定大于0 声明跳跃次数 public int jumpCount;//多段跳次数 还有一个可以优化的点&#xff0c;就是如果你想角色的多段跳可以有第一次跳的那么…

C语言复习概要(六)

公主请阅 1. 深入理解数组与指针在C语言中的应用1.1 数组名的理解 2. 使用指针访问数组3. 一维数组传参的本质4. 冒泡排序的实现5. 二级指针6. 指针数组7. 指针数组模拟二维数组8.总结 1. 深入理解数组与指针在C语言中的应用 数组与指针是C语言的核心概念之一&#xff0c;理解…

无极低码课程【mysql windows下安装要点】

在Windows环境中安装MySQL 5.7教程 MySQL 是世界上最流行的开源关系型数据库管理系统之一。本教程将指导您在Windows操作系统上安装MySQL 5.7。 网上教程较多&#xff0c;这里不再详述&#xff0c;注意关键点即可 准备工作 下载MySQL 5.7安装包 访问 MySQL官方网站 下载MyS…

新年好——Dijkstra+Permutation

题目 代码 #include <bits/stdc.h> using namespace std; #define x first #define y second typedef pair<int, int> PII; const int N 5e410, M 2e510; const int inf 0x3f3f3f3f; int n, m; int a[6]; int h[N], e[M], ne[M], idx, w[M]; int dist[6][N];…