基于自注意力机制的多头指针网络文本摘要算法
字数 1175 2025-12-05 13:47:17
基于自注意力机制的多头指针网络文本摘要算法
我将详细讲解这个抽取式文本摘要算法。这个算法结合了自注意力机制、指针网络和多头机制,能直接从原文中挑选重要句子形成摘要。
一、算法概述
核心思想:从原始文档中直接选择最重要的句子组成摘要,而不是生成新的句子。算法需要解决两个关键问题:1)如何评估每个句子的重要性;2)如何避免选择冗余信息。
算法特点:
- 使用指针网络直接从原文"指向"要抽取的句子
- 多头机制从不同角度评估句子重要性
- 自注意力机制捕捉句子间的语义关系
- 不需要生成新文本,保持原文的准确性
二、算法详细步骤
步骤1:文本预处理和句子分割
输入文档 → 句子分割 → 得到n个句子{s₁, s₂, ..., sₙ}
每个句子sᵢ → 词向量序列{wᵢ₁, wᵢ₂, ..., wᵢₘ}
- 使用标点符号(。!?等)分割句子
- 对每个句子进行分词处理
- 将词语转换为预训练词向量(如Word2Vec、GloVe)
步骤2:句子编码(双向LSTM编码器)
对于每个句子sᵢ:
前向LSTM:从左到右编码 → 得到前向隐状态
后向LSTM:从右到左编码 → 得到后向隐状态
拼接:hᵢ = [前向隐状态; 后向隐状态]
- 每个句子独立编码,得到句子表示hᵢ ∈ ℝ^{2d}(d是LSTM隐藏层维度)
- 最终得到文档表示:H = {h₁, h₂, ..., hₙ}
步骤3:文档级编码(自注意力机制)
1. 计算自注意力分数:
eᵢⱼ = (W_q hᵢ)ᵀ(W_k hⱼ)/√d_k
2. 计算注意力权重:
αᵢⱼ = exp(eᵢⱼ) / Σₖ exp(eᵢₖ)
3. 更新句子表示:
h̃ᵢ = Σⱼ αᵢⱼ (W_v hⱼ)
- 这里使用了缩放点积注意力
- 让每个句子都能关注文档中所有其他句子
- 捕捉句子间的语义关系和依赖
步骤4:多头注意力机制
对于k=1到K个头:
1. 线性变换:Q_k = H W_q^k, K_k = H W_k^k, V_k = H W_v^k
2. 计算注意力:head_k = softmax(Q_k K_kᵀ/√d_k) V_k
拼接多头输出:
MultiHead(H) = Concat(head₁, ..., head_K) W^O
- 每个头学习不同类型的文档结构信息
- 例如:一个头关注时间顺序,一个头关注因果逻辑,一个头关注对比关系
- 最终的多头表示捕获了更丰富的文档结构
步骤5:指针网络解码(逐步选择句子)
指针网络核心思想:不生成新词,而是指向输入序列的位置
第t步解码过程:
1. 解码器状态初始化:
d₀ = 平均池化(H) 或 特殊起始标记
2. 计算注意力分布(选择概率):
uᵢᵗ = vᵀ tanh(W_h hᵢ + W_d dₜ + b)
P(yₜ = i | y₁:ₜ₋₁) = softmax(uᵢᵗ)
3. 选择句子:
选择概率最大的句子索引j = argmax_i P(yₜ = i)
4. 更新解码器状态:
dₜ₊₁ = LSTM(dₜ, [hⱼ; cₜ])
其中cₜ是当前上下文向量:cₜ = Σᵢ αᵢᵗ hᵢ
步骤6:覆盖机制(Coverage Mechanism)处理冗余
问题:指针网络可能重复选择相同句子
解决方案:引入覆盖向量记录已选句子的注意力历史
覆盖向量更新:covₜ = Σ_{τ=1}^{t-1} α_τ
注意力计算加入覆盖惩罚:uᵢᵗ = vᵀ tanh(W_h hᵢ + W_d dₜ + w_c cᵢᵗ + b)
其中cᵢᵗ是覆盖特征,惩罚已受关注的句子
三、训练过程
训练目标:最大化对数似然
损失函数:L = -Σ_{t=1}^{T} log P(yₜ* | y₁:ₜ₋₁, H)
其中yₜ*是第t个参考摘要句子的位置
教师强制训练:
- 使用参考摘要的真实句子顺序
- 每一步用真实的前一个句子指导当前预测
- 加速模型收敛
四、推理过程(生成摘要)
算法流程:
输入:文档D,包含n个句子
输出:摘要S,包含k个句子(k≤n且k≤预设最大长度)
1. 编码器处理整个文档,得到句子表示H
2. 初始化已选句子集合为空
3. for t = 1 to k do:
a. 用指针网络计算每个句子的选择概率
b. 排除已选句子(设置概率为负无穷)
c. 选择概率最大的句子j
d. 将句子sⱼ加入摘要S
e. 更新解码器状态和覆盖向量
4. 按原文顺序重新排列选中的句子
5. 输出摘要S
五、关键技术细节
1. 句子位置编码
- 在自注意力中加入位置编码
- 帮助模型理解句子的顺序信息
- 使用正弦余弦位置编码或学习的位置嵌入
2. 长度控制策略
三种策略:
1. 固定长度:预设摘要句子数k
2. 动态长度:当P(结束符) > 阈值时停止
3. 自适应长度:基于文档长度决定k
3. 多样性与相关性的平衡
- 覆盖机制保证多样性(不重复)
- 注意力机制保证相关性(与文档主题相关)
- 通过超参数调节两者权重
六、算法优势与局限性
优势:
- 忠实度高:直接抽取原文句子,不会产生事实错误
- 效率高:比生成式摘要快,不需要语言模型解码
- 可解释性强:可以查看每个句子的选择概率
- 处理长文档能力强:适合新闻、论文等长文本
局限性:
- 灵活性差:无法改写、压缩句子
- 连贯性问题:抽取的句子间可能缺乏连贯性
- 依赖原文质量:原文表达不清会影响摘要质量
七、实际应用示例
以新闻文档摘要为例:
原文:句子1: 北京时间今天凌晨,苹果公司发布新款iPhone。
句子2: 新手机搭载了A16芯片,性能提升20%。
句子3: 摄像头系统也有重大升级。
句子4: 此外,电池续航时间延长了2小时。
句子5: 价格方面,起售价为5999元。
算法处理:
- 自注意力分析句子间关系
- 指针网络依次选择重要句子
- 假设选择句子1,2,4
- 输出摘要:句子1+句子2+句子4
这个算法通过结合深度学习的表示能力和指针网络的精确指向能力,实现了高效准确的抽取式摘要,在实际系统中有着广泛应用。