大家好, 欢迎回到人工智能课程｡
今天我们要讨论的是时间上的差异｡
这是一个非常重要的教程, 因为时间差是Q学习算法的核心和灵魂｡
这实际上就是我们迄今为止所学到的一切如何在学习中发挥作用｡
让我们来看看｡
还记得我们讨论过确定性搜索和非确定性搜索的时候吗, 还记得我们说过在这个例子中, 当代理想向上时,
他肯定会向上｡
在这种情况下, 当他想走的时候, 有10%的机会他会走｡
我们只剩下10%的机会他会走右边, 80%的机会他会走右边｡
一直往上走｡
当然, 这些数字是任意的, 可以不同｡
这整个概念就是它在不同的问题中可能是不同的｡
所以它不需要关心他的移动方向, 只是有一些随机性,
一些不受代理人控制的事情在这个环境中发生｡
正如你们所记得的, 这一点的效果是, 在确定性的例子中, 计算值非常容易｡
嗯, 不一定总是很容易的｡
但在我们的例子中, 我们可以简单地用贝尔曼方程来计算它们｡
我们有准确的数值｡
然后, 正如你们所记得的, 我非常小心地提到过,
这些非确定性搜索示例的值是我所不知道的｡
它们是不计算的｡
最后我说我们不会, 我们只是不会去计算它们, 因为它非常复杂｡
但计算机可以做到这一点, 我们只是按照这些值, 只是我编沿着值｡
但他们确实完成了任务｡
他们帮助我们很好地理解了这些概念, 现在我们将回到这一点, 并了解这里到底发生了什么｡
为什么在非确定性的例子中, 或者一般来说, 在这些问题中, 在这些环境中,
在代理人经历这些环境时, 计算这些值要困难得多？
为什么计算这些值会这么难呢？
当你仔细想想, 因为当代理人从这里移动到右边时,
他不一定总是那样移动｡
有时候他有可能会去到一个, 而不是直接去｡
所以我们把这个叫做东北, 西南, 等等｡ 代理人有时会向南走, 而不是向西走｡
例如, 从这里, 他有时会向东, 而不是向北｡
真的很抱歉
所以他有时候会往南走, 而不是往东走｡
在这里, 他不向北走, 有时候会向东或向西走｡
在这里, 他不是向北走, 而是有时向西､ 向东或向西走, 等等｡
如此, 故我如此｡
为了计算该值, 您需要知道该值是什么｡
但有趣的是, 为了计算这个值, 你需要知道这个值是什么｡
所以这里有很多递归的过程, 所以你不能只定义这些值｡
最重要的是, 这种递归是不确定的｡
有时候就是这样｡
有时候他不往上走, 而是往右走｡
有时候他不是往上走, 而是往左走｡
有时候是他想上去的时候, 他就会上去｡
所以这是受偶然性的影响｡
所以也许很多次代理人会通过这条路, 他会向上, 向上, 向上, 向上.
他会认为从这里他总是向上走｡
所以这个状态的价值会下降, 会变好, 然后突然间他会掉到坑里,
这个价值会下降｡
所以你可以看到, 这些值的计算是随机的, 因为它们是相互关联的｡
此外, 环境中固有的随机性是最重要的, 因为这是决策过程的标志｡
这就是所有这些的集合点, 也是我们要引入时间差概念的地方,
它将允许代理计算这些值｡
这里我们讨论的是V值, 从那以后我们已经讨论了Q值｡
这就是我们要做的｡
我们将要看到的｡
Q值｡
大家还记得, 这是Q值的贝尔蒙特方程｡
所以Q值或者说在状态A下执行某个动作的价值等于你在执行该动作后得到的奖励.
所以在完成这个动作之后, 加上你得到的最大值, 你得到了所有可能的总和的gamma｡
所以你可以得到你最终所处状态的期望值｡
大家还记得, 这是我们的构建公式｡
现在, 为了简单起见, 我们将用传统的方法重写它, 就像我们在了解随机城市之前,
讨论贝尔蒙特方程的方法一样｡
你们还记得, 这是我们的贝尔蒙特方程, 在确定性搜索的例子中,
因为这里你没有期望值, 你没有所有概率的总和｡
你只是有它, 好像它是确定的地方｡
你最终会是什么状态？
然后你就在那个州里拿了最大值｡
我们重写它的原因是, 唯一的原因是因为这样写起来更容易, 我们也更容易接受这个公式｡
所以我们要记住我们用这个部分替换了这个部分, 而且你们会在很多文献中找到这个符号, 所以如果你们在学习其他的资料,
你们会更容易理解沿着
但请记住, 事实上, 我们这里所指的是概率方法｡
而不是这种符号, 它只是更容易让我们操作它, 理解发生了什么, 就像看方程一样,
这样它们就不会太混乱了｡
但再一次, 记住, 事实上, 我们所指的是这种概率方法｡
所以我们差不多就完成了｡
让我们来看看到底发生了什么｡
这是我们迷宫的空白状态｡
我们没有任何提示值｡
让我想想｡
也可以, 但先不要填｡
让我们看看其中一个州｡
所以其中一个细胞, 特别是这个细胞｡
这里我们有, 例如, 对于上升的动作, 我们有一个我们计算过的Q值｡
因此, 我们并不是没有Q值｡
我们有, 我们有, 但我们只是没有说明任何事情｡
为了简单起见, 我们将其保留为空白｡
但我们有一段时间以来一直在走动的年龄｡
假设, 他计算出了从这个州, 从这个特定的细胞, 向上或向北的Q值,
这个值是Q, A, A, 现在我们有了, 他现在就是这个蓝色箭头指向的地方｡
特工坐在这间牢房里现在他需要做出选择他要去哪里？
他知道这个, 向北行动的价值, 也就是Q, S和A,
我之前说过的, 原因是他在行动之前就知道了.
他还没有采取行动｡
所以他还在牢房里｡
在他采取行动之前, 这里的值是Q和S现在他实际上采取了行动｡
假设他认为这是最好的选择｡
他采取行动, 他移动到这个细胞｡
那么, 现在发生的事情是在他采取行动之后发生的, 我们可以测量这个值是多少？
我们来计算一下这个值, 这个值是采取这个行动的奖励, 加上gamma乘以,
这个新状态的最大值, 这个状态是他刚进入的质数.
所以在se素数中所有可能的动作的最大值｡
这里我们得到的是之前的值, 然后我们计算了这个度量,
但是你可以回忆一下之前的公式, 如果我们快速地回到之前的公式, 我们刚刚计算的就是这个值.
这就是SNR的Q的计算方法｡
所以右边的部分, 我们已经单独计算过了, 但是在我们采取行动之后,
所以在我们知道S的Q和值之前, 我们已经通过之前的迭代计算过了｡
所以我们的记忆中储存了一个值｡
所以就像我们知道的一个数字｡
现在在执行了这些动作之后, 我们知道了他实际得到了什么奖励, 代理人实际得到了什么奖励,
我们可以计算出这个新的值｡
所以本质上, 我们是在重新计算这个值｡
但是现在有了新的信息, 新的信息是我们得到的奖励,
加上我们最终处于什么状态, 在这个状态下的最大值是多少, 这个新的值对于我们正在寻找的特定状态是什么｡
所以在那种状态下存在的价值是什么｡
所以基本上, S和A的Q, 但是给出了新的信息, 现在时间差被定义为A的TD,
和这两个的TD, 这两个的差｡
第一个元素是after值｡
就像S和A的Q值, 但是之后再计算它, 和之前的一篇文章的Q值,
和你记忆中的A值｡
所以问题是, 它们是不同的吗？
所以理想情况下它们应该是相同的｡
理想情况下, 它应该和这个相同, 因为这是计算这个的公式｡
但问题是, 这不是我们计算出来的｡
这是我们从经验证据中得到的, 是我们通过迷宫多次计算得到的｡
这是我们目前所想到的｡
它与目前的反覆项目无关｡
这是我们很久以前就想到的, 不是很久以前,
但是在我们之前的一次迭代中, 通过迷宫, 而这是我们刚刚计算过的, 不能保证它们会是一样的｡
因为迷宫中存在的随机性, 因为这是可以计算出来的, 一些随机事件被触发了,
这是可以计算出来的｡
不同的随机事件被触发｡
现在让我们在这里重写｡
我们把它移到那边去吧｡
那么我们该如何使用它呢？
问题是, 好的, 我们有这个时间差｡
我们如何使用它, 为什么它被称为时间差？
之所以称之为时间差, 是因为你计算的基本上是同一件事.
你在计算S的Q值, 也就是这个动作的Q值, 你在这里计算, 在这里计算.
但不同的是时间｡
这是您先前的SNA Q｡
这是你的问题和答案, 现在你的新问题和答案, 问题是它有区别吗？
他们之间有时间上的转变吗？
如果时间确实发生了转变, 我们如何利用这一点呢？
我们可以说, 好吧, 我们的Q of A不等于这个新的值｡
所以我们要去掉旧的, 我们将忘记旧的, 我们将使用它作为一个新的值｡
但这样做并不明智｡
原因是在我们的环境中, 随机事件有时会发生｡
如果我们过去的问答是80%的时间都在发生的事情, 然后80%的时间都在发生的事情, 那会怎么样？
然后这个新的, 只是由于随机性而发生的事情｡
在这种情况下, 我们要扔掉的一个是负责的大部分情况｡
我们将用一种只有10%或20%的概率会发生的事情来代替它｡
那不是最好的办法｡
这就是为什么我们不想完全改变Q值的原因｡
我们要用喜欢的方式一步一步地改变一点点, 靠一点点｡
这就是为什么我们要以一种特殊的方式来利用这个时间差｡
所以我们要说, 这是一个公式我们要用问答的形式来更新它｡
我们将把奎师那的旧值加上时间差的α倍｡
所以α是我们的学习率｡
这是我们引入的新参数｡
这就是算法学习的速度｡
因此, 我们基本上是把这个差额, 不管它是什么, 我们把它加到我们上一个星期三的Q上｡
这个公式可能没有任何意义, 或者仅仅看一下, 它没有任何意义, 因为这里有星期三的Q,
这里有S和A的Q｡
这是一回事, 所以它可能应该否定对方｡
但是我们要用一种不同的方式来重写这个｡
所以我再给你们演示一遍｡
所以我只是把时间加到这些公式中｡
所以这里是QT减1, 这里是Q, T减1, 这里是新的｡
这里应该有一个圆圈, 这里也应该有一个圆圈｡
不过没关系｡
这里我们有α时间差, 新的是当前时间差｡
这样你就能看到我们在做什么了｡
我们说,
好的, 让我们现在的Q等于之前的Q加上我们找到的时间差乘以α, 这里的公式是Q学习算法的核心和灵魂｡
这就是Q值是如何更新的, 很好, 我们已经知道了Q值是什么, Gamma是什么,
R是什么, 以及所有这些东西是什么｡
现在我们需要看到的是你有一个先前的Q值｡
是的, 那很好｡
然后可能发生的是, 当你真正采取行动时, 当代理人采取行动时,
他会知道他会得到奖励, 他会在一个状态中结束｡
所以他可以根据这个来计算｡
-你好
好的, 那么我刚才那一步的Q值应该是多少.
现在这就是等式的一部分｡
减去旧的Q值, 得到时间差, 现在需要取α乘以时间差｡
这就是调整Q值的方法｡
这就是你要调整Q值的依据｡
最后, 这就像是,
这就足以理解发生了什么, 但是为了更好地澄清或者混淆, 我们要做的是,
我们要把这个时间差或者这个时间差放在这里｡
我们要把它代入这个公式｡
所以我们要把这部分全部代入这个公式, 最后得到一个很大的方程｡
我们开始吧｡
这就是我们的方程式｡
这是一个完整的方程, 时间差完全写出来了｡
我之所以把它写出来是因为, 首先, 如果你研究一下, 你可能会在其他文献中找到它.
第二件事是, 它使一些事情变得更复杂｡
他的公式更长, 但也使一些事情更清楚一点｡
例如, 你可以看到α在这里扮演的角色｡
你可以看得更清楚, 因为你看这里｡
Q T减一｡
给你｡
Q T减一, 带负号｡
所以如果你代入α等于1, 如果你在这里输入1, 那么这个会和这个求反｡
所以他们会互相残杀｡
你就只剩下这一部分了｡
这就意味着, 我们得到了一个新的值, 它本来应该是这样的.
让我们用新的值更新Q值, 并忽略之前的值｡
正如我们所讨论的, 这不是最好的方法, 因为这里有随机事件, 我们想一步一步地更新｡
另一方面, 如果你把α设为零, 那么你会完全忘记这一部分,
你的q, t, 新的或当前的, 总是等于前一个｡
所以你什么也学不到｡
这意味着迷宫发生的一切都无关紧要, 因为你很久以前就决定了自己的价值, 你只想保持它｡
这就是为什么α不应该是0或1｡
应该介于两者之间｡
它会让你慢慢学习, 一步一步地学习, 当你或代理人穿过迷宫时,
会得到这个时间差｡
慢慢地, 这个价值观肯定会不断更新｡
已更新｡
最终会发生的是, 在某个时刻, 希望算法会收敛｡
这意味着这个时间差将开始越来越接近于零, 最终, 非常接近于零,
甚至是0000｡
这意味着每次你的新值或者新计算的值, 它应该是什么, 所以不是这个, 而是假设在你迈出这一步后,
它应该是什么, 它正好等于你之前的值｡
然后是1, 然后是0.
也就是说, 当时间差为零时,
意味着算法已经收敛, 没有必要继续更新, 也没有必要继续更新Q值｡
这里需要注意的是,
如果环境不断变化, 如果不是因为环境中有一些随机事件, 而是环境本身在修改､
变形, 并随时间而变化, 那么您可能是唯一一次仍希望继续执行队列值的整个更新的情况｡
所以你需要不断地学习因为你不可能学习所有的东西然后得出最优策略因为最优策略也会随着环境的变化而变化.
在这种情况下, 您需要继续计算时间差和Q值｡
但除此之外, 这有点像一个额外的复杂｡
除此之外, 这就是Q值的更新方式｡
这是Q学习算法的主要公式, 这有点像它的扩展版本｡
现在我们应该能理解为什么会有贝尔曼方程, 不仅是它所代表的,
Q值, 还有代理人如何更新它的Q值, 以及在那个环境中到底发生了什么,
这样它就可以提出最优策略｡
我知道这是一个相当多的学习, 但希望你喜欢今天的教程,
希望你能够带走核心价值观背后的基本概念和直觉｡
时间差异的概念是什么, 为什么它很重要, 为什么它能帮助我们慢慢地训练我们的代理人,
让他们了解他们所处的环境｡
如果你想了解更多关于时间差异的知识, 那么一篇很受欢迎的论文就是学习用时间差异的方法来预测｡
作者理查德·萨顿, 1988年｡
我们已经有了理查德·萨顿的参考文献, 但这是另一个.
实际上他有一本书｡
所以如果你深入了解他的写作风格和沟通风格, 那么看看他的书,
就像是所有这些东西的更扩展版本｡
我没读过这本书, 但那是我的想象｡
同时, 这是到论文的链接, 你可以从中了解到更多关于时间差异的信息｡
我希望你喜欢今天的教程, 并期待着看到你的下一次｡
在那之前, 好好享受我｡