2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)

2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第1张图片
这里是CS294-112深度强化学习课程,我的名字叫Sergey Levine是这门课的授课老师,材料会放在课程主页:http://rail.eecs.berkeley.edu/deeprlcourse
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第2张图片
这是一门高级研究生课程,课程是针对那些准备在深度学习和强化学习领域做研究的学生准备的,主要针对博士。你需要保证达到这门课的先修条件,希望上过研究生或者高级本科生课程、机器学习课程,如果是UCB的学生那么应该上过CS189 CS289 CS281A之类的课。除了之前说的先修条件,还要知道一些东西,因为课程作业中很多会涉及训练神经网络,通过自动微分框架,提供的所有基础代码都是TensorFlow版的。希望有python编程经验,Greg Khan会上一堂关于TensorFlow和自动微分的课。

这是要讲的主要内容2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第3张图片

完整的内容在课程网站上。会介绍如何从监督学习过渡到决策问题?监督学习是在之前机器学习课程中学过的概念。

会谈到怎么转换决策问题?还会谈到模仿学习,会谈到主要的model-free的算法,比如Q-learning、策略梯度、演员批判家算法等等。然后会聊到model-based强化学习和一些高级话题,以及用model-based RL来对视频帧预测的问题。还会讲到exploration(一个RL概念),到时候会接触到很多最近关于exploration的进展,还会讲到很多高级话题,比如迁移学习、多任务学习和元学习。到课程结束的时候,会对一些开放问题进行探讨,还会请其他RL研究者来做研究报告和一些邀请讲座等等。所以这道课程结束,当你在做最后的课程项目时,会听到很多高级话题,从而对你的项目要做什么东西有一些启发。

作业
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第4张图片
第一次内容是模仿学习,第二次内容是要实现策略梯度算法,第三次内容是实现演员-批判家算法,第四次会考察model-based类的RL算法,然后最后一次作业会有一些选择,可能是实现一些后面讲到的高级算法,然后是最后的项目是研究级别的,所以如果有研究生已经做过一些这种领域的研究工作,而且级别相当于ICML或NIPS的workshop paper。

开始今天的课程,也就是强化学习的简要介绍
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第5张图片
从通常说的深度强化学习或强化学习的概念开始,然后是为什么要研究它?尤其是为什么现在要研究它?所以现在要提一个宽一点的问题,然后才是关于深度强化学习,那么这个问题就是如何构建智能机器?
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第6张图片
更值得思考的问题是现在的科技还需要做什么事情或者说还有什么问题要解决才能离智能机器人更近一些。考虑一个具体智能机器的例子,来思考现在可以做到什么。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第7张图片
船可以从地球的一端航行到地球的另一端,这个在今天不难实现,可以实现相应的软件来让这么大的邮轮从地球的一端航行到另一端,而且不需要任何机器学习技术,现有的技术就已经能做到了,但是还没有做到这么大的邮轮实现无人化,因为也会有出故障的时候,还是得有人去检查引擎,用手掰紧阀门等等。在人工智能还没有那么完备的时候,不得不处理物理性的接触、视觉识别上的复杂性和环境的多样性,还有所有现实生活中会发生的突发性,这就需要很好的扩展性和适应性。虽然对于计算、快速响应、复杂规划,没什么问题,但是刚刚说的这些问题还是不能解决。通常情况下,所说的真正挑战是关于环境的复杂性、多样性、物理接触、视觉变化等等,这些都是类似场景下可能出现的问题。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第8张图片
所以深度学习的好处就是它提供了一种处理非结构化环境的工具。非结构化的意思是你不能提前预测环境中所有东西的布局,例如那邮轮的例子来说,不像世界地图一样,每天都会发生变化,因为随着时间的推移,物体会移动,这和邮轮的规划算法相关的。但是对于引擎室里的个人操作,比如有人在地上泼了点水或类似的事情,在任何时间都有可能发生任何类似的无法预料的事情。

所以深度学习可以帮助我们处理这种非结构化的环境。通过构建复杂而强大的、可以处理原始的传感器信息的模型。比如可以构建一个有上百万参数的神经网络,就可以直接输入图像的原始像素信息,而不用担心是不是有人已经提取出了正确的特征,只需要输入原始像素,然后就能检测出图片中有什么。可以用这个模型检测ImageNet数据集中上千种不同种类的图片,文字识别、语音识别等等。所有这些任务都显示出了现实世界中的多样性和复杂性。比如对于语言识别,困难之处是不能简单的靠语法,因为不同的人说话的方式都有一点不同,所以还要考虑很多复杂的情况。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第9张图片
现在深度学习可以帮助处理现实世界的非结构化输入信息,但是没有告诉我们怎么做决策,我们想实现那种能够灵活决策的智能系统,比如机器人。就需要某种可以用来做决策的数学公式,因为要做的不止是识别是什么,还要选择做出什么反应。

强化学习就给出一种可以用来做决策的数学框架,本质上这种数学框架是非常简单的,就是简单的对智能体和环境之间的交互进行建模,模型由一个循环组成,这个循环代表着时间的循环,智能体的决策,这里叫动作。环境对这种动作的反应叫结果。在强化学习中有两种基本的结果,观测结果是在做出决策后真实看到的东西,反馈是做出的决策得到了正确的或是错误的或是有趣的结果。强化学习最重要的特征是该过程不断的循环,当做出一个决策时,观测结果,当做出另一个决策时,再观察其结果,如此往复。

现如今强化学习和神经网络或神经网络表示相结合,已经存在很长时间了。事实上,最初强化学习取得的巨大成功就是将强化学习和神经网络相结合。TD gammon是第一次真正意义上的强化学习取得的巨大成功,尤其在游戏领域,它其实是一种玩backgammon的一种程序,将强化学习和神经网络相结合,得到一个价值函数,所以整个网络采用变换的算法称为拟合值迭代。它玩backgammon游戏就像一个高级业余选手或者一个初级职业选手的水平,比如州冠军,并没有达到世界冠军的水平。它通过自学习来训练和自己对抗。就像alphago和其他人工智能程序一样,原理都是结合了神经网络表示和强化学习算法,通过自学习框架使得机器自动学习如何玩游戏。深度学习和强化学习相结合的算法应用在许多机器人运动技能学习中、应用在机器人操作电脑游戏技能中、机器人抓取东西等等。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第10张图片
什么是深度强化学习?为什么要关心它?通过类比的方法来讲,首先讲一下,深度学习如何应用在计算机视觉领域。然后讲一下,模拟转换中采用深度学习和强化学习相结合的方法。如果时光倒回到15年前,你会发现当时的计算机视觉技术都是基于以下准则:首先关心的是图像,所以会先从图像的像素开始,然后会提取图像的一些特征,这些特征是手动定义的。事实上,在计算机视觉领域定义正确的特征非常非常重要,这可能是很多人整个博士论文都在研究的事情,可能发现一个很好的特征,在计算机视觉任务中取得较大的提高。在很多复杂的任务中,存在多于一个特征层,可能你提取了一些底层特征,比如图像直方图或者梯度,用来进行边缘检测。在这之上,可能需要一些高层次的特征,所以开始检测更复杂的特征,比如形状检测或行人步态检测,可能分离出部分模型,在这之上可能找到更多不同的身体部位或行人,在加上定位方框,真正的学习也是发生在最后一层,学习刚才发生的事情,使用一些比如线性检测或分类器。今天计算机视觉主要做的表面上看可能完全不同,但基本原则大体相同,不同的是训练方式。所以目前的基于深度学习的计算机视觉系统,仍然有很多层用特征来表示,所以如果你构建了一个神经网络,用来识别目标或图像,神经网络中每一层可以看作不同的特征表示层。不同之处在于所有的层都是端到端训练的,最终得到目标最优化结果,所以并不是某个人定义了正确的特征,所有的卷积核都是被全连接层和所有的层一起训练得到的最优结果。这样做有两大好处,一是不需要手动定义特征,也不需要花整个phd时间去定义一个正确的特征;另一个好处是这种方式是任务自适应的,它可以找到解决特定问题的最优特征,因为它是优化特征为主。这种端到端的学习方式是深度学习的一种重要能力,所以这是计算机视觉。

关于强化学习,标准的强化学习采用传统的,比如线性函数表示的方式。你可能从表示一些状态入手,比如对backgammon游戏版面,以某种方式进行编码,然后从中提取特征。因为简单的将每一个比特状态作线性映射并不能解决问题,所以得到一些特征用于强化学习是非常困难的。因为可以用作决策的状态特征、线性表示策略或值函数,在某种程度上是违反直觉的。这比传统目标识别中找到视觉特征更难,它们也不像视觉特征那样转换方便,所以这需要一些工作。对backgammon游戏来说,去咨询会玩的专家,问他们一下,什么事情是他们玩backgammon时候最关心的,哪些特征与面板状态相关,哪些与面板状态相关少。如果你玩国际象棋,也许骑士与中间的面板更相关,相对于边缘面板来说。这就是一个特征,非常枯燥的过程。也许需要增加更多高层次特征,在这之上,需要一些线性值函数或线性策略,这也非常重要。因为不同的策略和函数可能需要非常不同的特征,所以这是一个非常手动的过程。还有很长一段时间,强化学习算法应用在现实世界中,有着非常大的限制,这种限制来自于找到正确的特征使得强化学习算法表现优异是非常困难的。所以强化学习与之类似,仍然需要很多特征表示层,仍然需要低层特征和高层特征,但最大的优势在于,我们可以将其作为一个整体,端到端的训练。同样有两个好处,不必依赖人工指导去告诉我们哪些特征是正确的,我们就可以优化任务的特征,这意味着可以得到正确的低层特征抽象,这些低层特征抽象帮助做出高层的决策。尤其对现实世界的问题来说。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第11张图片
所以端到端学习在做出决策时到底起到什么作用?
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第12张图片
如果你需要做一个决策,该决策是基于感觉知觉,比如你路过一个丛林看到一只老虎,不像你坐在电脑前看到老虎图片一样,当你在丛林里看到老虎是你不仅仅要认出这是一只老虎,而且要采取一些行动。传统方法来讲,比如机器人做决策就是一个感知系统,感知系统检测到一只老虎。我们还有一个独立的控制系统,将会作用于感知系统的输出端,当看到一只老虎时,这个控制系统会想应该选择什么决策方案会得到最佳的结果,然后执行这种决策。这种模式的困难在于,需要高层次抽象,所以和上一张PPT说的一样,依赖于人的指导去构建一个正确的表示,需要检测什么,感知系统同时需要做什么,所以必须用这些作为正确决策的基础,也许考虑的更多。比如不止考虑这是一只老虎,还考虑它离你有多远,以及这是一只真老虎还是电脑屏幕上的,这些与基础都相关。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第13张图片
所以可以分开设计感知系统和动作系统,在这里选择正确的特征抽象,但问题是如果你真正的联合优化控制系统和感知系统时,首先必须要知道刚刚学习到的老虎被它吃掉是坏事,不被吃掉是好事,不关心这只老虎是哪个品种,关心的是与我价值函数有关的事情,所以会讲更多的关于端到端学习的实际应用,知道少许例子,有关机器人的。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第14张图片
如果你建立一个机器人控制系统或机器人手臂,可以做现实世界中一些复杂的事情。传统的工程方法是建立一系列的模型以及如何让这些模型协作运行起来,上图中蓝色方块是你可能需要的模型,可能需要即将开始机器人感知模块。可能需要知道状态预测模块,状态预测模块用作机器视觉感知,从感官中识别物体在哪里,并且在关键点处加上定位边框或进行3D检测这类型的感知。还有预测状态模块会说“哦这里有一个机械钻”,我知道这个机械钻的物理特征,所以可以用我的观察做一个预测。如果我的手这样移动,机械钻会这样移动。预测模块之后需要做一些计划,所以需要用模型得到的状态估计和预测值去计划一系列的动作,这些动作会得到想要的结果,得到预期的动作轨迹,然后将执行这些轨迹与底层机器控制相结合,决定底层硬件怎么做,选择什么电压和电流,机器人可以按照正确方式移动,可以把一系列动作做完。

典型的设计这些模块的方法是用一个大型软件项目或一个大型研究项目。困难是需要选择所有的、每个模块的抽象,需要决定状态预测是要预测2D姿势还是3D姿势或机械钻的一些相关内容?我的模型预测会简化一些假设,比如假设世界由刚性物体组成,不用担心物体会发生形变或产生流动等等。简化这些假设,使其成为一个问题轨迹,如此循环下去。每一个抽象都在一定程度上违反了现实,问题是如何协调系统运行与这些抽象违背现实二者之间的协调?所以当你最终用多种方法简化问题时,可以从我的预测中确定,当我走的很慢时,我的模型违背现实比较少,或者从我的状态预测中确定,当我所在的世界中,所有物体都拥有标签,而不需要从图片中提取标签时,模型违背现实比较少,所以最终系统有很多限制。当系统离开特定的设置条件,当你的抽象与预期的假设不符合时,表现将迅速衰减。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第15张图片
当然采用端到端的优化可以克服这些缺陷。因为能够根据所处的环境的不同,优化最终结果。这里是一些例子,一项四年前的研究有关强化学习系统的,当然也可以解决机器人控制问题,就像刚刚将的例子一样。当我谈论计算机视觉时,同样也有许多表示层,所以你看这是机器人的头部,有很多关键层用来进行视觉处理,所以来自相机的输入经过神经网络之后,输出到这个环节,这是机器人的感知运动环。对于机器人来说用了很复杂的类比,你可以把这几个卷积层看作很小的大脑中的视皮层,它主要用来处理图像的,然后得到一个视觉感知,你可以把这部分想象成一个很小的运动皮层,当然这是一个很模糊的分类,因为这部分只是实现了人类大脑中的很小一部分功能。关键是这些不同模块采用端到端的方式来优化,使得机器人可以更加的适应任务,它们通过经验去优化,所以机器人也是这样,根据结果不断地端到端的调整,网络中的所有权重值去改变它们丢掉的或者抓住的特征,这也同时改变了它们的动作和感知。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第16张图片
讲一讲更多细节。我提到过强化学习中有个做决策的机构,称之为动作。根据结果反馈的机构,称之为观测和反馈。所以来举一些例子关于决策和结果机制等等。如果聊到少数例子,可能会在意的。如果有一只狗,有决策机制和结果机制,所以动作可能是肌肉收缩。动物大脑的一个功能就是控制身体运动,这是它们与世界交互的唯一方式。不管是叫或动动腿,最终都会是肌肉收缩运动的结果。观测时关于感知、视觉、嗅觉、触觉等等,诸如此类。对动物来说奖励可能是食物,所以它们控制肌肉收缩去得到更高的奖励,也就是用它们的观测寻找那个肌肉运动,可以得到更高的奖励,所以它们学习到通过坐下,可以得到更多的食物。对于机器人来说,动作是电动机电流或电机转矩,这些能够控制关节运动的东西。观测时相机的输入,奖励时对任务成功的测量,所以如果这个机器人尝试快速跑,可能价值函数取决于他跑得多快。如果他要更有效的抓罪犯的话,可能奖励函数变为整个城市的犯罪率。你可以将整个奖励范围拓展到从很低到很高,但这只是这个机构设法完成的目标。但整个准则可以拓展到更加抽象。比如可以想象成一个库存管理或供应链管理系统。你的行为是,你现在购买了什么或者提交了什么订单。观测值是库存水平或从一些源数据中读到的东西。价值函数可能是公司的盈利,尽管解决的问题不同,可以用同样的数学公式应用在其中。

事实上,强化学习是其他机器学习问题的一个泛化。把这个单独来讲,因其物理的自然特性。当然,如果你做一个分类问题,你也可以将其重新构建为强化学习问题。可以说,对于图像分类问题,动作是输出的标签,观测时图像的像素,奖励时分类的正确率,分类正确奖励高,错误奖励低。这样处理一个分类问题。有点傻,因为做了无用的复杂化。重点是这种思想,真正的理解了强化学习是很多机器学习问题的泛化表示。当然你可能不需要用强化学习来进行图像分类,你可能更想用强化学习来做自然语言处理问题。比如对于翻译任务来说,动作是将原语言翻译为目标语言,观测是原语言,奖励是无偏差的翻译质量的测量。人们往往也这么做。

强化学习基本上是可以解决大多数AI领域中普遍的形式和复杂的设置问题。深度模型使得强化学习算法可以端到端的解决更多复杂问题,所以强化学习算法提供我们一种算法框架去抽象问题。深度学习根据这种框架表示,提供我们可以将其应用于解决更加复杂的问题。比如高维观测值和复杂的动作空间。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第17张图片
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第18张图片2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第19张图片2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第20张图片
让我们看一些强化学习和深度学习结合的动作的例子,策略试试学习灵活的操作技巧,控制五指的关节,五指是模拟机器人的手掌,学习的是怎样拿起工具并且用这些工具去做一些动作。像用锤子钉钉子或者抓住门把手打开门,做这些动作被认为是高维度的,状态动作和反馈之间的关系非常复杂,因此这是一个非常复杂的一系列操作。2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第21张图片
在任务成功之前,你有可能通过强化学习得到一些意想不到的解决方法。所以这是一个卷积神经网络策略去学习Atari游戏,有趣的是通过不断练习,算法发现一种更加简便的方法去得分,可能这种方法就连设计这个游戏的人事先都未曾想到。通过交互足够多次后,发现如果将球通过小口直接打到最顶端就可以得到很多积分,也不用做一些额外的操作了。2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第22张图片
当然,当你将深度神经网络表示和强化学习算法结合时,你可以有效的得到一个复杂和多样的现实世界的抽象泛化。2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第23张图片
比如这个项目,机器被训练捡起很多不同的物体,所以它们通过相机观测和设法找到怎样通过移动手臂有效的捡起物体。2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第24张图片
如果你没有训练它们捡起足够多的不同物体,它们可以有效的推广到你给出一个它们从未见过的物体,它们能够识别出训练过程中见过的物体,它们会想,如果看到这些令人困惑的块,我需要将它们分开,分别捡起他们来获得更高的像素级奖励。偶尔会遇到,如果没有成功,可以采取一些正确的动作。这里我认为这块是成功的,下一块搞砸了。你可以看到需要一些修正动作,所以我可以进去推一下这些东西,不管用,所以我退回去再做一次,成功了如此往复。2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第25张图片
不仅仅可以应用再电子游戏,机器人上强化学习也可以应用在许多其他领域,比如K a t h y W u刚在伯克利获得他的P H D学位,他设法将深度增强学习应用在交通场景管理中。这是一个小场景,但你可以想象怎样将其拓展到真实世界中。这是一种对环境的最小模拟,可以得到交通堵塞。这是一些模拟的人类司机在圈中驾驶,即使他们在圆圈中驾驶,他们依旧能造成交通堵塞。因为一些人会加速,快撞到前面车时又得踩刹车,所以事实上你可以在圈中发生交通堵塞。现在,这辆红车实际上时自动驾驶的,它使用一种通过强化学习学习到的策略来调节。不仅它自身的速度,同时还让整个圆圈以最小交通堵塞的方式来行驶,所以即使红车只能控制自身的油门和刹车,但它试图优化它的奖励函数,该函数又取决于在圆圈中所有车的速度,所以它在做的好像是圈养其他所有车,让它们全部行驶在最优的速度范围内。如果你运行的足够久,最终将会达到一种平衡,让所有车都能正常行驶。另一个可爱的例子,这是一个交叉路情景,如果你只有模拟人类的司机,你将可以猜到,当他们行驶到交叉路口时,他们将会被迫刹车,然后他们将慢慢造成交通堵塞。因为他们在等着所有车通过交叉路口。但如果你有一辆试图圈养所有车的自动驾驶车,即视频中的红车,它将会等在视频中的位置,等待所有车都在其身后排好队,然后它会在完美的时间开过交叉路口,也就是当正好最后一辆车驶过的时候,接着它就可以通过控制自身速度来让这种完美保持下去,这就让整体行驶速度得到了最大化。这是个小例子,但你可以想象如何将其运用到更真实的场景中,这是一些很好的例子。2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第26张图片
下一个问题是,为什么在现在学习这些?为什么2018是一个很好的时机去思考深度强化学习?

因为很多事情在过去的几年间发生,这些事让现在成为学习深度强化学习技术的最佳时机。首先,看到了许多深度学习的进步。你知道,在深度学习后面有一个非常简单的概念,即把在训练的多个表示层,进行堆积,但这需要很多技术上的细节来让该概念真正有效。这些进步让现在的深度学习成为了一个非常非常强大的工具,相比于10年、20年前。我们也看到了强化学习的进步,算法上的进步以及对强化学习算法理论理解的进步。课程中将会讲到其中的一些。最后也看到了算力是的极大提升,在短时间内高效训练大型模型的能力,这让其在开发和研究中变得很实用。深度强化学习的概念本身非常古老,它诞生有一段时间了。上述三个因素的集合是真正让深度强化学习在现在变得突出的原因。2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第27张图片
为了让你们了解,该概念是什么时候诞生的,你要回到上世纪80年代晚期。如果没记错的话,大概是1989年,有一本书叫做控制用神经网络,这本书讲到的原理和课程所讲的非常相似,这是一段1933年写的博士论文的节选,名字是关于使用神经网络的机器人的强化学习,该文把其描述为未来工作重点,其中一些东西基板上就是现在的尖端研究。比如强化学习和人工神经网络自然结合,来得到高质量的普遍化。正如之前展示的例子,经验重演了一个简单的技术…。经验重演事实上是一个之前展示的突破策略的游戏的一个非常基础组成,由人类教师提供的教育性训练示例,导致了显著的学习速度提升。将会在周五讲解模仿学习。分层学习是现在的尖端研究,可能会有一节讲座讲到这个概念,在课程结束阶段当讲解高深主题时。强化学习智能体可以通过拥有过去的记忆应对一系列的非马尔可夫环境。会提到如何用循环神经网络提供记忆强化学习智能体。你可以看到很多概念已经诞生很久了,这些概念缺少的只是所有正确因素的汇合,来让其真正的变得有实际意义。当然,即使在很久以前也有成功的例子,20年前TD的论文是早期迹象,证明了像神经网络这样的高容量表示体和强化学习结合,能够让你解决非常复杂的问题。2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第28张图片
当然,在过去的五年,看到了很多在这领域的惊人成功。像是通过Q学习算法来玩游戏,还有通过策略训练算法来控制机器人,还有熟知的打败世界冠军的阿法狗。许多在上述例子中用到的技巧将会在本课程中讲解,可能在作业中使用它们。事实上,在本课程学习的过程中,应该至少能应用一半以上,这大概是强化学习的核心算法的基础。2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第29张图片
如何解答决策问题,但现实世界的决策还需要考虑更多,我们还得解决其他问题,以让现实世界连续决策成为可能,而不仅仅只是把观察转换成行为的一些重点问题,事实上还有很多其他问题。例如一个我们经常会面对的问题是,当我们想建立一个能在现实世界中运行的高效强化学习系统时,不能只是假定有一个很完美的完全正确的奖励函数。2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第30张图片
详细解释一下,基础强化学习涉及最大化奖励,这在强化学习的问题陈述中有提到,会在下周把该问题陈述正式化。但这不是连续决策遇到的唯一重要问题,会讲解更多的高深主题,例如逆向强化学习,这意味着你可能不是从能生成奖励函数的代码开始,而是从数据出发,人们执行你想完成的任务的任务案例,然后你想从这些案例中反向得出奖励函数,会讲到如何完成上述的技巧。还会讲到在不同领域迁移知识,比如可能解决过其他的结构类似的强化学习问题,然后你想高效解决一个相似问题。人们很擅长这么做,但电脑不怎么擅长,会在后面讲到一些最新方法来解决这个问题。还会学习如何预测以及通过预测去行动,可以通过学习这个来了解世界运行的规则,甚至可以通过合理的运用来预测未来。2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第31张图片
让我从奖励开始讲起。奖励是一个传统强化学习公式中一个很基本的部分,但在现实中,这不是一件简单的事,如果你在训练一个玩Atari游戏的策略,你有关于这个游戏的一个奖励函数,因为这个游戏有分数,你时刻知道你的表现如何,因为这是游戏的关键。

但在现实生活中,你没有一个积分,事实上人们并不知道他们到底该做什么,他们也不知道他们正在做的某一件事是好的还是坏的。即便有一个明确定义的成功,在某一特定的任务中,这一明确定义的成功可能很难测量。比如你是一个人,想知道如何给自己倒杯水。这是一件很简单的活,但仅仅只是确定你是否成功做了这件事,实际上需要很多感知能力,你得有能力去看这个世界,你得知道水在水杯还是在水壶,你得知道水壶是不是在正确的位置等等。你通过感知来完成这些事,实际上不是想得那么容易,很多时候在感知上确定你是否完成了这件事和实际上你完成这件事一样困难。你可以说我们只是在为观点提供依据,你可以说这里有一些非常原始得奖励信号,可能是这个孩子非常渴,所以当他喝水得时候他得到了奖励,而不是在我把水倒入杯中得时候,但如果你想把一切都考虑进去,你最终将得到一个极度困难得强化学习问题,一个本质上从不会得到奖励得强化学习问题,你将无法得到很多学习信号,并从中学习。

这一条摘自一些伯克利大学研究者得引用,写道:“作为人类,我们习惯于跟着奖励运转,这些奖励是如此之少,可能一辈子只能经历一次或两次,如果奖励存在的话”,这段话发布在Reddit上,这个引用这段话的人写道。在课堂中肯定比这个作者一辈子收到的奖励还要多。在人类大脑中,人们对奖励信号从何而来有一定的认识,它们从这一部分产生,基底神经节,从这副解剖图上看,这东西好像挺大的,占据大脑的好大一块,它肯定在做什么来生成正确的奖励信号,允许你学着去做有趣的事情,那些对你的存在有价值的事,所以它并不只是一个小开关,当你吃了顿美味的饭就开启一些很复杂的事情,在这里进行着。你再想想那些动物在野外学习做的事情,比如把自己想象成追着羚羊的猎豹,如果仅仅在抓到羚羊的瞬间得到奖励,这意味着直到你以某种神奇方法,莫名其妙抓到这只羚羊前,你不会意识到抓羚羊这一行为对你的存在有极大意义。这实际上是一个不可能出现的场景,因为羚羊事实上尝试着躲避你,所以如果你只是随机的走来走去,妄想能撞到一只羚羊。那在你学到抓捕羚羊实际上是一个好主意之前,你可能活不久,所以基底神经节中一定进行中一些更复杂的操作。同时人们很擅长完成一些和推断意图有关的事,也表明你可以把奖励看作一种意图。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第32张图片
人们很擅长推断,比如在该环境下其他人的奖励可能是什么,你可以通过观察一个人在做什么,然后推断他想达到什么目的,接着可以模仿他。这表明你可以从示范中学习,你可以复制一个行为,即使根本不知道这一行为是好是坏,只是认为这个人可能知道他们在干嘛,所以我就模仿他们,然后看看是否会有好事发生。你可以更具智慧地推断他们的目标,然后试着用不同的方式来完成他们的目标。比如你看到一个人想去某个地方,但你知道如何更快到达那里,所以我就选择这条更快的路。你可以通过观察这个世界来学习,可以理解这个世界是怎么运作的。可以学习如何预测在世界上发生的各种事件,然后用这些预测来提前制定计划。可以通过无监督学习来理解这个世界的优秀表现,即使你在这一过程中没有达到任何特定的目标,之后可以用这些表现来完成目标。还可以从其他任务中学习,可以把你有的其他经验拿来做类比,以帮助你更快地解决新问题,这表明你可以进行迁移学习。在本课程后期,将学到元学习,你会学到如何更高效地从过去的经验中学习。下面给出一些例子。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第33张图片
这是英伟达研究的驾驶模拟学习,这里的概念是你观察很多人类司机的驾驶数据,然后理解如何通过相机图像来驾驶汽车。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第34张图片
这是示例视频,展示了他们的汽车如何通过模仿进行自动驾驶。这里完全没有奖励信号,只有人们完成任务的数据可以被用来复制行为。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第35张图片
这个系统实际上是在直接模仿,它没有试着去解读展示的技能背后的目标是什么,仅仅是盲目的复制。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第36张图片
人类实际上可以推断目标。这是一个小视频,可以很好地展示这一点,这是一个很明显的心理学实验,你已经猜到了,这个男人不是真正的无能,他是在尝试向孩子展示这种动作。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第37张图片
小孩观察他的动作,但他不会完全一样地模仿这个大人,小孩很专心地观察着,同时他也理解这个世界怎么运作的,所以这小孩做的在视觉上和大人完全不一样,但是这个小孩理解了该任务背后的目标,所以他执行了更有用的动作。将在课堂上讨论能够产生这种行为的算法,可能不会如此复杂。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第38张图片
这是一段视频,有一个人类指示者,在向机器人展示它可以完成的动作,这个机器人在观察这个动作,然后它不仅仅只是尝试直接模仿它手臂先前的移动程度,而是试着去理解潜在的目标。在这里机器人注意到了每次你想让我把这个橙色杯子放在黄色杯子之上,这个黄色杯子永远在那,所以可能这个黄色杯子很关键,所以当我把黄色杯子放在一个新位置,然后把橙色杯子里的水替换成坚果,机器人应该理解,这说明它需要把坚果倒入黄色杯子,所以它可以推断目标,并在新情形中通过强化学习对目标重新优化。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第39张图片
预测,预测这个世界将如何发展以应对你的行为。证据表明,人类很多的智慧推理事实上是基于预测。我们预测运动指令的结果,已经成为感觉运动控制各个方面的一个重要理论概念,这言之有理。因为如果你可以,那你将可以计划,甚至计划一些你从未做过的事情,这仅仅通过你对这个世界的理解就能完成。我们将在讲解基于模型的强化学习时讨论我们如何做到这一步。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第40张图片
如果你能建立一个很好的预测模型,你将能够做一些很棒的事情。我们了解有多棒的一种方法是看那些有着完美模型的东西,所以如果你在模拟环境中,可以使用模拟器作为一个完美模型,可以尝试进行各种各样的事,这给了你一个可以完成哪些事的上限,如果你学了一个模型以及人们通过那些已知的正确模型做了什么,真的让人印象深刻。这是一个三年前的作品,它展示了在一个物理模拟器中,可以训练虚拟角色,让其走到用户指定的地点,这里用户在实时控制这个小人,这个小人走到了目标点,这个小人经过基于轨迹优化的策略搜索方法的训练。在之后的课程也会讲到这个方法。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第41张图片
当然也可以学习预测,接下来这个视频来自弗雷德里克.艾伯特,他对机器人做了一些实验,他让机器人和环境互动,然后记录下它们的经验以及它们看到的图像,还有它们执行的动作,然后用这些数据去学习预测以后的图像,所以如果机器人推走了一些物体,就像视频中那样它会学到一些环境物理,它能继续并进行预测。它会说如果我看到特定的图像,进行一系列特定的动作,我在未来能看到什么。你在视频中看到的这两行是两种不同的预测,每一列代表一个不同的动作,每一行从同样的图片开始,每一张图像,你给它一些候选动作,然后你让它预测接下来会发生什么,这个世界会发生什么,如果你做了这些动作。然后如果你能解决摩擦问题,你将能真正地选择一系列动作已达到你想要看到的结果。比如你想要机器人把这个小圆盘推到右边,那可能选这个动作是对的,因为这里我预测其他东西到右边。你可以利用这个再一次在世界中进行动作,比如这里用户让它移动在那儿的订书机,机器人将想象,如果它能过去高效抓住订书机,那么它就会过去执行,所以你可以进行预测,还可以计划。
在这里插入图片描述
这是一些更实用的东西,在剩下的20分钟讲一讲为什么学习深度强化学习是有意义的?这和开头讲的一些东西有关联,即我们如何建造智慧机器?如果我们真的回到这个问题的本质思考一下建造智慧机器实际需要哪些东西?我们可以考虑下哪些原材料?
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第42张图片
想象一下你要建造一个智慧机器,你从哪儿开始?你可能会想一个已经存在的智慧机器,比如人类。人类的大脑由什么组成,我们是否能够复制这个部位的功能。人需要看、需要听、需要动,还需要语言,所以也许我们可以根据这些部件写一些代码来模仿这些部件的功能。你回到从前能看到对大脑如何运行的模型非常原始,你看我们今日的大脑模型比从前了解更多更深,对不同部件有了更多的理解,所以可能去写一些代码来实现这些部件的功能了。但事实上很不幸,这非常之难。因为大脑每一部件都解决一个非常复杂的问题,而大脑又如此之多的部件,因此如果想手动设计出每个部件的功能,就像之前展示的那个机器人控制流程,这将是非常庞大的工程。

2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第43张图片
我们可能能让我们的生活简单点。如果我们同意有一个特定的假设,也就是学习是智慧的根本。我们不一定要知道它是不是真的,只需要假设。这是一个非常简单的假设,这一假设可能为真的一个理由是我们对某些事都能做得很好,比如走路,所以认为大脑的某一部分可以让人走路应该是合理的,但有些事情,只能通过学习来做,因为我们无法让这些能力与生俱来,比如你不可能生来就会开车,这只能通过学习,可以学习多种多样的事。一些可以学的事非常困难,所以可以得出结论你的学习机制很强大,强大到可以去学任何与智慧关联的事,即使一些事情你生来就能做得很好,依旧能学到很多东西,而这些东西是真正关键的,所以如果有一些问题需要被解决,你的学习机制就能强大到学着去解决这些问题,可能硬编码一些部分依旧非常方便,但是如果基本功能已经足够强大了,可能只需要它就够了,可能不再需要去写代码来实现我们机器大脑的每一个小部件,可能只需要实现正确的学习算法,能够学习机器大脑的所有部件。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第44张图片
可能,仅仅是可能存在一个算法或几个算法就足够完成这个任务。这是对前面假设的更进一步,不仅仅学习是智慧的基础,那一个或几个算法也可能是智慧的基础。这是一个很有意义的假设,可能它不是正确的,但有一些证据倾向于它是真的。你可以为每一个组件设计一个算法,一个单独的、灵活的算法。这个假设的一些证据涉及了人类和动物大脑的不同部分的灵活度,例如当涉及到感知时,你实际上可以把大脑的不同部件赋予新的能力,以解决这些感知问题。举个例子,你可以建造一个小型的电极排列,然后把其放在舌头上,与一个摄像机相连,将能还原出一个比较清晰的图像,即使你眼睛是闭着的。这表明视觉处理亦能通过舌头的触觉来进行。还有一些人能够通过听觉来感知周围发生了什么?如果想要一个比较带有侵入性的实验例子,这是一个对雪貂进行的一部分实验,有时也被称作雪貂重装实验。实验做的是把雪貂的视神经用手术与它的视觉皮层断开连接,然后重新连接至负责处理声音的那部分大脑。这实验在一个很小的雪貂上进行,然后把它养大,测试它的视敏度。研究人员发现,如果给与雪貂足够时间,它们真的可以学习用听觉皮层来处理这些从视神经传来的信号,这意味着那些在视觉皮层中用来处理信息的机构,在听觉皮层中同样存在,所以可以看到,尽管这可以是一个有局限的证据,但它确实很有说服力,证明大脑的不同部分有着相同原理。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第45张图片
如果你暂时停止对该猜想的怀疑,让我们假定这是真的,那么这一单独的算法需要哪些能力?首先它需要理解各种各样的感官输入,因为智能体将处在一个复杂的环境中,它需要处理诸如视觉、听觉、触觉等感觉,这需要极大的带宽,同时这些感觉非常的复杂,它们相互纠缠,涉及许多不同因素,同时算法还得选择复杂的行为,得让智能体选择动作以产生期望的结果。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第46张图片
为什么是深度强化学习?因为深度部分让你能够处理复杂的感官输入,像图像、声音等,这些东西如果由手动设计的功能去理解是非常困难的。深度还能让你计算特别复杂的函数,而强化学习则给了你需要的数学形式体系,为选择行为提供理论支持。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第47张图片
这里还有一些证据,佐证了深度学习的基本原理。这对你了解一些大脑中的感觉处理是如何工作的有些适用性,那些对这课题感兴趣的人,可以看看Andrew Saxe论文,该论文探讨了用深度神经网络学习特征统计,在动物不同感官皮质上观察到的特征统计,比如视觉感官,可以了解视觉皮层的特征统计,这幅图展示的是猫在结构化的刺激下产生的特征统计,看图中的竖条、横条、螺旋等等,可以推断其背后的特征可能是什么,还可以通过观察神经元发射率,可以对人工神经网络做同样的事,然后观察总体统计是否符合,比如频率的分布,也可以对听觉进行同样的分析,观察不同频率的敏感性,不同声音的特征等等,然后就是同样的步骤,观察特征统计的匹配度,甚至可以对触觉做同样的事。这是对动物触觉进行的一个实验,用一只猴子把它的手放在一个旋转的鼓上,鼓有独特的凹陷模式,这样可以具体知道哪个触觉信号被激发了。用人来做这个实验时,他们用的是布满灰尘的手套,人戴着手套去玩弄一些物体,灰层会显示手套触碰到了物体的哪个部位,然后他们会用深度神经网络来训练这些数据,这就是神经网络的触觉特征以及动物的触觉特征。再一次,你可以通过比对特征统计,在两者中找到一个良好的匹配。这是一个比较有争议的实验,因为提出了一个明显的问题,这是不是意味着他们用的一些奇奇怪怪的深度神经网络和大脑运行机制一样,可能不是,因为他们所使用的这种称为深度信念网络的神经网络,现在基本没人用了。但一个更有趣的设想可能是深度神经网络没什么特殊,但是高容量模型有特殊之处,即当你有一个能代表非常复杂函数的模型时,它将能自动分析特征的统计数据,用来处理真实世界的信息。这就是只能赋予高容量模型足够的权重,足够的层级,而不是精心挑选一个神经网络设计,我们在动物大脑中观察的特征之所以能够反映神经网络的特征统计,是因为它们都是非常高容量函数的接近者,即使它们的真实设计可能有点不同。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第48张图片
一些大脑存在强化学习证据,有许多论文在分析强化学习作为一个动物的控制决策模型。事实上,强化学习首先出现在关于动物决策的研究中,之后在被应用进计算机科学,作为机器决策的一个形式体系。你知道预期奖励的感知与奖励本身具有相似的激发模式,这意味着你看到什么东西,然后你得知这个特定信号总是在某些奖励之前出现,那么就会把该信号与奖励相关联,这和我们称为贝尔曼备份非常相似。这在之后讲值函数时会学到。基底神经节似乎和奖励系统有联系,有很多研究在分析这个联系,像适用这样无模型的强化学习,经常时对动物适应的实验数据的好的搭配。如果你在研究动物需要多久来适应?它们犯了哪些错误等等,这和无模型强化学习的计算模型非常搭配,但不是总是搭配的,这不一定时唯一的解释或者不是对整个过程的合理解释,可能还会有更多细节。比如基于模型的强化学习也可能与之有关。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第49张图片
这是一些好消息,可能组件在那儿,这是一个值得学习的地方,所以现深度在强化学习可以做什么呢?还有什么它做不到的呢?还有很多需要去研究,现今的深度强化学习可以对一些有着简单规则的领域非常精通,比如棋盘游戏或者说视频游戏类似的封闭世界。你知道这些世界的规则,可以生成大量的经验,学习你的策略。还可以通过大量的感官输入来学习新的技能,就像之前提到的机器人抓取例子,简单的操作技能。还可以用足够的人类专家行为来进行模仿,比如之前的驾驶例子,当然还会在接下来的课中进一步探索这些例子的细节。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第50张图片
现在面临的挑战有哪些呢?离完美还有很大很大一段距离。其中一个挑战是人类和动物可以及其快速地学习和适应,比当今计算方法所能解释的还要快无数倍。深度强化学习通常非常慢,大量研究试图通过过去的经验来把它变得更快、更高效,我们也会提到一些类似的研究,但这是一个非常大的开放问题。第三点是我们很多时候不清楚奖励函数该是什么,所以你将说你的强化学习算法是关于哪个奖励函数的决策模型,因为这将对它怎么学习,它的学习速度产生极大影响。此外我们也不清楚预测的角色,我们该大力发展无模型强化学习,还是基于模型的强化学习,它们本质上是同一个东西吗?它们是否在完成类似的东西?这些现在都是开放问题。
2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)_第51张图片
今天的课上我真正想解释清楚的基本概念是,我们可以用深度强化学习开始做的一件事是,我们可以考虑用另一种方法建造智能机器,不是单纯地分割机器大脑成不同部件,然后给每个部件一个功能,而是倾向于指定正确的目标,设计一个相对简单的算法,可以是非常通用的算法,可以捕获各种不同的行为,适应不同的学习场景,仅仅通过一个通用的学习算法和环境之间的交互。这个想法似乎有点激进,但实际上这是一个很老的概念,这基本上与计算机科学领域一个时代。这是一个我非常喜欢的引用:与其创造一个模拟成人的程序,还不如先创造一个模拟儿童的程序,然后给与这个程序适当的教育。这句话是图灵说的。

你可能感兴趣的:(深度强化学习)