序言
在统计学和机器学习的领域中,随机最大似然( 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 CD−k)算法在每个步骤中初始化马尔可夫链为采样自数据分布中的样本 ( 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伪代码,如下:
\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}) g←m1∑i=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}) g←m1∑i=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 1−20。
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}) g←m1∑i=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}) g←g−m1∑i=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 5−50。
\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}) g←m1∑i=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}) g←g−m1∑i=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采样步数就能得到足够好的近似,从而提高了训练效率。然而,对比散度也可能引入虚假模态,这是其局限性之一。尽管如此,对比散度仍然在许多深度学习任务中表现出色,成为训练深度模型的一种有效方法。
综上所述,随机最大似然和对比散度是统计学和机器学习领域中不可或缺的工具。随机最大似然通过最大化似然函数来估计参数,而对比散度则通过降低计算成本来提高训练效率。这两种方法各有优缺点,但在实际应用中往往能够相互补充,共同推动机器学习领域的发展。
往期内容回顾
面对配分函数 - 对数似然梯度篇
蒙特卡罗方法 - 马尔可夫链蒙特卡罗方法篇