雷锋网 AI 研习社按:当 AlphaGO 横扫之后,越来越多的学者意识到强化学习在人工智能领域所扮演的重要角色。同时随着深度学习的发展,应用深度学习,很多自然语言的传统难题得到突破。另外,引用 David Silver 的一句话:深度学习 (DL)+ 强化学习 (RL) = 人工智能 (AI)。
近日,在雷锋网 AI 研习社公开课上,广东工业大学叶志豪介绍了深度学习和强化学习两大利器如何结合并应用于 NLP 中的文本生成和对话任务。公开课回放视频网址:
叶志豪,就读于广东工业大学,主要研究方向为深度学习,强化学习,自然语言处理,对话及问答系统。
分享主题:介绍强化学习及其在 NLP 上的应用
分享提纲:
1、强化学习与深度强化学习介绍。
2、强化学习在文本生成的应用代表。
3、强化学习在对话任务的应用代表。
雷锋网 AI 研习社将其分享内容整理如下:
我今天要讲的是强化学习及其在 NLP 上的应用,为什么要讲强化学习和在 NLP 上的应用?因为我觉得强化学习在 NLP 上有很大的的应用前景。
我今天主要讲强化学习和其在 NLP 上的简单应用,因为强化学习的门类很多,想要深入了解的话,内容太多,它在 NLP 上的应用也很多,不同方向有不一样的应用。今天主要讲解它在文本生成和对话系统上的应用,因为我对这个方面了解比较深入,最近也在做这个课题,如果你们有兴趣也可以关注我的知乎专栏:AI 遇见机器学习。
在讲解中,我会介绍几篇代表性的论文,我的工作会放在最后跟你们讨论,我们现在开始讲强化学习。
我们先看一下强化学习是什么,强化学习有两个主要组成部分,一个是 agent,另一个是环境。
举个例子,在下围棋的时候,alpha Go 就可以看成是一个 agent,其他的 agent 主要是给出一个动作、一个环境,然后它会记忆环境给它的一个观测,给出自己的一个动作,在给出自己的动作之后,一般会有环境回馈一个奖励机制给它,然后这个奖励可以是正的,也可以是负的,负的就变成了惩罚。
对于环境,它首先是接收了一个来自 agent 的一个动作,然后接着会出 agent 的一个观测,类似刚才讲解过的流程,它在接收到一个 agent 之后也会反馈一个信号给它,这就是一个大体流程,我们研究强化学习,主要研究 agent 的一个决策。
比如,alpha Go 是一个 agent,环境可以看成是围棋的规则,即下棋的一个形式。强化学习,影响未来对 agent 的一个反馈,它的动作会影响它的反馈,如果是比较不好的动作,环境会给它一个负的惩罚,agent 的每一个动作都会影响它的未来的状态,状态是有些人懂,有些人不懂,关于未来的状态我们之后再做解释。
刚才也提到,给出一个动作之后,环境会给出一个奖励的信号(可能正也可能负),我们的目标,「agent 什么时候才是一个成功的(有利于我们的)agent」,如 alpha Go,什么时候它才能在围棋上战胜人类,这时是看它的 reward,如果在 reward 是好的情况下,什么是赢,什么是输,我们肯定更希望 agent 每局都赢,每局都是一个正的奖励信号。
接下来,讲一下强化学习和监督学习的区别,主要的区别可以归纳为两点。和监督学习比较,强化学习的信号是一个奖励信号,有样本、有标签,然后就是输入的不同。因为我们常见的,像我们的输入模型,它们都是独立分布的,但是对强化学习来说,一般它是一个序列,也就是说它的每一个动作的输出和它的输入是有关系的,它两次的输入有可能是相关联的,很大程度上一般都是相关联的,这两点是强化学习和监督学习的一个区别。
另外的一个区别,是强化学习的一个应用,观察上图,可以看到强化学习的很多应用,比如在计算机科学、工程学、数学、经济学方面的应用,但这是非常多的应用,而每个人感兴趣的地方也不一样,大家可以选择自己感兴趣的自行了解。
简单介绍一下强化学习的一些概念,首先是状态,环境给一个观测给 agent,然后 agent 给一个动作给环境,环境再反馈一个奖励信号,全部组成起来。换句话说,不同的观测,agent 会给出一个不同的动作,不同的动作,环境也会给出一个不同的奖励,这一系列的一个经历或轨迹,就变成了一个状态。
举个例子,我们在下围棋的时候,围棋中有 19*19 的格子,每一个格子对应不同的动作,但是每一个格子对应不同的动作之后,会有一个奖励或者有一个惩罚,这一系列的一个轨迹就会形成一个状态,agent 和环境的一个表示,也存在环境的配置可能不够奖励机制的限定之类的情况。
策略:分为确定性策略和随机策略。
确定性策略,从字面意思上理解比较清楚,确定性策略就是指在某一个状态下,它的动作应该是确定的,比如我们刚才举例的围棋,某一个格子上要不要落子,这个策略是确定的。
随机策略,随机策略就是在某一个格子上,「下不下」是由概率分布,比如「下」的概率是 80%,「不下」的概率是 20%。当然,在现实应用中会复杂很多。
Value function:分为两种,一个是 V-value function,一个是 Q-value function,但是这里因为时间有限,我们就只介绍 Q-value function,它表示的是未来的总的 reward 的一个估计,或者是一个期望,它表示当前策略的一个状况,也就是当前策略的一个好坏程度,它的定义是上图(下)的一行公式(截自教材),公式中都是顺时的一个奖励,表示一个随着 t 的增加然后递减的过程,因为它是(0,1)之间的,表示某个策略的好坏程度和总的一个价值,这就是说这个策略的价值是这样的,这里的 value function 可以定义为 Bellman 等式,该公式的推导过程这里不作讲解,我们可以看直接结果,这个等式可以求解下一个函数,利于求解它的策略。对于一个应用,它肯定是有一个最优的价值函数,比如,围棋方面可能会有一个最优的价值函数,一般来说,最优的价值函数对应的都是最优策略。
比如,下围棋的时候,给出一个状态函数,其实我们最重要的是得出那个策略,这个策略就决定了我们下围棋的最后结果,我们想求它的最优策略的话,一般是求它的最优函数来确定。
根据这些不同的方法和不同的角度,对强化学习的分类,强化学习的分类方式有很多种,这里给出了 value-based RL(基于价值函数),policy-based RL(基于策略的函数),model-based RL(基于模型的函数)的分类,可以按着顺序来了解。
value-based RL(基于价值函数的强化学习)
基于价值函数的强化学习,它先通过对现状进行一个价值函数的估计,进而去提升策略,估计这个策略,再重复循环,再估计当前策略下的函数,再用当前价值函数来提升它的策略,两步,第一步估计价值函数,第二步是提升它的策略,这两步一直循环。
基于值的函数分为在线学习和离线学习两种方式,在线学习的代表学习方法是 Sarsa,离线学习代表的是 Q-learning。
policy-based RL(基于策略的强化学习)
基于策略的强化学习,一开始先估计它的值函数,经过价值函数进一步得到它的最优策略,但是基于策略的强化学习直接估计它的最优策略。但是我们估计这个最优策略的时候,同时也必须由那个自然数来进行领导,一个拟合或者使它得到了那个奖励最大化。
基于策略的强化学习,代表性的有策略梯度和 REINFORE 算法。另外,图(右上)可以看出它们是有交叉的,这些交叉可以是 AC 算法或比较高级的一些算法。
model-based RL(基于模型的强化学习)
强化学习分为两部分,一个是环境,一个是 agent,但很多时候,环境的观测是不完整的,或者是没有那个环境的,这时,我们可能需要提前去模拟出这个环境,我记得有幅图比较形象,有环境的MDP是真实地球,模拟环境可以看出整个地球的地图,也就是地球的模拟。我们进一步利用这个模拟出来的地球来求它的价值函数和最终策略,我们比较熟悉的搜索之类的就是这种代表性的算法。
下面来介绍什么是深度强化学习,以我的理解,深度强化学习指的是拟合它的策略、价值函数、模型。深度学习一般来说就是深度神经网络(其他深度树之类的不在考虑范围内),它还有个特点:利用梯度下降或者其他拟合改进之后的一个算法来拟合。现在,深度强化学习也越来越强大,不断得到发展。
deep learning 的话其实很早就有了,它通过先估计值,通过这个价值函数,再进行一个策略,或者最大化价值函数得到那个策略,很早之前就有一个拟合,是用非线性拟合的方式,去拟合这个价值函数,输入一个函数,就是 Q-value function。
此前的那些用拟合和非拟合工具,存在两个主要的问题,这两个主要的问题,会导致用线性、非线性或者那些拟合网络,有时会导致偏差,继而会导致样本之间是有很强的相关联性。有一个假设,它是独立分布的,如果样本有一个很大的相关联度的话,会产生一个偏差。另外一个就是它的偏差是不稳定的(可以这么理解)。
deep Q-learning 根据以下三点进行改进,使它的能力或者 DQN 的那些应用也非常成功。
一、deep Q-learning 使用了深度卷积神经网络,深度神经卷积网络在 imageNet 上有很多成功的应用,卷积神经网络也有非常强的拟合能力,输入和输出之间非常多的线形操作,这是我们想要的。
二、为了解决刚才提及的两个主要问题,deep Q-learning 采用了随机采样,同时,这两个主要问题是离线学习的做法,通过之前的样本或者别人的样本来进行训练,这样会随机对样本进行打乱,这里其实做了一步,将样本的相关性打乱,变得更加随机、更加独立分布。还有一种输入法是利用别人已经训练好的样本,那些更好的轨迹或者状态之类的进行训练,类似于站在别人的肩膀上看世界,这样更加的好,也会更加的适合卷积神经网络去训练
三、deep Q-learning 用 Q-target,Q-target 是之前的一个参数,它是固定的,它给出的值,可以看 loss function 这里,公式的具体讲解大家可以回放公开课视频至第 24 分钟进行查看。
下面来讲解基于训练的,我记得 alpha Go 那里也是 process 过的,它跟前面讲解的方式不一样,它是直接输入一个状态,然后输出动作或者策略,我们要拟合的是由动作到神经之间的神经网络,但怎么拟合?
一般来说,我们先对这个应用进行采样,先下一万盘围棋,记忆每一盘的轨迹,并且标记下来,利用大量的样本进行拟合,如何设计奖励机制是很重要的一点,围棋可以利用它的规则进行设计,我们利用这种机制让更好的轨迹更有可能发生。换句话说,我们利用那些奖励机制,发展成我们想要的动作和策略,如果设计得很好,就能很好拟合从状态到设计的拟合。
关于这样做的好处和坏处,最突出的好处是,我们之前提到的 Q-learning 和基于值的强化学习,它们先通过估计价值函数,然后这个价值函数再去进一步得到它的策略。但是,我们怎么实现从价值函数到策略的转化,还是通过最大化那个价值函数,在每一个动作下最大化那个价值函数,得到那个动作或者策略。
但是如果你的动作很多,或者是一个连续动作空间的话,很有可能对 GPU 消耗过大,电脑的计算能力无法承受,就会变得很低效。如果是高维或者连续型的一个空间的话,用 growth network 就可以很好解决,因为从状态到动作,直接输出的是一个动作,而不是一个价值,从价值再去映射到它的策略,映射那一部分已经被我们去掉了,如此一来,我们就可以减少大量的计算。另外,它可以学习到随机性的一个策略。
关于坏处,最重要的是一个高分差的问题,可以使用其它计算机类的方法进行解决。
现在讲一下确定性与随机策略的区别,前面给出的是它们的好处。
如果是随机性策略的话,会得到更多探索性。当是一个确定性的话,它会更加有效,但它会有一些问题,比如图(右)的例子,设定是需要拿到中间的钱,如果用确定性的 policies 的话(用 Q-learning 的算法去学习),最终学习到的是中间的状态。假设是每个格子只能了解两边的情况,灰色格子两边都是白色格子,agent 只能看到两边格子都是白色的。右边的灰色格子同理,只能看到两边是白色的,不能判断哪边更好哪边更坏。
如果用 Q-learning 去训练这个模型,最终得到的一个策略就是中间红色箭头标注的那样(上图),可能发生的情况是:「从白色到灰色,灰色到白色一直循环」,永远都到不了最终要到的地方,在确定性策略下,永远都找不到可能性的存在。
另外一种情况,采用随机性策略,两个灰格子不知道左右两边,它会随机抛一个硬币,有可能跑到左边,这样会得到一个负的奖励,也有可能跑到右边,得到一个正的奖励,得到了我们最终想要的结果。它不会像确定性策略那样一直循环下去,这就是随机性策略的一个好处... 此处详细讲解可回放视频至第 31 分钟查看。
强化学习为什么能应用在自然语言处理上?
首先,现在最主要的一个解决方式是,强化学习对一个离散空间上的决策是有天然的优势。
一、强化学习在策略决策或文本生成上具有天然优势,因为我们在拟合 Q-wise learning 的时候,我们发现(除强化学习之外的)其他方式都不能很好的达到我们理想的效果。
二、在任务型对话系统中,给定一个对话之后,会有一个决策过程,也就是指,这个系统下一步是要问问题还是要回答问题,这都是策略。我们可以把它们变成一个策略,再进行一个策略决策,再进行一个强化学习,去拟合它和训练它。
三、在很多隐状态的时候,我们有可能应用到强化学习,这时,我们可以利用自己设立的权利机制来对隐状态进行一个训练或者拟合。
我认为,第一点最重要,就是强化学习在天然的离散空间上可以 work 的一个原因,因为目前的自然语言处理大多都是一个离散空间的自然语言处理、生成或者是序列决策,这时,我们很天然地可以利用到强化学习去拟合和运作。另外,它的决策函数是可以自己制定的一个过程,但这个制定复杂,不同的应用也有不同的方式。
下面,我会讲解四篇有代表性的论文。
注:此部分的详细解读,大家可回放公开课视频至第 38 分钟查看第一篇是 sequence generative adversarial nets with policy gradient,这是首篇用 GAN 在 NLP 上的应用,此前 GAN 不能应用文本生成和自然语言处理,这时,强化学习就起到了决定性的作用,这是至关重要的一部分,所以今天我们拿出来讲一下,而且 sequence 也比较出名和具有代表性,是强化学习在文本生成的一个应用。
首先,为什么之前的 GAN 不能应用于自然语言处理和文本生成?
因为之前在判别器给出生成器一些梯度信号的时候,在图像连续型是可以 work 的,一旦变成了一个文本生成离散型的时候,它是不能够...... 此部分的详细讲解大家可回放公开课视频至第 36 分钟查看。
图像识别,判别器给生成器一个梯度的信号,这时,判别器给生成器 0.1 的改进,生成器对图像像素进化+0.1,它的像素会变化,暗度会有一定的改变,这时,象征它的图像会有一定的变化。
换成文本后,我们用 threshold 和 word-embedding 给一个表示的话,就加 0.1,比如,「我」这个词加了 0.1,它可能在词库里找不到代表这个词的,加 0.1 的这个词可能并不存在。另外,我们可能会利用一种强制把它变成最接近的那个词,比如,「我」+0.1 更靠近「我们」这个词,就变成「我们」,如此一来,可能会近一步,偏差一直下去的话,生成的效果可能不好,这就是原始的一个问题,这时,我们可以利用强化学习解决它。
sequence generative adversarial nets 主要也是这方面的一个应用,它的主要 contribution 也是第一次利用强化学习、利用 GAN 去生成结构图。sequence generative adversarial nets 使用效率比较高的 CNN,效果比较好。生成器用的是 LSTM,LSTM 之后,用策略梯度去优化,这里存在一个问题:
LSTM 生成一个单词,因为 CNN 这时判别不出该单词真或假的时候,它的句子很有可能不完整。LSTM 生成一个完整的句子,判别器得到这个句子之后,我们就可以把判别器当成一个信号,返回给生成器... 继强化学习之后,利用拟合的、或训练的指函数,判别器给定的一个信号,生成器去拟合,它就是利用这样的方式... 生成器生成的文本更好,效果还可以,大家可以参考它的资料复现一下。在对话方面的应用,后来做了一些改进,一开始说要生成完整的句子,用蒙特卡洛树去 sample 它就能得到一个句子,李博士也说,可以用不完整的句子让它判别,之后得到一个奖励信号去训练,具体的内容大家可以去看一下论文。
这篇 2016 年发表的论文,是关于文本算法对序列生成的一种应用,老早之前,我们就认为 reinforce 算法和 AC 算法属于策略的强化学习,它是基于值函数的一种一个组合。
这篇论文主要是利用 actor critic 应用在序列预测上的一个应用,它主要解决 exposure bias 问题,exposure bias 问题可以简单解释成,我们在生成一句话的时候,在训练的时候,一开始的那个 label,LSTM 输入都是真实的输入,那个句子是真实的句子,但是等到预测的时候,输入是上一步得到的输出作为下一步的输入进行输入,这样得到了一个结果,训练和预测不同的输入,这样导致的一个偏差,随着序列的长度的增加,它的偏差也会越来越大,这里就会产生一个 exposure bias 问题,然后他们这篇论文也是解决那一个问题而做的,related work 有很多,大家可以自己去考证一下。
模型,actor 和 critic,一个是 decoder,一个是 encoder 的框架来形成的。actor 可以看成是输入原来的一个句子。例如,actor 的应用是应用到一个翻译上的,原来要翻译的一个句子输入成 encoder 的一个输入,decoder 输出的是翻译后的一个序列,这个序列可以输入给 critic 进行值函数的一个判断,这个值函数的判断输入在 encoder 的里面的时候是真实的.. 详细解读大家可回放公开课视频至第 47 分钟查看。
这篇论文的内容是,用强化学习去解决对话生成的一个问题。对话生成的主要问题是,会生成一个很一般的一个回答,比如「see you later」这种很没有营养的一种回答。另外,它会形成一个循环,就是「see you later」「see you later」「see you later」这种,这篇论文的作者是李博士,他在对话生成方面发表过不少好的论文,大家也可以去看一下。
利用一个强化学习把原来的损失函数进行一个改变... 去拟合的一个 seq2seq,我们通常利用其它的自然区域去拟合 seq2seq... 我们可以自己设计 reward,利用这个 reward 让系统生成我们自己想要、使系统更加灵活的一种方式。如果我们想在强化学习有所应用的话,这篇论文有很大的参考价值。
基于策略的强化学习有一点很重要,利用值函数进行引导,让我们得到更好的想要的策略。这里给出了 3 种 reward,之后,再将这 3 种 reward 进行加权平均,得到了一个最终的 reward,每一个 reward 都有它自己的一个意义。
最后一篇的关于任务型对话方面的内容,强化学习最主要作用是运用强化学习去训练它的决策策略,根据刚才提到的例子,客服系统需要预测问问题,这就是一个决策,需要利用强化学习去做这个决策,Q-learning 也可以,但是效果比较差,还有就是 Q-learning 需要大量的样本,这时,用强化学习就可以减少大部分的样本,在很多应用上比较方便。
这篇论文,是把它应用到了一个个性化的系统,它和普通的对话系统的一个较大的区别是,需要考虑个人信息的利用程度,另外,个性化的对话的一个数据更难获得,所以我们需要考虑在数据不足的情况下,应该怎样去解决。
以上就是本期嘉宾的全部分享内容。更多公开课视频请到雷锋网 AI 慕课学院观看。关注微信公众号:AI 研习社,可获取最新公开课直播时间预告。
雷峰网原创文章,未经授权禁止转载。详情见转载须知。