Deep Belief Networks (DBN) 的原理、逐层贪心预训练与对比散度算法
题目描述
深度信念网络(Deep Belief Network, DBN)是一种经典的深度生成模型,由杰弗里·辛顿等人于2006年提出。它的核心思想是构建一个多层神经网络,其中每一层都是一个受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)。DBN之所以在深度学习发展初期具有重要意义,是因为它通过一种逐层贪心无监督预训练的方法,有效缓解了深度网络训练中棘手的梯度消失/爆炸问题,从而使得训练深层网络成为可能。本题目将深入解析DBN的整体架构、其核心组件RBM的工作原理、关键的对比散度(Contrastive Divergence, CD)训练算法,以及DBN的整个训练(预训练+微调)流程。
解题过程
我将分步讲解DBN的原理,从基本构建模块开始,逐步深入到整体的训练机制。
第一步:理解基本构建模块——受限玻尔兹曼机(RBM)
-
模型结构:
- RBM是一种两层结构的生成式随机神经网络,包含一个可见层(Visible Layer)和一个隐藏层(Hidden Layer)。
- 可见层(v):通常对应输入数据(如图像像素、词向量)。
- 隐藏层(h):用于学习数据的高层特征或表示。
- 连接特性:层内(可见层内或隐藏层内)的单元之间没有连接。所有连接都存在于可见层单元和隐藏层单元之间,形成一个完全二分图。“受限”一词即指这种层内无连接的特性,这极大地简化了计算。
-
能量函数与概率分布:
- RBM是一个基于能量的模型。对于一组给定的可见层状态
v和隐藏层状态h,其能量定义为:
E(v, h) = -b^T v - c^T h - v^T W h - 其中:
W是可见层和隐藏层之间的权重矩阵。b是可见层偏置向量。c是隐藏层偏置向量。
- 基于这个能量函数,
(v, h)的联合概率分布为:
P(v, h) = (1/Z) * exp(-E(v, h)) - 其中
Z = Σ_{v,h} exp(-E(v, h))是配分函数,用于确保概率总和为1。
- RBM是一个基于能量的模型。对于一组给定的可见层状态
-
条件独立性:
- 由于层内无连接,给定可见层状态
v时,所有隐藏层单元h_j是条件独立的。其激活概率为:
P(h_j=1 | v) = σ(c_j + Σ_i W_{ij} v_i),其中σ是sigmoid函数。 - 同理,给定隐藏层状态
h时,所有可见层单元v_i也是条件独立的:
P(v_i=1 | h) = σ(b_i + Σ_j W_{ij} h_j)。
- 由于层内无连接,给定可见层状态
第二步:RBM的核心训练算法——对比散度(CD)
我们的目标是学习RBM的参数θ = {W, b, c},使得模型定义的分布P(v)尽可能拟合训练数据的分布P_data(v)。这通过最大化训练数据的对数似然来实现。
-
最大似然梯度:
- 对数似然关于参数的梯度推导后,通常包含两项:
∂ log P(v) / ∂θ = E_{data} [∂(-E(v, h))/∂θ] - E_{model} [∂(-E(v, h))/∂θ] - 正相(Positive Phase):
E_{data} [...]是在给定训练数据v时,关于条件分布P(h|v)的期望。这一项推动参数使得模型能够“重建”出与数据匹配的隐藏表示。 - 负相(Negative Phase):
E_{model} [...]是关于模型定义的联合分布P(v,h)的期望。这一项推动模型生成的样本(“幻想”样本)概率变小,是计算上极其困难的一项,因为涉及到对整个状态空间的求和(配分函数Z的计算)。
- 对数似然关于参数的梯度推导后,通常包含两项:
-
对比散度近似:
- 对比散度(CD-k)是计算负相梯度的一种高效近似方法。它不使用从平稳模型分布开始的马尔可夫链,而是从数据样本本身开始运行短链吉布斯采样。
- CD-1算法步骤(最常用):
a. 初始化:取一个训练样本v^0。
b. 正相采样:根据P(h|v^0)采样得到h^0。
c. 负相重构:根据P(v|h^0)采样得到v^1(“重建”的可见层)。
d. 负相再采样:根据P(h|v^1)采样得到h^1。 - 梯度近似:用
(v^0, h^0)计算正相统计量,用(v^1, h^1)计算负相统计量。梯度更新近似为:
ΔW ∝ v^0 (h^0)^T - v^1 (h^1)^T
Δb ∝ v^0 - v^1
Δc ∝ h^0 - h^1 - 实践中,为了降低方差,通常使用概率值(
P(h|v)和P(v|h))代替采样值来计算这些统计量。
第三步:构建与训练深度信念网络(DBN)
-
整体架构:
- DBN是由多个RBM堆叠而成的深度网络。最底层的RBM的可见层接收原始数据。其隐藏层作为上一层RBM的“可见层”,以此类推。
- 顶部两层通常保持为RBM结构,形成一个“联合记忆”,而下面的层则作为确定性的特征提取器。
-
逐层贪心无监督预训练:
- 这是DBN训练的关键创新。由于直接训练整个深度网络非常困难,DBN采用分层、逐层的方式来初始化权重。
- 训练第一层RBM:使用原始数据
v作为输入,用CD算法训练第一个RBM,得到参数{W1, b1, c1}。 - 提取特征并训练下一层:固定第一层RBM的参数。将训练数据输入第一层RBM,用
P(h1|v)的期望值(或采样值)作为“新数据”,用于训练第二个RBM(其可见层对应h1)。 - 重复此过程:依次向上训练每一层的RBM。每一层都在学习其输入(即前一层学到的特征)的更高阶、更抽象的特征表示。
- 预训练的意义:通过这种方式,DBN的权重被初始到一个参数空间中较好的位置(接近数据流形的某个局部最优),这为后续的监督微调提供了一个优秀的起点,有效缓解了随机初始化带来的梯度问题。
-
监督微调:
- 在无监督预训练完成后,我们在DBN的顶层添加一个或多个额外的层(例如softmax分类层),构成一个深层前馈神经网络(通常被称为深度神经网络,DNN)。
- 此时,整个网络的初始权重就是预训练得到的RBM权重。
- 我们使用带标签的数据,通过标准的反向传播算法(Backpropagation)对整个网络进行端到端的微调,以优化特定的任务目标(如分类准确率)。
- 微调过程会轻微调整预训练的权重,使其更好地适应目标任务。由于初始点好,BP算法能更有效地工作,避免了陷入很差的局部最优。
总结
深度信念网络(DBN)通过堆叠受限玻尔兹曼机(RBM)构建深度架构。其核心训练分为两个阶段:首先,利用对比散度(CD)算法,以逐层贪心的无监督方式对每个RBM进行预训练,从而为深层网络学习到良好的分层特征初始表示;然后,在预训练好的网络顶部添加任务层,使用有标签数据通过反向传播进行全局微调。DBN及其预训练思想,是深度学习在21世纪初复兴的关键技术之一,它证明了深度模型可以有效训练,并为后来的各种深度生成模型和自编码器变体奠定了基础。