限制玻尔兹曼机(RBMs)理论详解

本文详细阐述了受限玻尔兹曼机(RBMs)的基础概念、结构、学习方法以及在深度学习领域的应用。从能量函数、分布函数到模型学习流程,深入解析了RBMs的核心原理,并探讨了Gibbs采样、对比学习加速训练等关键技术。通过实例和数学推导,读者能够全面掌握RBMs的工作机制及其在数据拟合和特征学习中的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、序

关于RBMs的文章已经有不少了,但是很多资料我在阅读的时候仍然对细节有一些疑惑。在查阅学习了大牛的视频、论文之后,很多问题豁然开朗,且在本文中记录下我对RBMs的粗浅了解。首先从玻尔兹曼机和限制玻尔兹曼机的结构和定义开始:

BM和RBM的结构

二、Boltmann Machines:

    玻尔兹曼机(Boltmann Machines)的能量函数(Energy function)是:

E(x,h)=hWxcxbhxUxhVh

分布函数:

P(x,h)=exp(E(x,h))/Z

其中分母Z学名叫做partition function

Z=xhexp(E(x,h))

三、Restricted Boltmann Machines:

    限制玻尔兹曼机(Restricted Boltmann Machines,简称RBMs)的能量函数(Energy function)是:

E(x,h)=hWxcxbh=jkWj,khjxkkckxkjbjhj

分布函数:

P(x,h)=exp(E(x,h))/Z

能量函数的能量越小,分布函数相应的概率就越大。

      玻尔兹曼机和限制玻尔兹曼机都属于基于能量的模型(Energy-Based Models),从模型图和公式中很容易看出两者的区别:玻尔兹曼机隐含层(和可见层)处于同一层的任意两个节点之间有一条连线;而限制玻尔兹曼机同层变量之间是相互独立的。只要有足够的隐单元,限制玻尔兹曼机可以表示任意的离散分布,玻尔兹曼机的表示能力则更强一些。另一方面,限制玻尔兹曼机比玻尔兹曼机更容易训练。

四、模型学习:

    训练RBMs就是学习能量函数的过程,变量中只有输入 x 是已知的。

RBMs

Free Energy:

    为了后面计算公式的简洁,首先引入Free Energy这个概念:

P(x)=heE(x,h)Z=eFreeEnergy(x)Z,Z=xeFreeEnergy(x)

FreeEnergy(x)=logheE(x,h)

例如:如果 hi{0,1}

FreeEnergy(x)=logheE(x,h)=loghehWx+cx+bh=cxloghehWx+bh=cxlogheh1(W1x+b1)ehn(Wnx+bn)=cxilog(1+eWix+bi)

给定参数和 x 就可以很容易的计算出Free Energy的值,不依赖于隐单元 h 的具体取值。

梯度方法进行优化:

      用梯度算法学习RBMs模型参数 θ ( θ 包括 W,c,b ),目标函数是 P(x) (这里是梯度上升,因为要求的是似然的极大值)。 P(x) 取对数求偏导:

logP(x)=FreeEnergy(x)logZ

对数似然梯度(log-likelihood gradient):
logP(x)θ=FreeEnergy(x)θ+1Zx~eFreeEnergy(x~)FreeEnergy(x~)θ=FreeEnergy(x)θ+x~P(x~)FreeEnergy(x~)θ

logP(x)θ 是对 logP(x)W,logP(x)c,logP(x)b 的统一表示,编写代码时需要分别求偏导。求偏导都没有太大难度,其中 E(x,h)W=hWxW=hx

        很多文章里喜欢写成负对数似然梯度(negative log-likelihood gradient)的形式, logP(x) 就应该用梯度下降方法来更新参数了:

logP(x)θ=FreeEnergy(x)θx~P(x~)FreeEnergy(x~)θ

训练集上的平均负对数似然梯度等于:

EP^[logP(x)θ]=EP^[FreeEnergy(x)θ]EP[FreeEnergy(x~)θ]

P^ 是训练集对应的分布, P 是模型分布,EP表示在模型分布上求期望。(这里顺便解释一下为什么大家都喜欢负对数似然而不是直接最大化似然,其实如果你有一台可以表示任何数值的超级计算机,那么取不取对数真的没什么关系,但是现实中的计算机表示能力有限,N个训练样本似然乘积很小很小,小到计算机都无法表示了,所以最好取log,概率的和不会有这样的问题;另外,在优化理论中,优化问题的标准形式就是最小化某个目标函数,所以最好加个负号,最小化负对数似然)。

    式子的第一项称为positive phrase,通过减小对应的FreeEnergy增大训练样本的概率;第二项是negative phrase,作用是增大对应的FreeEnergy来减小模型产生的样本的概率。句话不难理解,因为两项分别是往 FreeEnergy(x) 的梯度下降和 FreeEnergy(x~) 的梯度上升方向改变。这也符合最大似然标准,在训练样本上有较大的似然而在其他样本上概率较小。从分类的角度来看,训练样本是正样本,而模型样本是负样本(Negative samples)

负样本

    把训练样本代入求均值即可得到梯度公式的第一项 EP^[FreeEnergy(x)θ] 的值,第二项 EP[FreeEnergy(x~)θ] 计算模型分布上的期望,这就比较困难了,因为这需要取遍所有可能的 x 的值。所以接下来我们就需要用到MCMC 采样来近似估计了。用MCMC采样得到的一组样本来近似估计整体的样本分布,梯度公式第二项在采样得到的样本上求近似期望(平均值)得到估计值。在实际中,常用Gibbs采样,Gibbs 采样是MCMC 算法的一种。用Gibbs从模型分布中采样n个样本,然后负对数似然梯度在训练集上的期望就可以近似为:

EP^[logP(x)θ]EP^[FreeEnergy(x)θ]1ni=1nFreeEnergy(xi~)θ

        最后,简要概括一下RBMs模型学习方法的步骤:(1)、求偏导,(2)、采样,(3)、估计负对数似然梯度,(4)、梯度下降方法更新参数。

五、Gibbs采样:

      对RBMs模型来说, Gibbs主要有两个作用:一是估计negative log-likelihood gradient;二是在训练完模型之后(如DBN,DBN是由多个RBMs叠加而成的),用Gibbs进行采样,可以看到模型对数据的拟合以及网络中间隐含层的抽象效果。

       在RBMs模型训练过程中,Gibbs就是用来对negative log-likelihood gradient进行估计的。Gibbs采样分两个小步对 (x,h) 进行采样,第一步固定 x h 进行采样,第二步固定 h x 进行采样,交替进行直到收敛

x1P^(x)h1P(h|x1)x2P(x|h1)h2P(h|x2)xk+1P(x|hk)

    因为在训练过程中,训练模型分布会逐渐逼近训练样本分布,所以第一步可以从训练样本的分布 P^ 抽取样本作为 x1 。如果第一步直接从模型 P 中采样,Gibbs采样会迅速收敛。

    例如:假设h{0,1}H,已经得到 x1 ,需要对 h1 采样。 P(h|x)=jp(hj|x) (注:条件分布的具体推导过程见下一小节内容), 由于隐单元之间是相互独立的,所以可以采用block Gibbs采样,对所有的隐单元同时进行采样,加快采样收敛。分别求 p(hj=1|x) ,如果 p(hj=1|x)U[0,1] (大于等于均匀分布的一个采样),就设置 hj=1 ,否则设置 hj=0

条件分布:

    Gibbs采样主要是根据条件分布迭代进行采样的,所以在采样之前要先推导出条件分布公式。

P(h|x)=P(x,h)/hP(x,h)=exp(hWx+cx+bh)/Zhexp(hWx+cx+bh)/Z=exp(hWx+bh)hexp(hWx+bh)h=exp(hjhjWjx+bjhj)hexp(hjhjWjx+bjhj)WjWj=jexp(hjWjx+bjhj)h1...hHjexp(hjWjx+bjhj)=jexp(hjWjx+bjhj)jhjexp(hjWjx+bjhj)=jexp(hjWjx+bjhj)hjexp(hjWjx+bjhj)=jp(hj|x)

如果 hj{0,1} ,可以得到:

p(hj=1|x)=exp(Wjx+bj)1+exp(Wjx+bj)=sigm(Wjx+bj)

p(hj=0|x)=1p(hj=1|x)

类似的:

P(x|h)=jexp(hWjxj+cjxj)xjexp(hWjxj+cjxj))=jp(xj|h)

如果 xj{0,1} ,可以得到:

p(xj=1|h)=exp(hWj+cj)1+exp(hWj+cj))=sigm(hWj+cj)

六、Contrastive Divergence:

    Contrastive Divergence可以加快RBMs的训练速度,随机选择一个训练样本初始化 x1 ,并且每一次迭代只用一个模型样本来估计negative log-likelihood gradient,而不是等到MCMC采样收敛后求期望。

    k-step Contrastive Divergence(CD-k):MCMC采样k步 x1,x2,...,xk+1 , 用 xk+1 估计negative log-likelihood gradient。当k=1时,就能得到比较好的近似(DBN等pre-training k取1就够用了),k增大可以得到更好的效果。Contrastive Divergence的一种理解是在训练样本 x1 附近的局部区域内估计negative log-likelihood gradient。

借用一下大神Bengio的文章”Learning Deep Architectures for AI”的算法描述:

这里写图片描述

Persistent CD:

    CD只在附近的局部区域取Negative Sample来估计negative log-likelihood gradient,很难取到其它极值区域的样本,Persistent CD可以在一定程度上解决这个问题。Persistent CD的思想很简单,它与CD的区别仅仅在与:用上一次迭代得到的 xk+1 (即Negative Sample)作为这次迭代的初始值来初始化 x1 PS:Persistent CD是2008年Tijmen发表在ICML上的文章。

七、参考资料:

[1].Youtube上Hugo Larochelle的视频讲解:https://www.youtube.com/user/hugolarochelle/videos

[2].DeepLearning tutorial:http://deeplearning.net/tutorial/rbm.html

[3].LSIA:http://www.iro.umontreal.ca/~lisa/twiki/bin/view.cgi/Public/DBNEquations

[4].Yoshua Bengio:Learning Deep Architectures for AI

<think>好的,用户想详细了解模拟退火算法的数学原理。我之前已经提供了关于基本思想和应用的信息,现在需要深入数学部分。首先,得回忆一下模拟退火的核心概念,比如Metropolis准则、退火过程、温度参数的作用,以及如何用数学描述这些过程。 用户可能已经知道模拟退火是受物理退火启发,但需要数学上的解释。我需要从概率论的角度出发,说明状态转移的概率如何随温度变化。Metropolis准则中的接受概率公式是关键,应该详细推导这个公式的来源,可能涉及到热力学中的玻尔兹曼分布。 接下来,要解释温度下降的调度方式,比如指数退火、对数退火等数学表达式,以及它们对算法收敛的影响。这里需要引用一些数学定理,比如Kirkpatrick的收敛性证明,或者温度下降的充分条件,如Hajek定理。 另外,马尔可夫链在模拟退火中的应用也很重要,每个温度下系统达到平稳分布的条件,以及如何通过马尔可夫链的长度来保证收敛。可能需要涉及马尔可夫链的数学定义和收敛性条件。 还要注意数学符号的正确使用,比如能量函数E,温度T,状态转移概率P等,确保使用LaTeX格式。同时,用户可能需要了解算法收敛的数学证明框架,虽然详细证明可能复杂,但可以概述关键步骤和条件。 最后,要检查是否有遗漏的数学概念,比如局部最优与全局最优的概率差异,或者如何通过数学方法调整接受概率以避免陷入局部最优。可能需要比较不同接受准则的数学表达式及其影响。 生成的问题需要引导用户进一步探索数学细节,例如收敛性证明、温度调度策略的数学优化,或者与其他优化算法的数学比较。确保问题覆盖用户可能感兴趣的深层数学原理和应用中的数学挑战。</think>### 模拟退火算法的数学原理详解 #### 1. 核心数学模型 模拟退火算法的数学基础源于统计物理学中的**玻尔兹曼分布**和**马尔可夫链**理论。其核心公式为**状态接受概率**: $$ P = \begin{cases} 1 & \text{若 } \Delta E < 0 \\ e^{-\Delta E / T} & \text{否则} \end{cases} $$ 其中$\Delta E = E_{\text{new}} - E_{\text{old}}$表示新状态与旧状态的**能量差**,$T$为当前温度参数[^1]。 #### 2. 马尔可夫链分析 算法在每个温度$T_k$下生成一个马尔可夫链: - **状态转移概率**:$P_{ij}(T_k) = G_{ij}(T_k) \cdot A_{ij}(T_k)$ - $G_{ij}$:从状态$i$到$j$的**生成概率** - $A_{ij}$:**接受概率**,由Metropolis准则决定 - **平稳分布**:当链长足够时,状态分布趋近于: $$ \pi_i(T_k) = \frac{e^{-E_i/T_k}}{Z(T_k)} $$ 其中$Z(T_k)$为配分函数[^2] #### 3. 收敛性证明框架 算法收敛需要满足两个基本条件: 1. **温度下降条件**: $$ T_k \geq \frac{C}{\ln(k+1)} \quad (C为问题相关常数) $$ 2. **遍历性条件**:每个状态可达其他任意状态 根据Hajek定理,当温度按上述条件下降时,算法以概率1收敛到全局最优解[^1]。 #### 4. 关键数学推导 **Metropolis准则的统计物理基础**: 对于热平衡系统,状态出现概率服从玻尔兹曼分布: $$ P(E) \propto e^{-E/(k_B T)} $$ 算法通过模拟这种概率分布实现**定向随机游走**,在高温时允许上坡移动(接受劣解),低温时趋向局部优化。 #### 5. 参数控制方程 典型温度更新策略: - **指数退火**:$T_{k+1} = \alpha T_k \quad (0 < \alpha < 1)$ - **对数退火**:$T_k = T_0 / \ln(k+1)$ - **快速退火**:$T_k = T_0 / (k+1)$ 收敛速度与参数选择满足: $$ \lim_{k \to \infty} T_k = 0 \quad \text{且} \quad \sum_{k=1}^\infty e^{-C/T_k} = \infty $$ ```python # 温度更新函数示例 def update_temperature(T0, k, schedule_type='exponential'): if schedule_type == 'exponential': return T0 * 0.95**k elif schedule_type == 'logarithmic': return T0 / np.log(k+2) elif schedule_type == 'fast': return T0 / (k+1) ```
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值