首先,什么样的问题适合用RL?
- sequential decision making问题,进行序列决策(action),并有reward可以衡量action的好坏程度
- 事先没有label告诉你,你应该选择什么action,要自己反复试错
综合我目前所看过的论文,我总结成以下四类:
1. 常见的seq2seq问题
一种是文本生成任务,比如摘要生成,对话系统,在decoder-lstm的每一步,action是选择生成哪个词,参考这篇最基本的seqGAN,在生成器G中生成一个文本序列(用蒙特卡洛树搜索来补全序列),判别器D对这个序列产生reward,再通过policy gradient去更新G:
Sequence Generative Adversarial Nets with Policy Gradient
现在也有很多改进工作了。
另外我了解到一位师兄发表在nips-17的工作,叫做推敲网络,做的也是文本生成,在第一层decoder先生成初步文本,输入到第二层decoder进行二次生成,我感觉很像文本纠正的工作,我觉得这里也可以用上RL,选择文本中哪些地方需要修改。
http://papers.nips.cc/paper/6775-deliberation-networks-sequence-generation-beyond-one-pass-decoding.pdf
还有一种是序列标注任务,比如分词,训练可能可以有多种分词情况,理论上都是对的,但label只标注了一种是对的,这样loss和我们所关心的指标不完全一致,这里用RL就可以改善这种情况,RL比较适用于一对多问题,如果单纯是一对一的可能就没必要了。
2. 利用RL辅助学习语义向量,再使用下游任务进行评估。
比如stop,skip或者skim reading,进行信息过滤,虽然理论上lstm也可以实现信息的过滤,但是还是要经过内部四个门进行计算,所以这类工作的motivation是快速阅读。
stop reading:在每一步判断是否需要early stop,但我觉得这样不是很合理,万一后面的就是重要的信息呢。
skip reading:所以有人做了跳读,在当前step预测需要skip掉后面n步(我自己觉得是有一些不合理的地方,然而人家发了ACL-17,提供了一个新的idea也是有意义的[1704.06877] Learning to Skim Text)。另一种跳读的方法,在当前step只判断这个词需不需要skip,iclr-18上也有好几篇了。
skim reading:略读,这篇使用了双LSTM轮转机制进行阅读,比直接skip效果更好,[1711.02085] Neural Speed Reading via Skim-RNN
但是policy gradient在这里有高方差问题(其实也有改进方法,比如加一个),然后有人也在尝试用一些别的softmax方式去仿sampling操作。
还可以学习文章结构,比如这篇论文,在word-level的每一个step中,判断词组起始位置,再以一个词组向量为单位,输入到phrase-level的lstm中,得到最终的文章向量。word-level做的其实是序列标注的事情,但是目的是学习到有结构信息的句向量,再应用于其它的任务上。
http://aihuang.org/static/papers/AAAI2018_ClassifyAndStructure.pdf
另外,与上面这个论文同一个实验室的人,同时发了一篇用RL进行去噪的论文,其实就是用RL来挑选句子,也是以分类结果作为reward。
http://aihuang.org/static/papers/AAAI2018Denoising.pdf
这个工作是有意义的,从这个论文出发,我有两个想法,一个是开放域的事实问答,百度到的信息很多都是有噪声数据,我们可以用RL来筛选一些数据;另外一个是RL是否也能学到哪些是高质量的标注数据,利用这些数据去重新标注噪声数据呢。事实上工业界很多数据是没有标注的,需要花费大量人力和金钱,之前我看到有人说,看一个公司有没有认真搞AI,你就看他请了多少打标注的工程师,那商汤是真有钱,标数据的就有很多人,无监督学习还是一条漫长的路。
以及这位答主所说的,更准确捕捉词/句的意思,我觉得这个思路很棒:
https://www.zhihu.com/question/47548097/answer/257798360
3.用RL对模型进行微调
我之前看到有用RL来调参的,好像是调整RNN的层数或者维度,CNN也有,我一时找不到链接了,以后看到再放上来吧。
4. Text Game游戏类
这个其实就是属于游戏领域了,video game是图像,用cnn处理游戏画面,text game是文字,用lstm进行处理,这篇论文用的是DQN:
[1506.08941] Language Understanding for Text-based Games Using Deep Reinforcement Learning
5. 待定
肯定还会出现别的应用场景,i promise
那什么样的问题,不适用RL的?(不符合RL的特点,就是不适合的啦)
比如说,试图用RL来做监督学习的事情,知乎有人提过这个问题:如何利用强化学习提高文本分类的效果?,RL可以做文本分类没错,但是RL并不是直接用在分类层,而是学习特征再应用于分类层。这里根据题主的描述,对于多分类任务,如果强行把action当成属于或不属于该类,这种就是没必要的!已经有了明确的lable告诉你,你应该做什么action,而且序列之间的决策也是相互独立的,不符合强化学习的特点。