博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Generating Text with Deep Reinforcement Learning
阅读量:6855 次
发布时间:2019-06-26

本文共 1758 字,大约阅读时间需要 5 分钟。

上一篇介绍了DQN在文字游戏中的应用,本文将分享一篇DQN在文本生成中的应用,将一个领域的知识迁移到其他领域应用的时候,都需要做概念上的等效替换,比如context可以替换为state,被预测的word可以替换为action。本文分享的题目是Generating Text with Deep Reinforcement Learning,作者是来自National Research Council of Canada的Hongyu Guo研究员,文章最早于2015年10月30日submit在arxiv上。

语言模型往往用来生成文本,在很多例子中都有应用,比如:自动文摘、bot、机器翻译、QA等等。本文想要做的事情是用DQN来生成文本,起到一个语言模型的作用,并且这是第一次尝试用DQN来生成文本。仔细想想,DQN在解决video games时遇到的情况和现在不同,state可能还好,可生成的action数量远远大于游戏中action的数量,所以,如何解决action的问题对于DQN在NLP中的应用前景至关重要。目前来看,读此类的paper,需要关注的有两个部分:

1、action的问题如何解决?

2、DQN中每条数据集包含的元素与NLP问题中各个元素的对应关系。

本文解决第一个问题采用的方法是,用传统的语言模型decoder来为DQN的action生成candidated actions,虽然这个actions集合是动态,但对于每一条数据来说,action的数量只有很少了,与video games差不太多了。

NLP不像video games直接可以用游戏画面作为输入,用多层CNN提取feature进行action选择,因为text不仅仅是一个序列,而且是变长度的,所以一般来说也都是RNN来处理。本文模型如下图:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

首先,回答关心的第二个问题,DQN中各元素的对应关系(transition tuple)。

DQN中:(s(t),a(t),r(t),s(t+1))

本文:([EnSen(t),DeSen(t)],y(t),r(t),[EnSen(t),DeSen(t+1)])

整个模型是一个迭代decoding的过程,通过LSTM decoder生成最初的DeSen(t)之后,开始不断地迭代。DeLSTM负责提供actions集合,在decoder的每一个time step,DQN会从DeLSTM为其生成的actions中选择一个可以获得最大reward的action作为该time step新生成的词,用这个新词来代替之前的旧词,生成新的状态DeSen(t+1),依次迭代下去,每一次迭代都只生成一个新词来代替旧词,直到最后一个新词被生成。这里的reward r(t)是计算target sentence和DeSen(t+1)的相似度得来的。

本文在这个模型的基础上,尝试了在decoder部分用双向的LSTM来表示,并且用一个光滑的BLEU来做reward。这一点与Neural Headline Generation with Minimum Risk Training这篇文章从某一个角度来说有一点点类似,本文是用最终的评价指标BLEU作为reward,而那篇文章是用ROUGE指标作为优化函数,最终取得了非常令人满意的结果。

整个算法流程大体上都是遵循DQN的框架,只是细节有一些不同,如下图:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

实验部分,用了10000个sentences作为训练集,source和target是一样的,是一个autoencoder问题,对比了只用LSTM decoder和本文模型的结果,如下表:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

验证了本文方法的有效性。

本文较前一篇文字游戏的文章更难的一点是处理大量actions的方法,上一篇其实仍旧是个游戏,actions的数量在一个非常有限的范围内,本篇是做语言模型的,actions和词汇表一样大,这是DQN在NLP中应用最头疼的问题。本文用了DeLSTM在每个time step中预测出的高排名词作为候选actions,很好地解决了这个问题,那么到底有没有更好的方法来减少actions呢?有没有不需要用这么复杂的模型来做处理呢?期待后续的研究。

来源:paperweekly

转载地址:http://rviyl.baihongyu.com/

你可能感兴趣的文章
layer.js子窗口关闭并传数据到父窗的方法
查看>>
koa2入门(2) koa-router 路由处理
查看>>
记一次中台数据传输同步Elasticsearch失败的车祸现场
查看>>
找暑期实习总结
查看>>
转载:技术人员的管理思维观
查看>>
如何使用Dilworth定理
查看>>
7.11 求总和的百分比
查看>>
Python入门
查看>>
《CLR via C#》读书笔记 之 类型基础
查看>>
WPF中RadioButton的分组
查看>>
JavaScript new对象的四个过程
查看>>
Docker的Mysql数据库:把数据存储在本地目录
查看>>
javascript 判断是否是PC还是手机端
查看>>
存储过程起步
查看>>
【转】Linux常用命令
查看>>
动量法应用NASA测试不同飞机机翼噪音
查看>>
广搜,深搜,单源最短路径,POJ(1130),ZOJ(1085)
查看>>
简单深搜
查看>>
HDU 3625 第一类斯特林数
查看>>
HDU 5726 GCD
查看>>