深度玻尔兹曼机(Deep Boltzmann Machine, DBM)的原理与训练过程
题目描述
深度玻尔兹曼机(Deep Boltzmann Machine, DBM)是一种基于能量模型的深度无监督学习算法。它由多层二值随机变量(可见层、隐藏层)组成,层内无连接,层间全连接,形成一个无向图模型。DBM的核心目标是通过学习数据的联合概率分布来捕获数据的高阶抽象特征,广泛应用于特征学习、降维和协同过滤等任务。本题将详细讲解DBM的模型结构、能量函数定义、概率分布推导,以及其训练过程中的关键步骤(如对比散度、随机近似等),帮助你深入理解这一经典深度生成模型。
解题过程
1. DBM的基本结构
DBM是一个多层随机变量组成的无向概率图模型,通常包含:
- 可见层(v):表示观测数据(如图像像素、用户评分等),节点数为 \(D\)。
- 隐藏层(h^{(1)}, h^{(2)}, ..., h^{(L)}):表示数据的潜在特征,层数 \(L \geq 2\),每层节点数可自定义。
- 连接规则:层内节点无连接,相邻层节点全连接(例如,可见层与第一隐藏层全连接,第一隐藏层与第二隐藏层全连接)。
示例:一个两层隐藏的DBM结构如下:
可见层 v -- 隐藏层 h1 -- 隐藏层 h2
其中,\(v \in \{0,1\}^D\),\(h^{(1)} \in \{0,1\}^{M_1}\),\(h^{(2)} \in \{0,1\}^{M_2}\),所有变量均为二值随机变量。
2. 能量函数与联合概率分布
DBM基于能量模型,其联合概率分布由能量函数 \(E(v, h^{(1)}, h^{(2)})\) 定义:
\[P(v, h^{(1)}, h^{(2)}) = \frac{1}{Z} \exp(-E(v, h^{(1)}, h^{(2)})) \]
其中:
- 能量函数:对于上述两层隐藏的DBM,能量函数为:
\[ E(v, h^{(1)}, h^{(2)}) = -v^T W^{(1)} h^{(1)} - h^{(1)T} W^{(2)} h^{(2)} - a^T v - b^{(1)T} h^{(1)} - b^{(2)T} h^{(2)} \]
其中:
- \(W^{(1)}\):可见层到第一隐藏层的权重矩阵(维度 \(D \times M_1\))。
- \(W^{(2)}\):第一隐藏层到第二隐藏层的权重矩阵(维度 \(M_1 \times M_2\))。
- \(a, b^{(1)}, b^{(2)}\):偏置向量。
- 归一化常数 \(Z\):也称为配分函数,\(Z = \sum_{v, h^{(1)}, h^{(2)}} \exp(-E(v, h^{(1)}, h^{(2)}))\),计算复杂度随变量数指数增长,难以直接求解。
直观理解:能量函数衡量模型状态的“混乱度”,能量越低的状态(如数据与隐藏特征匹配良好)概率越高。训练目标是调整参数 \(W, b\),使得真实数据的能量尽可能低。
3. 条件概率与采样
由于层内无连接,DBM的条件概率可分解为逐层二值逻辑回归形式,便于采样:
- 给定可见层和相邻隐藏层时,中间隐藏层的条件概率:
\[ P(h_j^{(1)}=1 \mid v, h^{(2)}) = \sigma\left( \sum_i W_{ij}^{(1)} v_i + \sum_k W_{jk}^{(2)} h_k^{(2)} + b_j^{(1)} \right) \]
其中 \(\sigma(x) = 1/(1+e^{-x})\) 是sigmoid函数。
- 其他条件概率类似:
\[ P(v_i=1 \mid h^{(1)}) = \sigma\left( \sum_j W_{ij}^{(1)} h_j^{(1)} + a_i \right) \]
\[ P(h_k^{(2)}=1 \mid h^{(1)}) = \sigma\left( \sum_j W_{jk}^{(2)} h_j^{(1)} + b_k^{(2)} \right) \]
关键点:这些条件概率允许我们使用吉布斯采样(Gibbs sampling)从模型中生成样本:交替更新每一层变量,逐步逼近联合分布。
4. 训练目标:最大化对数似然
训练DBM即最大化训练数据 \(\{v^{(1)}, ..., v^{(N)}\}\) 的对数似然:
\[\mathcal{L}(\theta) = \sum_{n=1}^N \log P(v^{(n)}; \theta) \]
其中 \(\theta = \{W^{(1)}, W^{(2)}, a, b^{(1)}, b^{(2)}\}\),边缘概率 \(P(v) = \sum_{h^{(1)}, h^{(2)}} P(v, h^{(1)}, h^{(2)})\)。
对数似然的梯度可通过求导得到(以权重 \(W^{(1)}\) 为例):
\[\frac{\partial \log P(v)}{\partial W_{ij}^{(1)}} = \mathbb{E}_{P(h^{(1)}, h^{(2)} \mid v)}[v_i h_j^{(1)}] - \mathbb{E}_{P(v, h^{(1)}, h^{(2)})}[v_i h_j^{(1)}] \]
其中:
- 第一项:数据依赖期望:在给定可见层 \(v\) 时,隐藏层后验概率下的期望。可通过采样近似(如运行几次吉布斯采样)。
- 第二项:模型期望:在所有可能模型状态下的期望,计算极其困难(需要遍历所有 \(v, h^{(1)}, h^{(2)}\) 组合)。
5. 训练算法:对比散度(Contrastive Divergence, CD)
直接计算模型期望不可行,DBM采用对比散度(CD-k) 近似梯度:
- 初始化:从训练数据中取一个样本 \(v^{(0)}\)。
- 正向传播(采样隐藏层):利用条件概率 \(P(h^{(1)} \mid v^{(0)})\) 和 \(P(h^{(2)} \mid h^{(1)})\) 采样得到 \(h^{(1)}, h^{(2)}\)。
- 反向传播(重构可见层):从采样得到的隐藏层出发,利用条件概率 \(P(v \mid h^{(1)})\) 采样得到重构的可见层 \(v^{(1)}\)。
- 重复k步吉布斯采样:上述步骤交替进行k次(通常k=1),得到样本 \(v^{(k)}, h^{(1)(k)}, h^{(2)(k)}\)。
- 梯度近似:
\[ \frac{\partial \log P(v)}{\partial W_{ij}^{(1)}} \approx v_i^{(0)} h_j^{(1)(0)} - v_i^{(k)} h_j^{(1)(k)} \]
其中 \(h^{(1)(0)}\) 是第一次正向传播的采样结果。
6. 参数更新:使用随机梯度上升法更新权重和偏置。
直观解释:CD-k通过比较数据点 \(v^{(0)}\) 和模型经过k步采样生成的“幻想粒子” \(v^{(k)}\) 来更新参数,使模型更倾向于真实数据。
6. 训练技巧与扩展
- 逐层预训练:深层DBM训练不稳定,常采用逐层贪心预训练:
- 先训练一个受限玻尔兹曼机(RBM,可见层-隐藏层1),固定其权重。
- 将RBM的隐藏层作为“新可见层”,再训练一个RBM(隐藏层1-隐藏层2)。
- 堆叠后微调整个DBM。
- 随机最大似然(Persistent CD):使用持续链(persistent chains)保留采样状态,加速模型期望的近似。
- 变分推断:对于连续数据或复杂后验,可用变分分布近似 \(P(h \mid v)\),再优化变分下界。
7. 应用与局限性
- 应用:特征学习(提取高阶特征)、协同过滤(处理用户-物品矩阵)、图像生成(作为先验模型)。
- 局限性:
- 训练计算量大,采样效率低。
- 难以处理连续数据(需扩展为高斯单元)。
- 随着深度增加,梯度估计方差变大。
- 逐渐被变分自编码器(VAE)、生成对抗网络(GAN)等可扩展性更好的模型取代。
总结
深度玻尔兹曼机是一种经典的深度无向生成模型,通过能量函数定义概率分布,利用对比散度进行近似训练。其核心在于多层隐藏结构的特征抽象能力,但训练复杂度高。理解DBM有助于掌握能量模型的基本思想,并为学习现代深度生成模型(如扩散模型)奠定基础。