开发者学堂课程【深度学习与自动驾驶:深度强化学习-运动规划(1)】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/533/detail/7151
深度强化学习-运动规划(1)
内容介绍:
一、什么是机器学习?
二、Perceptron
三、The Process of Learning
四、Combining Neurons into Layers
五、Task: Classify and Image of a Numbe
六、Philosophical Motivation for Reinforcement Learning
七、Agent and Environment
八、Reinforcement Learning
九、Markov Decision Process
十、Major Components of an RL Agent
内容简介:
第一个项目是 DeepTraffic,代号为"DeepTraffic",任务是用深度强化学习来解决交通问题,设计一个网络所涉及的内容以及如何提交自己的网络和如何参与比赛,获胜者将获得一个非常特别的奖品。
一、什么是机器学习?
1、这里有很多相关的类型,有一种称谓是监督学习,通常讨论机器学习的时候以及讨论机器学习的成功之处的时候,有监督学习需要一个数据集,这就是基准数据,当知道输入和输出,为了了解输入和输出之间的相关映射,将其应用到机器学习算法中,在这种情况下,就可以在将这个神经网络推广到更多的例子。
2、另一方面,在有监督学习中,当对输出一无所知的时候,关于正在处理的数据的真实结果,所得到的只是简单的数据,必须找到潜在的结构,这些数据的潜在表现是有意义的,对于将要完成的任务,无论它是什么,对于半监督的数据,或者只是部分(通常只占很小的一部分)被标记为基础数据。
3、如果你想到了互联网上的图像,以及你想到了 ImageNet 一个所有图像都被标记的数据集,ImageNet 数据集的大小,只是所有在网上可用的图像的一个很小的子集,但是这是作为人类所面对的任务,对机器学习感兴趣的人,是如何我们扩大数据的规模,对这些数据有信息,强化学习介于两者之间(有监督学习和半监督学习),这就是半监督学习。
4、在世界上有一个必须存在的 agent,agent 能看到“世界”的输入,但对这个世界知之甚少,除非通过偶尔的延迟奖励才可以,这就是人类的本性,这就是生活的意义,你不知道什么是好是坏,必须要活下去,每隔一段时间,你就会发现你上周做的所有事情都是无意义的,这就是强化学习,这是半监督的,在某种意义上,只有一小部分数据是基准数据,具有确定性,必须从中提取知识,所以首先从实际意义上讲,任何目前正在运行的事物的核心都必须有一些基准数据,当试图泛化时,必须有一些基准数据,监督学习,即使在强化学习中,唯一能依靠的就是以奖励的形式出现的基准数据,所以标准监督学习的 pipeline 是你有一些原始数据作为输入,你有基准数据,标签符合输入的输出,基准数据,然后你去运行任何类型的算法,无论是神经网络,或者其他预处理算法,从该数据集中提取特征,可以想象一张人脸的图片,这个算法可以提取出鼻子,眼睛,眼睛的角,瞳孔,甚至是图像中较低层次的特征,之后将这些特征插入到一个模型,一个机器学习的模型,我们训练这个模型,不管这个算法是如何通过训练过程的,就会评估,在看过这个特殊的例子之后,还能在其他任务上做的更好吗?当重复这个循环的时候,做得更好。模拟学习再从原始数据到所拥有的标签上就会表现的更好,你可以把这个模型发布到陌生的环境去做预测,就像以前从未见过的那样。
二、Perceptron
1、Perceptron:Weighing the Evidence
output ={
0 if jWjXj ≤ threshold
1 if jWjXj > threshold
任务是预测标签,神将网络就是这门课的内容,这是一种被证明的非常成功的机器学习的算法,神经网络的计算构建块是一个神经元,感知器是一种神经元,它是原来的旧型神经元,输出是二进制,0或1,这并不具有很强的实际价值,一个感知器经过的过程,它有多个输入和一个输出,每个输入都有其独特的权重,就如图所示0.7,0.6,1.4,这些权重被应用于输入,以及一个感知器,它的输入是二元的1或0,在预测阶段这些权重会被求和,然后在每个神经元上加一个偏差,然后在上面加一个阀值,测试证明,这个值加上偏差,在阀值之下,如果超过一个阀值,产生一个1低于一个阀值产生一个0,关于神经网络,我们能自信地理解的唯一一件事就是,我们可以证明很多关于神经元的东西。
2、Perceptron: Implement a NAND Gate
Q=NOT(AANDB)
Truth Table
Input A |
Input B |
|
Output Q |
0 |
0 |
|
1 |
0 |
1 |
|
1 |
1 |
0 |
|
1 |
1 |
1 |
|
0 |
Universality: NAND gates are functionally complete,meaning we can build any logical function out of them.
例如,我们所知道的是一个神经元可以近似于一个 NAND 冂(与非冂)一个 NAND 冂是一个逻辑运算,一个逻辑函数作为输入,有两个输入A和B,可以在左边的图上找到对应,这个表格显示了当输入为 0,01 时,按任何顺序,输出都是1,其余情况输出则为 0,一个 NAND 冂的一个很酷之处在于它是一个通用冂,如果你今天口袋里有一部手机,你就可以仅仅利用NAND冂来构建一个计算器,所以它的功能是较为完善的,你可以利用它来构建任何逻辑函数,仅仅通过把它们任意地连在一起,NAND冂和计算机的问题在于它们是自下而上构建的,你必须设计这些NAND冂的电路,所以可以学习到的最酷的就是感知器,这神奇的 NAND 冂可以学习它的功能。
3、Perceptron: Implement a NAND Gate
感知器如何执行NAND操作呢?
有四个例子:
Truth Table
Input A |
Input B |
|
Output Q |
0 |
0 |
|
1 |
0 |
1 |
|
1 |
1 |
0 |
|
1 |
1 |
1 |
|
0 |
(1)(-2)*0(-2)*0+3=3
当给每个输入赋予-2的权值,给神经元加上一个偏差3,然后执行相同的操作,将神经元上的偏差值与输入乘以权重的值相加,可以在得到当输入两个0,加上偏差3,可以获得3,得到的结果3是一个正数,这意味着感知器(被设计来表示或模拟大脑识别和辨别能力的计算机模型或计算机化机器)的输出将会是1。
(2)(-2)*0(-2)*1+3=1
当输入分别是0和1的时候,它们的和依然是一个正数,这又一次使得输出一个1。
(3)(-2)*1(-2)*1+3=-1
同样的,当同时输入两个1时,它们的和将会是-1,一个小于0的数,尽管这很简单,但是这是一个很值得去思考的问题
(4)(-2)*1(-2)*0+3=1
3、Perceptron > NAND Gate
Both circuits can represent arbitrary logical functions:
But perceptron circuits" can learn...
是这是一个很值得去思考的问题,当谈论神经网络可以做的一些神奇的事情时,这是一种基本的计算真理,因为如果讲一个与非冂电路和一个神经元电路进行比较,你会发现它两的不同,所认为的神经网络可以执行和与非冂电路相同的操作,它可以学习由与非冂电路表示的任意的逻辑功能,但重要的是这不需要人类“设计师”对它进行干涉,如果你愿意,我们可以让它不断进化。
三、The Process of Learning
Small Change in Weights → Small Change in Output
small change in any weight(or bias)causes a small change in the output
所以这还有一个重要的方面,感知器的主要缺点之一,它的输出不是很平滑,当改变输入的权值,并且改变神经元上的偏差,稍微调整一下,很有可能当你得到的时候,做神经元很容易,我会输入一个0而不是1,或者是一个1而不是0,所以当我们开始堆积很多的这些值在一起的时候,是很难控制所有的输出的,现在,有一个使神经网络工作的关键步骤,没有一个电路感知元件,如果输出的结果是平滑的,由激活函数形成的一个连续的结果。
Smoothness of activation function means: the Aoutput is a linear function of the Aweights and Abias
Learning is the process of gradually adjusting the weights to
achieve any gradual change in the output.
而不是由阶跃函数所产生,就像所展示的感受器(被设计来表示或模拟大脑识别和辨别能力的计算机模型或计算机化机器),我们使用各种类型的光滑函数(一个在生物学中常见的s型的函数,也称为s型生长曲线)当你改变权重和偏差时,输出可以逐渐改变,这是一个基本但是关键的步骤,所以(机器)学习的过程一般是逐渐调整这些权重的过程,看看它是如何影响神经网络的其余部分,你只需要不停地调整权重,并观察与基准数据之间的差距(基准数据是参考标准,一般用来做errornotification,比方说要根据历史数据预测某一时间的温度,基准数据就是那个时间的真实温,如果你离基准数据越来越远,你只需要调整相反方向的权重,简而言之,这就是神经网络。
四、Combining Neurons into Layers
Feed Forward Neural Network
Recurrent Neural Network
Have state memory
Are hard to train
主要讨论的是前馈神经网络(为人工智能领域中,最早发明的简单人工神经网络类型),图片的左边,从输入到输出,没有循环,有循环的图,这些神奇的东西叫做时间递归神经网络(时间递归神经网络的神经元间连接构,它们的神奇之处在于它们有记忆性,它们有各状态的记忆,它们记得它们所经历的时间上的动态数据,但是它们真的很难训练。
五、Task: Classify and Image of a Number
1、讨论前馈神经网络,一起看一下这个例子,将多个神经元叠加在一起的例子,让我们来思考这个任务,这是现在很有名的一个基本任务,它使用数字来进行分类,你有一张有红色数字的图像,你的任务是说出图像上的数字是多少,现在,这图片上的数字是多少?一张图像是像素的集合,在这张图里是28*28的像素,总共有784个数字,这些数字的范围是从0到255,在神经网络的左侧,该输入的大小是784个输入神经元,这是输入,接下来是隐层,它被叫做隐层是因为,它既不是输入层,也不是输出层,这只是一个被简单使用的块,是神经网络计算能力的核心,这就是隐层,他的任务是以这种方式从输入映射到输出,形成数据的表示,在这个问题中,隐藏层中有十五个神经元,每个数字对应的输出,有十个值,有多种方法可以构建这种网络,这就是神经网络的神奇之处,就像你可以用很多方式做事一样,你只需要4个输出来表示0到9的值,但在实践中,似乎有10个输出效果更好,而这些是如何工作的呢?每当输入是5,负责5的输出神经元,会被激活,把值设置的接近1,从0到1,接近1,等一秒,输入一个希望是接近0的值,当它们不这样做的时候,调整权重以使它们接近于零,并且接近一个与图片相关的正确的神经元。当它更相关时,会在之后的课程中讨论这个训练过程的细节。
2、刚刚讨论的是通过网络的正向传递,当接收输入,乘以权重,将它们求和,加上偏差,产生输出的时候就代表着正向传递通过了,并检查哪个输出产生了最高的置信度,一旦提供了每个数字的概率,可以确定用来奖励或惩罚,那些导致正确或错误决定的权值的梯度,这就是所谓的后向传播:一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法,通过网络退后一步,乘以这些跟新后的权值,由于激活函数的平滑性这是一个高效的数学操作,GPU将会介入到运算处理过程中,到目前为止,数字6的基准数据的例子。
3、在图片中,由x得到的y等于10维向量,其中六个值中只有一个为1,其余都为零,这是图像上的基准数据,函数是用来估量模型的预测值f(x)与基准数据y的不一致程度,它是一个非负实值函数,通过f(x)来表示,损失函数越小,模型的鲁棒性就越好,基本的损失函数,是方差,由x得到的y是基准数据,a是正向传递,产生的神经网络的输出,当输入数字6,无论输出的是“a”还是一个10维的矢量,并汇总输入来产生方差,这是损害函数,损失函数是目标函数,被用来确定,整个网络的反响传播权重,增加多少或者减少多少,以及优化该损失函数的基本操作,最小化该损失函数,基本操作使用梯度下降的各种变体完成的,希望有一个平滑函数,但是这是一个高度非线性的函数,这就是为什么不能证明很多关于神经网络的概念的原因,如果函数足够平滑,高维度,高度非线性,用梯度下降可以找到至少一个很好的解决方案,而且必须有一些随机因素,以确保它不会陷入这个非常复杂的函数的局部最小值。
六、Philosophical Motivation for 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".
这就是监督学习(是推理功能的机器学习任务标记的训练数据),有输入,有输出,基准数据,这是我们的舒适区,我们很自信,我们知道将要发生什么事,你需要做的只是,用这个数据集来训练一个神经网络,你可以评估它,你可以写一篇论文,并尝试反驳之前的论文,这是很不错的,问题是当你使用那个神经网络来创建一个在现实生活中的智能系统,系统所使用的数据不在是你的那个数据集,它将会用世界范围内的数据,也许与基准数据也大相径庭,所以从监督学习中获得的,是神经网络是一个非常棒的记忆官,但这样的方式学习,它们可能并不能有很好的泛化能力,因为推理超越了他们所训练的数据集的特定风格,强化学习的目的是我们可以将获得的知识以监督的方式扩展到一个特别的方向,那是一个在我们世界之外的巨大领域,基准数据是如何实施的,某个状态有多好或律师如何评价的,这是一种野蛮的推理。
七、Agent and Environment
1、At each step the agent:
(1)Executes action
(2)Receives observation (new state)
(3)Receives reward
2、The environment:
(1)Receives action
(2)Emits observation (new state)
(3)Emits reward
这更像接近于推理而不是记忆,这是思考监督学习的好方法-记忆,你们为了考试而学习,许多人都想知道这并不意味着只要你得到一个A就会成功,因此,强化学习代理或者任何代理,这个世界上存在的任何机器或者人,可以从代理的角度以下面的方式进行操作,你可以执行一个动作,它可以以新的状态接受该行动所产生的观察,并可以得到奖励或惩罚(增加或减少),你可以用这种方式来分解我们的存在,简单地说但这是一个方便的计算方法,从环境方面看,环境在观察中接受了行动,所以你的行为改变了世界,因此,这个世界必须改变,然后告诉你,并给你一个奖励或惩罚,所以这又是最迷人的事情之一。
八、Reinforcement Learning
Reinforcement learning is a general-purpose framework for
decision-making:
1、An agent operates in an environment: Atari Breakout
2、An agent has the capacity to act
3、Each action influences the agent's future state
4、Success is measured by a reward signal
5、Goal is to select actions to maximize future reward
这是对atari的深入思考,这是atari比赛,有一个四处移动的挡板,这是它存在的世界,代理是挡板,还有一个弹球,你试图移动,你的行动是正确的:向右移动,向左移动,你正试图以这样一种方式移动,即球不会越过你,所以,代理有一个人的水平表现,那么这个挡板怎么办呢?在这样的环境下运作这是一种行为:向左移动,向右移动,
每一个动作都会改变世界的状态,这似乎是显而易见的正确移动改变
了世界的状况,实际上在图片中看到的是这个小家伙眼前的世界,它
得到奖励或惩罚,奖励以点数的形式获得,在左上角这些奖励将会被累计,当球通过浆时,会收到“死亡”的惩罚,这是剩下的生命数,从5到4到3,降到0,因此,我们的目标是在任何一个时刻,都选择一个在未来会有最大化奖励的行为,不知道奖励是什么,这个词的更大的意义,你所拥有的只是对你的行为的即使回报或惩罚。
九、Markov Decision Process
这可以作为决策过程的标志,决策过程的标志是一个数学表达式,这是无记忆的,所有你得到的状态都是你目前的状态。你执行一个行动,你会得到奖励,你发现自己处于一个新的状态,这一遍由一遍地重复着,你从状态0开始,你进入状态1,你再次重复一个行动,获得下一个状态的奖励,这就是正在运作的公式。
十、Major Components of an RL Agent
An RL agent may include one or more of these components:
1、Policy: agent's behavior function
2、Value function: how good is each state and/or action
3、Model: agent's representation of the environment
当你处于某种状态时,你不会记得两个状态以前发生的事情,一切都在瞬间进行,那么强化学习代理的主要组成部分是什么?有一个决策,该函数广泛地定义了一个代理的行为,这意味着包括对于任何给定的状态,我将如何以一定的概率采取什么行动,价值函数是指每个状态和行为在任何特定状态下的情况,还有一个模型,现在这是一个微妙的事情,实际上是你今天看到的所有事情中最大的问题,就是我们如何表现环境的模式,将看到神经网络,在一个相对简单的世界模型上,实现的一些惊人的事情,以及这个模型是否可以延伸到现实世界,在驾驶行为下人类生命受到威胁。
(1)Robot in a Room
reward +1 at [4,3],-1 at [4,2]
reward -0.04 for each step
what's the strategy to achieve max reward?
what if the actions were deterministic?
一个在房间里的机器人,从左侧的底部开始,要去顶部的右侧,可能的行为是向上,向下,向左,向右,现在,一个世界被确定了,这意味着当你向上走的时候,你真的在向上走,否则这个世界就像人类现实生活一样是一种非确定性,因为当你向上走的时候,有时你是在向右走,所以在这个例子里如果你选择向上走,你80%的时间在向上走,有10%的时间在向左移,有10%的时间在向右移,当你到达最
顶部的右方,你获得一分的加分,当你两次碰到第二个木块,你会被
惩罚扣一分,每一次你迈出一步,你都会被扣0.04分。
(2)Is this a solution?
only if actions deterministic
not in this case (actions are stochastic)
solution/ policy
mapping from each state to an action
所以问题是如果你从底部的左边开始,这会是一个好的解决方案吗?
这是你在世界上存在的一个好策略吗?问题是这个世界是否是确定的。无论什么时候你选择向上走,你就向上。你选择向右走,你就向右。
(3)Optimal policy
但是如果行为是随机的,事实就不是这样的了,在描述过程中0.8的概率向上,各有0.1的概率向左和向右,这就是最佳决策。
(4)Reward for each step -2
现在,如果每一小步扣两分而不是扣0.04分,所以每迈出一步,就会被扣分,你要尽可能的通过一个正数区块,这是决策决定的,只要我可以不扣两分,我会选择通过一个负数区块。
(5)Reward for each step: -0.1
现在,如果奖励是每一步扣一分,你或许会选择围绕着-1区块,绕一点路以避免扣分。
(6)Reward for each step: -0.04.
接着你可能会绕更远的路,每一步向上会获得奖励,每一步向下就会被惩罚。
(7)Reward for each step: +0.01
而且如果你的每一步都是正向奖励,你会到不了终点线,你只是想在这个世界漫步,昨天看到的河滨比赛,船可以选择不去完成比赛,因为在过程中得分会很有趣。