MIT 6.S094· 深度增强学习
雷锋网按: MIT6.S094 完整版授权中译视频
翻译 | 田茜 涂世文 蒋成 整理 | 吴璇
本篇是 MIT6.S094 第三讲深度强化学习的课程笔记。
怎样教会系统在数据中感知世界并采取行动?
一个人工智能系统需要实现的任务栈
1.环境:系统工作的世界。
2.传感器:采集物理世界的信息并将其转换成机器可以处理的原始数据。是机器人在物理世界工作的输入端。
3.感知数据:传感器采集的原始数据。
4.特征提取:从感知数据中提取特征。提取数据结构以便能够输入、识别、分割和理解数据。不同级别的抽象层都可以处理原始的感知数据。这个任务早期是由人类专家完成的,现在深度学习自动完成这个任务。
5.由于机器学习技术的应用,我们能够对感知数据实现更高级别的抽象表示。
6.一旦机器学习技术将这些数据转换成简单、可操作的信息,我们就将这些信息聚合起来,称为知识。深度学习网络能够实现监督学习任务、生成任务、非监督技术。知识具有简洁的使用价值。这些价值可以是单一的价值,比如语音、图像等等。
7.我们建立了一个分类系统,知识库,把所有的知识连接起来。
8.代理推理基于这个分类系统:连接过去和现在感知到的所有数据,根据目标制定一个计划。目标可以是一个奖励函数。计划:融合感知信息并且使行为更适合深度学习方法。
9.由于系统是在实际环境中运行的,它必须有实际效果。
人工智能栈中有多少能够「被学习」?
我们能够学习表示和知识。神经网络将数据映射成信息。在这方面,核方法也是有效的。将系统需要的感知数据映射成知识是深度学习的亮点。
问题1:我们能将这种方法扩展至推理阶段和可操作的端到端的信息吗?
问题2:我们能将这种方法扩展至用户数据中心(SDC,Subscriber Data Center)和机器人的真实案例中吗?
深度学习的类型
-
监督:每个独立的数据点都被人们标注。
-
非监督:数据没有被标注。
-
半监督学习:有一部分数据被人们注释。
-
增强学习:是半监督学习的一个分支。
目标:从稀疏奖励/监督数据中学习,利用状态转移的时间动态特性,一个状态到一个状态的转移会通过时间的变化获得,从而根据先验数据推理出当前真实的知识。我们能够生成真实世界的稀疏学习信息。
强化学习的哲学动机
监督学习:存储原始的真实数据并从这些数据中生成表示。
强化学习:通过时间,强制传播稀疏信息,将有价值的奖励分配给没有直接获得奖励的状态。为了体现合理性,如果数据/奖励是稀疏的,那么他们通过时间连接。这与推理是等效的。
代理和环境
时间连接模型是一个代理在环境中实现一个动作,接收一个新的状态和奖励。这个过程连续地重复执行。
例如:
-
Atari Breakout(雅达利公司推出的一款游戏):代理是操作杆。
代理的每一个动作都会影响环境的改变。奖励累积机制决定谁获胜。游戏中会获得奖励的点数。奖励机制必须是系统能够解释的标准方案。目标就是使获得的奖励最大化。
-
车杆平衡:
目标:移动小车顶部平衡杆的连续性问题。
状态:小车的角度、角速度、水平速度。
动作:水平推小车。
奖励:如果杆向上,每次奖励1个点。
-
所有人以第一人身份玩射击游戏
战士:目标消灭所有敌人。
状态:游戏的原始像素。
-
工业机器人: 用机器人来包装。
目标:选中一个盒子,把盒子放入容器中。
状态:世界的原始像素。
-
马尔科夫决策过程:持续行动奖励状态直到终结。
强化学习智能体的主要组成部分
-
策略:在每个状态中该做什么或者该采取什么行动的各种计划或者方案。
-
值函数:衡量每个状态好坏和每个行动结果好坏的函数,装置据此来决定「呆」在一个好的状态以及采取「好」的行动方案。
-
模型:用于表示装置所处环境或者世界,是一个抽象概念,对于行动决策十分有用。
例如:房间里的机器人
确定性方法:当一切都是确定的时候,即机器人的移动方向确定不具有随机性,则直接选择到达最大奖励 [4,3] 位置的最短路径即可。
但是,在这个案例中机器人的移动具有一定的不确定性,如图所示:机器人的每次移动具有随机性,向上移动的概率为80%,向左移动的概率为10%,向右移动的概率为10%。因而都需要采用非确定性的方法。
关键观测: 在空间中的每一个状态都需要一个方案来控制非确定性的环境 。
如果按照对每一步移动进行惩罚的原则来设计奖励函数,即每次移动的奖励为负,那么在这种情况下,最优的策略就是选择一条最短路径。
假如我们减轻惩罚,从0.1减至0.01,那么机器人每次移动的过程将会带有一定的随机性。并且这种随机性会随着惩罚力度的降低而升高。
如果我们将每次移动的奖励调整为正,即机器人的每次移动都会增加奖励而不是惩罚的话,那么将会有一个显著的刺激使得机器人一直在 3x4 的空间里不断移动,而永远不会到达终点。
值函数
一个状态的值或者说在环境中任何事物的值,是我们在未来很可能会得到的奖励。要长期地表现良好,我们不仅要考虑当下的奖励,还要考虑将来的奖励。但由于我们的环境是随机的,我们永远不能肯定,如果我们下一次执行相同的行动,我们会得到同样的奖励。所以,我们会给未来的奖励打个折扣。
图中公式里面的红色 Gamma 符号表示随着对未来的不断推进,越来越大的折扣将会降低我们未来获得的奖励。
一种好的策略是对未来各时间段的折扣奖励求和,并最大化未来的折扣奖励,这便是强化学习所希望实现的。
Q-Learning
我们可以通过使用任何一种策略对状态进行估计来最大化未来的「折扣」奖励。
这样使得我们可以考虑在更大的状态空间和行动空间,我们通过模拟或者直接在真实世界中采取行动并不断更新对于行动好坏的估计。
探索与开发
由于更好的估计由 Q 函数形成,我们对更好的行动有了更深刻的理解。然而这并不完美因为存在着探索值。随着估计准确度的提升,探索值会随之降低。
因此,我们一般在初始阶段希望智能体在环境中多多探索一点,并随着时间不断降低探索的量,因为我们的估计会越来越准确。
在最后系统发布的时候,应该根据 Q 函数以一种贪心的方式运作。
上图为 Q 函数的表格式表示,Y 轴表示状态,X 轴表示行动。
Q-Table ( Q 代表动作的质量 )通过随机的方式进行初始化,并且通过迭代地使用贝尔曼方程不断进行更新 Q(s,a) 来给出越来越好的近似。随着时间推移,我们对状态和行动好坏的估计便会形成一张最优的 Q-Table。
问题在于:当 Q-Table 呈指数增长的时候,比如将原始图像像素作为输入的话,潜在的状态空间,可能的状态组合是非常大而多的,有时候会超出系统内存能够容纳的范围,超出利用贝尔曼方程进行估计的范畴。
所以,这就到了深度强化学习该出场的时刻了!
深度强化学习
众所周知,神经网络非常擅长于估计。
相较于机器学习,深度学习可以在更大的状态空间中对值进行估计。这使得我们能够对原始的传感器数据直接处理,更能胜任现实世界的应用,是一种可泛化的技术。
这种理解源自于基于所采取行动来将原始的传感器数据转换为简单有用的信息的方式。
我们接入了一个神经网络,而没有使用 Q 函数。
输入:状态空间。
输出:每一个状态所对应的函数值。
DQN:深度 Q 网络。
那么,如何训练一个 DQN ?
贝尔曼方程:输入奖励和未来奖励的折扣 。
神经网络的损失函数: 接受当前状态的奖励,通过神经网络的前向过程计算未来状态的值,并从当前状态行动的前向过程中减去这个值。
我们得到了 Q-函数估计器产生的值的差异,并相信未来的值和可能的值会基于这些可能的行动。
算法
输入: 行动中的状态。
输出:每个醒的的 Q-Value 。
给定一个转换 S,一次行动 A ,A 能生成一个奖励 R’ 并转换到状态 S‘。
更新过程是通过神经网络为当前状态做一个前向过程,并为下一个状态中所有可能的行动执行一次前向过程,然后使用反向传播更新权重。
DQN 技巧
经验回放 :
由于游戏通过模拟进行,观测都被收录了一个经验库里,通过在先前的经验集中进行随机抽样抽取批次再进行训练。因此,系统不会在一个特定的模拟中过拟合。
固定目标网络:
我们使用神经网络来估计当前状态的值,然后使用它与时间相乘。在运行这个神经网络的同时,我们也在更新这个网络。因此,损失函数中的目标函数改变了,会造成稳定性的问题。所以,我们通过每1000步进行更新来修正这个神经网络。
当我们训练这个网络的时候,用来估计目标函数的网络就固定了,使得损失函数可以保持稳定。
奖励裁剪:
使得系统能够以泛化的方式执行。这样使得奖励函数得到了简化,对正奖励还是负奖励均适用。
跳帧:
每四帧执行一次行动
圆圈: 当使用技巧的时候
叉号: 当没有使用技巧的时候
数值越大,收到的奖励也越大。
总结:回放目标使得奖励得到了显著的提升。
深度Q-Learning算法
提示:代码中的循环并不是训练的一部分,它是作为保存观测、状态、行动、奖励和下一个状态到 Replay Memory的一部分。
接下来,我们从 Memory 中随机抽样,并通过最小化损失函数来训练网络,
epsilon贪婪策略:epsilon 是探索的速率, 一开始设定为1,之后这个速率会随时间减小。
2015: Atari Breakout(雅达利游戏公司推出的一款游戏)
DQN 已经在多款雅达利游戏上取得了远超人类的成绩。
AlphaGo (2016)
注意:在任何点上可能的合理边界位置,有 2.8 x10^(170)种可能。
利用人类专家下棋方式,以一种监督的方式训练模型,RL 方法来击败人类专家。(有偏见的)观点:AlphaGo Zero(2017)在人工智能领域,取得的十年的成就:
1. 它是在没有任何训练数据的情况下开发的。
2. 击败 AlphaGo。
AlphaGo 方法
用蒙特卡罗树搜索(MTCS)。
给定一个大的状态空间。我们从一个初始值开始,用一些探索和开发的平衡来选择行动,直到达成一些结论。这些信息是反向传播的,我们学习了棋局位置的价值。
AlphGo 使用神经网络来评估状态的质量。
技巧:
-
利用基于神经网络预测的 MCTS 来估计未来的状态有多好。它执行一个简单的先行动作,做一个目标校正以产生损失功能。
-
多任务学习:网络是「双向」
-
它输出了最优移动的概率。
-
它还估计了获胜的可能性。
-
我们希望在短期内将最好的行动结合起来,并获得高概率的获胜机会。
-
更新的体系结构:Resnet(ImageNet 的胜利者)
Deep Traffic
-
我们可以进行多个强化训练(10 辆车)。
-
定制汽车款式。
目标:随着时间的推移达到最高的平均速度。
道路:网格空间,一个占用网格:当空的时候,它被设置为 ab-Grid 值,此时可以获得任意速度(最低速度到最高车速)。
与其他汽车在格子中:此时栅格的作用是慢速行驶汽车的速度。
我们可以决定我们想要用作网络输入的部分 。
安全系统可以被认为相当于基本的MPC:基本的传感器,可以防止碰撞。
任务:在安全系统的约束下移动空间。
红色:不能达到的空间。
目标:不要被堵在路上。
输入:状态空间。
输出:不同操作的值。(加速、减速、左转和右转)
基于 Epsilon 的价值和通过训练,推理评价:我们选择探索范围。
「大脑」是一种输入,状态。奖励执行向前传球并计算奖励。「大脑」是神经网络被包含在训练和评估的地方。
新添加:可以由神经网络控制的代理数量,从 1 到 10。评估以同样的方式进行。
注意:代理不知道其他强化训练车辆的情况。这些操作对每个个体代理都是最优的,而不是以优化的分布式方式(考虑整体最优)。
评估:
-
每次运行时收集模拟的 45 秒 的数据。
-
计算了 500 次运行的中位数。
-
服务器端评估。(运行时间,误差,泛化值)
-
随机性已经大大减少了。(不可能通过随机调参数而得到优化的模型)
增强学习方法是否可以根据人类行为进行纠正?
-
我们可以探索驱动数据 。
-
现实世界的测试不可行。
波士顿机器人
Waymo:(美国知名自动驾驶公司)
-
用于感知的深度学习。
-
大部分的工作完成基于感知器。
-
所采用的方法是基于模型的。
原文链接: https://hackernoon.com/mit-6-s094-deep-learning-for-self-driving-cars-2018-lecture-3-notes-deep-reinforcement-learning-fe9a8592e14a
雷锋网 (公众号:雷锋网) 雷锋网
。