深度强化学习-运动规划(2)|学习笔记

简介: 快速学习深度强化学习-运动规划(2)

开发者学堂课程【深度学习与自动驾驶:深度强化学习-运动规划(2)】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/533/detail/7152


深度强化学习-运动规划(2)

 

内容介绍

一、Value Function

、Q-Learning

 

一、Value Function

1、Future reward

R=r1r2十r3十···十rn

Rt=rtrt+1rt+2十···十rn

2、Discounted future reward (environment is stochastic)

Rt = rt+ γrt+1 +γ2rt+2+···+ γn-trn

=rtγ(rt+1r(rt+2 十))

= rtγRt+1

3、A good strategy for an agent would be to always choose an action that maximizes the (discounted) future reward

看这个Agent机制以价值函数运行的世界。现在价值函数取决于一个奖励奖励来自未来,而且这个奖励会被减少。为世界是随机的。不能期望奖励一直以这样的方式跟着我们,希望它(奖励)以决策为基础。以我们选择的行动方式为基础。而且在这还有一个超时的 gamma随着时间的推移奖励会减少在研究当前事件的过程中你要减少未来奖励的影响因此你的目标要发展成一个决策一个可以最大化已经被减少的未来奖励的决策总分减少后的总分强化学习很多方法都可以用来制定一个好的决策一个接近最优的最优决策这里有很多有趣的数学可以尝试建立一个模型一个用于优化对这个世界估计的模型你可以采用 Monte Carlo方式通过对这个世界的模拟和了解这个世界是如何展开的而且当它展开的时候你应该试着计算最优决策

 

二、Q-Learning

1、State value function: V(s)

Expected return when starting in s and following

2、State- action value function: Q(s,a)

Expected return when starting in s,performing a, and following

3、useful for finding the optimal policy

(1)Can estimate from experience (Monte Carlo)

(2)Pick the best action using Q"(s,a)

4、Q-learning: off -policy

(1)Use any policy to estimate Q that maximizes future reward: Q(st,at) = max Rt+1

(2)Q directly approximates Q* (Bellman optimality equation)

(3)Independent of the policy being followed

(4)Only requirement: keep updating each (s,a) pair

Qt+1(st, at) = Qt(st, at)+a ( Rt+1 + γmax Qt(st+1,a)- Qt(st, at))

接着要讨论的是Q-Learning,这是一个关闭决策的方法一个当我们行动的时候决策会被预测的方法这个决策被定义为Q函数在左边就是Q函数Q函数的输入是时间是t的阶段,“st”采取的行动和那一个阶段是“at”你的目标是在这个阶段会选择一个可以最大化下一步奖励的决策

Q-Learning可以用来通过经验去近似最优Q函数告诉你如何在这个世界任何状态下行动的最优函数你必须生活在这个世界中你要模拟这个世界你必须要移动它你必须要探索以熟悉每一个可能的阶段尝试不同的行为获得奖励被惩罚弄明白要去做的最优的事情是什么

Qt+1(st, at) = Qt(st, at)+a ( Rt+1 + γmax Qt(st+1,a)- Qt(st, at))

这使用bellman函数在左边输出是一个新阶段预测,Q 函数对于新阶段的预测对每一个行动的预测这就是 Q-Learning 核心的更新规则用预测加上过去的预测取决于01的学习率alpha他们会更新对这个阶段的评测这个被这一次收到的奖励影响的阶段所以到达的这是一个t阶段试着采取一个行动会得到一个奖励而且你更新了对这个阶段的评测动作对取决于这个规则当学习率是零也就是 alpha 是0,你不会学习你不会改变你基于收到证据形成的世界观当alpha是1的时候每一次改变你世界的评测以来于新的证据这是深度学习的关键成分

5、Exploration VS Exploitation

(1)Key ingredient of Reinforcement Learning

(2)Deterministic/greedy policy won't explore all actions

① Don't know anything about the environment at the beginning

② Need to try all actions to find the optimal one

(3)Maintain exploration

Use soft policies instead: r(s,a)>O (for all s,a)

(4)€-greedy policy

① With probability 1-E perform the optimal/greedy action

② With probability E perform a random action

③ Will keep exploring the environment

④ Slowly move it towards greedy policy:E -> 0

首先你要探索接着你要利用它一开始你会用非贪心算法去探索然后你会选择贪心算法你会明白什么是好的而且你会坚持去做如果你想去学习一个atari游戏首先你要尝试每个行为每一个阶段你咬紧牙关被惩罚获得奖励最终你会明白到底什么是正确的事情并且坚持去做这就是你如何打败这个世界上最伟大的人类选手举一个例子正如我们将要讨论的在围棋中你要做的方式是你有一个“Epsilon 贪婪决策”你有(1-Epsion)的概率执行一个贪婪优化行为外Epsilon概率下。你采取一个随机行为,随机探索行为于是当€从1减少到0,你的探索会越来越少所以这里的算法真的很简单

6、Q-Learning: Value Iteration

Qt+1(st,at) = Qt(st, at)+a (Rt+1 + γmax Qt(st+1,a) - Qt(st, at))

initialize Q[num_states, num_actions] arbitrarily

observe initial state s

repeat

Select and carry out an action a

observe reward r and new state s'

Q[s,a] = Q[st,at]+ a(r + γmaxa· Q[s',a'] - Q[s,a])

S=s'

Until  terminated

以上是算法的版本,Bellman 方程的伪代码版本解释了Bellman方程的迭代你随机地初始化一对儿状态-行动的估计 Q[num_states, num_actions] 的值初始化为一个随机数这是重要的一点当你开始玩游戏或者做任何你正在做的事时无论你在用强化学习实现驾驶或者做其他的什么你没有一个对于好或者坏的预先的概念这是随机的或者你怎样选择初始化它是随机的而且它学到了一些东西这一事实是令人震惊的这是关于Q-Learning的一件令人震惊的事然后是Q-Learning的深度神经网络的版本这个算法重复以下的步骤你进入了世界观察一个初始状态你选择了动作“a”如果你处于探索这个动作就是一个随机的动作如果你贪婪地追求最好,(事实上你可以),这将是最大化Q-Function (Qt(st+1.a)) 的动作,你在采取一个动作后观察它的奖励(r),然后你会发现自己处于一个新的状态然后你更新了你对上一个状态的评估,使用Bllman方程取了那个动作,并且一遍遍的重复这个过程上面是对这一循环/流程的总结

7、Q-Learning: Representation Matters

(1)In practice, Value Iteration is impractical

① Very limited states/actions

② Cannot generalize to unobserved states

(2)Think about the Breakout game

State: screen pixels

① Image size: 84 x 84 (resized)

② Consecutive 4 images

③ Grayscale with 256 gray levels

25684x84x4  rows in the Q-table!

(3)问题:Q-Function是单值的吗?

是的。这是个单值的(函数),Q-Function只是一个单一连续值

(4)问题怎么模拟世界

模拟的方式是一个非常简单的 atari paddle 游戏一款类似于打砖块的游戏),把它模拟成游戏里的挡板这块挡板可以左右移动并且你模拟了球打砖块的球的物理特性这需要许多关于这个特定游戏的专业知识所以坐在那里手工制作这个模型这甚至对于一个简单的游戏都是困难的另一个可以采取的模型是以人类看世界的方式看世界这个模型看作一个像素的集合只是这个模型是世界上所有的像素对挡板或球或者物理特性以及颜色和点都知之甚少这些都只是由像素组成的这个似乎是一个对这个游戏里的世界的糟糕的模型但是这似乎对atari有效这似乎也对人类起作用当出生的时候看到有光射进眼睛并且迄今为止的认知一点都没有出生的时候没有获得任何指导比如世界上有很多人这些人良莠不齐以及如何走路不知道这些所接触的只是光声音和一些其他的感知开始去了解每一件事模拟世界的方式体现了所学的并且会讨论一个神经网络如何做到这些它学着去描述这个世界但是如果必须手工模拟这个世界这将是个不可能的任务这是问题所在并且如果必须手工模拟这个世界这个世界最好是一个简单的世界

(5)问题这个模型的鲁棒性稳定性如何

如果描绘世界的方式与思考世界的方式稍有不同甚至完全不同这种对世界的模拟就不够好一直在构建它这已经很了不起了如果有一个对这个世界的准确的输入如果有一个这个世界的准确的模型这个模型可以学习任何事这就已经令人震惊了这是一个很重要的问题不是关于这个世界的模型而是奖励函数如果奖励函数稍有不同真正的流程或驾驶过程中的奖励函数就会与所期望的不同,(6)问题有什么负面的东西吗

而且可能会很大

(7)问题会随着时间改变 a 的值吗

是的应该随着时间的推移改变 a 的值

(8)问题:Q-Leaming 迭代与ε函数的复杂的相互作用是什么?

① 这是对特定的学习问题的精确调整所以世界越复杂状态的数量就越多行为的数量也越多在把ε的值减到0之前你就需要等更久但是在把ε减小到0之前需要调整测试它不幸的是,ε只是需要调整的参数重的一个有很多参数这就是为什么不能只是将一个强化学习的agent丢进这个世界在那种情境下的影响这只是像投掷一次硬币如果那个ε的值为0.5,将会有一半的时间在采取随机的行动所以没有明确不会像那样才去最佳的行动然后以一定的几率退而求其次选择次之的行动然后继续但是如果仅仅采取一个随机的行动在简单的构想下这是起作用的因为你不想对什么是好的尝试有一个预先的概念在你探索的时候重要的是如果它是一个模拟你会去尝试疯狂的东西这个问题很棒

② 所以这是一个 representation 方面的问题这是关于如何描绘这个世界的问题所以可以将这个世界思考为几个分立的部分比如在这个atari游戏里这几部分有挡板的左右移动以及能击中的不同事物的确切位置来构建这个复杂的模型这个专业的驾驶模型需要精确地调整它到这个特定的问题上但是事实上这个模型越复杂bellman方程的迭代就越糟糕那个值尝试着构建一个Q函数为每一对单独的状态和动作的组合构建一个Q函数),这件事变得非常困难因为那个方程变得十分稀疏和巨大所以如果你想以一般的方式看待这个世界以人类的方式看这个世界是一个像素的集合如果只取一个像素这个游戏就如同一个8484的像素集一张图片一张 RGB 图片然后不只看着当前的图片而是将这些图片看成一个连贯的画面就像如果有一个球在移动并且希望了解这个球的运动所以你看了4张图片当前的一张图片和之后的3因此这就是深度学习的作用对于这个Q-Value函数需要了解的是无论这个数字有多大。但是只要它确定大于宇宙中原子数这是一个大数字因此你必须运行足够长的仿真以仿真出Q-Table中的多数状态因此,正如 EIon Musk 所说的,你可能需要进行模拟你可能需要模拟一个宇宙仅仅是为了计算 Q-Function因此这就是深度学习的作用并且说他们有256个灰度级这些构成了 Q-Table 的规格而不是把世界建模成为一个Q-Table你尝试着学习这个函数

8、Philosophical Motivation for Deep Reinforcement Learning

(1)Takeaway from Supervised Learning:

Neural networks are great at memorization and not (yet) great at reasoning.

(2)Hope for Reinforcement Learning:

Brute-force propagation of outcomes to knowledge about states and actions. This is a kind of brute -force "reasoning".

(3)Hope for Deep Learning + Reinforcement Learning:

General purpose artificial intelligence through efficient generalizable learning of the optimal thing to do given a formalized set of actions and states (possibly huge).

对于有监督学习它擅长记忆或者数据存储带着Q-learning的强化学习所能做的是可以扩展一些偶然的奖励并且在操作中普遍化在游戏中采取的行动将会使你获得奖励深度学习所做的正是我们可以将这个强化学习系统应用到一个世界这个世界不需要被定义它可以被任意地定义,它可以包含Atari游戏的所有的像素点,它也可以包含无人机机器人或者汽车拍摄的照片里的所有像素

9、Deep Q-Learning

Use a function (with parameters) to approximate the Q-function

Linear

Non-linear: Q-Network

Q(s, a;θ)≈Q*(s, a)

但是我们仍然需要一个这个世界的书面化的定义当你能理解图像数据的时候这个定义就十分的容易了因此深度Q-learning深度版本因此我们不是学习Q-TableQ-Function而是估算Q-Prime,我们尝试着利用机器学习来了解它这个十分复杂的函数尝试着学习一些参数试着学习它并且采取神经网络的方法神经网络与它有着同样的类型并且展示了它学习的数字这些数字是从一幅图中映射成一个数字到一个分类中的同种类型的网络习惯于采取一个状态一个行动以及产生一个Q-Value,现在这就是最惊奇的事情

image.png


Layer

Input

Filter size

Stride

Num filters

Activation

Output

conv1

84x84x4

8x8

4

32

ReLU

20x20x32

conv2

20x20x32

4x4

2

64

ReLU

9x9x64

conv3

9x9x64

3x3

1

64

ReLU

7x7x64

fo4

7x7x64

 

 

512

ReLU

512

fc5

512

 

 

18

Linear

18

Mnih et al. "Playing atari with deep reinforcement learning." 2013.

我们并不知道起始的任何事情只有一个Q-Table并且它的起始是随机的这个Q-Function这个深度网络不知道起始的任何事情我们所知道的所有的东西就是在这个模拟的世界有一个特定的游戏你必须一次又一次的玩它并且看着你从每一次游戏的循环中获得的奖励但是在一开始它什么都不知道在学习之后它可以玩得比人类更好这是一个Deep Mind的论文2013年用深度强化学习玩Atary这款游戏还有一个关键的事情可以使得所有人都感到激动这是关于在人工智能领域深度学习的作用它使用卷积神经网络来工作它像其他任何网络一样也是香草网络是一个规则网络它采集原始的像素并且从原始的像素中估算出Q函数为了能够玩这些游戏比一个人做的更好

11、Deep Q-Network Training

(1)Bellman Equation:

Q(s,a) = r+ γmaxa'Q(s',a')

(2)Loss function (squared error):

L= E[(r + γmaxa'Q(s',a')- Q(s,a))2]

Target

之前有提到过的损失函数再一次提到香草损失函数非常简单的目标函数这是第一个可能实现的有一个关于TensorFlow的教程方差用bellman方程它的估算值是Q,Q-Function估算出状态和行为这是采取任何行为所得到的最大奖励这可以带你去任意未来的状态你尝试着采取这个行为观察这个行为的结果如果这个目标与你学习目标不同这个函数所获得的就是期望的奖励与你真实得到的不同你调整网络的权重这是精确的过程

11、Deep Q-Network Training

Given a transition, the Q-table update rule in the previous algorithm must be replaced with the following:

(1)Do a feedforward pass for the current state s to get predicted Q-values for all actions

(2)Do a feedforward pass for the next state s' and calculate maximum overall network outputs max ,Q(s', a')

(3)Set Q-value target for action to r + γmax ,Q(s', a') (use the max calculated in step 2).

For all other actions, set the Q-value target to the same as originally returned from step 1, making the error 0 for those outputs.

(4)Update the weights using backpropagation.

学习如何在这个像素世界中生存此你对于Q-Value的映射状态与行为,算法如上这是训练它的方法给出转变正如在那个状态下的状态行为是你所获得的奖励一个S-Prime正如你自己所发现的状态因此我们替换他们的基础规则在之前的伪代码内通过采取一个向前的传递穿越网络并给出S-状态将会查看预测的Q-Value是否符合这个行为之后在进行另一个向前的传递来穿越网络并且查看真是所得之后如果完全地关闭它我们将会受到惩罚以一种方法反向传播这个权重通过这种方法将会在下一次得到更少的错误并且将重复这个过程这就是一个仿真你正在自我学习

12、Exploration VS Exploitation

(1)Key ingredient of Reinforcement Learning

(2)Deterministic/greedy policy won't explore all actions

① Don't know anything about the environment at the beginning

② Need to try all actions to find the optimal one

(3)Maintain exploration

Use soft policies instead: r(s,a)>O (for all s,a)

(4)ε-greedy policy

① With probability 1-€perform the optimal/greedy action

② With probability E perform a random action

③ Will keep exploring the environment

④ Slowly move it towards greedy policy:E-> 0

再一次相同的法则也运用在这里探索与利用的对比你从ε的值为01开始主要在进行探索之后将 ε 的值定为0。

13、Atari Breakout

A few tricks needed, most importantly: experience replay

image.png

通过 Atari Breakout 这款游戏。这就是 Deep Mind 论文的结果。这是一次训练在x-轴上在y-轴上是平均行为值和每个片段的平均奖励为什么它是一个很好的结果但是它很凌乱因为它包含了很多小技巧因此这不仅仅是放入一堆游戏中的像素点并且得到以恶搞知道如何在游戏中取得胜利的agent需要有许多预处理并且获得所需要的数据因此很不幸的是真相比所希望的更加凌乱但是有一个至关重要的小技巧被称作experience replay因此相对于让一个agent来做你需要来学习这个庞大的网络来建立一个模型这个模型描述的是做什么与做什么不好并且随着你自己的方法来学习随着experience replay你正保持着一个轨迹关于你所做的所有的事情每一次你回看你的记忆并且从中取出一些旧的好经验并且再一次尝试它们相对于让agent自己运行以得到一些局部最优解它尝试着学习游戏中非常巧妙的方面这实际上在全局的层面上不会让你获得游戏的胜利非常像平常的生活一样

14、Deep Q-Learning Algorithm

initialize replay memory D

initialize action-value function Q with random weights observe initial state s

repeat

select an action a

with probability€select a random action

otherwise select a = argmaxaQ(s,a')

carry out action a

observe reward r and new state s '

store experience  in replay memory D

sample random transitions  from replay memory D

calculate target for each minibatch transit ion ,

if ss' is terminal state then tt . rr

otherwise tt = rr + γmaxa‘,Q(ss', aa')

train the Q network using (tt - Q(ss, aa) ) * as loss

s=s'

until terminated

因此这就是算法。深度Q学习算法的伪代码初始化replay memory,这里有个很有必要用到的小技巧那就是保持对之前所发生事件的跟踪使用随机权重初始化行为值函数Q,并观察初始状态再重复同样的事情选择发生概率为ε的行为还可以基于神经网络所估算出的概率选择最有可能发生的动作接下来执行这一行为观察奖励,再将所获取的经验存储在replay memory内,再从记忆缓存区内对随机的转变进行采样因此你有一定的几率将曾经的时光带回来以使你不会获得最低的本地成绩接下来就可以使用你所期望到的结果和你实际得到结果的差异处来训练Q网络并且不断地重复这一过程

15、Atari Breakout

image.png

    After                              After                             After

          10 Minutes                       120 Minutes                   240 Minutes

          of Training                         of Training                     of Training

这就是在训练十分钟后你所能做到的最左侧的是训练很段时间后的结果你所得到的只是一个学习任何东西都十分困难的挡板它只是在不断地“死掉”这个数字从55321,这是挡板所剩余的生命数再单个GPU上训练两个小时后它开始学习去赢得游戏避免“死掉”积攒积分并且避免球穿过挡板这是人类的真实表现甚至还要好过一些人但是它有时仍会死掉因此这十分贴近人类的游戏水平在经历四小时训练后它做出了一些神奇的事情它明白了如何能够“慵懒”地去赢得游戏 钻一个穿过上方方块的洞一直到方块的顶部然后让球留在方块的上方它为你完成了所有困难的工作将球穿过板的概率降到了最低因为球一直留在块的上方这或许是你玩这个游戏所无法发现的办法

这个算法的输入只是这个游戏的像素同样这也是人类在产生视觉感知时所收到的信息在了解奖励与惩罚的确切定义的情况下它就可以学习了它可以学习如何获取高的奖励这是普通的人工智能这是一个很小但是普通的例子它的主要用途它对游戏一无所知同时对于木浆或物理规律也一无所知它只是对游戏的输入作出答复

16、DQN Results in Atari

image.png

同时,对于很多Atari里面不同的游戏。它们也会做同样的事情。这个图像里的x轴显示的是Atari里不同的游戏y轴显示的是一个百分数,100%代表人类在游戏中所取得的最好成绩也就是人类所能得到的游戏分数图中靠左的与居中的所有游戏是强化学习远超人类游戏表现的游戏在这之下的适合人类表现相同或差于人类表现的游戏因此它可以学习很多游戏-boxingpinball它对所有这些游戏都是一无所知它所收到的仅是游戏的像素这就像你让一个人去玩这些游戏并让他们去赢得这个游戏

(1)问题对于特定的游戏他们是否自定义游戏的模型

可以自定义游戏的模式但是它不需要定义游戏的玩法但是有一个很重要的因素是这仅对于 atari 上的游戏成立

(2)问题这一技术是否可以转移到驾驶领域

或许不能

(3)问题玩游戏在哪里玩

这是玩游戏的其中一个步骤在一个状态下采取操作然后观察到了它也就是有了这样的模拟过程最大的问题之一就在于此需要进行仿真来得到基准数据

(4)这个意见是对于很多这些情况操作行为可能不会改变奖励函数大多数时间奖励分数,会在你操作10, 20, 30步之后才到来。这也是为什么这项工作会这么神奇因为它在本地进行学习在对游戏进行成百上千次仿真的过程中它能够学习应该在游戏中做什么为了之后获取到奖励分数如果看它的数学表达这是十分简单的数学公式而这个结果是难以置信的因此这是长足的进步

17、Gorila

(General Reinforcement Learning Architecture)

image.png

10x faster than Nature DQN on 38 out of 49 Atari games

Applied to recommender systems within Google

Nair et al. "Massively parallel methods for deep reinforcement learning." (2015).

最近这一算法取得了长足的进步这是一个名为gorila的一般强化学习架构起码在模拟世界这是很酷的事情那就是可以通过分布式方法来运行深度强化学习你可以通过分布式方法进行模拟仿真和学习你可以生成经验正如这个图表所展示的你既可以从人们当中获取经验也可以从模拟仿真中获取经验比如alpha go 赢得围棋的方式就是从专业比赛以及它自己的比赛中来学习得到经验因此可以通过分布式方法可以测量的分布式方法让它进行学习在这一指定案例中goailla 得到了 深度强化学习网络更好的结果这也是他们在自然》杂志上论文的一部分。

相关文章
|
4月前
|
编解码
Sora视频重建与创新路线问题之什么是因果3D卷积,如何实现
Sora视频重建与创新路线问题之什么是因果3D卷积,如何实现
|
机器学习/深度学习 传感器 算法
【深度增强学习 初步学习总结】
【深度增强学习 初步学习总结】
101 0
|
7月前
|
机器学习/深度学习 算法 机器人
深度强化学习中利用Q-Learngin和期望Sarsa算法确定机器人最优策略实战(超详细 附源码)
深度强化学习中利用Q-Learngin和期望Sarsa算法确定机器人最优策略实战(超详细 附源码)
97 0
|
7月前
|
机器学习/深度学习 算法 关系型数据库
PyTorch深度强化学习中蒙特卡洛策略梯度法在短走廊环境(CartPole-v0)中的实战(超详细 附源码)
PyTorch深度强化学习中蒙特卡洛策略梯度法在短走廊环境(CartPole-v0)中的实战(超详细 附源码)
86 0
|
7月前
|
机器学习/深度学习 算法
【深度强化学习】神经网络、爬山法优化控制倒立摆问题实战(附源码)
【深度强化学习】神经网络、爬山法优化控制倒立摆问题实战(附源码)
118 0
|
7月前
|
机器学习/深度学习 算法 PyTorch
【PyTorch深度强化学习】带基线的蒙特卡洛策略梯度法(REINFOECE)在短走廊和CartPole环境下的实战(超详细 附源码)
【PyTorch深度强化学习】带基线的蒙特卡洛策略梯度法(REINFOECE)在短走廊和CartPole环境下的实战(超详细 附源码)
135 0
|
7月前
|
机器学习/深度学习 算法 机器人
强化深度学习中利用时序差分法确定扫地机器人问题的最优解(附源码 超详细必看)
强化深度学习中利用时序差分法确定扫地机器人问题的最优解(附源码 超详细必看)
141 0
|
机器学习/深度学习 人工智能 前端开发
强化学习:基于蒙特卡洛树和策略价值网络的深度强化学习五子棋
强化学习:基于蒙特卡洛树和策略价值网络的深度强化学习五子棋
强化学习:基于蒙特卡洛树和策略价值网络的深度强化学习五子棋
|
机器学习/深度学习 算法
【5分钟paper】基于强化学习的策略搜索算法的自主直升机控制
【5分钟paper】基于强化学习的策略搜索算法的自主直升机控制
108 0
【5分钟paper】基于强化学习的策略搜索算法的自主直升机控制
|
算法 计算机视觉
现代控制理论课程实验一:线性系统状态空间分析与运动解
现代控制理论课程实验一:线性系统状态空间分析与运动解
现代控制理论课程实验一:线性系统状态空间分析与运动解