发布时间:2026/8/25 8:55:21
fast_abs_rl源码解读②:带Copy机制的Seq2Seq摘要器——注意力+复制如何兼顾生成与忠实? fast_abs_rl源码解读②带Copy机制的Seq2Seq摘要器——注意力复制如何兼顾生成与忠实【免费下载链接】fast_abs_rlCode for ACL 2018 paper: Fast Abstractive Summarization with Reinforce-Selected Sentence Rewriting. Chen and Bansal项目地址: https://gitcode.com/gh_mirrors/fa/fast_abs_rl在上一篇我们了解了 fast_abs_rl 的整体架构这一篇深入其核心带 Copy 机制的 Seq2Seq 摘要器。fast_abs_rl 是 ACL 2018 论文《Fast Abstractive Summarization with Reinforce-Selected Sentence Rewriting》的官方代码它的摘要器abstractor用注意力attention 复制copy机制同时解决两个痛点既能改写原文生成流畅句子又能照抄原文保证内容忠实。下面用尽量少的代码带你把这个模型拆开看。 为什么摘要器需要生成 复制两种能力纯神经生成式摘要有一个顽疾训练词表有限遇到原文里的实体人名、地名、数字容易写出错。Copy 机制源自 Gu et al. 的 copy 机制给模型开了一条后门——生成Generate像正常 Seq2Seq 一样从固定词表里预测下一个词负责改写和润色复制Copy直接从源文章里把词搬过来负责忠实引用实体和事实。在 fast_abs_rl 里这两条路被融合成经典的pointer-generator 结构P(w) (1 - p_copy) · P_gen(w) p_copy · P_attn(w)其中P_gen是词表上的生成概率P_attn是注意力分布落到源词上的概率p_copy是模型自己学出来的复制门。下面逐块拆解源码实现。 先看基础版Seq2SeqSumm 的三件套基础版摘要器在 Seq2SeqSumm 中定义类Seq2SeqSumm第 14 行起由三部分组成组件源码位置说明编码器model/summ.py_enc_lstm双向 LSTM把源句编码为序列表示支持 pack/unpack 变长序列见model/rnn.py的lstm_encoder解码器model/summ.pyAttentionalLSTMDecoder第 139 行起逐词解码每步输入 上一词嵌入 上一步输出注意力model/attention.pystep_attention第 22 行起点积打分 → mask 掉 padding → softmax → 加权聚合出 context 向量解码一步的核心流程在AttentionalLSTMDecoder._stepmodel/summ.py第 158-173 行上一词嵌入和上一步输出拼接喂给多层 LSTMmodel/rnn.py中手写的MultiLayerLSTMCells方便逐 step 解码用 LSTM 输出乘投影矩阵_attn_w得到 query调用step_attention对源句算注意力得到 context把 LSTM 输出和 context 拼接后过_projection再复用词嵌入矩阵的转置做线性投影得到词表上的 logit——这是 2016 年后 NMT 模型常用的权重共享技巧。到这里是一个标准的注意力 Seq2Seq但词表外的词只能输出unk。真正的升级在下一节。✨ CopySumm指针-生成器的三步流水线带 Copy 的版本是model/copy_summ.py中的CopySumm类第 38 行起它继承自Seq2SeqSumm只多了一个_copy打分网络和自定义解码器CopyLSTMDecoder第 175 行起。解码每一步在_step第 180-206 行中分三步走第一步算生成概率 P_gen_compute_gen_probmodel/copy_summ.py第 251-262 行先像基础版一样投影出词表 logit然后有一个关键细节如果本 batch 的扩展词表比模型词表大就在 logit 后面补一段常数eps 1e-6拉齐长度再做 softmax。为什么要补因为 copy 机制的总词表 基础词表 ∪ 当前源句里的所有词源句特有的实体词会分配新 id。生成概率必须在扩展词表上归一化否则和复制概率不在同一概率空间里。补 eps 就是给这些新词一个极小的生成先验防止分母算错。第二步算复制门 p_copy_CopyLinearmodel/copy_summ.py第 15-35 行是一个可学习的小打分器它对context 向量、LSTM 状态、解码器输入三个来源分别做向量点积再相加过 sigmoid 得到 0~1 之间的copy_prob。直观理解context 里原文信息多、状态倾向于照抄时 →p_copy升高需要改写、润色时 →p_copy降低更多概率留给生成路。第三步融合两条概率最终 log 概率用一行scatter_add完成第 199-205 行逻辑如下先取(-copy_prob 1) * gen_prob即整个分布整体乘以不复制的比例再沿着注意力分数score的下标也就是源词在扩展词表中的位置做scatter_add把score * copy_prob累加回去——注意力分布被缩放后直接注入到对应源词的格子中加 1e-8 取 log数值上更稳。这一行代码正是P(w) (1-p_copy)·P_gen(w) p_copy·P_attn(w)的张量化实现也是全模型最精妙的一行。 解码时的一个小技巧输出 token id 若 ≥ 基础词表大小vsize说明是复制来的源词代码会临时把它映射回unk继续喂给下一 stepmodel/copy_summ.py的decode/batch_decode同时把真实 id 保留在outputs里最终按 id 查扩展词表还原出原文的词。 扩展词表是怎么来的词表是每个 batch 动态构建的相关逻辑在data/batcher.pyconvert_batch_copy第 67-80 行扫描 batch 内所有源句把没出现过的新词依次分配新 id形成ext_word2idbatchify_fn_copy第 139-158 行把ext_src源句按扩展词表编码和ext_vsize一起打包给模型ext_vsize 扩展词表中最大 id 1。也就是说模型词表是固定底座 每个 batch 的动态扩展这正是_compute_gen_prob里要做长度对齐的原因。️ 它是怎么被训练出来的摘要器由 train_abstractor.py 训练目标不是整篇文章 → 整篇摘要而是单句到单句的改写MatchDataset第 38-50 行用抽取模型预先选出的源句extracts与摘要句一一对齐构成源句 → 摘要句的训练对损失函数是标准序列交叉熵sequence_lossmodel/util.py第 29 行起按 pad 位置做 mask数据管线由BucketedGeneraterdata/batcher.py第 206 行起按长度分桶 多进程预取减少 padding 浪费。训练完成后摘要器会作为子模块被 RL 阶段train_full_rl.py复用——RL 策略从候选句里选句子选中的句交给摘要器重写这就是论文标题中 Reinforce-Selected Sentence Rewriting 的含义。 解码时它如何工作推理入口是 decode_full_model.py摘要器走CopySumm.batched_beamsearchmodel/copy_summ.py第 97-172 行配合model/beam_search.py的 diverse beam search对每个 batch 内所有 beam 打包调用topk_step取 top-k 候选注意代码里把 beam 维折进 batch 维再在 copy 分支重新展开因为_CopyLinear不支持 beam 广播——第 133 行附近的注释 copy mechanism is not beamable 说的就是这个beam_size1 即贪心解码beam_size5 时论文中用抽取模型打分做 rerank每一步同步记录注意力分数便于事后可视化这个词是从哪抄的。 小结与关键文件速查想深入了解看这里基础注意力 Seq2Seqmodel/summ.pySeq2SeqSumm、AttentionalLSTMDecoder点积注意力打分与 maskmodel/attention.pystep_attentionCopy 门与概率融合model/copy_summ.py_CopyLinear、CopyLSTMDecoder._step扩展词表构建data/batcher.pyconvert_batch_copy、batchify_fn_copy摘要器训练脚本train_abstractor.pyMatchDataset、configure_net束搜索解码model/copy_summ.pybatched_beamsearch、model/beam_search.py一句话总结注意力负责看哪里Copy 门负责抄还是写生成路径负责怎么润色——三者共用一套词嵌入权重用scatter_add一行完成概率融合让 fast_abs_rl 的摘要器既流畅又忠实这也是它在 CNN/DailyMail 上取得当年 SOTA 的关键设计之一。【免费下载链接】fast_abs_rlCode for ACL 2018 paper: Fast Abstractive Summarization with Reinforce-Selected Sentence Rewriting. Chen and Bansal项目地址: https://gitcode.com/gh_mirrors/fa/fast_abs_rl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/8/25 8:50:21

异步复位同步释放:数字电路稳定启动的黄金法则

1. 项目概述:为什么我们需要“异步复位同步释放”?在数字电路设计,尤其是FPGA和ASIC开发中,复位信号的处理是确保系统稳定性的基石。一个不稳定的复位信号,轻则导致状态机跑飞、数据错乱,重则让整个系统陷入…

2026/8/25 11:21:00

三消游戏核心算法:并查集实现高效消除判定与工程实践

1. 从“三消”到“巧判”:一个被低估的核心算法做游戏开发的朋友,尤其是接触过休闲益智类项目的,对“消消乐”(三消)这个品类肯定不陌生。市面上从《Candy Crush Saga》到《开心消消乐》,无数成功产品验证了…

2026/8/25 11:21:00

多模态AI智能体协同决策系统:构建电影预演的数字大脑

1. 项目概述:当导演拥有了“数字大脑”想象一下,你是一位导演,正站在一个空旷的摄影棚里,面前是即将开拍的电影场景。演员的走位、摄影机的运动轨迹、灯光的角度、甚至后期特效的雏形,所有这些元素都在你的脑海里翻腾。…

2026/8/25 11:21:00

Python装饰器原理与应用:从高阶函数到Web开发实战

1. 项目概述:为什么装饰器是Python的“瑞士军刀”?如果你写过一段时间的Python,尤其是在接触Web框架(比如Flask、Django)或者一些异步库时,一定对那个神奇的符号不陌生。它就像一个标签,贴在函数…

2026/8/25 11:15:57

LLM智能体在游戏中的竞争与合作:架构、策略与工程实践

1. 从“单打独斗”到“群雄逐鹿”:LLM智能体在游戏中的范式转变最近和几个做游戏AI的朋友聊天,大家不约而同地都在讨论一个话题:当大语言模型驱动的智能体不再是一个孤立的NPC,而是能成群结队、彼此互动时,游戏世界会发…

2026/8/25 1:04:19

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 1:12:32

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 8:17:29

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 0:04:14

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory Meta Description:GetQzonehistory 是一个QQ空间历史说…

2026/8/25 0:04:14

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/24 13:42:17

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/24 18:13:48

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/25 1:08:14

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…