强化学习概览

什么是强化学习

强化学习是机器学习中的一个分支, 机器通过不断地尝试, 从错误中学习, 最后找到规律, 学会了达到目的的方法. Alpha go就是强化学习的应用实例。

强化学习的设置由两部分组成,一个是智能体(agent),即强化学习算法;另一个是环境,指的是agent执行动作时所处的场景(如游戏本身)。环境首先向智能体发送一个状态,然后智能体基于其知识采取动作来响应该状态。之后,环境发送下一个状态,并把奖励返回给智能体。智能体用环境所返回的奖励来更新其知识,对上一个动作进行评估。这个循环一直持续,直到环境发送终止状态来结束这个事件。

VS其它机器学习方法

下面通过与监督学习和非监督学习对比来更直观的理解强化学习。

监督学习vs强化学习

在监督学习中,已经有了数据和数据对应的正确标签,机器可以学习到数据和标签的对应关系。但强化学习一开始并没有数据和标签,像棋类游戏中,存在数万种组合,不可能为每种可能都创建标签。这就需要设法从自己的经历中学习,并以此获得所需的知识。另外在监督学习和强化学习中,输入和输出之间都存在映射。但是在强化学习中,存在的是对智能体的奖励反馈函数,而监督学习是直接告诉智能体准确答案。

非监督学习vs强化学习

在强化学习中,有一个从输入到输出的映射过程,但是这个过程在无监督学习中是不存在的。在无监督学习中,主要任务是找到一种最基本的模式,而不是映射关系。

主要算法和类别

强化学习是一个大家族, 他包含了很多种算法, 下面我们通过分类的方式来了解他们的区别。

根据有没有环境的动态模拟(即模型学习从当前状态 s0 和动作 a 到下一个状态 s1 的转移概率 )可以分为:

Model-free(无模型):不尝试去理解环境, 环境给什么就是什么,一步一步等待真实世界的反馈, 再根据反馈采取下一步行动。

扫描二维码关注公众号,回复: 2864835 查看本文章

Model-based(给予模型):先理解真实世界是怎样的, 并建立一个模型来模拟现实世界的反馈,通过想象来预判断接下来将要发生的所有情况,然后选择这些想象情况中最好的那种,并依据这种情况来采取下一步的策略。它比 Model-free 多出了一个虚拟环境,还有想象力。

根据给予概率还是价值可以分为:

Policy based:通过感官分析所处的环境, 直接输出下一步要采取的各种动作的概率, 然后根据概率采取行动。

Value based:输出的是所有动作的价值, 根据最高价值来选动作,这类方法不能选取连续的动作。结合这两类方法的优势之处, 创造更牛逼的一种方法, 叫做 Actor-Critic, actor 会基于概率做出动作, 而 critic 会对做出的动作给出动作的价值, 这样就在原有的 policy gradients 上加速了学习过程.

根据更新频率可以分为:

Monte-carlo update(回合更新):游戏开始后, 要等待游戏结束, 然后再总结这一回合中的所有转折点, 更新行为准则。

Temporal-difference update(单步更新):在游戏进行中每一步都在更新, 这样就能边玩边学习了。

根据是否自己亲身经历可以分为:

On-policy(在策略):基于当前动作 a 学习价值,必须本人在场, 并且一定是本人边玩边学习。

Off-policy(离策略):基于局部最优的贪心行为(greedy action)a* 学习价值,可以选择自己玩, 也可以选择看着别人玩, 通过看别人玩来学习别人的行为准则。

Q-Learning 算法

Q-Learning是基于贝尔曼方程(Bellman Equation)的离策略、无模型强化学习算法:

Epsilon greedy 是用在决策上的一种策略, 比如 epsilon = 0.9 时, 就说明有90% 的情况我会按照 Q 表的最优值选择行为, 10% 的时间使用随机选行为. alpha是学习率, 来决定这次的误差有多少是要被学习的, alpha是一个小于1 的数. gamma 是对未来 reward 的衰减值.

State-Action-Reward-State-Action,SARSA算法

SARSA 和 Q-learning 之间的关键区别是 SARSA 是一种在策略算法。 SARSA 根据当前策略执行的动作而不是贪心策略来学习 Q 值。算法更新对比如下:

深度 Q 网络(Deep Q Network,DQN)

Q-learning 是一种非常强大的算法,但它的主要缺点是缺乏通用性。如果你将 Q-learning 理解为在二维数组(动作空间×状态空间)中更新数字,那么它实际上类似于动态规划。Q-learning 智能体没有能力对未见过的状态进行估值。为了解决这个问题,DQN 引入神经网络来摆脱二维数组。DQN 利用神经网络来估计 Q 值函数。网络的输入是当前的动作,而输出是每个动作对应的 Q 值。

在NLP中的应用

强化学习可以对传统的对话模型进行改进。

神经对话响应生成的模型,比如Seq2seq 模型虽然解决了传统机器翻译中的缺乏对应语言对导致无法正常使用的困境,学习到了上文表示的一个较为丰富的语义信息。但是其还存在共性的问题:1)其采用最大似然估计,对于训练集中频繁出现的如「我不知道」这样的无太大意义回答,由于在预料中它们出现数量多、范围大,被模型学习到以致于经常产生这样的回答。2)很容易陷入到死循环当中,例如再见-再见-再见。。。于是,加入强化学习成为了一个很好的选择。使用策略梯度方法(policy gradient methods)来对模型的三个关键指标进行奖励,其分别为:信息性(informativity)、连贯性(coherence)、易于被响应(ease of answering)。实验表明强化学习模型能产生具有更丰富、更多交互性、更能持续响应的对话响应。

在聊天机器人领域的应用

深度强化学习是A.I. Bots的关键技术。

一般来说A.I. Bots分为三类。第一类是搜索信息,因此它的目标是明确的;第二类同样是搜索信息,但目标不是立即明确的。例如你可能问的是一个电影院的开放时间,这不是说你的目的只局限于答案,而是获得答案是达到看电影这个最终目标的一个步骤。对于这两种类型,奖励是相当明确的或者将会明确定义。当使用强大的深度强化学习技术进行构建时,以上两种Bots都有自己的、定义较为直接的奖励函数。这两类Bots均可用于完成搜索信息或者完成预定机票、酒店等特定任务。

第三类A.I. Bot是社交Bot,它们需要的指导最多,通常也被称为聊天Bot或闲聊Bot。该类Bot的奖赏函数–简单地称为“情感智能”–不能被轻易地量化。处理社交Bot十分复杂的奖励函数需要扩展能力,以便利用信息理论上的和内在动机的奖励。在转向其他类试图完成任务的Bot对话之前,这类奖励会抓取用户在与Bot对话中获取的情感满意度。

参考资料

https://towardsdatascience.com/introduction-to-various-reinforcement-learning-algorithms-i-q-learning-sarsa-dqn-ddpg-72a5e0cb6287

https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/

https://arxiv.org/pdf/1606.01541.pdf

https://venturebeat.com/2016/08/01/how-deep-reinforcement-learning-can-help-chatbots/

猜你喜欢

转载自blog.csdn.net/ZJL0105/article/details/81158351