大家好, 欢迎回到人工智能课程｡
好吧, 我会的
所以我希望到目前为止你喜欢这些教程｡
我们的直觉已经接近尾声了｡
你很快就来了｡
很快的｡
从实际出发｡
我们只是有些小事需要掩盖｡
好的, 之前我们讨论了如何将神经网络加入到关键学习的整个等式中, 并将你的学习带入下一步,
将其转化为深度学习｡
今天我们将添加一个额外的重要特性, 您将在实用方面对它进行编码｡
所以我和Hudlin决定, 我们应该在直觉方面把它掩盖起来, 这样当涉及到编码方面的时候,
你就有了更多的准备｡
正如我们所讨论的, 我们已经在那里建立了网络｡
有两个部分发生｡
首先, 这是学习｡
所以网络实际上会随着每一个新状态而学习｡
它慢慢地更新它的权重, 以变得越来越好, 越来越好地处理这种环境｡
然后是国家内部的行动｡
因此, 在该状态中已经计数了Q值之后, 然后选择一个键值｡
所以今天我们还是要讲学习的部分｡
我们会提出一个有趣的特性,
我们不会自己提出这个特性, 但我们会讨论一个对深度学习非常重要的特性｡
这个功能叫做体验回放｡
好了, 这是我们的网络｡
所以我们把它复制到这里｡
我们已经得到了在底部计算的损失通过我们的网络反向传播｡
让我们来看看一个例子, 它能让我们更好地理解我们正在处理的问题｡
这是本课程中的一个例子｡
这是本课程的屏幕截图｡
这就是你要编写的程序｡
这是一辆自动驾驶汽车, 它沿着这条路行驶, 它必须学会如何在这条路上导航｡
那么, 正如我们之前讨论的, 在这种状态下, 这是什么呢？
当然, 状态不只是x1和x2｡
Alan将更详细地描述状态是什么,
这将是与汽车角度相关的几个参数和一些相关参数, 以及传感器正在读取的数据等｡
所以会有更多的参数来描述状态, 但不管怎样, 它是一个值的向量｡
它将通过一个神经网络｡
在输出端, 您将得到一些Q值｡
同样, 会有不同的视环境而定, 会有不同数量的动作, 可能的动作｡
但是为了简单起见, 我们还是把它放在这里, 这样我们就能更好地理解这里发生的事情了｡
那么在这种情况下, 到目前为止的问题是, 这个输入到这个神经网络中的是什么？
或者更具体地说, 我们多久触发一次这个神经网络？
这个神经网络多久一次？
好吧, 每次汽车最终进入一个新的状态, 所以汽车移动, 它最终进入一个新的状态｡
然后一切都结束了｡
所有的数据, 所有的关于国家的信息通过网络是一个计算错误｡
此误差是根据我们在前面的教程中讨论的内容计算的｡
此错误通过网络反向传播｡
权重被更新, 然后汽车选择要采取的行动, 使移动结束在一个新的状态｡
在新的状态下, 一切都重新开始｡
基本上, 每次汽车处于新状态时都会发生这种情况｡
好吧, 看看这个例子｡
我特意截取了这个截图, 因为它看起来很好地说明了通过经验､ 重播和经验解决的问题｡
重放不仅仅是我们在这门课或这个具体问题中使用的东西｡
你会看到它在整个过程中被使用, 就像在人工智能算法中被一遍又一遍地使用, 因为它是如此的强大,
如此的重要｡
看看这辆车, 这辆车在这个问题中或者在这个环境中｡
它的目标是从这里到这里再回来｡
它的目标是在这里导航, 在这里而不穿过这些沙墙｡
汽车从这里开始, 然后下降就像它的奖励是基于它离目标的距离.
所以车就从这里开过去了｡
它一直往下, 一直这样, 这样, 这样, 这样｡
沿着这堵墙, 沿着这堵墙｡
接下来它会做什么？
它会转向, 而且会继续前进｡
我们要它一直走下去｡
但让我们想一想｡
一旦它到了这面墙, 每次它向前移动, 它向前移动｡
它向前移动, 向前移动, 向前移动, 向前移动, 向前移动, 如此等等,
向前移动｡
因此, 根据结构环境的不同, 可能需要100步或50步｡
他们只是不停地往前走, 往前走, 往前走, 往前走了四步｡
什么都没变｡
什么都没有
真的变化了｡
是的, 它离这个目标更远, 更近｡
真可爱｡
但就周边环境而言, 变化并不多｡
还是那堵墙｡
如果你坐在车里, 你可能见过这种情况,
当你在开车的时候, 你所看到的环境是如此单调, 你只是看到一种相同的东西, 就像只是路过｡
但是, 想象一下, 你开车穿过沙漠, 你看到的只是同样的事情｡
都是一样的声音, 都是一样的声音｡
什么都没发生, 什么都没改变｡
所以基本上, 每次我们把那个状态, 那个新的状态放进这里, 是的, 当然,
有些东西可能会改变｡
例如, 你正在开车, 你的GPS显示你离目的地更近了｡
其中一个输入就是变化｡
但是很多其他的输入, 比如车上的传感器, 它们都没有改变｡
因此, 当你开车的时候｡
在这种状态下, 你把输入输入到你的神经网络中｡
这里, 这里, 这里, 这里, 这里, 这里, 这里, 这里, 还有这里｡
所有时间的输入都几乎相同｡
所以如果你不断地输入相同的输入, 相同的值, 相同的向量或者非常相似的向量到你的网络中,
因为没有变化, 汽车会学习得很好｡
有一件事你会学得很好, 那就是如何沿着这堵墙开车, 就在它的右边｡
所以这就是网络将如何更新, 它将得到回报｡
它会慢慢地开始因为驾驶而得到奖励｡
所以, 这就像, 好吧, 从这里开始学习, 哦, 我做得很好｡
我做得更好了｡
它会有一种错误的感觉, 认为自己做得很好, 尽管它只学会了如何沿着这堵墙开车.
所以神经网络会变得非常适应沿着这堵墙行驶｡
然后突然出现了一个曲线, 汽车不知道该怎么做, 它完全不符合这个神经网络｡
即使它能以某种方式进行调整, 假设它通过了这一部分, 然后落在了这面墙上, 同样事情也会发生
它会从这里, 这里, 这里｡
现在, 神经网络正在自我重组以适应这堵墙然后, 砰, 这件事发生了｡
即使它能越过那个, 它也会越过这个东西｡
然后沿着这条线做同样事情
所以基本上这就像是一个非常生动的例子, 说明了我们所面临的问题｡
是因为我们使用神经网络的方式, 用每一个状态更新它, 一旦我们有很多连续的步骤,
它们甚至不需要是相同的｡
但是在环境中, 连续的状态是相互关联或相互依赖的, 这是很正常的｡
我们不希望这种相互依赖性使我们的网络产生偏见｡
我们不希望汽车只是学习如何沿着直线或长曲线行驶, 或者像你认为你能想到的任何东西,
在生活中, 一个代理人将在一个环境中航行,
无论你能想到的是相互关联或相互依赖的状态,
一个接一个, 如果你只是让代理人从中学习, 这真的会扰乱你的神经网络｡
这就是体验回放的用武之地｡
在体验回放中所发生的就是这些体验｡
所以这些州在1到3个州, 不管这里有多少个州, 它们都不会马上通过网络｡
它们实际上保存在代理的内存中｡
例如, 它会保存所有这些信息, 并在某个时间点保存所有这些信息,
一旦达到某个阈值, 您将能够编写代码, 而Atlan将向您展示如何在达到某个阈值时执行此操作,
然后代理将自行决定｡
好吧, 是时候学习了｡
我有我有这一批经验, 现在我要向那一批学习｡
所以它随机选择一个均匀分布的密钥, 这一点很重要, 因为我们会在下一张幻灯片上讨论这个问题｡
我们会我们会提到的｡
但它需要一个均匀分布的样本｡
所以基本上所有的经验都被认为是平等的｡
它从它拥有的那批体验中取一个均匀分布的样本｡
然后它通过他们, 从他们那里学习｡
所以这不需要所有的经验｡
它只需要一个均匀分布的样本｡
所以从这里开始可能需要几个, 从这里开始几个, 从这里开始几个｡
而每一个经验都表现为状态｡
而是在于它采取的行动, 它最终所处的状态, 以及它在特定状态下通过行动所获得的回报｡
因此在每一经验状态中对于要素的一个行动状态都要加奖励｡
所以它把所有这些经验通过网络传递, 然后学习｡
这样一来, 就打破了这种模式｡
Elias, 这来自于经验的连续性, 如果你把它们一个接一个地通过网络｡
所以这就是体验回放的重点｡
这就是问题所在｡
体验回放的另一个好处是, 有时候在这样的环境中, 你可能会有非常宝贵的､
罕见的体验｡
举个例子, 我不知道, 让我们看看这个角落｡
对不对？
这是这是一个右角｡
好吧, 我知道了
而且非常锋利｡
有多少是锋利的？
所以它会从这里来, 假设它会拥抱这个角落｡
那么在这整个房间里我们有多少个尖锐的右角呢？
我们这里只有一个右角这里也只有一个右角｡
对不对？
所以当它朝这边来的时候, 那是右角｡
当它往回走的时候, 它是这里的锐角｡
所以这个不锋利｡
这个很锋利｡
所以在整个环境中只有一个机会可以从一个尖锐的右角学习｡
这是一个很重要的经验, 因为它可能会得到真正的好沿着直线驾驶, 得到真正的好做像软弯, 像这样,
像这样｡
但是它会继续把这个尖锐的右角弄得一团糟, 仅仅是因为它没有太多的机会从中学习｡
所以它很快就能学会其他的东西, 但学会这个右角要花很长时间.
这是一个非常简单的例子｡
这是一个非常简单的解释, 但它说明了一个概念, 有时他们是罕见的经验, 这可能是有价值的｡
如果你只是在做一个简单的神经网络, 你把你的值放在这里, 它们会通过,
你知道,
即使我们忘记了经验的顺序性问题, 以及它们是如何相互依赖和/或相互关联的, 甚至忘记了一秒钟,
发生的是一旦你把一个经验, 它通过更新的网络, 然后你立刻忘记了它, 忘掉那些经历吧｡
你去找下一个｡
这就是神经网络的工作原理｡
然后你进入下一个状态, 下一个状态, 下一个状态, 下一个体验, 下一个体验,
下一个体验, 等等｡
所以这个右边的角落, 一旦它通过了网络, 它就消失了,
你对那个宝贵的经历没有任何记忆｡
而对于体验回放, 由于您将这些体验放入批处理中, 因此可以将批处理组织为滚动窗口｡
比如说, 你可以有100个批次, 也就是100次体验｡
所以当它从这里回来的时候, 它在它的批次中记录了这段经历.
然后就像在某个点上运行一样, 它从它的一批经验中获得一个均匀分布, 然后有一个滚动窗口｡
所以它会忘记这些经验, 但它会保留这些经验, 然后它会再次学习, 一旦它在这里,
它会从这一批中学习｡
一旦它到了这里, 如果它一直到这里, 它就会有一系列这样的经历｡
所以现在它从这些经验中学习｡
这样的话, 你会得到这个右手边的角在学习过程中可能会出现几次, 因为它在那一批中,
当那一批是这样的时候｡
然后是在这一批, 在这一批｡
所以它分几批出现, 因为批处理可能会作为一个滚动的体验窗口进行更新｡
所以旧的经验被踢出去, 新的经验被加入, 然后旧的经验又踢了起来｡
所以一个经验, 它停留在一批相当长的一段时间和汽车或代理人可以从经验中学习几次｡
这是体验回放的另一个优势｡
当然最后的优势是经验丰富｡
与一次只学习一个经验相比, 重放为您提供了从更多经验中学习的机会, 因为您有该批,
因此它是一个滚动窗口｡
因此, 即使你的环境局限于经验, 你的经验回放方法也可以帮助你更快地学习｡
而且, 您不必重复环境, 因为您不必重复, 所以可以更快地学习｡
你保存了那些经历｡
这些就是经验的主要优势｡
重播｡
让我们回顾一下｡
我们已经得到了我们正在打破独立和｡
连续经验的相关性｡
我们保存了可能很重要的罕见经历, 因此我们可以更经常地从中学习｡
我们可以在环境中学习｡
我们可以学习有经验的寄养环境, 这些环境缺乏经验, 没有代理人经历过的那么多经验,
但我们仍然可以学习｡
所以这就是体验回放的意义所在｡
如果你想读更多的东西, DeepMind在2016年发表了一篇有趣的文章｡
这叫做“优先体验回放”, 它讲述了为什么｡
为什么我们要使用均匀分布从体验批次中选择体验？
为什么我们不找到一个更好的方法来选择我们的经历, 并优先考虑一些我们认为重要的经历呢？
这是一件很有趣的事情｡
所以在这种情况下, 你将不仅能够加强, 不仅加强你的经验重放知识,
但你实际上将能够与最前沿的技术｡
这是2016年, 由Deep Mind出版｡
所以这是一篇很新的, 很有影响力的论文｡
因此, 您将能够真正探索极限, 或者进一步探索此算法, 并将其提升到下一个级别｡
因此, 如果您愿意, 我将让您来了解为什么以及如何将均匀分布更改为一种不同的方法,
以体验本文中的重放, 我希望您喜欢今天的教程｡
现在我们知道了什么是体验回放, 我们可以自信地在我们的实践教程中使用它｡
我期待着下次见到你｡
在那之前, 好好享受吧｡
一､