强化学习在生成对抗网络文本生成中扮演的角色(RoleofRLinTextGenerationbyGAN)(下)

原标题:强化学习在生成对抗网络文本生成中扮演的角色(RoleofRLinTextGener

原标题:强化学习在生成对抗网络文本生成中扮演的角色(RoleofRLinTextGenerationbyGAN)(下)

5.一些细节+一些延伸

上文所述的,只是RL+GAN进行文本生成的基本原理,大家知道,GAN在实际运行过程中任然存在诸多不确定因素,为了尽可能优化GAN文本生成的效果,而后发掘更多GAN在NLP领域的潜力,还有一些值得一提的细节。

5.1.RewardBaseline:奖励值上的Bias

在4.2节中提到,我们采用鉴别器D给予生成样本的概率得分(属于真实样本的概率)作为奖励,既然是概率值,应该意识到这些概率得分都是非负的,如此一来即便生成出再差的结果,鉴别器D也不会给出负进行惩罚。从理论上来讲,生成器的训练会趋向于降低较小奖励值样本出现的概率而提高较大奖励值样本出现的概率,然而在实做时,由于采样不全等不可控因素的存在,这样不够分明的奖惩区别将有可能使得生成器G的训练变得偏颇。

实际上,在强化学习的对话生成模型当中,就已经出现了此类问题。解决的方法很简单,我们设置一个奖励值的基准值Baseline,每次计算奖励值的时候,在后面减去这个基准值作为最终的奖励or惩罚值,使得生成器G的生成结果每次得到的奖惩有正有负,显得更加分明。记奖惩基准值为,则4.1节中优化梯度的计算公式修改为:

对应地,在RL+GAN的文本生成任务中,同样在鉴别器D对各个生成样本打出的概率得分上减去奖惩基准值,则4.2节中SeqGAN与ConditionalSeqGAN期望奖励值的优化梯度计算公式也分别修改为如下:

5.2.REGS:一人犯错一人当

细心的读者可以发现,在SeqGAN的奖励优化梯度计算公式的推导中,由鉴别器D给予的生成样本奖励得分其实是顺应序列文本的生成过程,逐词产生的,可以看到之前的推导公式中显示了对于Partly文本序列的阶段性奖励值求和再求平均。然而在起初的实验中,根据最终推导的奖励值优化梯度计算公式,鉴别器D被训练为用于对整句生成结果进行评估打分,这样的话,鉴别器D的打分对于生成序列中的每一个token都是同等的存在,要奖励就一起奖励(奖励值可视为相同),要惩罚就一起惩罚,这种做法会导致一个后果,看下面的例子。

比如有这样一个对话组(包含真实回答和生成回答):

question=['你','叫','什么','名字','?']real_answer=['我','叫','张三','。']fake_answer=['我','不','知道','。']

很显然,鉴别器D能够轻易辨识后者回答是假的,必然会给出极低的奖励值得分,但是仔细对比真/假两个回答可以发现,第一个词“我”其实和真实样本的第一个词是一样的,而最后一个字符“。”其实也并无大碍,它们其实并没有错,真正错误的是“不”和“知道”这两个词,但很不幸,鉴别器判定fake_answer的整体回答是假的,原本无辜的词项“我”和“。”也要跟着一起接受低分判定的惩罚。

让我们回到GAN+RL对文本生成模型的优化原理,假设是面对输入上文时生成对话下文的概率,我们将它拆分成逐个单词拼接的形式,每一个出现的词汇都将收到之前context的影响。

在4.1,4.2节中提到,如果生成样本被鉴别器D打出低分(受到惩罚),生成器G将被训练于降低产出此结果的概率。结合上面这条公式,倘若单独将生成序列中的一部分前缀拿出来与真实样本中完全相同,岂不是也要接受整体低分而带来的惩罚?

解决这一缺陷的直接方法就是把奖惩的判定粒度进一步细化到word或character级别,在文本逐词生成的过程中对partly的生成结果进行打分。这种处理其实在SeqGAN的论文中[17]就已经实施了,拓展到ConditionalSeqGAN中,优化梯度的计算公式应改写为如下:

公式中,是计算的关键,它代表鉴别器D在文本逐词生成过程中获得部分文本的情况下对于最终reward的估计,简而言之就是每得到一个新的生成词,就结合此前生成的前序文本估计最终reward,并作为该生成词单独的reward,SeqGAN的论文中使用蒙特卡洛搜索[21](MonteCarloSearch,MCsearch)的方法计算部分生成序列对于整体reward的估计值。而在ConditionalSeqGAN的论文中,赋予了这种处理一个名字——RewardforEveryGenerationStep(REGS)。

5.3.MCSearch&DiscriminatorforPartiallyDecodedSequences:准度与速度的抉择

上一节说到SeqGAN中使用MCsearch进行部分序列奖励估计值的计算,作为REGS操作的关键计算,其难处在于,我们并不能预知部分生成序列能给我们带来的最终结果,就好像一场篮球比赛,可能半场结束比分领先,却也不能妄言最终的比赛结果一样。

既然如此,在只得到部分序列的情况下,只得估计获得,MonteCarloSearch[21]就是其中一种估计方法,MonteCarloSearch的思想极其简单,假设我们已经拥有了部分生成的前缀,我们使用当前的Generator,强制固定这个前缀,并重复生成出$M$个完整的序列(有点采样实验的意思),分别交给鉴别器D进行打分,这个模拟样本的平均奖励得分即为部分序列的奖励估计值。

当然,使用MCsearch的缺点也很明显:每生成一个词,就要进行次生成采样,非常耗时;还有一小点,每当我们计算较为后期的一些部分序列奖励估计值的时候,总是会无法避免地再一次计算前面早期生成的项,这样计算出来的可能导致对于较前子序列(比如第一个词)的过拟合。

另外一种方法提出于ConditionalSeqGAN的论文,干脆训练一个可以对部分已生成前缀进行打分的new鉴别器D。将某真实样本的的全部前缀子序列(必须从第一个词开始)集合记作,同样将某生成样本$X^-$的全部前缀子序列集合记作,我们每次从这两者中随机挑选一个或若干个标定为或(与原序列相同),与原序列一同加入鉴别器D的训练中,这样训练得到的Discriminator便增添了给前缀子序列打分的能力,直接使用这样的Discriminator给前缀子序列打分即可获得。这种方法的耗时比起使用MCsearch要少很多,但得损失一定的准度。

一句话总结两种的计算方法:一种是利用部分序列YY出完整序列来给鉴别器打分,而另一种则直接将部分序列加入鉴别器的训练过程,得到可以为部分序列打分的鉴别器,一个较慢,另一个快却损失准度,如何选择就看大家了。

5.4.TeacherForcing:给Generator一个榜样

在开始讲解SeqGAN中的TeacherForcing之前,先帮助大家简单了结一下RNN运行的两种mode:(1).Free-runningmode;(2).Teacher-Forcingmode[22]。前者就是正常的RNN运行方式:上一个state的输出就做为下一个state的输入,这样做时有风险的,因为在RNN训练的早期,靠前的state中如果出现了极差的结果,那么后面的全部state都会受牵连,以至于最终结果非常不好也很难溯源到发生错误的源头,而后者Teacher-Forcingmode的做法就是,每次不使用上一个state的输出作为下一个state的输入,而是直接使用groundtruth的对应上一项作为下一个state的输入。

就拿Seq2Seq模型来举例,我们假设正输出到第三项,准备生成第四项:

input=['a','b','c','e','f','g','h']output=['o','p','s',...]label=['o','p','q','r','s','t','u']

Free-runningmode下的decoder会将第三项错误的输出output[2]='s'(下标从0开始)作为下一个state的输入,而在Teacher-forcingmode下,decoder则会将正确样本的第三项label[2]='q'作为下一个state的输入。当然这么做也有它的缺点,因为依赖标签数据,在training的时候会有较好的效果,但是在testing的时候就不能得到groundtruth的支持了。最好的结果是将Free-runningmode的behavior训练得尽可能接近于Teacher-forcingmode,ProfessorForcing[23]使用GAN尝试实现了这一目标。

当然,这些都是题外话,我们要回到Teacher-Forcingmode最初的motivation:训练(迭代)早期的RNN非常弱,几乎不能给出好的生成结果(以至于破灌破摔,产生垃圾的output影响后面的state),必须依靠groundtruth强行扶着走,才能慢慢进入正轨。

SeqGAN也存在这样的问题,一开始的生成器G非常弱,即便是经过一定量的预训练,也几乎生成不出好的Result,然后这些badresult给到鉴别器D必然只能返回很低的(惩罚),生成器G的训练只能根据鉴别器的打分来优化而无法得到goodexample的指导,永远不知道什么是好的结果,结果必然是恶性循环。于是,有必要在SeqGAN训练中给到生成器G真实样本的指导,也就是告诉生成器:“什么样的样本才配得到高分”

4.2节中提到,生成器G和判别器D的训练时交替进行的,由于鉴别器返回的打分是判定输入样本为真的概率,我们可以随机取出一部分真实的样本对话组,然后直接设置他们的鉴别器奖励值为(或者其他任意定义的最高分),将它们加入生成器G的训练过程中,这样生成器就能知道何种样本能得到最高的奖励,从而一定程度上避免了SeqGAN的训练过程由于一方的弱势而发生崩塌。

或者也可以这样:用训练好的鉴别器D也为随机抽样的真实样本打分,然后加入到生成器G的训练过程中,不过,一定要确保鉴别器D已经得到充分训练,至少给予任意真实样本的打分要高于baseline才行(奖励值经过偏置处理后也必须为正)。

5.5.Actor-Critic:更广义上的GAN?

首先我们回顾一下GAN中鉴别器D和生成器G优化时的目标函数:

再说说强化学习,在基于策略迭代的强化学习中,通过尝试当前策略的action,从环境获得,然后更新策略。这种操作在游戏实验环境中非常有效,因为游戏系统有封闭且清晰的环境,能够稳定地根据各种接收到的action客观地给出对应,而在现实生活中,很多时候并没有封闭清晰的环境,给定action应该得到什么样的本身也不准确,只能通过设定DIY的打分器来实现,显然这么做很难完美model真实世界千变万化的情况。

那么,能不能先学习出一个能够准确评估出奖励值的值函数,尽可能地描述环境,对各种action返回较为公正的预期奖励呢?也就是说的估计模型本身也是被学习的,这就是Actor-Critic,Actor部分采用传统的PolicyGradient优化策略,Critic部分借助“Q-Learning”学习出最优的action-value值函数,听起来有没有点像GAN的模式?来看看它的目标函数,其中指任意一中Divergence,值域非负当且仅当两个分布相同时取值为零即可(比如,KL-divergence,JS-divergence等等):

文中将GANs模型比作一种特殊形式的Actor-Critic,并比较了两者各自的特点以及后续的改进技术在两者上的适配情况。试想一下,既然强化学习技术帮助GAN解决了在离散型数据上的梯度传播问题,那么同为强化学习的Actor-Critic也为对抗式文本生成提供了另外一种可能。

5.6.IRGAN:两个检索模型的对抗

IRGAN[25]这篇工作发表于2017年的SIGIR,从作者的阵容来看就注定不是一篇平凡的作品,其中就包含SeqGAN的原班人马,作者将生成对抗网络的思想应用于信息检索领域,却又不拘泥于传统GAN的经典Framework,而是利用了IR领域原本就存在的两种不同路数的model:生成式IR模型和判别式IR模型。

光从两个模型简单的介绍来看就能丝丝感觉到它们之间特殊的联系,两种风格迥异的IR模型在GAN的思想中“有缘地”走到了对立面,我们将生成式IR模型记作:,将判别式IR模型记作:,于是整个IRGAN的目标函数为:

在IRGAN中,鉴别器D定义为判别式IR模型的逻辑回归:

于是鉴别器D的目标函数进一步写为:

当然,也不能忘了我们的baseline——,文中设置baseline为当前查询结果的平均期望。

上述是针对Pointwise情形的IR任务,不同于Pointwise情形着重于得到直接的检索结果,Pairwise情形的IR把更多精力放在了ranking上,其返回结果中全是非对称二元对,其中比与当前的查询项关联性更高。IRGAN也可以扩展到Pairwise的情形,原则是:“一切从减”。鉴别器函数将改写为:

而假设生成器G是一个softmax函数,则Pairwise情形下的变形和简化推导如下:

IRGAN在Pairwise情形下的总目标函数如下,其中,表示真实的非对称二元组,而则表示生成式IR模型生成的二元组:

结语

这一领域的发展之迅速,也许在我完成这篇Blog的时候,又有一批工作争先恐后的冒出来了,但最终的结局肯定不止于此,我也不怎么擅长结尾,也许要等待GAN来为我,为我们带来一个奇妙的结局。

THE END
1.一文看懂什么是强化学习?(基本概念+应用嘲+主流算法)强化学习(reinforcement learning),又称再励学习、评价学习,是一种重要的机器学习方法,在智能控制机器人及分析预测等领域有许多应用。 但在传统的机器学习分类中没有提到过强化学习,而在连接主义学习中,把学习算法分为三种类型,即非监督学习(unsupervised learning)、监督学习(supervised leaning)和强化学习。 https://easyai.tech/ai-definition/reinforcement-learning/
2.0084.强化学习随笔分类刘建平Pinard摘要:在强化学习(十七) 基于模型的强化学习与Dyna算法框架中,我们讨论基于模型的强化学习方法的基本思路,以及集合基于模型与不基于模型的强化学习框架Dyna。本文我们讨论另一种非常流行的集合基于模型与不基于模型的强化学习方法:基于模拟的搜索(Simulation Based Search)。 本篇主要参 阅读全文 posted @ 2019-03-04 https://www.cnblogs.com/pinard/category/1254674.html
3.你该知道的深度强化学习相关知识不过DQN在使用的时候有一定的难度。而在传统的深度学习算法中,由于我们对输入样本进行了随机化处理,因此输入的类别在各种训练批次之间,都是非常均衡且稳定的。在强化学习中,搜索会在探索阶段(exploration phase)不断被改进,进而不断地更改输入和动作的空间。此外,随着系统逐渐加深对于环境的了解,Q的目标值也会自动被https://www.51cto.com/article/616310.html
4.强化学习如何使用内在动机?澎湃号·湃客澎湃新闻本文在回顾内在动机的生理学知识的基础上,探讨了内在动机在强化学习中的应用。 「内在动机」 (Intrinsic Motivation) 这一概念最初是在心理学中提出并发展起来的。由于其在制造开放式学习机器和机器人方面的潜力,这一概念正日益受到认知科学的关注。 所谓动机(Motivation)是指生物体的行为受到三个因素影响:(1)不可抗https://www.thepaper.cn/newsDetail_forward_7551683
5.学习强化学习无法避开的两个词:ModelBased与ModelFree在学习强化学习的过程中,有两个名词早晚会出现在我们面前,就是Model-Based和Model-Free。在一些资料中,我们经常会见到“这是一个Model-Based 的算法”或者“这个方法是典型的Model-Free的算法”的说法。“Model-Based”通常被翻译成“基于模型”,“Model-Free”通常被翻译成“无模型”。可能有人会问:为什么会有这https://cloud.tencent.com/developer/article/1642194
6.我在谷歌大脑工作的18个月中,是怎样研究强化学习的?雷峰网在强化学习中,分布式的方法认为我们应该预测随机收益的分布,而不是预测它们的期望值 (Bellemare, Dabney, Munos, ICML 2017)。然而,大多数分布式智能体仍然通过将行动值 (action value)分布提取还原为它们各自的期望值,然后选择期望值最高的操作来运行。预测,然后提取。那么,为什么它在实践中表现得如此出色呢? https://www.leiphone.com/news/201903/6UJUua8oGZnc6Bj6.html
7.以学打头贯始终入心见行促发展税务部门持续强化理论武装扎实在强化理论学习中找路径、找方法,不断深化运用新时代“枫桥经验”“浦江经验”,积极探索社保费纠纷矛盾联动化解机制,广西玉林市税务局联合人社、医保、法院等多部门成立“社会保险费缴费争议联合处置中心”,发挥部门协同共治优势,实现人民群众社保费缴费争议在“家门口”解决,切实为缴费人解难题、办实事。山西省晋中市税http://shanxi.chinatax.gov.cn/web/detail/sx-11400-2641-1783714
8.西安音乐学院:在强化理论学习与研究中推进主题教育走深走实西安音乐学院弘扬严实学风,发挥学科专业优势,着力在全面学习、全面把握、全面落实上推动主题教育走深走实。 将集中学习作为主题教育的第一要务 主题教育开展以来,学校第一时间启动工作部署,召开主题教育工作会议,传达学习中央主题教育实施意见和陕西省主题教育动员大会精神,审定学校主题教育实施方案;召开主题教育工作动员会议http://www.jyb.cn/rmtxwwyyq/jyxx1306/202305/t20230512_2111040707.html
9.在强化学习的过程中,学习率α越大,表示采用新的尝试得到的结果在强化学习的过程中,学习率α越大,表示采用新的尝试得到的结果比例越,保持旧的结果的比例越。https://m.hb.huatu.com/changshi/1615754.html
10.科学网—[转载]基于深度强化学习的六足机器人运动规划在强化学习中,智能体(agent)与其周围环境相互作用,以使累计回报最大化。对于学习过程的每一步t,agent获取当前状态st,执行动作at,得到当前回报rt,到达下一状态st+1。强化学习的目标是在每一个状态st下执行最优动作a*,以使未来的累积折扣回报Rt最大化:https://blog.sciencenet.cn/blog-951291-1288193.html
11.强化学习在图对抗攻击中的应用及其策略迁移研究【摘要】:强化学习是解决序列决策问题的一项重要机器学习技术,经过长时间的发展,强化学习技术已经成功应用于机器人、推荐系统、自动化控制等领域中。虽然强化学习在这些领域取得了巨大的成功,但是它的数据利用效率非常低下。针对一个单一任务,从头开始训练一个智能体往往需要与环境进行大量的交互,这导致强化学习在一些实际https://cdmd.cnki.com.cn/Article/CDMD-10335-1020738447.htm
12.强化学习踏实奋进在敬业修身中成长学习刘书记重要讲话心得体会近日,我学习了市委书记刘军伟同志在全市领导干部大会上的讲话要点。刘书记的讲话要点中提到的五点希望和要求引起了我的思考同时也为我的工作指出了方向。作为一名人民教师,我将结合本职工作从以下几个方面加以落实: 一、进一步强化政治意识 作为一名人民教师,要不断学习提高自己的政治意识。我们面对的是祖国的花朵、也https://www.jianshu.com/p/c6fcb3c1ad8d
13.基于Python强化学习PPO算法在中国A股市场的应用(构建投资组合)Python强化学习中的PPO算法是一种在复杂环境中进行决策优化的高效方法,尤其适用于连续动作空间的问题,如在金融市场中构建和调整投资组合。本项目将PPO算法应用于中国A股市场,通过模拟交易来实现自动化的投资策略。 我们要理解PPO(Proximal Policy Optimization)算法的基本原理。它是一种基于策略梯度的强化学习算法,旨在解决https://download.csdn.net/download/weixin_39559994/85638661
14.哈尔滨师范大学:在“四个着力”中强化理论学习,让主题教育有力有我校在开展主题教育工作过程中,认真贯彻中央和省委的工作精神和具体要求,时刻牢记思想是行动的先导,理论是实践的指南,始终将理论学习作为主题教育中的首要任务,学思结合,学悟交融,学践相促,以“四个着力”深化理论学习,切实把思想伟力转化为做好我校主题教育工作的强大精神动力和实际行动力。 http://df.youth.cn/dfzl/202305/t20230510_14508805.htm
15.强化学习中无处不在的贝尔曼最优性方程,背后的数学原理知多少在星际争霸(AlphaStar)和围棋(AlphaGO)游戏中,强化学习已取得了举世瞩目的成功。而这些成功背后的核心则是用于求解马尔可夫决策过程(MDP)的贝尔曼最优性方程(Bellman Optimality Equation)。 可以说,贝尔曼方程在强化学习(RL)中无处不在,了解此方程的数学基础对于理解 RL 算法的工作原理必不可少。它是由美国应用数学家http://www.c2.org.cn/h-nd-555.html
16.从党史学习中汲全神力量,在服务师生中强化使命担当——学校办公钟黎安认为,共产党员要深入贯彻习近平总书记“七一”重要讲话精神,更加紧密地团结在以习近平同志核心的党中央周围,牢记初心使命,坚定理想信念,践行党的宗旨,继续为实现人民对美好生活的向往而不懈努力。高振华认为,共产党员必须锤炼绝对忠诚的政治品格,强化义不容辞的使命担当,汲取继往开来的精神力量,从党史中学习敢闯敢https://office.shnu.edu.cn/72/09/c16587a750089/page.htm
17.数学思想方法在数学学习中的重要性另一方面,有些教师在教学过程中并没有充分重视数学思想方法的重要性,他们认为学生最重要的是学好数学知识,提高数学成绩,忽视了数学思想方法对于学生核心能力素养的推动作用。因此,为了推动数学思想方法在小学数学学习中的有效渗透,强化学生认知,教师需要进行多方面的探索和实践。https://www.fx361.com/page/2021/1030/9030734.shtml