基于自回归模型的序列生成:神经自回归分布估计(Neural Autoregressive Distribution Estimation, NADE)的原理与计算过程
1. 题目描述
神经自回归分布估计(NADE)是一种用于建模高维离散或连续数据分布的概率生成模型。它通过链式法则将联合概率分解为一系列条件概率的乘积,并使用神经网络参数化每个条件分布。NADE 常用于密度估计、序列生成和缺失数据补全,特别在图像生成、语音建模等领域有广泛应用。本题目将详细讲解 NADE 的建模思想、概率分解方式、神经网络结构设计、训练目标与序列生成过程。
2. 背景与核心思想
(1)自回归模型的基本设定
- 设数据样本为 \(\mathbf{x} = [x_1, x_2, ..., x_D]\),其中 \(x_i\) 可以是离散值(如二值像素)或连续值。
- 自回归模型基于概率的链式法则对联合分布进行分解:
\[ p(\mathbf{x}) = \prod_{i=1}^{D} p(x_i \mid \mathbf{x}_{
其中 \(\mathbf{x}_{ 表示在变量排序中位于 \(x_i\) 之前的所有变量。
(2)NADE 的关键改进
传统自回归模型(如全连接的神经网络)在计算每个条件概率时参数不共享,导致参数量大且训练效率低。NADE 通过共享权重 的神经网络计算所有条件概率,同时保持自回归特性,显著提升了计算效率与泛化能力。
3. 模型结构与计算步骤
(1)变量顺序与条件概率建模
- 预先定义变量的固定顺序(如像素从左到右、从上到下)。
- 对每个位置 \(i = 1, ..., D\),用神经网络计算条件概率 \(p(x_i \mid \mathbf{x}_{。
(2)共享的前向计算过程
以二值数据为例(\(x_i \in \{0,1\}\)),NADE 的前向计算分为以下步骤:
- 输入掩码:对于第 \(i\) 个条件概率的计算,只允许前 \(i-1\) 个变量作为输入,后续变量被掩码为 0。具体通过一个掩码向量 \(\mathbf{m}^{(i)}\) 实现,其前 \(i-1\) 维为 1,其余为 0。
- 共享权重矩阵:定义权重矩阵 \(\mathbf{W} \in \mathbb{R}^{H \times D}\) 和偏置 \(\mathbf{c} \in \mathbb{R}^{H}\)(\(H\) 为隐层维度),计算隐层表示:
\[ \mathbf{h}^{(i)} = g\left( \mathbf{W} \cdot (\mathbf{x} \odot \mathbf{m}^{(i)}) + \mathbf{c} \right) \]
其中 \(g(\cdot)\) 为激活函数(如 Sigmoid),\(\odot\) 表示逐元素乘法。
- 条件概率输出:通过另一组共享权重 \(\mathbf{V} \in \mathbb{R}^{D \times H}\) 和偏置 \(\mathbf{b} \in \mathbb{R}^{D}\) 计算:
\[ \alpha_i = \mathbf{V}_{i,:} \cdot \mathbf{h}^{(i)} + b_i \]
对二值数据,使用 Sigmoid 函数得到条件概率:
\[ p(x_i = 1 \mid \mathbf{x}_{
(3)高效计算技巧
- 由于权重共享,所有 \(\mathbf{h}^{(i)}\) 可并行计算:先计算完整隐层 \(\mathbf{h} = g(\mathbf{W} \mathbf{x} + \mathbf{c})\),然后对每个 \(i\) 用掩码调整输入。但更高效的方式是递归计算:
\[ \mathbf{h}^{(i)} = g\left( \mathbf{W}_{:,
其中 \(\mathbf{W}_{:, 是权重的前 \(i-1\) 列。实际实现时可通过累积计算避免重复矩阵乘法。
4. 训练与优化
(1)训练目标
- 采用最大似然估计,最小化负对数似然损失:
\[ \mathcal{L} = -\sum_{n=1}^{N} \sum_{i=1}^{D} \log p(x_i^{(n)} \mid \mathbf{x}_{
其中 \(N\) 为样本数,上标 \((n)\) 表示第 \(n\) 个样本。
(2)梯度计算与反向传播
- 由于模型是完全可微的神经网络,可使用标准反向传播计算梯度。
- 注意梯度需对共享参数 \(\mathbf{W}, \mathbf{V}, \mathbf{c}, \mathbf{b}\) 进行累积(因为每个 \(i\) 对应一个子网络,但参数共享)。
(3)扩展与变体
- 连续数据:将输出改为高斯分布,即 \(p(x_i \mid \mathbf{x}_{,其中 \(\mu_i, \sigma_i\) 由网络输出。
- 深度 NADE:通过堆叠多个隐层增加表达能力。
- 顺序可调 NADE:训练时随机打乱变量顺序,使模型对不同顺序鲁棒。
5. 序列生成与推断
(1)逐点生成
- 从 \(i=1\) 到 \(D\) 依次生成每个变量:
- 根据已生成的 \(\hat{x}_1, ..., \hat{x}_{i-1}\) 计算条件概率 \(p(x_i \mid \hat{\mathbf{x}}_{。
- 从该分布中采样得到 \(\hat{x}_i\)。
- 由于生成是顺序的,无法并行化,但每一步计算量很小。
(2)密度估计与补全
- 密度估计:直接计算联合概率 \(p(\mathbf{x}) = \prod_i p(x_i \mid \mathbf{x}_{。
- 缺失数据补全:若部分变量已知,可对其他变量进行条件采样或最大概率填充。
6. 总结与特点
- 优点:
- 概率模型严格归一化,适合密度估计任务。
- 权重共享大幅减少参数量,训练稳定。
- 可处理离散/连续数据,灵活性强。
- 缺点:
- 生成过程是顺序的,速度较慢。
- 变量顺序需预先定义,可能影响表达能力。
- 关联模型:NADE 是自回归模型的经典神经网络实现,后续模型如 PixelCNN、Masked Autoencoder(MAE) 也受其启发。
通过以上步骤,NADE 将自回归概率分解与神经网络高效结合,为高维数据分布建模提供了可扩展的框架。