受限玻尔兹曼机(RBM)的原理与训练过程
题目描述
受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)是一种基于能量模型的生成式神经网络,由可见层和隐藏层构成,层内无连接,层间全连接。核心问题包括:
- 能量函数:如何定义可见单元和隐藏单元的联合能量?
- 概率分布:如何通过能量函数推导可见层和隐藏层的条件概率?
- 训练目标:如何通过对比散度(Contrastive Divergence, CD)算法最大化训练数据的似然函数?
解题过程
1. RBM的基本结构
- 可见层(Visible Layer):由 \(v = (v_1, v_2, ..., v_m)\) 表示,对应输入数据(如二值化像素)。
- 隐藏层(Hidden Layer):由 \(h = (h_1, h_2, ..., h_n)\) 表示,用于提取特征。
- 权重与偏置:可见层与隐藏层之间的权重矩阵 \(W \in \mathbb{R}^{m \times n}\),可见层偏置 \(b \in \mathbb{R}^m\),隐藏层偏置 \(c \in \mathbb{R}^n\)。
2. 能量函数与概率分布
- 能量函数定义:
\[ E(v, h) = -b^T v - c^T h - v^T W h \]
能量越低,对应配置 \((v, h)\) 的概率越高。
- 联合概率分布:
\[ P(v, h) = \frac{1}{Z} e^{-E(v, h)}, \quad Z = \sum_{v, h} e^{-E(v, h)} \]
其中 \(Z\) 是归一化常数(配分函数)。
- 条件概率(层内无连接,条件概率可分解):
- 给定可见层时,隐藏单元条件独立:
\[ P(h_j=1 \mid v) = \sigma(c_j + \sum_i v_i W_{ij}) \]
- 给定隐藏层时,可见单元条件独立:
\[ P(v_i=1 \mid h) = \sigma(b_i + \sum_j h_j W_{ij}) \]
其中 \(\sigma(x) = 1/(1+e^{-x})\) 是Sigmoid函数。
3. 训练目标与梯度推导
- 目标函数:最大化训练数据的对数似然 \(\mathcal{L}(\theta) = \sum_{v \in \text{data}} \log P(v)\)。
- 梯度计算:
\[ \frac{\partial \log P(v)}{\partial W_{ij}} = \langle v_i h_j \rangle_{\text{data}} - \langle v_i h_j \rangle_{\text{model}} \]
其中:
- \(\langle \cdot \rangle_{\text{data}}\) 是数据分布下 \(v_i h_j\) 的期望;
- \(\langle \cdot \rangle_{\text{model}}\) 是模型分布下 \(v_i h_j\) 的期望(计算困难)。
4. 对比散度(CD)算法
- 核心思想:用吉布斯采样(Gibbs Sampling)近似模型期望,但仅运行 \(k\) 步(通常 \(k=1\))以减少计算量。
- 步骤:
- 正向传播:输入训练样本 \(v^{(0)}\),计算 \(P(h \mid v^{(0)})\) 并采样得到 \(h^{(0)}\)。
- 反向重构:根据 \(h^{(0)}\) 计算 \(P(v \mid h^{(0)})\) 并采样得到 \(v^{(1)}\)。
- 再次正向传播:根据 \(v^{(1)}\) 计算 \(P(h \mid v^{(1)})\) 得到 \(h^{(1)}\)。
- 权重更新:
\[ \Delta W_{ij} = \eta \left( v_i^{(0)} h_j^{(0)} - v_i^{(1)} h_j^{(1)} \right) \]
偏置更新类似:
\[ \Delta b_i = \eta (v_i^{(0)} - v_i^{(1)}), \quad \Delta c_j = \eta (h_j^{(0)} - h_j^{(1)}) \]
5. 算法特性与扩展
- 高效性:CD-\(k\) 通过少量采样逼近梯度,避免直接计算配分函数 \(Z\)。
- 应用:RBM是深度信念网络(DBN)的基础组件,可用于特征学习、协同过滤等。
- 变体:连续值数据可使用高斯伯努利RBM(可见层为高斯分布)。
总结:RBM通过能量模型定义概率分布,利用条件独立性简化计算,并通过CD算法高效训练,是生成模型的重要基础。