Deep Belief Networks (DBN) 的原理、逐层贪心预训练与对比散度算法
字数 2921 2025-12-09 23:33:32

Deep Belief Networks (DBN) 的原理、逐层贪心预训练与对比散度算法

题目描述

深度信念网络(Deep Belief Network, DBN)是一种经典的深度生成模型,由杰弗里·辛顿等人于2006年提出。它的核心思想是构建一个多层神经网络,其中每一层都是一个受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)。DBN之所以在深度学习发展初期具有重要意义,是因为它通过一种逐层贪心无监督预训练的方法,有效缓解了深度网络训练中棘手的梯度消失/爆炸问题,从而使得训练深层网络成为可能。本题目将深入解析DBN的整体架构、其核心组件RBM的工作原理、关键的对比散度(Contrastive Divergence, CD)训练算法,以及DBN的整个训练(预训练+微调)流程。

解题过程

我将分步讲解DBN的原理,从基本构建模块开始,逐步深入到整体的训练机制。

第一步:理解基本构建模块——受限玻尔兹曼机(RBM)

  1. 模型结构

    • RBM是一种两层结构的生成式随机神经网络,包含一个可见层(Visible Layer)和一个隐藏层(Hidden Layer)。
    • 可见层(v):通常对应输入数据(如图像像素、词向量)。
    • 隐藏层(h):用于学习数据的高层特征或表示。
    • 连接特性:层内(可见层内或隐藏层内)的单元之间没有连接。所有连接都存在于可见层单元和隐藏层单元之间,形成一个完全二分图。“受限”一词即指这种层内无连接的特性,这极大地简化了计算。
  2. 能量函数与概率分布

    • 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。
  3. 条件独立性

    • 由于层内无连接,给定可见层状态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)。这通过最大化训练数据的对数似然来实现。

  1. 最大似然梯度

    • 对数似然关于参数的梯度推导后,通常包含两项:
      ∂ 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的计算)。
  2. 对比散度近似

    • 对比散度(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)

  1. 整体架构

    • DBN是由多个RBM堆叠而成的深度网络。最底层的RBM的可见层接收原始数据。其隐藏层作为上一层RBM的“可见层”,以此类推。
    • 顶部两层通常保持为RBM结构,形成一个“联合记忆”,而下面的层则作为确定性的特征提取器。
  2. 逐层贪心无监督预训练

    • 这是DBN训练的关键创新。由于直接训练整个深度网络非常困难,DBN采用分层、逐层的方式来初始化权重。
    • 训练第一层RBM:使用原始数据v作为输入,用CD算法训练第一个RBM,得到参数{W1, b1, c1}
    • 提取特征并训练下一层:固定第一层RBM的参数。将训练数据输入第一层RBM,用P(h1|v)的期望值(或采样值)作为“新数据”,用于训练第二个RBM(其可见层对应h1)。
    • 重复此过程:依次向上训练每一层的RBM。每一层都在学习其输入(即前一层学到的特征)的更高阶、更抽象的特征表示。
    • 预训练的意义:通过这种方式,DBN的权重被初始到一个参数空间中较好的位置(接近数据流形的某个局部最优),这为后续的监督微调提供了一个优秀的起点,有效缓解了随机初始化带来的梯度问题。
  3. 监督微调

    • 在无监督预训练完成后,我们在DBN的顶层添加一个或多个额外的层(例如softmax分类层),构成一个深层前馈神经网络(通常被称为深度神经网络,DNN)。
    • 此时,整个网络的初始权重就是预训练得到的RBM权重。
    • 我们使用带标签的数据,通过标准的反向传播算法(Backpropagation)对整个网络进行端到端的微调,以优化特定的任务目标(如分类准确率)。
    • 微调过程会轻微调整预训练的权重,使其更好地适应目标任务。由于初始点好,BP算法能更有效地工作,避免了陷入很差的局部最优。

总结
深度信念网络(DBN)通过堆叠受限玻尔兹曼机(RBM)构建深度架构。其核心训练分为两个阶段:首先,利用对比散度(CD)算法,以逐层贪心的无监督方式对每个RBM进行预训练,从而为深层网络学习到良好的分层特征初始表示;然后,在预训练好的网络顶部添加任务层,使用有标签数据通过反向传播进行全局微调。DBN及其预训练思想,是深度学习在21世纪初复兴的关键技术之一,它证明了深度模型可以有效训练,并为后来的各种深度生成模型和自编码器变体奠定了基础。

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。 条件独立性 : 由于层内无连接,给定可见层状态 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世纪初复兴的关键技术之一,它证明了深度模型可以有效训练,并为后来的各种深度生成模型和自编码器变体奠定了基础。