首页 AI学术青年与开发者社区

【中英字幕】伯克利大学 2018 年秋季 CS 294-112 深度强化学习

开课时间:2018年12月20日
开课时长:26讲

学习这门课程的先验知识:

  1. ML(可以上CS189,CS289,cs284A)
  2. Tensorflow基础(作业提供的代码是tensorflow的)
  3. python基础
这门课会包含的内容
  1. 从监督学习到决策问题
  2. model-free的算法:Q-learning,policy gradients,actor-critic
  3. 先进的基于模型的学习和预测 
  4. Exploration(RL中的一个概念)
  5. 迁移学习,多任务学习,元学习
  6. 更多高级话题
五个作业,一个项目
  1. homework1:模仿学习(如果期间tensorflow不清楚或者pytorch不是很清楚可以去补习一下)
  2. homework2:实现policy gradients  
  3. homework3:Q-learning and actor-critic algorithms
  4. hoemwork4:Model-based reinforcement learning
  5. homework5:Advanced model-free RL algorithms
  6. Final Project:ICML或者NIPS级别的workshop papaer(顶会论文)的同学可以考虑
 DL在很多非结构化任务上有着良好的性能,比如图像识别、语音识别等,但是DL尚未解决如何去智能决策的问题,RL尝试去功课这一难关。RL通常由很简单的数学模型描述:agent <-> environments,agent做出决策,而environments给出consequeces,也就是我们观测的奖励。
而现在DL和RL的联系越来越紧密,传统的CV需要提取特征,如何再讲小的特征变成大的特征,然后经过分类器最后得到结果,现在DL的出现使得中间的过程只需要使用端到端的网络,并且不需要人工设计特征算子。RL的传统方式,首先要对游戏进行编码,然后从这些编码中得到可以用于决策的特征(难,可能需要问专家)然后同样的提出更高级的特征,最后你会使用liner policy or value fuc 去学习。DL和RL的结合,使得上述features的寻找更方便,并且不经限于此。
 
强化学习的框架可以用于以另一种复杂的表达形式表示现在许多DL问题,比如CV,NLP,而其中的深层网络可以使得RL有更高维的state以及action spaces。
可想而知,假设RL中有一种算法可以使得所有的任务都可以进行学习,那么它将具有以下的特性。
  1. 能够接受各种各样高纬度的输入
  2. 能够从无穷多的动作空间中选择决策。
 
[展开全文]

https://zhuanlan.zhihu.com/p/32575824

这个虽然是文科生写得,但是,看完课程再看会有更新的体会

 

imitation learning
 
这里的图像称为观测 (observation),而把输出的结果称为行动(action):系统要做的行动无非是给观测到的图像贴上属性变量的标签。在从的过程中有一个策略 (policy) 函数,这个函数确定了给定观测之后,行动的概率分布,这个分布比较常见的方式是通过一个Softmax函数来确定。这个策略里面有一个参数,而如果是一个神经网络,那么这个参数就是神经网络的权重。在监督学习中,我们的目标是找到一组很好的参数,使得它能很好地完成任务。
 
observation is the lossy/partial part of state
状态 (state) 的概念,通常指真实环境的相关配置全貌,包含了我们去了解这个世界所需要的一切信息,但这些信息不见得能从单一的观测中得出来。以一个猎豹追逐羚羊的图片作为例子,这个图片作为观测,本身是一个很大的张量;而在图片背后,其实潜藏着一个真实的物理系统,包含了譬如猎豹和羚羊的坐标、速度以及其他各种量。这样的系统构成了我们所真正关心的状态本身。究竟是使用状态还是观测,取决于我们能否完全了解到整个情况:我们看到的感受到的,不见得就是整个环境本身,往往是不充分的。如果我们的图片上猎豹正好被一辆车挡住,此时虽然我们在观测中看不见猎豹,但它依然是真实存在的;但是对于下围棋这种例子,棋盘上所有情况都是非常清楚的,因此观测就是状态本身了。
state depicts fully environmental information 
状态序列具有Markov性,但观测序列不具有Markov性。
behavior cloning may not work correctly:
训练数据可能不够充分,假设条件可能太少。
 
you may see something new
people make mistakes
 
我们在一个地方出现一个很小的失误,后续误差可能就累计起来了,最后发散到一个很离谱的地方。这本质上是因为序贯决策的特性才导致了这样的问题:如果只是一个单独的问题,也许会犯点小错误,但这个错误是有限的;而这里的决策并不是独立同分布,每个行动都会影响下一个状态,这样错误就会被累积起来。
DAgger: to make p_phi = p_data
它的目标是从分布收集训练数据。为了做到这一点,我们只需要去运行策略来收集一些新的数据就可以了。困难的是,我们需要去对进行重新标记:我们不仅仅是需要图像,更重要的是要给出对应的行动才是。
problem: use human to label
 
Why might we fail to fit the expert?
 
1.Non-Markovian behavior (solution: RNN, LSTM) 非Markov行为
专家所做的行为可能不完全依赖于当前所看到的东西。我们在前面学习的假设中,给定的策略形式假设行动只依赖于当前的观测。在这样的假设下,如果我们看到同样的东西两次,那么我们也做同样的行动两次,和之前是否看见过是没有关系的。这在一些情况下并不合理,是因为我们只能得到部分观测 (partially-observed),当前的状态不能被这个观测所完全推断出来。还有一点就是即便是人类,看到同样的事情两次会做出一模一样的行动,通常也是非常不自然的:譬如开车,每次行为都会有些差异,我们也很难理解我们为什么这么做,也不理解到底发生了什么。要想解决这个问题,一个想法是把之前所有的观测都提供出来,变成:行动依赖于过去所有的观测,这样就能处理非Markov行为了。那么怎么使用整个历史呢?在自动驾驶的例子中,如果历史帧数多的话,权重参数的个数就会增长得很快。在这个时候,通过权重共享等手段,循环卷积神经网络就可以大显身手了。训练的目标是让输出的行为概率分布更接近人工操作。对于RNN的选择,通常使用LSTM的效果是比较好的。
 
 
2.Multimodal behavior
当我们要驾驶无人机躲避一棵树的时候,我们可能会向左绕或者向右绕,但如果将这些决策进行平均的话就变成向前飞然后撞上去了,就悲剧了。如果我们采用离散的概率分布,其实问题不大:如果离散成(向左飞,向前飞,向右飞),那么肯定向左向右有一个很大的概率而向前飞概率很低。而如果我们使用连续的概率分布,或者我们将它离散化得非常细,那么概率分布将会一团糟。如果我们使用高斯分布这样的单峰分布,显然是不合理的。
 
1.Output mixture of Gaussians
使用高斯分布的混合,即把分布表示为这样的加权线性组合,这样就可以代表一些多峰分布;这五类方式的主要缺点是需要指出这个分布有多少个峰,如果有十个峰的话可能还是很麻烦的。
2.Latent variable models
use NN to generate latent variables 
这类模型可以表达任意概率分布:虽然它本身还是输出一个高斯分布或者一个什么其他的简单分布,甚至可以是一个值。现在我们输入的不仅仅是一个观测图像本身,同样也输入一个噪音进去,譬如给定维数的多元高斯噪音,然后得到输出。这一模型可以学习任何的非线性函数,可以把单峰的噪音变成多峰的输出。我自己感觉这个模型输入了一个随机噪音进去,对应了原分布的某一个位置,有点像概率论里面的分布变换。这种方法的主要问题是这个模型很难训练。
3.Autoregressive discretization
逐渐产生多个dimensions 上的数据
回归离散化 (Autoregressive Discretization)。如果有连续的动作,一个可行的方法是将其离散化;但是如果维度大了,离散化后的联合分布将维度灾难。一个小技巧是避免联合离散化所有维度。假设我们有三个维度,首先我们离散化维度1,通过诸如Softmax的方法得到维度1的几个离散分类的分布。然后我们从这个分布里面进行抽样,得到维度1的值(其实是某个分类),然后把这个值输送给另一个神经网络(顺便还有图像或者某些隐藏层数据),这个神经网络给出离散化后维度2的分布,再如此得到维度3的分布。这样做的一个好处是,维度2的分布是以维度1的样本为条件的,即。这样就可以表示出任何的联合分布,但是在一个时段只需要离散化一个维度。当你训练这样的模型时,只需要给每个维度的正确值就可以了,做一个标准的监督学习过程。在测试中,需要依此采样然后馈入后续网络之中。
 
 
Problems:
Humans need to provide data, which is typically finite
第一,人类需要提供数据,而人能提供的数据通常是非常有限的,即便如头戴摄像机这样相对便宜的手段被开发出来,而深度神经网络通常需要大量的数据才能把事情做好,此为一大限制。
Deep learning works best when data is plentiful
Humans are not good at providing some kinds of actions
人类不善于提供有些类型的行动指导,原因可能是多种多样的。
 
Humans can learn autonomously; can our machines do the same? • Unlimited data from own experience
人类可以自主学习而机器则不能,自主学习的好处是我们可以通过自己的经验获得无限量的数据,看到错误可以自我修正,达到连续的自我提升。
Continuous self-improvement
 
 
 
 
 
 
[展开全文]

 

增强学习有一个学习者--智能体 (agent)。智能体需要和周围的环境和整个世界打交道,智能体所做的事情是做出决策 (decision),来执行什么行动 (action);而世界环境则接受智能体所做出的决策,并给出相应的后果或影响。我们主要关注的是两种后果:第一种是智能体所能看到或者感知到的它的行动所产生的结果,称为观测 (observation):譬如一个机器人想要到某个地方去,它能“看”到它经过一整个过程的周围景观;另一种是智能体能直接通过做出某项行动所受到的奖励 (reward),譬如狗能够得到食物来让它的胃得到满足。
整个增强学习的过程其实就是agent不断与环境交互,交换的时候会影响到观测同时可能获得奖励的过程。
 
1.From supervised learning to decision making:
其实所有的监督学习都可以retarget成一个增强学习的问题:如将输入定义为观测,输出定义为行动,损失函数定义为奖励。
但是相比传统的监督学习,增强学习往往提供的假设更少。使用BLEU评分来描述翻译质量,BLEU是不可微的,因此常见的监督学习方法对这个问题并不好做,此时就适合用假设更少的相关增强学习算法。
2.Model-free algorithms: Q-learning, policy gradients, actor-critic
3.Advanced model learning and prediction
4.Exploration
5.Transfer and multi-task learning, meta-learning
6.Open problems, research talks, invited lectures
 
DL helps us handle unstructured environment (read raw pixels)
我们采用深度学习的基本逻辑就是它能进行端到端 (end-to-end) 的训练,做出一个复杂的多层的具有很强表达能力的模型。e.g., in CV 深度学习可以训练出一个模型,从像素级别的图像经过卷积神经网络的若干线性和非线性变化最终产生出一个分类输出,来说明这个图片是一个什么。
 
(image voice, etc)
DL的出现帮助RL成长的更加快速。
通过与深度模型结合,可以辅助进行后续的决策:比如看到这个老虎是不是要跑?
Reinforcement learning provides a formalism for behavior (Decision Making, not just recognize something)
what is deep RL?  
not relay on master to tell and use the end-end method to make the right high-level decision.
 
What does ends end-to-end learning mean for sequential decision making?
绝大多数的机器学习系统都会通过看到的东西来以某种形式影响着世界。Agent通过ml的分类输出做出后续的决策或行为。下图:agent通过得知这是老虎的决策之后(隐含,因为带有标签的内容其实很难量化,比如这个一直吃饱的老虎,受伤的老虎,还是一只饥肠辘辘的老虎),得到了逃跑的结论,进而影响到了环境,从而构成了感知到行动的交互过程。
 
实际中并不会人为地设定中间点,这样利于全局地考虑问题  
• Learning reward functions from example (inverse reinforcement learning)
• Transferring knowledge between domains (transfer learning, meta-learning)
• Learning to predict and using prediction to act
 
How to define the reward ?
• Learning from demonstrations
• Directly copying observed behavior
• Inferring rewards from observed behavior (inverse reinforcement learning)
• Learning from observing the world
• Learning to predict
• Unsupervised learning
• Learning from other tasks
从其他任务中学习(这一点也是人类非常擅长的),如在过去做过类似结构的任务,就使用迁移学习来加速到现在要做的任务中来
• Transfer learning
• Meta-learning: learning to learn
用过去的学习经验来弄清如何学习得更快:我不知道怎么解决这个问题,但是在过去我通过尝试一堆方法来解决过其他问题,因此我同样把这些方法在现在的问题中进行尝试看看效果。
 
Imitation learning or further inferring intensions 
 
增强学习强调学习“技能”,学习从观测状态映射到行动的这样一个行为。当然我们也可以尝试去预测,而预测则是将现在的观测状态和行动,映射到下一个状态。
 
luangss@zju.edu.cn
 
 
 
 
 
 
 
 
 
 
 
 
[展开全文]

本节主题:

1.定义序列决策问题

2.模型学习(Imitation learning):supervised learning for decision making(决策监督学习)

Q:模仿学习如何工作?

Q:如何让模仿学习工作的更好?

3.模型学习近期的研究案例

4.模型学习缺失什么?

术语:

state和obervation的区别: 以深度强化学习为例(一般以图片为输入),o是指图片中的像素,但在观察的背后有某种对物理现象的总结,所以,状态本质上是你看到这个图像模型时的一个充分概要关于正在发生的事,可用于预测未来而观察是状态相关一个序列。以下图为例:左边的图片分类为老虎,我们把图像o称为观测(observation),输出的结果a称为行动(action);系统要做的是给观测到的图像贴上属性变量的标签,从o到a的过程中有一个策略函数,这个函数给基于条件o,a的概率分布,这个分布比较常见的方式是通过一个softmax函数来确定,这个策略里面有一个参数,如果π是一个神经网络,那么这个参数就是神经网络的权重。在监督学习中我们的目标是找到一组很好的,使其很好的完成任务。

模仿学习

  以无人驾驶为例,通过人类获得数据,然后清洗成训练数据,在使用监督学习进行训练,最后输出策略,这个策略可以是行动(转向、油门、刹车)的分布。分布可以是离散的,这时就需要把这些行动离散化;也可以是连续的,如输出转向角度和预期速度的高斯分布。用这种方式能训练无人驾驶吗?不能,训练完毕后,我们显然希望运行的轨迹能够完美切合黑线,但是现实是丰满的,因为实际中总是存在误差,一开始可能会很小,但是误差会积累,因为决策不是单独的问题,每个决策都不是独立同分布的,每个行动都会影响下一个状态,偏移量就很大了,就会出现未知的状态。

总结来说,模仿学习通常有一定局限性(分布不匹配的问题、误差累积问题),但有时候能做得不错,如使用一些稳定控制器,或者从稳定轨迹分布中抽样,抑或是使用DAgger之类的算法增加更多的在线数据,理想化地如使用更好的模型来拟合得更完美。

模仿学习在很多其他领域也有应用。如结构预测问题,不仅仅是输出一个标签,而是更结构化的输出。这种预测问题在自然语言处理,如机器翻译或问答机器人中尤为重要。比如人家提问“Where are you”,回答“I'm at work”。如果像RNN一样一个词一个词输出,如果第二个词at变成了in,那么第三个词可能就不能是work了,即便和数据本身比较接近,可能说school会好一些:第二个词的选择会影响第三个词。因此在结构预测问题中,答案的一部分会影响另一部分,有点类似一个序贯决策问题。因此一些模仿学习方法已经在这个领域中流行了起来:因为通常有训练数据所以会比较像模仿学习,而且是序贯的。其他的诸如交互和主动学习,要从人的反馈中学习;再就是逆强化学习。

那么模仿学习的最大问题是什么?第一,人类需要提供数据,而人能提供的数据通常是非常有限的,即便如头戴摄像机这样相对便宜的手段被开发出来,而深度神经网络通常需要大量的数据才能把事情做好,此为一大限制。第二,人类不善于提供有些类型的行动指导,原因可能是多种多样的。第三,人类可以自主学习而机器则不能,自主学习的好处是我们可以通过自己的经验获得无限量的数据,看到错误可以自我修正,达到连续的自我提升。

[展开全文]

1.为什么模型不能很好地模仿专家行为

(1)非马尔可夫行为

(2)多模型的行为

2.如何解决非马尔可夫行为

通过利用历史数据你和RNN和CNN得到拟合参数

3.如何解决多模型的行为

离散action通过类别选择输出多种选择

连续情况则需输出高斯分布,但是在部分模型的情况下,结果不是我们想要的,因此有以下的几种解决方案,从而应对更广泛的问题

4.如何解决多情景的情况

(1) 输出混合高斯分布模型,即在输出时输出多个高斯分布,通过softmax函数实现,不仅仅是一个均值和方差,而是N个均值和方差。每个分布都有一个标量权重,权重之和为1,这种方法叫混合密度网络,对多模型分布的简单设计。但是这种情况只适合低维的模型,即在二维的动作下,才好使用

(2)隐变量模型,比较复杂,但是是多模型分布应用很广泛的方法,这个输出依旧为单高斯分布模型的简单形式,只是在输入的时候添加噪声,噪声是从高斯分布中采样得到,在多模型情况下,将噪声转化为较为复杂的分布,从而改变高斯分布的偏向,即均值和方差,从而做出选择,但是如何将噪声转化为分布,可以查找文献:

a. Conditional variational autoencoder

b.Normalizing flow/realNVP

c.Stein variational gradient descent

在这里困难得原因是网络没有必要使用噪声,因为噪声和输出没有任何关系

(3)自动回归离散,比较简单,但是需要对网络做出多种改变,在训练的时候不需要采样,但是再测试的时候,需要做一次一个维度上的采用(即一次一个维度离散化),并将数值输入到神经网络中,

这样可以避免维度灾难,

 

 

而以下则为模仿学习的总结

[展开全文]

强化学习为行为提供了一种形式主义的规范,用一系列角色同环境交互,并同环境中获取奖励。

什么是深度强化学习?

  深度学习提供了端到端的自适应学习,传统的强化学习从环境中提取状态,并辅以值函数等作出决策,两者结合,进行端到端训练,不依赖人工,由底层抽象出来并帮助我们做出高层决策

什么是端到端的决策?

  其实就是以目标导向的决策

RL基本上可以解决AI问题中普遍形式和复杂设置的问题,深度模型使得RL可以端到端的解决更多更复杂的问题,RL提供一种抽象框架深度模型根据这种框架提供我们可以将之应用的复杂问题,比如高维度观测值和复杂动作等。

为什么我们现在需要学习deep learning RL ?

  有赖于目前深度学习,强化学习和计算机计算能力的大力发展。

我们从奖励开始学起,reward也可以看做是一种回报,意图,推断。

 我们可以从模型中学习,可以重复一个动作,不管这个动作会带来的影响。也可以观察真实世界并从中学习进行预测。也可以通过其他任务进行学习,例如迁移学习和元学习,后面的课程会介绍这两种算法。

deep learning rl在哪些领域做的很好?

  1.对有简单规则的领域非常精通;2.可以通过大量的感官输入来进行学习;3.用人类专家的行为来模拟。

目前强化学习的挑战

  1.人类可以快速适应环境,而Deep RL则很缓慢;2.人类可以总结经验,学习知识,迁移学习在Deep RL中是一个开放问题;3.不清楚该用哪个奖励函数,这对如何学习,以及学习速率有很大的影响;4.不清楚预测的角色,所以不清楚该使用无模型的RL还是基于模型的RL

本节课的目的

  用Deep learning RL构造一个智能机器,而不是单纯分割机器大脑组成不同的部件,它指定一个正确的目标设计一个相对简单的算法或者通用的算法,可以捕获各种不同的行为适应不同的位置。

[展开全文]

 

 

计算机视觉中,将低级特征逐渐提取,(如HOG-SVM),逐渐高级,使用深度神将网络能够端到端地学习其中特征。

 

传统强化学习使用特征标识,需要标识特质和值函数,而使用深度神经网络,可以实现端到端的特征提取。

[展开全文]

第七讲值函数介绍

动态规划与值函数的拟合

在上一讲的演员-评论家算法中,本质上我们已经把在某种策略下的值函数(这里的值函数是广义的,包括V、Q、A等)用到增强学习的算法里面去了,形成一个策略-值函数的交融算法。而在这一篇中,我们尝试去构造一个没有“演员”的“评论家”,也就是纯粹的值函数方法。我们在之前的学习中也了解到值函数的厉害之处,它自身包含了非常多的信息。

我们在之前的两篇中分别介绍了策略梯度法和演员-评论家算法,它们的特点本质上都是寻找策略梯度,而只是演员-评论家算法使用某种值函数来试图给出策略梯度的更好估计。然而策略梯度通常有非常高的方差,要把它弄好需要花费很大的努力。那么我们可能会考虑一个问题:强化学习能否彻底抛开策略梯度这一架构?

回忆优势函数[公式],指的是给定策略,在状态[公式]下,采用了行动[公式]能比该策略的平均情况期望今后收益多出多少。我们在演员-评论家算法里面花了很大力气去估计这个东西。假设我们在某个策略下已经知道这个函数,那么意义是,如果我们在状态[公式]下执行[公式],也就是根据优势函数得到一个当前最好的决策(当然我们得坚持之后还是完全按照策略[公式]来),那么根据定义,这个决策必然是在期望意义下最优的:换句话说,它至少不差于任何的[公式]。这个结论是非常显然的;值得注意的是,这个结论的成立性是广泛的,和策略[公式]具体是什么东西没关系。

刚才的结论给了我们一个策略改进(第三步蓝色方块)的思路。对于一个策略[公式],如果我们已经得到了它对应的优势函数,那么我们必然可以构造出一个新的策略[公式]:刚才我们已经指出了在任意一个状态下,这样的策略不差于原策略,至少和原策略一样优且有可能更好。需要注意的是这是一个确定性策略。事实上这是本篇中要涉及的算法的内在思想。

作为开始,我们先不引入神经网络和复杂的动态系统等很复杂的东西,假设状态和行动的个数很少,以至于V、Q、A函数都能用一个表格来记录下来;转移概率也是完全已知的。在这个最简单的环境里,上述算法就可以用一个非常经典的策略迭代法 (Policy Iteration, PI) 来简单实现。策略迭代法循环执行以下两个步骤:

  1. 策略评估 (Policy Evaluation):计算所有的[公式]
  2. 策略改进 (Policy Improvement):令[公式],其中[公式]

要执行这个过程,最大的问题就是如何计算[公式]。在之前我们提到的是,[公式]。因为在这里我们的转移概率已经知道了,因此我们只需要去研究值函数V就行了。这一类方法广义上被称为动态规划 (Dynamic Programming, DP)。形式上,假设我们已知转移概率为[公式],且状态和行动都是离散的而且空间足够小,这样我们所有的数据都可以在表里记下来。类似于我们在之前提到的自助法,[公式]。自助法的意思是,我们只需要在后面插入当前的估计(就是查表得到)就行了。(这里我补充一下,从深层次来说,这样的表达式又叫Bellman方程,但在这个课中似乎不涉及到这一块的理论)由于我们现在采用的是一个确定性策略,这样的单点确定性策略也可以写作[公式],即给定状态下得出行动这样的一个函数形式。于是,之前的公式就可以被进一步简写为[公式]——这也就成为了我们策略评估步的公式,我们用值函数V去替代优势函数A。需要注意的是,标准的策略迭代法的第一步需要关于我们的当前策略解出比较精确的[公式],本质上是一个不动点问题:一种方法是之前的公式进行反复迭代直到收敛;另一种方法是求解一个比较大的线性系统(之前的公式是线性的)。

不要忘记我们本篇的目标是在算法中完全抛开策略函数。可以回顾我们每一步更新的新策略其实都是[公式],而给定状态[公式]下,[公式][公式]之间其实只相差了一个常数[公式],因此[公式],我们可以用Q去替代A在这里的地位。事实上,如果我们有了一个大Q表,每一行代表一个状态,每一列代表一个行动,那么我们只需要标出每一行的最大值的格子位置就可以了,因此Q函数本身就可以隐式地表示一个策略;同样,[公式]正是对应的值函数。那么这样,我们就正式地把策略的重要地位给架空了,得到一个更简单的动态规划求解方法:值函数迭代法 (Value Iteration, VI)。事实上该方法可以把以下两步混在一起把Q函数架空,但是Q函数在我们的值函数方法中有很高的地位,我们不这样做。我们反复执行以下两步,直到收敛。其中第一步属于绿色方块,第二步属于蓝色方块。

  1. 更新Q函数:[公式]
  2. 更新V函数:[公式]

在对经典的两大动态规划算法进行完简单的介绍后,我们考虑的是如何把这样的方法搬运到深度增强学习中来。在相对比较复杂的问题中,我们知道状态个数是非常之大的,很难用一个很大的表来保存所有状态的V值或者Q值。譬如在一个彩色的赛车游戏中,分辨率是200 * 200,那么根据屏幕显示而设定的状态总数可以达到[公式],这个数字大得超乎想象。这样的个数随着维度的增长而几何爆炸的问题通常称为维度灾难 (curse of dimensionality)。引入到深度增强学习中,一个非常直接的想法就是使用一个巨大的神经网络来代替这个大表,如弄一个参数为[公式]的深度神经网络来拟合[公式]函数,输入状态,输出对应的值函数。为了训练这样的函数,我们使用一个平方损失函数[公式]来做这样的回归问题。从而,之前的值函数迭代法可以被改写为以下的拟合值函数迭代算法 (Fitted Value Iteration):

  1. [公式]
  2. [公式]

第一步我们就和之前演员-评论家算法一样计算出一个目标,然后第二步训练神经网络减少神经网络输出与目标的值函数之间的差异。然而事实上,第一步的这个max操作是非常难做的:一个最大的问题是我们假设我们已经知道了系统的转移概率!要做这个max,我们必须知道每个行动会导致概率往哪些状态转移。我们用一些无模型的增强学习,可能可以执行很多操作来看结果,但状态往往不能回撤复原以尝试其他的选项;而第一步的max要求我们尝试各种不同的操作来看结果。

我们尝试去避免做这么强的假设。回顾我们之前的策略迭代法,我们迭代进行两步:第一步求解[公式],第二步用这个Q函数来更新策略。其中,第一步的做法可以是反复迭代值函数 [公式] ,然后再通过一步转移和加上[公式] 来得到Q函数;但同样也可以是[公式]。现在的Q函数可以用样本来拟合出来。这一切告诉我们:只要有Q函数,一切就可以在不知道系统转移概率的情况下运转起来。进一步,我们也考虑将Q函数使用诸如神经网络的结构来近似,得到拟合Q函数迭代算法 (Fitted Q-Iteration):

  1. [公式],其中我们使用[公式]来近似[公式]
  2. [公式]

可以发现,这样的决策算法的根本好处在于不需要去同一状态尝试不同的行动选项,因为Q函数已经告诉你不同行动的效果了:我们无需在真实环境中尝试各种不同行动后复位,而只需要在我们所涉及的Q函数拟合器上做这点就可以了。此外,我们这样的两步算法有很大的优点。第一,算法中只需要用到很多[公式]的一步转移样本,而这些样本是可以离线的;这个在演员-评论家算法中是不通用的。第二,这个算法只用到一个网络,没有用到策略梯度,因此也没有高方差的问题。但是,这个算法的致命缺点是,对于这样的非线性函数拟合机制下的算法,没有任何收敛性保证(不进行拟合的大表格Q迭代算法在一定条件下有收敛性)。我们接下来会进一步探讨这些优缺点。一个完整的拟合Q函数迭代算法的一个简单框架是这样的:

  1. 执行某个策略,收集容量为[公式]的数据集[公式]
  2. [公式]
  3. [公式]。反复执行[公式]次2-3步骤后跳回第一步继续收集数据。

第一步的策略其实是任意的,因为Q函数迭代算法不对数据集的策略做出任何假设。根据收集数据数量的不同,可以变成收集一堆数据的批量算法,也可以变成只收集一个数据的在线算法。第三步可以选择怎么去训练神经网络,比如走多少个梯度步,算得精确一点还是简单走几步就停了。

现在来解释该算法的离线 (off-policy) 性质。实际上第一步可以用上任意策略的数据,因为第二步和第三步的计算没有需要用到当前策略下的数据,而只是单步转移的片段就可以了。[公式]只需要对决策空间的一个枚举,而转移[公式],在给定了状态和行动的情况下,也跟当前策略没关系。某种意义上可以说Q函数是对策略的一个解耦合。因此,我们可以收集一大堆转移数据放进一个大桶里,我们的算法从大桶中抽取数据,这个算法照样可以运转。

那么拟合Q函数迭代算法到底在优化一些什么呢?在第二步中,如果我们是表格Q函数迭代的话,max就是在改进策略。第三步中,我们在最小化一个期望误差[公式],也被称为Bellman误差。可以发现,在理想情况下,如果这个误差为0,那么我们所求得的Q函数就满足[公式],这正是确定最优Q函数的Bellman方程,也对应了最优策略[公式],这个最优策略最大化期望收益。如果我们不使用近似,且每一个[公式]都有概率发生的话,那么我们可以说明[公式]对应着最优策略。在这边,即便算法是离线的,但是收集数据的分布还是有很大关系的。一个极端情况,我们假设[公式]只是一个单点分布,除了一个状态外概率都为0:这样我们就成为只知道一个状态的井底之蛙了,不能对其他状态的好坏做出正确评价。因此,尽管算法是离线的,但请尽可能确保我们收集的数据中包含了真正运行时会访问到的那些状态和行动。此外,如果我们使用诸如神经网络的东西去拟合Q函数表,那么之前所说的大量理论保证将丧失。

在之前的拟合Q函数迭代算法中,我们收集大量数据,然后反复做样本-做回归。我们把每次收集的样本数设为1,然后把K设为1,并且设置只走一个梯度步,就变成了在线Q迭代算法 (Online Q-iteration),循环以下三步。

  1. 执行某个行动[公式],收集观察数据[公式]
  2. [公式]
  3. [公式]

该算法每轮执行一个行动,得到一个转移观察,算出目标值,做一步的随机梯度下降。这是标准的Q学习算法,虽然是离线的,但还是和刚才所说的一样,第一步的支撑集希望足够大。那么如何选择行动呢?我们最终的行动服从一个单点分布,选择一个使得Q最大的行动。但是如果我们把这个东西直接搬过来在学习过程中使用的话,是不好的。事实上,这是在线学习中的一个很纠结的问题:探索 (exploration) 和开发 (exploitation)。学习就是一个探索的过程,如果我们还没进行足够的探索,在Q函数还不够准确的时候,我们根本无法分别出到底哪个是真正好的,会忽略掉真正优秀的方案。在在线学习中,有多种启发式方法来脱离这一局面。一种策略称为[公式]-贪心,也就是分给最大的[公式][公式]的大概率的同时,也保留[公式]概率平均分给其他所有的[公式]种行动。另一种常用的设定是Boltzmann探索,概率分布为[公式]。它假定Q函数多多少少知道一些哪个行动好,但是有噪音。这样Q比较大的行动有显著较高的概率被选到,同时保持了其他选项的可能性。

算法的理论

让我们回到非神经网络近似的值函数迭代算法,它本质上在做[公式]。那么第一个问题就是,这个算法收敛么?如果是的话,收敛到什么?首先,我们定义一个备份算子 (backup operator) [公式] ,形式上写作[公式],其中[公式]是所有状态下选择行动[公式]的一步收益的向量,[公式]指的是选择行动[公式]的转移矩阵,诸如[公式],max是按分量取最大。实际上,我们可以发现最优下,[公式][公式]算子的一个不动点,因为[公式],所以[公式]。与之前Q函数的讨论相似,这一个不动点总是存在,总是唯一,且总是对应着最优策略。现在我们的关键问题是如何去找到这样一个不动点,因为不动点意味着最优值函数和最优策略。

我们可以通过证明[公式]是一个收缩映射 (contraction mapping) 的方式来证明值函数迭代法收敛到一个不动点。事实上,[公式]是一个无穷模下的收缩映射,因为对任何的两个值函数[公式][公式],我们可以证明[公式],两者的间隙每次都减小到原来的[公式]倍。如果我们选择[公式]的话,那么因为[公式],有[公式]。因此每做一次迭代,我们都能把两者之差的无穷模稍微减小一些。

使用算子[公式],我们可以把每一步的值函数迭代算法写成[公式]。为了把Q函数用神经网络表示,现在我们来看拟合值函数迭代算法。拟合值函数迭代需要做一个回归,它的本质是从神经网络能表示的所有函数的簇[公式]里面,找到一个函数[公式],使得[公式]。虽然在理论上,一个无限大的深度神经网络可以拟合任意函数,但是在实际使用中,我们一般只能使用一个有限大小的神经网络,因此它能表示的只是所有函数的一个子集。

如上图,蓝色的线代表该神经网络能代表的函数的全集,我们从一个函数出发,进行一次备份操作,然后使用最小二乘回归来投影到这个函数集合。我们定义投影算子[公式],那么我们的拟合值函数迭代算法可以写成[公式]这样的复合映射。注意到投影算子最小化的是欧几里得距离,是2模下的收缩映射。[公式]是一个无穷模下的收缩映射,[公式][公式]是一个2模下的收缩映射,[公式],但问题在于如果我们将这两个映射进行复合,那么[公式]并不是一个收缩映射,因为它们不是在同一个模下收缩的。

上图是一个该算法发散的例子。假设最优解[公式]在那个五角星处,然后我们从[公式]开始一脚走到了[公式],然后被投影回归扯回了[公式]。从图上看,我们的解到最优解的距离越来越远了。注意到,不用无穷模的原因是当状态空间很大或者无限的情况下,无穷模下的投影问题极其难解。我们只能寻求找到最优解的一个投影(同样对于策略梯度法我们也只能期望找到最优策略的一个投影),但是事与愿违的是,反复进行拟合值函数迭代算法,可能使你从较好的解开始越来越差。因此我们的结论是,值函数迭代法在表格中是收敛的,但是拟合值函数迭代法在一般意义下是不收敛的,在实践中也通常不收敛,但是有一些方法来缓解这些问题。

拟合Q函数迭代法也差不多,[公式],只是把max放到里面去了;同样投影算子[公式],因此[公式]。它的收敛结果与之前也别无二致,同样一般意义下不收敛。对于在线Q迭代算法来说,它的第三步[公式]看起来在走一个梯度步,我们看似抓住了一个救命稻草:梯度下降法应该是可以收敛的?但是,Q函数方法的梯度并不是目标函数的梯度,因此与策略梯度法并不同,它并不是梯度下降法。

这个不收敛结论同样也适用于演员-评论家算法。如一步自助法[公式]关于无穷模收缩,而拟合函数 [公式]关于2模收缩,因此拟合下的自助法做的策略评估同样不具有收敛性。顺便说一下,在演员-评论家算法中用的[公式],指的是关于策略[公式]的值函数,是评论家用的函数;而在值函数迭代中用的[公式],则是最优策略[公式]所代表的值函数,也是最优的值函数。

在这一篇中,我们暴露了很多问题,而在接下来的内容中,我们将尝试如何缓解这些问题,从而让算法能正常运转起来。

[展开全文]

这一节开始讲强化学习。

主要可以分为三步:

1。 generate smaples 这一步产生数据, 比如开车获得摄像头等传感器数据

2。fit a model/estimate the return 模型的匹配, 回归等

3。improve the policy 改善策略, 优化模型

通过这三步的循环, 可以使策略越来越优化。剩余课程将会深化这些方法,但是基本的步骤还是在于这三步。不同方法中的差异主要在于侧重点不同, 有些方法追求训练效率, 有的方法只能提供数量较少的数据, 有的方法注重实时性等。

 

 

 

[展开全文]

Introduction

先导部分可以在一下网站学习:https://www.tensorflow.org/guide/low_level_intro

要精通Python

 

课程内容:

1.From supervised learning to decision making problems

2.Model-free algorithms: Q-learning, policy gradients, actor-critic

3.Model-based reinforcement learning and some advanced topics and prediction

4.Exploration

5.Transfer and multi-task learning, meta-learning

6.Open problems, research talks, invited lectures

 

What is reinforcement learning, and why should we care?

deep learning helps us handle unstructured environments

but doesn't tell us anyuthing about decision-making

 

RL gives us the mathematical framework for dealing with decision making

In RL, we have an agent that makes decisions we should call actions

the world responds with consequences we should call observations and rewards

RL actually generalizes many other machine learning

 

Why should we study this now

1.Advances in DL

2.Advances in RL

3.Advances in computational capability

 

Beyond learning from reward

  • Basic RL deals with maximizing rewards

  • This is not the only problem that matters for sequential decision making!

  • We will cover more advanced topics

    • Learing reward functions from example (inverse RL)

    • Transferring knowledge between domains (transfer learning, meta-learning)

 

Where do rewards come from?

Game --> score

well-defined notion of success might be very difficult to measure

 

What can DL & RL do well now?

  • Acquire high degree of proficiency in domains governed by simple, known rules

  • Learn simple skills with raw sensory inputs, given enough experience

  • Learn from imitating enough human-provided expert behavior

 

What has proven challenging so far?

  • Humans can learn incredibly quickly

    • Deep RL method are usually slow

  • Humans can reuse past knowledge

    • Transfer learning in deep RL is an open problem

  • Not clear what the reward function should be

  • Not clear what the role of prediction should be

[展开全文]

进入小组观看课程

以下为该课程相关学习小组,您可以选择任意小组加入学习课程并交流