预备知识#

受限玻尔兹曼机(Restricted Boltzmann Machine)是一种基于能量的概率图模型,由可见层(Visible Layer)和隐层(Hidden Layer)组成,层内无连接,层间全连接。 其核心是通过无监督学习学习数据的潜在特征分布。

1. 神经网络基础#

1.1 神经元模型#

人工神经元是神经网络的基本计算单元。给定输入向量 \mathbf{x} \in \mathbb{R}^n,其输出为:

a = \phi\left( \mathbf{w}^\top \mathbf{x} + b \right)

其中 \mathbf{w} \in \mathbb{R}^n 为权重向量,b \in \mathbb{R} 为偏置项,\phi(\cdot) 为激活函数。在概率生成模型中,常用 Sigmoid 激活函数:

\sigma(z) = \frac{1}{1 + e^{-z}}

1.2 基于能量的模型#

与前馈网络不同,能量基模型(Energy-Based Models, EBMs)通过一个标量能量函数 E(\mathbf{x}; \theta) 定义数据的概率分布:

P(\mathbf{x}; \theta) = \frac{\exp(-E(\mathbf{x}; \theta))}{Z(\theta)}

其中配分函数(partition function):

Z(\theta) = \sum_{\mathbf{x}} \exp(-E(\mathbf{x}; \theta))

确保概率归一化。低能量状态对应高概率。

2. 玻尔兹曼机结构#

  • 可见层(v):输入数据的显式表示(如像素值)。

  • 隐藏层(h):提取的潜在特征。

  • 权重矩阵(w):连接可见层与隐层的权重。

  • 偏置:可见层偏置(b)和隐层偏置(c)。

玻尔兹曼机(BM)的拓扑结构是全连接的,而受限玻尔兹曼机通过去掉了可见层和隐藏层内部的链接, 让Gibbs采样的过程更加高效。

由于 RBM 的受限结构,隐变量在给定可见变量时相互独立,其条件概率为:

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

同理,

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

3. 能量函数与概率分布#

3.1 能量函数#

RBM 的能量函数定义为:

E(\mathbf{v}, \mathbf{h}) = -\mathbf{v}^T \mathbf{W} \mathbf{h} - \mathbf{b}^T \mathbf{v} - \mathbf{c}^T \mathbf{h}

其中,\mathbf{v}, \mathbf{h} 分别是可见层和隐层的状态,\mathbf{W} 是连接的权重,\mathbf{b}, \mathbf{c} 是一次项系数。

联合概率分布通过玻尔兹曼分布给出:

P(\mathbf{v}, \mathbf{h}) = \frac{e^{-E(\mathbf{v}, \mathbf{h})}}{Z}

其中 Z 为配分函数(归一化因子)。可见层的边缘分布为:

P(\mathbf{v}) = \sum_{\mathbf{h}} P(\mathbf{v}, \mathbf{h})

通过最大化似然函数学习参数 W,b,c 。目标函数为负对数似然:

\mathcal{L} = -\sum_{\mathbf{v}} \log P(\mathbf{v})

采用对比散度(CD)算法近似梯度,更新规则为:

\Delta W_{ij} = \epsilon \left( \langle v_i h_j \rangle_{\text{data}} - \langle v_i h_j \rangle_{\text{recon}} \right)

其中 \epsilon 为学习率,\langle \cdot \rangle_{\text{data}}\langle \cdot \rangle_{\text{recon}} 分别为数据分布和重构分布的期望。

3.2 梯度的推导#

能量模型的概率可以写成:

p(x; \theta) = \frac{1}{Z} \tilde{p}(x; \theta)

其梯度为:

\nabla_\theta \log p(x; \theta) = \nabla_\theta \log \tilde{p}(x; \theta) - \nabla_\theta \log Z

配分函数的梯度难以直接计算

\nabla_\theta \log Z
&= \frac{\nabla_\theta Z}{Z} \\
&= \frac{\nabla_\theta \sum_x \tilde{p}(x)}{Z} \\
&= \sum_x \frac{\nabla_\theta \tilde{p}(x)}{Z}

对于保证所有的 x 都有 p(x) > 0 的模型,我们可以用 \exp(\log \tilde{p}(x)) 代替 \tilde{p}(x)

\frac{\sum_x \nabla_\theta \exp(\log \tilde{p}(x))}{Z}
&= \frac{\sum_x \exp(\log \tilde{p}(x)) \nabla_\theta \log \tilde{p}(x)}{Z} \\
&= \frac{\sum_x \tilde{p}(x) \nabla_\theta \log \tilde{p}(x)}{Z} \\
&= \sum_x p(x) \nabla_\theta \log \tilde{p}(x) \\
&= \mathbb{E}_{x \sim p(x)} \nabla_\theta \log \tilde{p}(x)

综上,

\nabla_\theta \log p(x; \theta) = \nabla_\theta \log \hat{p}(x; \theta) - \mathbb{E}_{x \sim p(x; \theta)} \nabla_\theta \log \hat{p}(x; \theta)

第二项中 p(x; \theta) 实际上是模型预测的 \mathbf{x} 的分布,而训练中的第一项是服从实际的数据的分布的。即上式可以写成

\nabla_\theta \log p(x; \theta) = \mathbb{E}_{x \sim p_{\text{data}}} \nabla_\theta \log \hat{p}(x; \theta) - \mathbb{E}_{x \sim p_{\text{model}}} \nabla_\theta \log \hat{p}(x; \theta)

这里我们考虑玻尔兹曼机的能量函数,容易求得

\nabla_W \log \hat{p}(x; W) = v h^\mathrm{T}

只要分别得到 p_{\text{data}}, p_{\text{model}} 分布下的 vh 的值即可计算梯度。即为:

\Delta W_{ij} = \epsilon \left( \langle v_i h_j \rangle_{\text{data}} - \langle v_i h_j \rangle_{\text{recon}} \right)