强化学习在文本生成nlg上的作用

目前强化学习在文本生成上可以协助训练出更好的模型,主要用于解码输出端,目前的文本生成都是通过极大似然估计优化模型,也就是在解码层使用交叉熵损失让输出的序列和ground_truth一模一样,这其实并不符合nlg的原意。
比如:

ground truthI want to book a plane ticket, can you help me?
decoder 结果Can you book a ticket for me?

这两句话意思差不多,decoder出来的结果是符合,但是这两句的交叉熵损失肯定回特别大,让模型去学习与ground truth一模一样的句子,这在nlg中是没有必要的。

本文是借鉴:链接 进行自我学习和理解,建议阅读原文更有用哦

1、机器翻译
论文: Minimum Risk Training for Neural Machine Translation(ACL2016)
可以由上面的例子看出来,通过极大似然估计用交叉熵做损失函数,不太符合nlg的初心,所以这篇文章在损失函数中添加了一项
原nlg loss:
在这里插入图片描述
论文提出的loss:其中下标y表示是所有decode的一个子集,deta(y, y(s))表示模型结果和ground-truth之间的差异性
其中下标y表示是所有decode的一个子集,deta(y, y(s))表示模型结果和ground-truth之间的差异性。

对应到强化学习
状态:某时刻预测的某个文本序列
状态空间:该时刻所有可能的文本序列集合
策略:文本序列的概率分布
动作:从文本集合(状态空间)挑选句子
反馈:这个句子对应的loss值(用的论文提出的loss)

关于论文所述的排序不等式,原链接写反了,正确的示例:在这里插入图片描述
顺序不等式>=乱序不等式>=倒序不等式
传统loss和新添加的deta项分别对应排序不等式的a,b两项,那原目标损失函数经过变换后,新的目标函数值是小于等于原损失值,这样就是最小化新的损失函数,方向不变。
这里的目标就是倒序不等式
在这个loss下,文本序列和ground-truth差异越小(如y1),其对应的概率分布应该越大,整体loss才会越来越小。

这个改进可以一定程度缓解nlg训练死板的问题(和ground truth一模一样的句子),但是状态空间是该时刻所有可能的文本序列集合,所以在这里对于序列集合,采用抽样的方法取一部分(实际就是 sampling decoder)。
因为这里实际的集合是原始集合的子集,所以需要对原概率集合重新归一化,得到新的概率分布。简单来说,比如序列中某个token,开始是其可能为N(vocabulary size)个单词的概率和为1,现在因为只用了子集,那么可能就是子集中该token位置出现的那几个单词的概率和为1。

说实话,看下来感觉和强化学习扯不上什么关系(当然本人也不太懂强化学习),就是以前一个sample只计算一个loss,把inference阶段的解码搬到训练过程使用,多生产了几个可能的解码序列,计算所有的loss,然后在返回优化模型。

原知乎文章还介绍了几篇自动摘要相关的论文,但是原理大差不差,都是用强化学习改造损失函数,所以这里懒得介绍了。感兴趣的去看看原文章。

再在这里总结一下ChatGPT里面的强化学习,虽然论文没公布,但是官网还是写了点东西的。在这里插入图片描述

Step1: 先在prompt库中抽一个prompt,人工回答该问题,用来微调GPT-3.5。
Step2: 在prompt库中抽一个prompt,用几个语言模型生成多个回答,人工给这些回答排序(从好到差),然后用这些数据训练奖励模型Reward Model
Step3: 再从数据库中抽取一个prompt,利用从监督policy中初始化的PPO模型得到输出,然后通过步骤二中的奖励模型得到每个输出的奖励,这个奖励再通过PPO模型去更新policy。这其实就是强化学习,目标就是policy

instructGPT论文:
使用强化学习学习人类反馈,用以微调GPT-3. 用人类的偏好作为一个奖励信号微调模型:首先雇了40人的团队去给数据打标签,根据他们在筛选测试中的表现来标记我们的数据

强化学习 (视频链接

在这里插入图片描述

  • 第一层
    • agent
    • enviroment
    • goal
      agent在enviroment中达成goal
  • 第二层
    • state :agent和enviroment处于某种state,比如英雄联盟,这个state包括敌我经济,等级,位置,技能cd等
    • action:在某个state下,agent要做出的行动,即为action
    • reward:agent在一个state下,采取了某种action,所得到的即时反馈,即为reward,这个值很多时候为0,比如围棋游戏,只有在最终赢棋的时候才会有奖励,其他任何一步下棋,可能其奖励都是0. 篮球比赛最终目标goal是赢得比赛,但是奖励可以由己方得分的分数减去对方得分的分数。所以reward应当由goal所决定
  • 第三层(核心)
    • policy:某状态(state)下应该采取什么行动(action),f-(action) = policy(state)
    • value:policy取决于value,value分为两种:
      • state-value状态价值函数(输入为状态,输出为实数value,实数为状态的价值,预期未来所得到的奖励之和,也就是说处于当前状态下,玩家在将来所得到的所有奖励的期望值)
      • state-action value(在某种状态下,所采取的某种行动的价值,这里的价值和上面的价值一样,在某种状态下,玩家应该选择价值最大的行动)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值