强化学习 Reinforcement Learning(一)

什么是强化学习

强化学习是机器学习的一个子领域,它解决了随着时间的推移自动学习最佳决策的问题。这是在许多科学和工程领域研究的普遍问题。在瞬息万变的世界中,很多即使看起来像静态输入输出的问题也变成了动态问题。

举个例子,考虑您正在使用一个模型(狗和猫)解决宠物图像分类的简单的监督学习问题。您已经收集了训练数据集并实现了分类器。经过一段时间的训练,模型收敛表现出了出色的性能。

您已经部署了它并使它运行了一段时间。然后,在某个海滨度假胜地度假后,您发现以前宠物狗的造型已经不再流行。很多狗狗的造型发生了巨大的改变,由于潮流的更替导致您先前所训练的模型错误分类增加,因此您不得不更新训练图像并再次重复该过程。

前面的示例旨在表明,即使是简单的机器学习(ML)问题也可能具有隐藏的时间维度(hidden time dimension),该维度经常被忽略,但是实际应用中也许不应该被忽略。

强化学习(RL)是一种将这种额外的维度(通常是时间,但不一定是)自然地整合到学习方程中的一种方法,这使其与人类对人工智能的感知非常接近。

在这里插入图片描述

监督学习、无监督学习与强化学习

监督学习

监督学习应用:

  1. Text classification(文本分类): Is this email message spam or not?
  2. Image classification and object location(图片分类与目标检测): Does this image contain a picture of a cat, dog, or something else?
  3. Regression problems(回归问题): Given the information from weather sensors, what will be the weather tomorrow?
  4. Sentiment analysis(情感分析): What’s the customer satisfaction level of this review?

可以看出,这些任务的都建立了一个从场景到行为的映射,这个映射能模仿具体环境下的正确行为,并对新的场景也能做出正确的反应(泛化)。

监督式的学习不能称为对其所处环境的学习,因为这种学习方式只做到了跟随指导信号,而不会去影响这个信号。换言之,监督学习只做到了”认识世界“,而无法“改变世界”。

无监督学习

无监督学习是一种没有已知的标签分配给数据的学习方式。无监督学习的主要目的发掘数据集的一些隐藏特征。

无监督学习最经典、最常见例子就是聚类。当聚类算法试图将数据组合成一组或者一簇时,就可以揭示数据间的内在联系。

近年来还有另一种越来越流行的无监督学习方法——生成对抗性网络(Generative atteriral Networks,GANs)。

一个 GAN 结构的网络至少由两部分构成:生成器模型(Generative Model)与判别器模型(Discriminative Model)。

当我们有两个相互竞争的神经网络时,第一个网络试图生成假数据来欺骗第二个网络,而另一个则试图将人工生成的数据与从我们的数据集中采样的数据区分开来。两个模块的互相博弈学习,最终产生相当好的输出。

然而,一个优秀的 GAN 需要有良好的训练方法,否则可能由于神经网络模型的自由性而导致输出不理想。

强化学习

强化学习是介于完全的监督学习和完全无监督学习之间。一方面,强化学习使用了许多成熟的监督学习方法,如函数逼近的深度神经网络、随机梯度下降和反向传播来学习数据特征。另一方面,强化学习应用这些方法的方式也与监督学习不同。

强化学习分类

基于建模(model-based)/不基于建模(model-free)

不基于建模的强化学习方法很多,Q-learning,Sarsa,Policy Gradients 等本身都不是基于建模的学习方法。而 model-based 的学习方法只是多了一道为真实世界建模这一步,也就是所谓的仿真环境。

在 model-free 的学习方法中,需要训练的智能体(agent)只能按部就班,一步一步等待真实世界的反馈,再根据反馈采取下一步行动。由于强化学习本身是通过“试错”达到最终希望的效果,这意味着大量失败的尝试。而在某些任务中,例如利用强化学习使四旋翼无人机在复杂的风向条件中保持稳定,一次“试错”的失败就有可能会导致机体损坏。

在这里插入图片描述
而 model-based 的学习方法,只需要在仿真环境中运行算法,无需担心损坏的问题。而且 model-based 的方法还可以同时创建多个仿真环境同时训练,大大提高学习效率。

基于概率/基于价值

基于概率的强化学习直接输出下一步要采取的各种动作的概率,然后根据概率采取行动,所以每种动作都有可能被选中,只是可能性不同。而基于价值的方法输出则是所有动作背后的价值。我们一般根据最高价值来选择动作,也就是说算法是贪婪(greedy)的。

在这里插入图片描述
同时需要注意的是,对于连续动作的选取,基于价值的方法是无能为力的。但基于概率的学习方法能通过一个概率分布在连续动作中选取特定动作,这也是基于概率的方法的优点之一。

比如在基于概率的方法有 Policy Gradients,基于价值的学习方法有 Q-learning,Sarsa 等。
在这里插入图片描述

同时,结合这两类方法的优势之处,还可以创造出一种更强大的强化学习模型框架—— Actor-Critic。其中的 Actor 为基于概率的模型,负责做出动作,而 Critic 会给出这个动作的价值,这样就在原有的 policy gradients 上加速了学习过程,但同时也存在结构复杂、难以训练等问题。

回合更新/单步更新

强化学习还能用另外一种方式分类,回合更新和单步更新。回合更新指的是新的一轮训练开始后, 我们要等待回合结束,然后再总结这一回合中的每一步,再更新我们的行为准则。而单步更新则是在回合进行的每一步都在更新,而不需要等到回合结束。

在线学习(On Policy)/离线学习(Off Policy)

这里用 David Silver 的 slides 来解释一下什么是 On/Off Policy

在这里插入图片描述
在这里插入图片描述

Sarsa 是最典型的在线学习方法,而最典型的离线学习就是 Q-learning。

根据离线学习的属性,可以用神经网络替换掉 Q-learning 中的 Q 值表,就是让计算机学会打电动的 DQN。下图就是使用 DQN 玩 Flappy Bird 的效果。

在这里插入图片描述

写在最后

本人以后会发布一些关于机器学习模型算法,自动控制算法的其他文章,也会聊一聊自己做的一些小项目,希望读者朋友们能够喜欢。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐