深度信念网络(Deep Belief Network, DBN)的无监督逐层贪心预训练过程与有监督微调过程
字数 3323 2025-12-16 03:01:56

深度信念网络(Deep Belief Network, DBN)的无监督逐层贪心预训练过程与有监督微调过程


1. 题目描述

深度信念网络是一种由多个受限玻尔兹曼机(RBM)堆叠而成的深层生成模型。DBN的核心训练挑战在于如何高效地学习多层非线性的数据表示。本题目要求详细解释DBN的无监督逐层贪心预训练(Greedy Layer-wise Unsupervised Pre-training) 与后续的有监督微调(Supervised Fine-tuning) 两个关键过程。我们将从受限玻尔兹曼机(RBM)的基本原理出发,逐步说明如何通过逐层训练RBM来初始化DBN的权重,以及如何利用反向传播算法进行微调以完成分类或回归任务。


2. 背景知识:受限玻尔兹曼机(RBM)

在深入DBN之前,必须理解其基本构建模块——RBM。

  • 结构:RBM是一种两层神经网络,包含一个可见层(visible layer, v)和一个隐藏层(hidden layer, h)。层内神经元之间没有连接,层间全连接。可见层用于接收输入数据,隐藏层用于学习数据的特征表示。
  • 能量函数:对于一个给定的可见向量 v 和隐藏向量 h,其能量函数定义为:
    \(E(\mathbf{v}, \mathbf{h}) = -\mathbf{b}^T \mathbf{v} - \mathbf{c}^T \mathbf{h} - \mathbf{v}^T \mathbf{W} \mathbf{h}\)
    其中,W 是可见层与隐藏层之间的权重矩阵,bc 分别是可见层和隐藏层的偏置向量。
  • 联合概率分布:基于能量函数,模型定义的概率分布为:
    \(P(\mathbf{v}, \mathbf{h}) = \frac{1}{Z} e^{-E(\mathbf{v}, \mathbf{h})}\)
    \(Z\) 是归一化常数(配分函数)。
  • 条件概率与采样:由于层内无连接,给定一层的状态时,另一层的激活是条件独立的。激活函数通常为Sigmoid:
    \(P(h_j=1 | \mathbf{v}) = \sigma(c_j + \sum_i v_i W_{ij})\)
    \(P(v_i=1 | \mathbf{h}) = \sigma(b_i + \sum_j h_j W_{ij})\)
    这使得我们可以通过对比散度(CD)算法(一种近似的马尔可夫链蒙特卡洛方法)来训练RBM,最大化训练数据的对数似然。

3. DBN的无监督逐层贪心预训练过程

这一步的目标是逐层初始化DBN的权重,以捕获数据中层次化的特征结构,为后续的有监督任务提供一个良好的初始点。

步骤1:构建DBN结构

  • 假设我们要构建一个具有L层隐藏层的DBN。输入层(可见层)和L个隐藏层依次堆叠。每一对相邻的层(如输入层-第一隐藏层、第一隐藏层-第二隐藏层等)都构成一个RBM。

步骤2:训练第一层RBM

  • 将原始训练数据输入到第一个RBM的可见层。
  • 使用对比散度(CD-1)算法训练这个RBM。
    • 正向传播:根据可见层数据 v,计算隐藏层激活概率 \(P(\mathbf{h}|\mathbf{v})\)
    • 反向重构:根据采样得到的隐藏层状态 h,重构可见层 \(P(\mathbf{v}|\mathbf{h})\)
    • 权重更新:基于原始数据和重构数据,通过计算梯度来更新权重矩阵 W 和偏置 bc
  • 训练结束后,固定第一层RBM的权重 \(\{ \mathbf{W}^{(1)}, \mathbf{b}^{(1)}, \mathbf{c}^{(1)} \}\)。此时,第一层RBM已经学习了输入数据的一阶特征表示。

步骤3:提取特征并训练下一层RBM

  • 将原始数据 v 输入已训练好的第一层RBM,计算其隐藏层的激活概率(而非采样得到的0/1状态)作为新的“数据”。
  • 将这些激活概率(可以视为连续值,位于[0,1]区间)作为第二个RBM的可见层输入。
  • 现在,第二个RBM的可见层不再是二值数据,而是连续概率值。这时我们需要使用高斯-伯努利RBM(如果激活概率被视为连续值)或者继续使用伯努利-伯努利RBM(但输入被视作概率)。通常,我们将其视为伯努利RBM的可见层输入,但使用概率值直接计算。
  • 使用同样的CD算法训练第二个RBM。训练完成后,固定其权重 \(\{ \mathbf{W}^{(2)}, \mathbf{b}^{(2)}, \mathbf{c}^{(2)} \}\)

步骤4:重复步骤3直至顶层

  • 逐层向上,用前一层的隐藏层激活概率作为后一层的输入,依次训练所有L个RBM。
  • 这样,我们完成了一次自底向上的、无监督的、逐层贪心的预训练。贪心是指每一层都独立地以最大化自身对数似然为目标进行训练,而不考虑整个网络的目标。

核心思想

  • 每一层RBM都试图学习其输入数据(即前一层的特征表示)的概率分布。
  • 通过这种方式,网络从底层到高层逐渐学习到从简单到复杂、从局部到全局的特征。例如,在图像数据中,底层可能学习到边缘,中层学习到形状部件,高层学习到整体对象。
  • 这种预训练有效缓解了深度网络直接进行有监督训练时可能遇到的梯度消失和陷入局部最优的问题。

4. DBN的有监督微调过程

预训练完成后,我们得到了一组初始化好的权重。接下来,我们需要针对具体的分类或回归任务,对整个网络进行有监督的微调。

步骤1:添加输出层

  • 在DBN的顶层(第L层隐藏层)之上,添加一个输出层。输出层的神经元数量由任务决定(例如,10个类别对应10个神经元)。
  • 整个网络现在变成一个深度神经网络(DNN)。我们为这个网络定义一个有监督的损失函数,例如,对于分类任务使用交叉熵损失。

步骤2:初始化权重

  • 将预训练得到的各层RBM的权重和隐藏层偏置作为DNN对应层的初始权重和偏置。
  • 注意:预训练时每个RBM都有自己的可见层偏置 b 和隐藏层偏置 c。在堆叠成DNN时:
    • 第l层RBM的权重矩阵 W^{(l)} 成为DNN中连接第l-1层和第l层的权重。
    • 第l层RBM的隐藏层偏置 c^{(l)} 成为DNN第l层的偏置。
    • 第l层RBM的可见层偏置 b^{(l)} 在DNN中被丢弃(因为DNN中第l-1层的输出已经包含了其自身激活函数的处理)。
  • 输出层的权重和偏置随机初始化。

步骤3:执行有监督训练(微调)

  • 使用反向传播算法(通常结合梯度下降或其变种,如随机梯度下降SGD)在整个网络上进行训练。
  • 输入带有标签的训练数据,执行前向传播计算网络输出和损失。
  • 执行反向传播,计算损失关于所有权重和偏置的梯度。
  • 使用优化算法更新包括预训练层和输出层在内的所有参数。

核心思想

  • 预训练提供了一个接近数据真实分布的初始参数空间。微调过程在这个好的起点上,利用任务标签信息,对特征表示进行小幅调整,使其更适合当前的有监督任务。
  • 微调是全局优化的,它优化的是整个网络的最终目标函数,而不仅仅是各层的无监督目标。

5. 总结与意义

  • 逐层贪心预训练:通过依次最大化每一层RBM的对数似然,以无监督的方式为深度网络提供了一个优秀的、具有良好层次化特征的初始参数。这解决了深度网络训练的两个主要难题:1) 梯度消失,因为RBM训练不依赖于深度反向传播;2) 缓解过拟合,因为无监督学习利用了数据本身的结构信息,相当于一种强大的正则化。
  • 有监督微调:在预训练的基础上,利用少量的标签数据进行快速的梯度更新,使网络适应具体的判别任务。这个过程通常比随机初始化后进行有监督训练收敛更快,效果更好。
  • 整体流程:数据 → 训练第一层RBM → 提取特征 → 训练第二层RBM → … → 堆叠所有层并添加输出层 → 反向传播微调整个网络。

这个“预训练+微调”的范式是深度学习发展早期(尤其是在数据量有限时)训练深度模型的关键突破之一,也为后续的深度自编码器、深度玻尔兹曼机等模型奠定了基础。

深度信念网络(Deep Belief Network, DBN)的无监督逐层贪心预训练过程与有监督微调过程 1. 题目描述 深度信念网络是一种由多个受限玻尔兹曼机(RBM)堆叠而成的深层生成模型。DBN的核心训练挑战在于如何高效地学习多层非线性的数据表示。本题目要求详细解释DBN的 无监督逐层贪心预训练(Greedy Layer-wise Unsupervised Pre-training) 与后续的 有监督微调(Supervised Fine-tuning) 两个关键过程。我们将从受限玻尔兹曼机(RBM)的基本原理出发,逐步说明如何通过逐层训练RBM来初始化DBN的权重,以及如何利用反向传播算法进行微调以完成分类或回归任务。 2. 背景知识:受限玻尔兹曼机(RBM) 在深入DBN之前,必须理解其基本构建模块——RBM。 结构 :RBM是一种两层神经网络,包含一个可见层(visible layer, v )和一个隐藏层(hidden layer, h )。层内神经元之间没有连接,层间全连接。可见层用于接收输入数据,隐藏层用于学习数据的特征表示。 能量函数 :对于一个给定的可见向量 v 和隐藏向量 h ,其能量函数定义为: \( E(\mathbf{v}, \mathbf{h}) = -\mathbf{b}^T \mathbf{v} - \mathbf{c}^T \mathbf{h} - \mathbf{v}^T \mathbf{W} \mathbf{h} \) 其中, W 是可见层与隐藏层之间的权重矩阵, b 和 c 分别是可见层和隐藏层的偏置向量。 联合概率分布 :基于能量函数,模型定义的概率分布为: \( P(\mathbf{v}, \mathbf{h}) = \frac{1}{Z} e^{-E(\mathbf{v}, \mathbf{h})} \) \( Z \) 是归一化常数(配分函数)。 条件概率与采样 :由于层内无连接,给定一层的状态时,另一层的激活是条件独立的。激活函数通常为Sigmoid: \( P(h_ j=1 | \mathbf{v}) = \sigma(c_ j + \sum_ i v_ i W_ {ij}) \) \( P(v_ i=1 | \mathbf{h}) = \sigma(b_ i + \sum_ j h_ j W_ {ij}) \) 这使得我们可以通过 对比散度(CD)算法 (一种近似的马尔可夫链蒙特卡洛方法)来训练RBM,最大化训练数据的对数似然。 3. DBN的无监督逐层贪心预训练过程 这一步的目标是逐层初始化DBN的权重,以捕获数据中层次化的特征结构,为后续的有监督任务提供一个良好的初始点。 步骤1:构建DBN结构 假设我们要构建一个具有L层隐藏层的DBN。输入层(可见层)和L个隐藏层依次堆叠。每一对相邻的层(如输入层-第一隐藏层、第一隐藏层-第二隐藏层等)都构成一个RBM。 步骤2:训练第一层RBM 将原始训练数据输入到第一个RBM的可见层。 使用 对比散度(CD-1)算法 训练这个RBM。 正向传播 :根据可见层数据 v ,计算隐藏层激活概率 \( P(\mathbf{h}|\mathbf{v}) \)。 反向重构 :根据采样得到的隐藏层状态 h ,重构可见层 \( P(\mathbf{v}|\mathbf{h}) \)。 权重更新 :基于原始数据和重构数据,通过计算梯度来更新权重矩阵 W 和偏置 b 、 c 。 训练结束后,固定第一层RBM的权重 \(\{ \mathbf{W}^{(1)}, \mathbf{b}^{(1)}, \mathbf{c}^{(1)} \}\)。此时,第一层RBM已经学习了输入数据的一阶特征表示。 步骤3:提取特征并训练下一层RBM 将原始数据 v 输入已训练好的第一层RBM,计算其隐藏层的 激活概率 (而非采样得到的0/1状态)作为新的“数据”。 将这些激活概率(可以视为连续值,位于[ 0,1 ]区间)作为第二个RBM的可见层输入。 现在,第二个RBM的可见层不再是二值数据,而是连续概率值。这时我们需要使用 高斯-伯努利RBM (如果激活概率被视为连续值)或者继续使用伯努利-伯努利RBM(但输入被视作概率)。通常,我们将其视为伯努利RBM的可见层输入,但使用概率值直接计算。 使用同样的CD算法训练第二个RBM。训练完成后,固定其权重 \(\{ \mathbf{W}^{(2)}, \mathbf{b}^{(2)}, \mathbf{c}^{(2)} \}\)。 步骤4:重复步骤3直至顶层 逐层向上,用前一层的隐藏层激活概率作为后一层的输入,依次训练所有L个RBM。 这样,我们完成了一次 自底向上的、无监督的、逐层贪心 的预训练。贪心是指每一层都独立地以最大化自身对数似然为目标进行训练,而不考虑整个网络的目标。 核心思想 : 每一层RBM都试图学习其输入数据(即前一层的特征表示)的概率分布。 通过这种方式,网络从底层到高层逐渐学习到从简单到复杂、从局部到全局的特征。例如,在图像数据中,底层可能学习到边缘,中层学习到形状部件,高层学习到整体对象。 这种预训练有效缓解了深度网络直接进行有监督训练时可能遇到的梯度消失和陷入局部最优的问题。 4. DBN的有监督微调过程 预训练完成后,我们得到了一组初始化好的权重。接下来,我们需要针对具体的分类或回归任务,对整个网络进行有监督的微调。 步骤1:添加输出层 在DBN的顶层(第L层隐藏层)之上,添加一个 输出层 。输出层的神经元数量由任务决定(例如,10个类别对应10个神经元)。 整个网络现在变成一个深度神经网络(DNN)。我们为这个网络定义一个有监督的损失函数,例如,对于分类任务使用交叉熵损失。 步骤2:初始化权重 将预训练得到的各层RBM的权重和隐藏层偏置作为DNN对应层的初始权重和偏置。 注意:预训练时每个RBM都有自己的可见层偏置 b 和隐藏层偏置 c 。在堆叠成DNN时: 第l层RBM的权重矩阵 W^{(l)} 成为DNN中连接第l-1层和第l层的权重。 第l层RBM的隐藏层偏置 c^{(l)} 成为DNN第l层的偏置。 第l层RBM的可见层偏置 b^{(l)} 在DNN中被丢弃(因为DNN中第l-1层的输出已经包含了其自身激活函数的处理)。 输出层的权重和偏置随机初始化。 步骤3:执行有监督训练(微调) 使用 反向传播算法 (通常结合梯度下降或其变种,如随机梯度下降SGD)在整个网络上进行训练。 输入带有标签的训练数据,执行前向传播计算网络输出和损失。 执行反向传播,计算损失关于所有权重和偏置的梯度。 使用优化算法更新包括预训练层和输出层在内的所有参数。 核心思想 : 预训练提供了一个接近数据真实分布的初始参数空间。微调过程在这个好的起点上,利用任务标签信息,对特征表示进行小幅调整,使其更适合当前的有监督任务。 微调是全局优化的,它优化的是整个网络的最终目标函数,而不仅仅是各层的无监督目标。 5. 总结与意义 逐层贪心预训练 :通过依次最大化每一层RBM的对数似然,以无监督的方式为深度网络提供了一个优秀的、具有良好层次化特征的初始参数。这解决了深度网络训练的两个主要难题:1) 梯度消失,因为RBM训练不依赖于深度反向传播;2) 缓解过拟合,因为无监督学习利用了数据本身的结构信息,相当于一种强大的正则化。 有监督微调 :在预训练的基础上,利用少量的标签数据进行快速的梯度更新,使网络适应具体的判别任务。这个过程通常比随机初始化后进行有监督训练收敛更快,效果更好。 整体流程 :数据 → 训练第一层RBM → 提取特征 → 训练第二层RBM → … → 堆叠所有层并添加输出层 → 反向传播微调整个网络。 这个“预训练+微调”的范式是深度学习发展早期(尤其是在数据量有限时)训练深度模型的关键突破之一,也为后续的深度自编码器、深度玻尔兹曼机等模型奠定了基础。