在有监督学习(supervised learning)中,训练数据中包含了数据样本的目标。 不过现实中可没有上帝一样的监督者给出这些目标或答案!

强化学习(reinforcement learning)是人工智能(AI)的一个重要分支,它也是DeepMind的阿尔法狗(AplhaGo)得以实现的一块基石。

在强化学习中 ,虽然没有现成的答案,但是代理(agent)仍然必须决定如何行动(action)来完成它自己的任务。 在没有训练数据的情况下,代理从经验中学习。 它通过反复的试错来收集训练样本(“这个动作很好,那个动作很糟糕”),学习的目标就是使其长期奖励(reward)最大化 。

在本文中,我们将探讨:

  • 状态空间的利用和探索
  • 马尔可夫决策过程
  • Q学习、策略学习和深度强化学习
  • 价值学习

最后,我们整理了一些优质资源可供你深入探索强化学习。

迷宫老鼠

具有明确的目标和分值系统的游戏,是最容易理解强化学习的应用场景。

假设我们正在玩一款游戏,老鼠如果找到奶酪,就能得到+1000分奖励,如果找到沿途的水源,也能得到+10分奖励。 但是,如果老鼠误入电箱(触电),就会得到负的奖励-100分。

经过一番探索(exploration),老鼠可能会发现聚集在入口附近的三个水源,从此它可能就会花费所有的时间来利用(exploit)这一发现,不断收获这些水源的微小回报(reward),而不再有更高的追求。

因此,正如你所看到的那样,老鼠会在迷宫里错过更好的奖励,例如吃到奶酪!

这带来了探索(exploration)和利用(exploit)之间的权衡问题。 一个简单的探索策略(exploration strategy)是在大多数时间(比如说80%)采取已知的具有最好回报的动作,但偶尔也会探索一个随机选择的动作,尽管它可能导致偏离已知的奖励。

这个策略被称为epsilon-greedy策略,其中epsilon是智能代理(老鼠)采取随机行动的时间百分比(在上例中,即20 %)。 通常我们可以在开始时更多地进行探索(即epsilon取值大一些)。 随着时间的推移,随着老鼠对迷宫越来越了解,并且对哪些行动能够产生长期的高回报的了解也越来越多,将epsilon稳定地降低到10%甚至更低就是合理的选择了。

记住这一点很重要:奖励不是实时的 —— 在迷宫老鼠的例子中,在最终找到奶酪之前,可能需要经过一段漫长的探索,并且做出多次选择。

总结一下:在强化学习中,智能代理(agent)观察环境(environment),采取行动(action)与环境互动,并获得积极或消极的回报(reward):

马尔可夫决策过程

老鼠在迷宫中的行为,可以使用马尔科夫决策过程(Markov Decision Process)来描述 ,马尔可夫决策过程是具有特定的状态转移概率的过程。 我们将通过迷宫老鼠这个例子来进一步解释它。

马尔可夫决策过程包括:

  • 一个有限的状态集。 例如,老鼠在迷宫中的每一个可能的位置,都是一个状态。
  • 每个状态下可供选择的动作集。 例如,老鼠在走廊里可以{前进,后退}、在十字路口可以{前进,后退,左,右}
  • 状态之间的迁移。 例如,如果老鼠在一个十字路口左转,就会处于一个新的位置。 这可以是迁移到多个可能状态的概率。例如,当你在Pokeman游戏中进行一次攻击时,可能会攻击失败(状态1),也可能对敌人构成一些伤害(状态2),或者击倒对手(状态3)。
  • 每次状态转移对应的回报。 在迷宫老鼠的例子中,大部分时候老鼠得到的奖励都是0,但是如果老鼠真的找到一个有水或奶酪的地方,就可以得到正的奖励,如果找到不该去的地方,得到的奖励就是负的。
  • 折扣系数γ量化了即时奖励和未来奖励之间重要性的差异,它的取值范围是0~1。 例如,如果γ0.9,并且在3步之后可以得到5分的奖励,那么奖励的折现值是就是.9 3 * 5
  • 无记忆性。 由于当前的马尔可夫状态中已经包含了历史中全部有用的信息,所以在获得当前状态后,就可以清除历史信息。 换句话说, “未来状态只和现在有关,和过去没有关系”。

现在我们理解了马尔可夫过程,可以给出老鼠的目标函数了。 我们要做的就是尽量最大化其长期回报的总和:

让我们逐项学习这个回报公式。 首先,我们累加所有时间步t上的回报。 现在先把γ设置为1,暂时忽略它。 r(x,a)是一个奖励函数。 对于状态x和行动a (例如,在十字路口左转),它给出了在x状态下采取行动a的奖励。 从直觉上讲,这个公式所表达的,就是应当在每个状态都采取最优动作来最大化未来奖励的总和。

我们已经定义了强化学习的问题,并且确定了学习目标,现在让我们来探讨一些可能的解决方案。

Q-learning:学习动作-价值函数

Q-learning是一种利用动作-价值(action-value)函数来进行动作选择的技术(Qquality,即动作的质量 —— 译者注) ,该动作-价值函数根据所处的状态,来决定在该状态下应该采取哪种行动。

函数Q的输入是一个状态-动作对,返回值是该状态下执行该动作(以及所有后续动作)的预期回报 。 在我们开始探索环境之前,Q给出相同的(任意)固定值。 但是,随着我们更多地探索环境,Q可以越来越准确地估计出在状态s下执行动作a的价值。 在智能代理探索环境的过程中,函数Q同步得到更新。

维基百科上Q-learning的这个方程式解释得非常好。 它展示了我们如何利用从环境中获得的回报来更新Q值:

让我们再次将γ设置为1来暂时忽略折扣因子。 首先请记住,Q表示的是选择某个动作(以及之后的所有动作)所获得全部奖励的总和。

现在让我们从左到右查看上述方程式。 在st状态下采取行动时,我们在公式中添加一项来更新Q(st,at)的值。 这一项的内容包含:

  • 学习速率(alpha)体现了我们更新Q值的激进程度。 当alpha接近于0时,我们并不是非常积极地更新。 当alpha接近1时,完全用更新后的值来替换旧值。
  • 奖励(reward)指的是我们在状态st采取某个动作所获得的回报 。 所以我们把这个奖励加在之前的估计上。
  • 然后加上对未来奖励的估计,这是在xt + 1时刻所有可选动作中可实现的最大回报Q
  • 最后减去Q的旧值,以确保我们只是通过估计值的误差来进行增减(当然,还需要乘以alpha)。

现在我们对每个状态 - 动作对都有了一个价值估计,就可以根据动作选择策略来决定应该采取哪一个动作(不一定只是选择可以导致最大奖励的动作,例如,在一个epsilon-greedy探索策略中,我们会根据时间百分比采取随机行动)。

在迷宫老鼠的例子中,我们可以使用Q-learning来计算迷宫中每个位置的动作{向前,向后,向左,向右}的价值。 然后就可以根据动作选择策略来决定老鼠在每个时间步需要执行的动作。

策略学习:从状态到行动的映射

Q-learning中,我们可以学习出一个价值函数,利用它可以估计每个状态-动作对的价值。

策略学习(Policy Learning)是一个更直接的选择,我们学习策略函数π , 它可以从每个状态直接映射到该状态下的最优动作。可以把它看作是一种行为策略:“当我观察状态s时,最好的办法就是执行动作a”。 例如,一辆自动驾驶汽车的策略可能会包括:“如果我看到一个黄灯,并且距离十字路口超过100英尺,就应该刹车。 否则,继续前进。“

因此我们学习的这个函数,其目标是最大化预期的奖励。 什么模型最擅长学习复杂的函数? 深层神经网络!

Andrej Karpathy的文章Pong from Pixels中介绍了一个很好的实战案例,他使用深度强化学习来学习经典的Atari游戏Pong的操作策略,以游戏画面中的原始像素作为输入(状态),输出应当向上或向下移动(动作)的概率 :

如果你想用亲手尝试深度强化学习,请仔细阅读Andrej的帖子。 你将学习如何使用130行代码来实现一个两层的策略网络,还将学习如何将其嵌入OpenAIGym 环境,使用Gym可以快速启动并运行你的第一个强化学习算法,然后在各种游戏上进行测试,看看它的表现与其他人提交的实现相比性能如何。

DQN,A3C和深RL的进步

2015年,DeepMind使用了一种称为深度Q网络(DQN)的方法,使用深度神经网络来拟合Q函数,并利用这一模型在许多Atari游戏中超越了人类的基准表现:

我们发现基于深度Q网络的智能代理,只需要使用画面像素和游戏得分作为输入,就能够超越所有以前的算法,在49个游戏中达到了与专业游戏玩家相当的水平,而且所有这些任务中的模型使用相同的算法、网络体系结构和超参数。 这个研究在高维感官输入和行动之间架起了桥梁,从而造就了第一个能够学会应对多种挑战性任务的人工代理。 ( Silver等人,2015 )

下图是基于DQN的智能代理在多个领域中的表现,与线性学习器和人类的比较:

为了帮助对强化学习领域研究中的最新进展有一些直观感受,下面提供了一些非线性Q函数拟合器的改进实例:

  • 体验重放 ,通过对包含历史观察和相应奖励的较长序列进行随机学习来避免过度拟合最近的体验。 这个思路受到了生物学大脑的启发 :例如,老鼠在游历迷宫后,会在睡眠期间“重放”其经历过的神经活动模式,以遍优化其未来在迷宫中的行为。
  • 为递归神经网络( RNN )增加DQN。 当智能代理只能看到周围的环境时(例如老鼠只能看到迷宫的某个部分,而不能看到整个迷宫的鸟瞰图),代理需要记忆更大的场景,以便记住某些物体的位置。 这类似于人类的婴儿对物体的持久性感知能力的开发过程 ,即使物体离开婴儿的视野,人类婴儿也知道这些物体是存在的。 RNN是“递归的”,即它们允许信息持久的存在 。 这是一个使用DQRN网络玩Doom游戏的视频,令人印象相当深刻。

2016年,在DQN论文仅一年之后,DeepMind发布了另一种算法,称为Asynchronous Advantage Actor-Critic,即A3C ,只需要一半的时间进行训练,其在Atari游戏上的表现已经超越了所有尖端的算法( Mnih等,2016 )。A3C是一种演员-评论员(Actor-Critic)算法,它融合了我们之前探讨的两种方法中的精华:包括一个Actor (策略网络:决定如何动作)和一个CriticQ网络:决定动作价值)。 Arthur JulianiA3C的具体工作做了很好的阐述。 A3C现在是OpenAI的通用启动代理 。

从那时起,就有了无数的惊人的突破 - 从发明自己语言到教自己适应各种地形 。 我们这个系列的文章只是简单介绍了强化学习的一些前沿进展,但我希望它能成为你进一步探索的起点!

进入下一段之前,我们想分享一下DeepMind所开发的智能代理学习走路的视频,实在令人难以置信…

关于练习资料和进一步的阅读

代码

  • Andrej Karpathy的 Pong from Pixels 能够让你迅速运行起来第一个强化学习代理。 正如文章所描述的那样,“我们将从零开始,只使用原始像素,使用深度神经网络来玩Pong游戏,而这一切只需要130Python代码,只依赖numpy库。

    • 接下来,我们强烈推荐Arthur Juliani 的 基于Tensorflow的强化学习简明教程。教程介绍了DQN、策略学习、actor-critic方法以及探索策略,并使用TensorFlow进行代码实现。 你可以先理解这些核心的概念和实现代码,然后通过重新实现来真正的掌握它。

阅读+讲座

  • Richard Sutton的著作《强化学习简介 》- 书很棒,可读性非常强
  • John Schulman在伯克利开设的 课程CS 294:深度强化学习
  • David SilverUCL开设的课程 强化学习

原文:Machine Learning for Humans, Part 5: Reinforcement Learning

阿尔法狗的秘密:人工智能中的强化学习相关推荐

  1. 游戏中应用强化学习技术,目的就是要打败人类玩家?

    来源:AI前线 作者:凌敏 采访嘉宾:黄鸿波 2016 年,DeepMind 公司开发的 AlphaGo 4:1 大胜韩国著名棋手李世石,成为第一个战胜围棋世界冠军的人工智能机器人,一时风头无两.Al ...

  2. 强化学习(六) - 连续空间中的强化学习(RL in Continuous Spaces)及相关实例

    强化学习(六) - 连续空间中的强化学习 6.1 连续空间中的强化学习 6.2 离散空间和连续空间 6.3 离散化 实例:小车上山 6.3.1 相关程序 6.3.2 程序注解 (1) 环境测试 (2) ...

  3. 在Unity环境中使用强化学习训练Donkey Car(转译)

    在Unity环境中使用强化学习训练Donkey Car 1.Introduction 简介 2. Train Donkey Car with Reinforcement Learning 使用强化学习 ...

  4. 【强化学习-医疗】医疗保健中的强化学习:综述

    Article 作者:Chao Yu, Jiming Liu, Shamim Nemati 文献题目:医疗保健中的强化学习:综述 文献时间:2020 文献链接:https://arxiv.org/ab ...

  5. 深度学习中的强化学习和对抗学习

    在人工智能中,有两个十分重要的内容,第一就是机器学习,第二就是深度学习.正是由于机器学习与深度学习,人工智能才能够帮助我们做出更多的事情.其实,深度学习也是有分类的.深度学习可以分为两种,一种是强化学 ...

  6. 【医疗人工智能】通过强化学习和分类的自适应对齐进行有效的症状查询和诊断

    Article 文献题目:Efficient Symptom Inquiring and Diagnosis via Adaptive Alignment of Reinforcement Learn ...

  7. 分清概念十分重要系列之--说说人工智能中的各种学习

    大家都知道,现在要说计算机领域什么最火,估计非人工智能莫属了. 我们看一些人工智能领域的一些科普资料,甚至有一定专业程度的文章,如果不是专业领域的人,都会被各种字眼的学习搞的晕头转向. 比如,我自己之 ...

  8. 【人工智能】深度强化学习的新突破:如何打造智能决策系统

    文章目录 深度强化学习的新突破:如何打造智能决策系统 引言 概念和术语介绍 强化学习 深度学习 强化学习和深度学习的结合 智能决策系统 关键问题分析 问题解决方案核心原理讲解 模型设计 数据集 模型评 ...

  9. 【从零开始学习人工智能】 人工智能简介 - 04强化学习

    人工智能简介 - 强化学习 引言 强化学习是人工智能领域的一个重要分支,它通过与环境进行交互学习,以最大化累积奖励为目标.在本篇文章中,我们将介绍强化学习的基本概念.关键要素和应用场景. 1. 强化学 ...

最新文章

  1. 仅一台摄像机即可进行3D身体重建
  2. oracle 和 ' 特殊字符处理
  3. Flash数据的采集方法-搜房房价走势采集
  4. python文件读写用到的库_python 读写txt文件并用jieba库进行中文分词
  5. Android弹窗组件工作机制之Dialog、DialogFragment(二)
  6. httpd开启status模块_开启Apache Server Status
  7. html提交form预处理,HTML5 之图片上传预处理
  8. Graph Coloring I
  9. 树,森林,二叉树之间的转换
  10. Linux shell 下的复制和粘贴(Copy Paste Operation on Linux shell)
  11. 并发量,QPS,TPS,看这一篇就够了
  12. JavaWeb中集成UEditor
  13. mysql 9_mysql-9索引
  14. 改变程序设计、图灵奖得主、美国第一位计算机科学女博士,程序媛进击史
  15. gvim下用Vundle安装solarized主题的方法
  16. ASP.NET MVC HandleErrorAttribute 和 远程链接
  17. 数学建模之层次分析法(AHP)
  18. NVIDIA Game Ready 显卡驱动517.48发布!为《守望先锋2》做好游戏准备
  19. opencv安装命令行
  20. Android studio集成HotFix

热门文章

  1. 字符串版本号比较(Java)
  2. 人工智能常常取代真正的智能吗?
  3. C# :Winform窗体中文字滚动显示
  4. 第2章 IMS架构、网元、接口
  5. 实施ERP系统之我见
  6. 基于对蜜蜂需求的模型研究
  7. 微信之父张小龙内部8小时演讲【附原版164页PPT】
  8. 谷歌浏览器扩展程序js实例
  9. 【深度学习】不要被深度学习一叶障目不见泰山;NLP 解决方案是如何被深度学习改写的?
  10. 双通道内存与单通道内存的区别