仓库链接:https://github.com/allenai/RL4LMs
论文链接:https://arxiv.org/abs/2210.01241
网站链接:https://rl4lms.apps.allenai.org/
论文:Is Reindorcement Learning (Not) for Natural Language Processing?: Benchmarks, Baselines, and Building Blocks for Natural Language Policy Optimization.
摘要
- 问题:如何用人类偏好调整与训练的LM模型,把LM看成序列决策问题,可用RL,但难用,因为动作空间大,也没有什么基准
- 贡献:
(1)提出一个库RL4LM ,用RL优化LM模型(主要调用Huggingface来实现LM)
(2)提出GURE,包括6个LM任务,用Reward引导训练
(3)提出NLPO,RL可调整LM模型到humanPreference,该算法更稳定
RL4LM:Reinforcement Learning for Language Model
- 一个模块化的 RL 库,用于根据人类偏好微调语言模型
- 为训练语言模型提供易于定制的构建块,包括在线策略算法、奖励函数、指标、数据集和基于 LM 的actor-critic policy的实施
- 经过2000 多次实验的全面测试和基准测试 🔥(GRUE 基准🏆) 一套综合的:7 种不同的自然语言处理 (NLP) 任务:
(1)总结
(2)生成常识推理
(3)IMDB 基于情感的文本延续
(4)表格到文本生成
(5)抽象问答
(6)机器翻译
(7)对话生成 - 可用作奖励函数的不同类型的 NLG 指标(20+):
(1)词法指标(例如:ROUGE、BLEU、SacreBLEU、METEOR)
(2)语义度量(例如:BERTSCORE、BLEURT)
(3)任务特定指标(例如:PARENT、CIDER、SPICE)
(4)来自预训练分类器的分数(例如:情感分数) - PPO、A2C、TRPO 和新颖的 NLPO(自然语言策略优化)的在策略算法
- 支持因果 LM(例如 GPT-2/3)和 seq2seq LM(例如 T5、BART)的 Actor-Critic 策略
- 所有这些构建块都可以定制,允许用户训练基于 Transformer 的 LM,以优化他们选择的任何数据集上的任意奖励函数。
- 安装
git clone https://github.com/allenai/RL4LMs.git
cd RL4LMs
pip install -e .
- 使用:通过调用训练脚本,使用配置文件YAML配置任务。例如:使用 Rouge-1 作为奖励函数在 PPO 的 CNN/DM 摘要上训练 T5-base
python scripts/training/train_text_generation.py --config_path scripts/training/task_configs/summarization/t5_ppo.yml
GRUE:General Reinforcement Understanding Evaluation
-
GRUE是一个包含 6 个生成 NLP 任务的基准。
利用 RL4LM 框架使用 RL 研究这 6 个任务。
-
根据两类指标训练和评估研究中使用的每个 RL 算法:
- 任务特定指标 Task-specific metrics:特定于任务的指标捕获特定生成任务的性能
- 自然度指标 Nerutalness metrics:捕获非特定于任务的性能,例如流畅性fluency和可读性readability。
比较了 5 种微调算法—— Supervised、PPO、NLPO、Supervised +PPO 和Supervised +NLPO。后两种算法先形成Supervised fine-tuning,再使用各自的RL算法进行fine-tuning。
在为基于 LM 的生成训练 RL 时,我们从基准中收集了几个关键见解:
(1) 与仅使用 RL 或Supervised Learning相比,使用Supervised +RL 效果最好。初始监督微调很重要,因为它也用于 KL 约束。KL 约束很重要,因为它可以防止奖励黑客攻击(避免扰动太大,也避免完全没有扰动以获取高奖励)。
(2) 我们注意到,当数据收集预算固定时,使用数据学习 RL 的奖励函数比使用数据进行Supervised Learning表现更好。这意味着奖励建模比Supervised Learning更具数据效率。
(3) 我们注意到基于 LM 的训练的 RL 对折扣因子 gamma 敏感,使用 dropout 作为正则化以及在探索和推理期间使用的采样方法。
下面我们提供了所有 6 个任务的生成输出。
(1)Generative Commonsense Commongen 生成常识句子:根据几个词造句
(2)Question Answering Narrativeqa:根据一篇文章回答问题
(3)Summarization CNN Daily Mail:总结一篇文章(CNN的每日邮件)
(4)Table To Text Totto:用语言表达给定数据表的突出显示部分。
(5)Text Continuation Imdb Sentiment: 文本延续 Imdb 情绪:给出评论的一部分,尽可能积极地续写。
(6)Translation Iwsit 17:翻译
NLPO:Natural Language Policy Optimization
- 在大型动作空间中做出决策对于使用 RL 生成自然语言至关重要,因为该动作空间包含词汇表中的所有tokens。
(1)例如,在基于 LM 的生成中,离散动作空间大约为 50k 个tokens——这比大多数离散动作空间 RL 算法的设计目标高出几个数量级。
(2)因此引入 NLPO(自然语言策略优化)来解决这个问题。 -
NLPO 是 PPO 的参数化屏蔽扩展,它在训练时学习屏蔽上下文中不太相关的tokens。除了我们的learner policy之外,NLPO 还假定可以访问 masking policy。我们将此masking policy初始化为与我们learner policy相同。masking policy在 PPO learner 的 rollouts阶段用于屏蔽操作,而不是在masking policy的 top-p 标记内供学习者采样。这限制learner从概率大于概率参数 p 的集合中采样。masking policy通过复制学习者策略参数来定期更新。NLPO 的伪代码在Algorithm 1 中。绿色文本突出显示了与 PPO 的差异。
附录(指标)
词法指标(例如:ROUGE、BLEU、SacreBLEU、METEOR)
-
ROUGE:(Recall-Oriented Understudy for Gisting Evaluation)
(1)评估指标最早出自chin-yew lin在2003年的论文《ROUGE: Recall-oriented understudy for gisting evaluation》。
(2)是在机器翻译、自动摘要、问答生成等领域常见的评估指标。ROUGE通过将模型生成的摘要或者回答与参考答案(一般是人工生成的)进行比较计算,得到对应的得分。
(3)与BLEU指标非常类似,均可用来衡量生成结果和标准结果的匹配程度,不同的是ROUGE基于召回率,BLEU更看重准确率。
(4)主要有4种方法,分别是ROUGE-N、ROUGE-L、ROUGE-W、ROUGE-S -
BLEU:(Bilingual Evaluation Understudy 双语替补评估)
(1)意思是代替人进行翻译结果的评估。尽管这项指标是为翻译而发明的,但它可以用于评估一组自然语言处理任务生成的文本。
(2)2002年由IBM 科学家 Kishore Papineni在其论文[2]
中提出的: “BLEU: a Method for Automatic Evaluation of Machine Translation“.
(3)BLEU非常常见, 它是用于评估模型生成的句子(candidate)和实际句子(reference)的差异的指标.
(4)它的取值范围在0.0到1.0之间, 如果两个句子完美匹配(perfect match), 那么BLEU是1.0, 反之, 如果两个句子完美不匹配(perfect mismatch), 那么BLEU为0.0.
(5)实现是分别计算candidate句和reference句的N-grams模型[3], 然后统计其匹配的个数来计算得到的,后续有修正的 N-grams 精度的BLEU,还有改进版的通过normalize N-grams的改进版BLEU。
(6)用于评价语言生成、图像标题生成、文本总结、语音识别
(7)from nltk.translate.bleu_score import sentence_bleu
- SacreBLEU:由于计算 BLEU 值需要输入分好词的文本,而不同的分词方式会对结果造成影响,因此现在更常用的评估指标是 SacreBLEU,它对分词的过程进行了标准化。SacreBLEU 直接以未分词的文本作为输入,并且对于同一个输入可以接受多个目标作为参考。虽然我们使用的 translation2019zh 语料对于每一个句子只有一个参考,也需要将其包装为一个句子列表。SacreBLEU 默认会采用 mteval-v13a.pl 分词器对文本进行分词,但是它无法处理中文、日文等非拉丁系语言。对于中文就需要设置参数 tokenize='zh' 手动使用中文分词器,否则会计算出不正确的 BLEU 值。
-
METEOR:2004年,卡内基梅隆大学的Lavir提出评价指标中召回率的意义,基于此研究,Banerjee和Lavie(Banerjee and Lavie, 2005)发明了基于单精度的加权调和平均数和单字召回率的METEOR度量方法,目的是解决BLEU标准中的一些固有缺陷。
(1)该指标考虑了基于整个语料库上的准确率和召回率,而最终得出测度。
(2)METEOR扩展了BLEU有关“共现”的概念,提出了三个统计共现次数的模块:“绝对”模块("exact" module)、“波特词干”模块(porter stem module)、“WN同义词”模块(WN synonymy module)
语义度量(例如:BERTSCORE、BLEURT)
-
BERTSCORE
(1)2020ICLR由Cornell University提出来的论文:BERTSCORE: EVALUATING TEXT GENERATION WITH BERT
(2)主要是基于BERT预训练模型,使用contextual embedding来描述句子,计算两个句子之间的余弦相似度。
(3)解决了两个弊端:第一个是匹配释义,第二个是无法捕获遥远的依赖关系并惩罚语义上关键的顺序变化。 -
BLEURT:
(1)ACL 2020《BLEURT: Learning Robust Metrics for Text Generation》
(2)由于以前的ROUGE and BLEU是最早出现的句子相似度度量方法,基于N-gram重叠,这些度量标准只对词汇变化敏感,不能识别句子语义或语法的变化。因此,它们被反复证明与人工评估差距较大。 BERTscore使用句子上下文表示和人工设计的计算逻辑对句子相似度进行计算,鲁棒性较好,在缺乏训练数据的情况下也具有较好表现。
(3)作者认为,可以通过预训练结合人工评估数据的微调来同时满足度量方法的鲁棒性和表达度。基于该思路,提出了BLEURT,一种基于BERT的文本生成任务度量方法,通过对维基百科句子的随机扰动,辅以一组词汇级和语义级的监督信号来进行预训练。
任务特定指标(例如:PARENT、CIDER、SPICE)
-
PARENT
(1)Handling Divergent Reference Texts when Evaluating Table-to-Text Generation
(2)一直以来,对于生成式任务的度量标准基本被BLEU、ROUGE等统治,然而,对table-to-text的任务而言,这些标准无法反映生成文本的质量,数据集的参考句子在一定程度上和表格信息出现了偏离(diverge)
(3)本文提出一种新的度量标准:PARENT(Precision And Recall of Entailed Ngrams from the Table),将生成的句子直接和表格信息比较,从而和人类的判断更加契合。 -
CIDER
(1)《CIDEr: Consensus-based Image Description Evaluation》
(2)CIDEr 是专门设计出来用于图像标注问题的。这个指标将每个句子都看作“文档”,将其表示成 Term Frequency Inverse Document Frequency(tf-idf)向量的形式,通过对每个n元组进行(TF-IDF) 权重计算,计算参考 caption 与模型生成的 caption 的余弦相似度,来衡量图像标注的一致性的。
(3)专门用于评价图像描述(image caption)任务的评价指标,当然用于其他相关文本生成类任务也是可以的 -
SPICE
(1)Semantic Propositional Image Caption Evaluation,语义命题图像标题评估
(2)SPICE 使用基于图的语义表示来编码 caption 中的 objects, attributes 和 relationships。它先将待评价 caption 和参考 captions 用 Probabilistic Context-Free Grammar (PCFG) dependency parser parse 成 syntactic dependencies trees,然后用基于规则的方法把 dependency tree 映射成 scene graphs。最后计算待评价的 caption 中 objects, attributes 和 relationships 的 F-score 值。
来自预训练分类器的分数
- (例如:情感分数)
一些经验信息
- BLEU、Meteor、ROUGE、CIDEr 和 SPICE。前两个是评测机器翻译的,第三个是评测自动摘要的,最后两个评价 caption 的。