玻尔兹曼机(Boltzmann Machine)的能量模型与训练过程
字数 2684 2025-11-10 23:40:45

玻尔兹曼机(Boltzmann Machine)的能量模型与训练过程

题目描述
玻尔兹曼机(BM)是一种基于能量的随机神经网络,由可见单元和隐藏单元构成,所有单元均为二值变量(0或1)。其核心思想是通过能量函数定义联合概率分布,并利用梯度下降优化模型参数(权重和偏置),使模型能够学习输入数据的概率分布。本题要求理解BM的能量模型、概率计算方式,以及基于对比散度(Contrastive Divergence, CD)的近似训练过程。


1. 能量函数与概率分布

BM的能量函数定义为:

\[E(\mathbf{v}, \mathbf{h}) = -\sum_{i} b_i v_i - \sum_{j} c_j h_j - \sum_{i,j} v_i w_{ij} h_j - \sum_{i

其中:

  • \(\mathbf{v}\) 为可见单元向量,\(\mathbf{h}\) 为隐藏单元向量;
  • \(b_i, c_j\) 是可见单元和隐藏单元的偏置;
  • \(w_{ij}\) 是可见单元 \(v_i\) 与隐藏单元 \(h_j\) 之间的权重;
  • 最后两项为可见单元之间、隐藏单元之间的权重(全连接结构)。

联合概率分布由能量函数通过玻尔兹曼分布给出:

\[P(\mathbf{v}, \mathbf{h}) = \frac{1}{Z} e^{-E(\mathbf{v}, \mathbf{h})}, \quad Z = \sum_{\mathbf{v}, \mathbf{h}} e^{-E(\mathbf{v}, \mathbf{h})} \]

其中 \(Z\) 是配分函数(归一化常数)。


2. 条件概率与采样

由于BM的全连接结构,直接计算配分函数 \(Z\) 不可行(计算指数级复杂)。但条件概率可简化计算,因为给定其他单元时,单个单元的条件概率仅依赖于其邻居:

  • 隐藏单元 \(h_j\) 在给定可见单元时的条件概率:

\[P(h_j=1 \mid \mathbf{v}) = \sigma\left(c_j + \sum_{i} w_{ij} v_i\right) \]

  • 可见单元 \(v_i\) 在给定隐藏单元时的条件概率:

\[P(v_i=1 \mid \mathbf{h}) = \sigma\left(b_i + \sum_{j} w_{ij} h_j\right) \]

其中 \(\sigma(x) = 1/(1+e^{-x})\) 是sigmoid函数。这些条件概率可用于吉布斯采样(Gibbs Sampling)。


3. 训练目标与梯度计算

训练目标是最大化训练数据的对数似然函数:

\[\mathcal{L}(\theta) = \sum_{\mathbf{v} \in \text{data}} \log P(\mathbf{v}) = \sum_{\mathbf{v} \in \text{data}} \log \sum_{\mathbf{h}} P(\mathbf{v}, \mathbf{h}) \]

对权重 \(w_{ij}\) 求梯度可得:

\[\frac{\partial \log P(\mathbf{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\) 的期望(负相)。

正相计算简单:对每个训练样本 \(\mathbf{v}\),用条件概率 \(P(\mathbf{h} \mid \mathbf{v})\) 计算 \(\langle v_i h_j \rangle\)
负相需从模型 \(P(\mathbf{v}, \mathbf{h})\) 采样,但直接采样因 \(Z\) 难以计算而不可行。


4. 对比散度(CD-k)近似训练

CD-k 通过以下步骤近似负相采样:

  1. 输入训练样本 \(\mathbf{v}^{(0)}\),利用 \(P(\mathbf{h} \mid \mathbf{v}^{(0)})\) 采样得到 \(\mathbf{h}^{(0)}\)
  2. 执行 \(k\) 步吉布斯采样(通常 \(k=1\)):
    • \(\mathbf{h}^{(t)}\) 通过 \(P(\mathbf{v} \mid \mathbf{h}^{(t)})\) 采样得 \(\mathbf{v}^{(t+1)}\)
    • \(\mathbf{v}^{(t+1)}\) 通过 \(P(\mathbf{h} \mid \mathbf{v}^{(t+1)})\) 采样得 \(\mathbf{h}^{(t+1)}\)
  3. \(\mathbf{v}^{(k)}\)\(\mathbf{h}^{(k)}\) 计算负相期望 \(\langle v_i h_j \rangle_{\text{model}} \approx v_i^{(k)} h_j^{(k)}\)

权重更新规则为:

\[\Delta w_{ij} = \eta \left( \langle v_i h_j \rangle_{\text{data}} - v_i^{(k)} h_j^{(k)} \right) \]

偏置更新类似(例如 \(\Delta b_i = \eta (\langle v_i \rangle_{\text{data}} - v_i^{(k)})\))。


5. 关键点总结

  • BM通过能量函数建模概率分布,训练需处理配分函数难题;
  • 条件概率的局部性使吉布斯采样可行;
  • CD-k 用有限步采样近似负相,避免直接计算 \(Z\),是受限玻尔兹曼机(RBM)的典型训练方法(BM的特例,无层内连接)。

通过以上步骤,BM能够学习数据分布并用于生成或特征提取。

玻尔兹曼机(Boltzmann Machine)的能量模型与训练过程 题目描述 玻尔兹曼机(BM)是一种基于能量的随机神经网络,由可见单元和隐藏单元构成,所有单元均为二值变量(0或1)。其核心思想是通过能量函数定义联合概率分布,并利用梯度下降优化模型参数(权重和偏置),使模型能够学习输入数据的概率分布。本题要求理解BM的能量模型、概率计算方式,以及基于对比散度(Contrastive Divergence, CD)的近似训练过程。 1. 能量函数与概率分布 BM的能量函数定义为: \[ E(\mathbf{v}, \mathbf{h}) = -\sum_ {i} b_ i v_ i - \sum_ {j} c_ j h_ j - \sum_ {i,j} v_ i w_ {ij} h_ j - \sum_ {i<k} v_ i v_ k w_ {ik} - \sum_ {j<m} h_ j h_ m w_ {jm} \] 其中: \(\mathbf{v}\) 为可见单元向量,\(\mathbf{h}\) 为隐藏单元向量; \(b_ i, c_ j\) 是可见单元和隐藏单元的偏置; \(w_ {ij}\) 是可见单元 \(v_ i\) 与隐藏单元 \(h_ j\) 之间的权重; 最后两项为可见单元之间、隐藏单元之间的权重(全连接结构)。 联合概率分布由能量函数通过玻尔兹曼分布给出: \[ P(\mathbf{v}, \mathbf{h}) = \frac{1}{Z} e^{-E(\mathbf{v}, \mathbf{h})}, \quad Z = \sum_ {\mathbf{v}, \mathbf{h}} e^{-E(\mathbf{v}, \mathbf{h})} \] 其中 \(Z\) 是配分函数(归一化常数)。 2. 条件概率与采样 由于BM的全连接结构,直接计算配分函数 \(Z\) 不可行(计算指数级复杂)。但条件概率可简化计算,因为给定其他单元时,单个单元的条件概率仅依赖于其邻居: 隐藏单元 \(h_ j\) 在给定可见单元时的条件概率: \[ P(h_ j=1 \mid \mathbf{v}) = \sigma\left(c_ j + \sum_ {i} w_ {ij} v_ i\right) \] 可见单元 \(v_ i\) 在给定隐藏单元时的条件概率: \[ P(v_ i=1 \mid \mathbf{h}) = \sigma\left(b_ i + \sum_ {j} w_ {ij} h_ j\right) \] 其中 \(\sigma(x) = 1/(1+e^{-x})\) 是sigmoid函数。这些条件概率可用于吉布斯采样(Gibbs Sampling)。 3. 训练目标与梯度计算 训练目标是最大化训练数据的对数似然函数: \[ \mathcal{L}(\theta) = \sum_ {\mathbf{v} \in \text{data}} \log P(\mathbf{v}) = \sum_ {\mathbf{v} \in \text{data}} \log \sum_ {\mathbf{h}} P(\mathbf{v}, \mathbf{h}) \] 对权重 \(w_ {ij}\) 求梯度可得: \[ \frac{\partial \log P(\mathbf{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\) 的期望(负相)。 正相计算简单:对每个训练样本 \(\mathbf{v}\),用条件概率 \(P(\mathbf{h} \mid \mathbf{v})\) 计算 \(\langle v_ i h_ j \rangle\); 负相需从模型 \(P(\mathbf{v}, \mathbf{h})\) 采样,但直接采样因 \(Z\) 难以计算而不可行。 4. 对比散度(CD-k)近似训练 CD-k 通过以下步骤近似负相采样: 输入训练样本 \(\mathbf{v}^{(0)}\),利用 \(P(\mathbf{h} \mid \mathbf{v}^{(0)})\) 采样得到 \(\mathbf{h}^{(0)}\); 执行 \(k\) 步吉布斯采样(通常 \(k=1\)): 由 \(\mathbf{h}^{(t)}\) 通过 \(P(\mathbf{v} \mid \mathbf{h}^{(t)})\) 采样得 \(\mathbf{v}^{(t+1)}\); 由 \(\mathbf{v}^{(t+1)}\) 通过 \(P(\mathbf{h} \mid \mathbf{v}^{(t+1)})\) 采样得 \(\mathbf{h}^{(t+1)}\); 用 \(\mathbf{v}^{(k)}\) 和 \(\mathbf{h}^{(k)}\) 计算负相期望 \(\langle v_ i h_ j \rangle_ {\text{model}} \approx v_ i^{(k)} h_ j^{(k)}\)。 权重更新规则为: \[ \Delta w_ {ij} = \eta \left( \langle v_ i h_ j \rangle_ {\text{data}} - v_ i^{(k)} h_ j^{(k)} \right) \] 偏置更新类似(例如 \(\Delta b_ i = \eta (\langle v_ i \rangle_ {\text{data}} - v_ i^{(k)})\))。 5. 关键点总结 BM通过能量函数建模概率分布,训练需处理配分函数难题; 条件概率的局部性使吉布斯采样可行; CD-k 用有限步采样近似负相,避免直接计算 \(Z\),是受限玻尔兹曼机(RBM)的典型训练方法(BM的特例,无层内连接)。 通过以上步骤,BM能够学习数据分布并用于生成或特征提取。