ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

如何理解fast_abs_rl的‘抽取→改写→RL‘三段式摘要架构?一张图读懂核心思想

如何理解fast_abs_rl的‘抽取→改写→RL‘三段式摘要架构?一张图读懂核心思想 如何理解fast_abs_rl的抽取→改写→RL三段式摘要架构一张图读懂核心思想【免费下载链接】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_rlfast_abs_rl 是 ACL 2018 论文Fast Abstractive Summarization with Reinforce-Selected Sentence Rewriting的官方开源实现PyTorch它用抽取→改写→RL的三段式架构把一篇长新闻快速改写成几句摘要。这篇文章不啃源码带你用一张图 三个问题读懂它的核心思想。 一图速览fast_abs_rl 三段式数据流整个模型就像一条流水线工厂原始长文CNN/DailyMail 新闻 │ ▼ ① 抽取器 rnn-ext指针网络 │ 从几十句中挑出关键句并自己决定选几句就停 ▼ ② 改写器 CopySummseq2seq 拷贝机制 │ 把每个关键句逐句改写成流畅的摘要句 ▼ 摘要结果可选 beam search 重排beam5 │ └── ③ RL 段A2C用 ROUGE 分数当奖励 回头训练 ① 的选句眼光三段各司其职① 负责选② 负责写③ 负责教 ① 选得更好。记住这一点剩下的细节都很好理解。 第一段抽取器——指针网络挑关键句抽取器model/extract.py中的PtrExtractSumm由三个部件组成句编码器ConvSentEncoder用卷积网络把每个句子编码成一个向量文章编码器双向 LSTM把整篇文章读通理解全局指针网络LSTMPointerNet像指针一样一步步点出该选哪句。训练时它先用监督学习热身先跑一个廉价的基线抽取器生成伪标签脚本make_extraction_labels.py再用train_extractor_ml.py把指针网络训练到位。这一步保证了 RL 阶段有一个靠谱的起点。✍️ 第二段改写器——带拷贝机制的 seq2seq改写器model/copy_summ.py中的CopySumm是一个经典 encoder-decoder读入一个关键句逐词生成对应的摘要句。它的亮点是拷贝机制copy mechanism——生成每个词时模型可以决定自己造词还是从原文原样抄一个词。这对新闻摘要非常实用人名、地名这类词照抄原文既准确又不会生成乱码。改写器在 RL 阶段是冻结的只当翻译官不参与强化学习这正是整个架构Fast的关键。 第三段RL——用 ROUGE 奖励教抽取器会选句这是 fast_abs_rl 的灵魂。普通做法是把选句当分类问题但作者换了一个思路选句好不好最终要看改写出来的摘要质量如何。于是用强化学习来优化选择过程角色代码位置职责Actor演员PtrExtractorRLStopmodel/rl.py按概率采样下一句额外加了一个停止 token学会自己决定选几句Critic评论员PtrScorermodel/rl.py预测基线奖励降低策略梯度的方差奖励函数metric.py改写结果与人工摘要的 ROUGE-L 分数训练采用A2C优势演员-评论员算法实现见 rl.py 中的a2c_train_step每选一句就获得一次 ROUGE 奖励多句奖励按折扣累积γ0.99最后用标准化奖励 − 基线的优势更新选句策略。整个 RL 入口是train_full_rl.py它加载前两段训练好的模型只优化抽取器——轻量网络吃 RL重量网络保持冻结所以训练又快又稳。⚡ 为什么这套抽取→改写→RL又快又好改写按句进行每句独立改写序列短、速度快远快于对整篇文章一次性 seq2seqRL 只训练小网络指针网络远比完整 seq2seq 轻量RL 开销小奖励端到端对齐目标选句能力直接由最终摘要的 ROUGE 分数塑造而非人工伪标签的上限。效果上测试集CNN/DailyMail的 ROUGE-1/2/L 达到 40.41 / 17.92 / 37.87加上 beam5 重排后进一步提升到 41.20 / 18.18 / 38.79详见 README 的 Results 表格。 动手体验4 步训练 解码命令先获取代码仓库地址git clone https://gitcode.com/gh_mirrors/fa/fast_abs_rl按 README 准备 CNN/DailyMail 数据并设置DATA环境变量后完整训练顺序是# 1. 预训练 word2vec 词向量 python train_word2vec.py --path[path/to/word2vec] # 2. 生成抽取伪标签 python make_extraction_labels.py # 3. 分别用监督学习训练改写器、抽取器 python train_abstractor.py --path[path] --w2v[path] python train_extractor_ml.py --path[path] --w2v[path] # 4. 训练完整 RL 模型只优化抽取器 python train_full_rl.py --path[path] --abs_dir[path] --ext_dir[path]解码只需一条命令beam1为贪心解码beam5启用重排decode_full_model.pypython decode_full_model.py --path[输出目录] --model_dir[预训练模型] --beam5 --test 核心文件速查表想看懂什么去哪里看指针网络抽取器model/extract.py拷贝机制改写器model/copy_summ.pyActor / Critic 网络model/rl.pyA2C 训练循环与奖励rl.py、metric.py三模型组装与加载decoding.py完整解码与重排decode_full_model.pyRL 总训练入口train_full_rl.py一句话总结fast_abs_rl 的智慧在于分工指针网络先学会挑句拷贝改写器负责写句再用最终摘要的 ROUGE 分数作为奖励回头把挑句这一步打磨到极致——轻量网络做 RL、按句改写求速度这就是它名字里Fast的由来。【免费下载链接】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),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进