尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

fast_abs_rl解码进阶:Diverse Beam Search与N-gram重排序如何再涨近1个ROUGE-L点?

fast_abs_rl解码进阶:Diverse Beam Search与N-gram重排序如何再涨近1个ROUGE-L点? fast_abs_rl解码进阶Diverse Beam Search与N-gram重排序如何再涨近1个ROUGE-L点【免费下载链接】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》Chen Bansal的官方 PyTorch 实现核心是一条「强化学习选句 句级改写」的抽象式新闻摘要流水线。本文带你深入它的解码环节如何通过Diverse Beam Search多样束搜索生成多条候选改写再用N-gram 重排序rerank从候选中挑出最佳组合最终在 CNN/DailyMail 测试集上让ROUGE-L 再涨近 1 个点。一、先看结果rerank 到底涨了多少官方 READMEREADME.md给出了验证集与测试集的可复现分数数据集模型R-1R-2R-L测试集rnn-ext abs RL40.0317.6137.58测试集 rerank40.8817.8138.530.95验证集 reranknew 模型42.0618.8039.680.97可以看到仅仅在解码阶段加一层 rerankROUGE-L 就能稳定提升0.8~1.0 分——这是「不重训模型、零成本涨分」的典型范例。整个解码流水线由三部分协作RL 提取器model/rl.py从文章里选出关键句摘要器 abstractormodel/copy_summ.py逐句改写重排序 rerankdecode_full_model.py在多条改写候选中做全局择优。二、Diverse Beam Search让每个句子都有多种改法普通 Beam Search 只会输出「概率最高」的一条改写。fast_abs_rl 的做法是对每个被选中的句子都解码出beam_size 条候选改写论文中 beam5然后重排序阶段再组合。多样性从哪里来核心在model/beam_search.py的_Hypothesis.extend_k中每条候选路径在扩展时会给不同父路径的第 i 名候选减去一个diverse * i的惩罚项。diverse越大同一父路径靠后的候选被压得越狠不同父路径之间的得分差距就被拉平——于是 beam 里留下的是语义不同的改写而不是大同小异的重复句。解码入口在model/copy_summ.py的batched_beamsearch批量并行跑 beam search上层封装为decoding.py中的BeamAbstractor并在后处理时用注意力把 UNK 替换为原文词copy 机制。 关键参数--beam 5开启多样束搜索--div 1.0控制多样性强度beam1则退化为贪心解码。三、N-gram 重排序如何从候选组合中选出最佳摘要假设一篇文章选出 5 个关键句每句有 5 条候选改写理论上有 5⁵ 种组合。decode_full_model.py里的rerank_one函数用了一个巧妙又高效的打分方式去重惩罚统计整个组合中所有候选句的bigram 计数重复出现的 n-gram 越多repeat越大惩罚越重——避免摘要里出现啰嗦、车轱辘话概率奖励同时累加各句的平均对数概率logprob保证选出的句子本身质量也不差剪枝加速_PRUNE表根据选句数量把每句的候选数剪到 3~5 条再对候选做笛卡尔积搜索并用 8 进程rerank_mp并行打分。一句话总结单句看概率全局查重复——这正是 rerank 涨分的来源。四、复现清单三步跑通完整解码准备环境需 GPU 与 CUDA 版 PyTorch、gensim、cytoolz、pyrouge 等见requirements.txt并设置数据环境变量后按以下步骤操作1️⃣ 下载代码与预训练模型git clone https://gitcode.com/gh_mirrors/fa/fast_abs_rl export DATA/path/to/cnn-dailymail # 预处理好的 CNN/DailyMail 数据2️⃣ 运行解码含 rerankpython decode_full_model.py --path./out --model_dir./pretrained --beam5 --test--beam 1贪心解码得到 rnn-ext abs RL 的基线结果--beam 5配--div调节多样性自动启用 N-gram 重排序。3️⃣ 评估 ROUGE / METEORpython make_eval_references.py python eval_full_model.py --rouge --decode_dir./out评分逻辑基于metric.pyROUGE-N / ROUGE-L 的纯 Python 实现与官方 ROUGE/pyrouge脚本配置ROUGE与METEOR环境变量后即可得到与论文一致的分数。五、常见问题 FAQQ1beam 开得越大越好吗不一定。beam 越大解码越慢且候选趋同。论文与代码默认用 5配合_PRUNE剪枝即可。Q2rerank 会不会伤害 METEOR会轻微下降如测试集 21.00 → 20.38。rerank 更看重与参考摘要的 n-gram 重合属于 ROUGE 导向的取舍可按任务自行取舍。Q3只想要基线分数直接把--beam设为 1走贪心解码路径即可复现「无 rerank」那一行结果。Q4想继续训练自己的模型按train_word2vec.py→make_extraction_labels.py→train_abstractor.py/train_extractor_ml.py→train_full_rl.py的顺序执行完成后即可复用本文的解码与评估流程。六、小结fast_abs_rl 的解码设计给所有做文本生成的同学提供了一个低成本涨分模板Diverse Beam Search 负责广多候选N-gram 重排序负责精全局去重择优两者结合让 ROUGE-L 再涨近 1 个点而几乎不增加训练成本。核心实现集中在model/beam_search.py、model/copy_summ.py与decode_full_model.py三个文件中代码短小、逻辑清晰非常适合作为 Beam Search 与解码后处理的学习范本。【免费下载链接】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),仅供参考
返回列表