基于指针生成网络(Pointer-Generator Network)的文本摘要算法
题目描述
指针生成网络是一种结合了序列到序列(Seq2Seq)模型和指针网络的混合架构,主要用于抽象式文本摘要任务。与传统抽取式摘要(直接复制原文句子)不同,它能够生成包含新词汇的摘要,同时通过指针机制从原文中复制特定词(如专有名词或数字),解决未登录词(OOV)问题。其核心挑战在于平衡生成新词与复制原文词的比例,并避免生成重复内容。
解题过程循序渐进讲解
步骤1:理解基线模型——Seq2Seq与注意力机制
首先,文本摘要可建模为序列转换问题:输入原文词序列 \(X = (x_1, x_2, ..., x_n)\),输出摘要词序列 \(Y = (y_1, y_2, ..., y_m)\)。
- 编码器:使用双向LSTM将输入序列编码为隐藏状态 \(h_i\)(每个时间步对应词 \(x_i\) 的上下文表示)。
- 解码器:使用单向LSTM,在时间步 \(t\) 生成目标词 \(y_t\)。通过注意力机制计算输入序列的权重分布 \(a^t_i\)(表示生成 \(y_t\) 时对 \(x_i\) 的关注度),得到上下文向量 \(c_t = \sum_i a^t_i h_i\)。
- 输出层:将解码器隐藏状态 \(s_t\) 与 \(c_t\) 拼接后,通过softmax生成词表上的概率分布 \(P_{vocab}\)。
但此模型存在局限:无法处理OOV词(如"ChatGPT"未在词表中),且可能生成事实错误(如扭曲原文数字)。
步骤2:引入指针机制(Pointer Network)
为解决OOV问题,指针网络允许模型直接从输入序列中复制词。其核心思想是:
- 在解码时,额外计算一个生成概率(generation probability) \(p_{gen} \in [0,1]\),表示当前步是生成新词还是复制原文词。
- \(p_{gen}\) 由解码器状态 \(s_t\)、上下文向量 \(c_t\) 和输入 \(y_{t-1}\) 通过sigmoid函数计算:
\[ p_{gen} = \sigma(w_c^T c_t + w_s^T s_t + w_y^T y_{t-1} + b) \]
- 若 \(p_{gen}\) 较高,模型从词表分布 \(P_{vocab}\) 中采样新词;若较低,则从注意力权重分布 \(a^t\) 中复制某个输入词(如选择 \(a^t_i\) 最大对应的 \(x_i\))。
步骤3:构建混合概率分布
最终输出概率分布是生成与复制机制的加权融合:
- 对于词表内词 \(w\)(如"model"),其概率为:
\[ P(w) = p_{gen} P_{vocab}(w) + (1 - p_{gen}) \sum_{i: x_i = w} a^t_i \]
(若 \(w\) 在输入中出现多次,则累加对应位置的注意力权重)
- 对于OOV词 \(w\)(如"2025"),其 \(P_{vocab}(w)=0\),概率仅由复制部分贡献。
此设计使模型能灵活选择生成抽象内容或保留原文关键信息。
步骤4:应对重复生成问题——覆盖机制(Coverage Mechanism)
生成摘要时,模型可能重复关注同一输入位置导致输出冗余。覆盖机制通过跟踪历史注意力权重解决此问题:
- 维护覆盖向量 \(cov^t = \sum_{k=0}^{t-1} a^k\)(累积过去所有时间步的注意力分布)。
- 将 \(cov^t\) 加入当前注意力计算:
\[ e_i^t = v^T \tanh(W_h h_i + W_s s_t + W_c cov_i^t + b) \]
(其中 \(e_i^t\) 是注意力能量值,\(a^t = \text{softmax}(e^t)\))
- 覆盖向量惩罚已关注过的位置,促使模型关注未覆盖内容。此外,可添加覆盖损失函数:
\[ L_{cov} = \sum_i \min(a_i^t, cov_i^t) \]
与交叉熵损失共同优化,抑制重复。
步骤5:训练与推理细节
- 训练:使用教师强制(teacher forcing)最大化目标序列的似然概率,损失函数为 \(L = -\frac{1}{T} \sum_{t=1}^T \log P(y_t^* | y_1^*, ..., y_{t-1}^*, X)\)。若使用覆盖机制,总损失为 \(L_{total} = L + \lambda L_{cov}\)。
- 推理:采用束搜索(beam search)生成摘要,平衡多样性与质量。生成时 \(p_{gen}\) 动态调整复制与生成策略,例如遇到数字或人名时自动倾向复制。
总结
指针生成网络通过生成概率 \(p_{gen}\) 桥接了抽象与抽取式摘要的优点,覆盖机制进一步提升了连贯性。该模型在CNN/Daily Mail等数据集上显著提升摘要质量,成为文本生成领域的经典算法。