继上上周的机器阅读理解和上周的自动文摘分享之后,本周开始分享几篇Deep Reinforcement Learning在NLP中应用的paper。在网上看到过这样的言论,一些大牛认为深度增强学习是人工智能研究的未来,是真正的AI,还给出了一个这样的公式:DL+RL=AI。其实,增强学习一直都是机器学习中常用的一种无监督学习方法,随着deepmind公司的一些好玩的成果,比如:用程序来玩简单的video games,AlphaGo战胜李世乭等等,深度增强学习随之兴起。今天将分享的paper是Language Understanding for Text-based Games using Deep Reinforcement Learning,作者是来自麻省理工学院的博士生Karthik Narasimhan和Tejas Kulkarni,文章最早于2015年6月30日刊在arxiv上。

在介绍深度增强学习在NLP中的应用之前,需要简单介绍下增强学习和深度增强学习。

上图来自于deepmind David Silver的slide。

图中的大脑可以理解为一个agent,并且这个agent有一个action集合,地球可以理解为environment,并且environment每个time step都有一个状态state。增强学习想要做的一件事情是agent在某一个time step中接收来自environment的state,执行一个action,然后从environment中得到一个reward,根据state和reward继续选择一个action,目标是使得reward最大。整个过程是一个不断交互和反馈的控制过程,通过引入值函数Q(s,a)来计算当前state和action对应的未来所有reward的期望,这里涉及到一些细节,推荐看智能单元知乎专栏的系列博客《DQN从入门到放弃》,包括Bellman Equation、多种增强学习模型、ε-greedy policy等等内容。

深度增强学习,这里专指DQN(Deep Q-Network),是将深度学习模型引入到了传统的Q-Network中,用深度神经网络来近似Q函数,构造输入和输出数据,进行端到端的训练来学习这个问题。deepmind那两篇有名的paper,Playing Atari with Deep Reinforcement Learning和Human-level control through deep reinforcement learning,第一篇最早提出了DQN的方法,另一篇提升了第一篇的模型,并且发表在了nature上,deepmind做的事情都是用计算机程序来玩video games,并且在多个游戏中取得了比人类玩家更好的成绩。由于都需要处理游戏画面,所以encoder部分都是采用多层CNN提取feature。

简单介绍了一些预备的内容之后,下面来介绍本文的内容。本文是基于一个文字游戏来展开的,通过text state,通常是一段比较长的介绍性文字,来给出一个合适的action进入下一个state。如下图:

上图中从state1 The old bridge通过选择Go east这个动作进入了state 2 Ruined gatehouse。

如果对DQN的相关东西有所了解的话,本文的模型就显得非常简单了。

模型分为两个部分,第一部分是representation generator,将state中的text用lstm处理,每个word对应一个time step,然后将所有time step的向量做一次平均池化处理,得到该状态的表示。video games因为输入的是游戏图像,所以用cnn来处理,而text games都是文字,用rnn来处理也最合适不过的了。另外一点是,本文也考虑过用lstm的last hidden state作为state的表示,但收敛速度没有平均池化快。

第二部分是action scorer,就是一个多层的神经网络,用state的表示作为输入,得到的输出是集合中每个action的score,而不是每一对action-state的score,这样的计算效率更高一些。

由此用神经网络模型近似得到了Q函数。本文特点强调了一点,为了保证计算效果,只选取游戏命令是一个action(比如:go)和一个object(比如:east)的组合,当然这一类命令也占据了游戏命令的绝大多数。从模型图中可以看出,计算action和object是同样的结构,最终该命令的Q值由action和object的Q值由两者的平均值来代替。

关于训练方法,和DQN也区别不大。最关键的一点是构造训练数据集,每一条数据格式是(s(t-1),a(t-1),r(t-1),s(t)),每次进行游戏的时候,都会有一个当前的state、action和reward,执行完action之后会得到一个新的state,将这四个元素保存为一条数据,积累大量的类似的数据,保存到一个数据池中,每次训练的时候从池中sample出,这个池是一个FIFO的队列。具体可看下面的流程图:

这里简单地说一下ε-greedy是怎么一回事。ε通常是一个非常小的值,这种策略一般被称为exploration,探索性的策略,面对未知的情况,随机选择一个action进行执行,探索一下会有什么情况发生,这种策略容易更新Q值;greedy策略,通常称为exploitation,利用性的策略,选择令Q值最大的action,不利于更新出更好的Q值,但可以得到相对更好的测试结果。

训练的目标函数是target与近似函数的差的平方,用一般的优化方法就可以训练了。其中,近似函数是我们需要学习的模型,target是通过Bellman方程来进行计算的(这里面涉及到的概念可以参考前面提到的智能单元的博客来学习)。

读完本文,有几点思考,分享一下:

1、增强学习看着也挺像监督学习的,到底有什么优势和区别吗?

我想它最大的优势是不是在于那个动态的、大型的数据池,可以源源不断地提供样本,可以说是无穷无尽的样本,这一点比一般的监督学习更加厉害,因为毕竟监督学习需要给定一个自带标签的数据集。通过不断的学习,来得到一个不错的模型。

2、DQN和经典的增强学习相比优势在哪里?

其实这个问题从某个角度上来看可以等同于Deep Learning与经典的机器学习相比,优势在哪里?一方面是神经网络模型强大地非线性函数近似,另一方面就是不需要人工feature,所有的feature都是从data中学习来的,典型的data-driven。

3、DQN在NLP中的应用,相比于DQN几乎没有什么新的东西,只是做了一些概念的替换。比如:在生成问题上,都是计算一个P(word|context),这里将DQN中的state理解为context,将word理解为action。不过非常不同的一点是,nlp中的action space会非常大,因为对于生成问题来说,词汇表会变得非常大。这个问题该如何解决呢?大家可以期待明天的分享Generating Text with Deep Reinforcement Learning。

来源:paperweekly

原文链接

Language Understanding for TextGames using Deep Reinforcement相关推荐

  1. 【文本分类】BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

    ·阅读摘要:   Bert是继Transformer之后的又一杰出的模型.Bert是一种预训练语言模型,是在GPT.Elmo.Transformer的基础上提出的.基于Bert的多个NLP领域任务都取 ...

  2. BERT论文阅读(一): Pre-training of Deep Bidirectional Transformers for Language Understanding

    BERT三大核心: pre-training bidirectional==>alleviates the unidirectionality constriant of fine-tuning ...

  3. 预训练模型:BERT深度解析《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》

    目录 1. 背景 2. 什么是 Bert 及原理? 3. 论文内容<BERT: Pre-training of Deep Bidirectional Transformers for Langu ...

  4. 《BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding》

    目录 <BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding> 1.Bert研究意 ...

  5. 论文译文——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

    文章目录 摘要 1. 简介 2. 相关工作 2.1 Unsupervised Feature-based Approaches(基于特征的无监督的方法) 2.2 Unsupervised Fine-t ...

  6. Paper:《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding用于语言理解的深度双向Tr

    Paper:<BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding用于语言理解的深度双 ...

  7. 【论文阅读笔记】BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

    BERT的出现使我们终于可以在一个大数据集上训练号一个深的神经网络,应用在很多NLP应用上面. BERT: Pre-training of Deep Bidirectional Transformer ...

  8. 论文阅读——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

    BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding Abstract 作者引入了一种新的语 ...

  9. 《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》论文翻译--中英对照

    文章目录 1 Introduction(简介) 2 Related Work(相关工作) 2.1 Feature-based Approaches(基于特征的方法) 2.2 Fine-tuning A ...

最新文章

  1. phpcms 指定id范围 调用_Elasticsearch v7 中Java High-Level REST Client同步和异步调用
  2. 具有ELK的APIGEE API网关日志管理(Elastic Search,Logstash和Kibana)
  3. 小米全新潮流系列小米Civi首销5分钟销售额突破2亿元
  4. Linux下实现多线程异步管道
  5. 快过年了,用JS让你的网页放烟花吧
  6. kettle工具的设计原则
  7. [数据结构复习]B树B+树
  8. linux实现开机自启动脚本
  9. 2018CCPC网络赛 HDU 6444: G. Neko's loop(线段树)
  10. 01_6_SERVLET如何从上一个页面取得参数
  11. 【软件工程】软件测试报告——软件测试说明书
  12. xp服务器文件写保护怎么删除,XP系统下u盘写保护怎么去掉?
  13. 工作之余的抓包乐趣,fiddler抓包、Wireshark抓包
  14. 在MAC下如何显示隐藏文件夹
  15. java股票接口怎么样获得?
  16. dw中css面板在哪,请问下美工设计师:1、怎么在DWCS5设计面板里面找到CSS代码? 爱问知识人...
  17. HDLBits Lemmings3
  18. linux Windows双系统时间不一致的解决办法
  19. 程序Crash(奔溃)记录和分析工具——Crashlytics
  20. Linux 指令备忘录

热门文章

  1. tcl如何获取键盘输入
  2. eltable 无数据文案修改_el-table的二次封装详细版(一)
  3. 神经网络 异或_深度学习入门笔记(2)线性神经网络
  4. java resultset 映射到实例_Java中,将ResultSet映射为对象和队列及其他辅助函数
  5. 计算机基础知识运算符,计算机基础运算符
  6. 模板设计模式_23种设计模式之模板设计模式
  7. 优化服务器犯法吗,服务器稳定性对于SEO优化有什么影响
  8. python图合并_Python-numpy实现灰度图像的分块和合并方式
  9. 系统与服务器断开了连接不上,win7系统电脑玩跑跑卡丁车出现与服务器断开连接的解决方法...
  10. docker安装指定版本的tag镜像