fix some errors
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
|
||||

|
||||
|
||||
我们可以把强化学习跟监督学习做一个对比。上图说的是 supervised learning, 举个图片分类的例子,监督学习的意思就是说我们有一大堆标定的数据,比如车、然后飞机、然后凳子这些标定的图片。然后这些图片都要满足 i.i.d 分布,就是它们之间是没有关联的一个分布。然后我们训练一个分类器,比如说右边这个神经网络。为了分出这个图片,车辆是飞机。训练过程中,我们直接把这个真实的 label 给了这个网络。当这个网络做出一个错误的预测,比如现在输入了这个汽车的图片,然后它预测出来是飞机。我们就会直接告诉它,你现在这个预测是错误的,正确的 label 应该是车。然后我们把这个错误写成一个`损失函数(loss function)`,通过 Backpropagation 来训练这个网络。所以在监督学习过程中,有两个假设,
|
||||
我们可以把强化学习跟监督学习做一个对比。上图说的是 supervised learning。举个图片分类的例子,监督学习的意思就是说我们有一大堆标定的数据,比如车、然后飞机、然后凳子这些标定的图片。然后这些图片都要满足 i.i.d 分布,就是它们之间是没有关联的一个分布。然后我们训练一个分类器,比如说右边这个神经网络。为了分出这个图片,车辆是飞机。训练过程中,我们直接把这个真实的 label 给了这个网络。当这个网络做出一个错误的预测,比如现在输入了这个汽车的图片,然后它预测出来是飞机。我们就会直接告诉它,你现在这个预测是错误的,正确的 label 应该是车。然后我们把这个错误写成一个`损失函数(loss function)`,通过 Backpropagation 来训练这个网络。所以在监督学习过程中,有两个假设,
|
||||
|
||||
* 输入的数据。标定的数据,它都是没有关联的,尽可能没有关联。因为如果有关联的话,这个网络就是其实不好学习。
|
||||
* 我们告诉了这个 learner 正确的标签是什么,这样它可以通过正确的标签来修正自己的这个预测。
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
这里还有一点是 agent 获得自己能力的过程中,其实是通过不断地试错,就这里 trial-and-error exploration,exploration 和 exploitation 是强化学习里面非常核心的一个问题。Exploitation意思是说你会去尝试一些新的行为,让这些新的行为有可能会使你得到更高的这个奖励,也有可能使你一无所有。Exploitation 说的是你就是就采取你已知道可以获得最大行为的过程,那你就重复执行这个 action 就可以了。因为你已经知道可以获得一定的奖励,所以这就需要一个权衡,这也是在这个监督学习里面没有的情况。
|
||||
|
||||
在强化学习过程中,没有这个非常强的 supervisor,这里只有一个奖励信号(reward signal),就是这个环境会在很久以后告诉你之前你采取的行为到底是不是有效的。Agent 在这个强化学习里面学习的话就非常困难,因为你并没有得到即时反馈,当你采取一个行为过后,如果是监督学习,你就立刻可以获得一个指引,就说你现在做出了一个错误的决定,那么正确的决定应该是谁。而在强化学习里面,环境可能会告诉你这个行为是错误,但是它并没有告诉你正确的行为是什么。而且更困难的是,他可能是在一两分钟过后告诉你错误,它在告诉你之前的行为到底行不行。所以这也是强化学习和监督学习不同的地方。
|
||||
在强化学习过程中,没有这个非常强的 supervisor,这里只有一个`奖励信号(reward signal)`,就是这个环境会在很久以后告诉你之前你采取的行为到底是不是有效的。Agent 在这个强化学习里面学习的话就非常困难,因为你并没有得到即时反馈,当你采取一个行为过后,如果是监督学习,你就立刻可以获得一个指引,就说你现在做出了一个错误的决定,那么正确的决定应该是谁。而在强化学习里面,环境可能会告诉你这个行为是错误,但是它并没有告诉你正确的行为是什么。而且更困难的是,他可能是在一两分钟过后告诉你错误,它在告诉你之前的行为到底行不行。所以这也是强化学习和监督学习不同的地方。
|
||||
|
||||
|
||||
|
||||
@@ -35,11 +35,11 @@
|
||||
* 首先它是有这个 trial-and-error exploration,它需要通过探索环境来获取对这个环境的理解。
|
||||
* 第二点是这个强化学习 agent 会从环境里面获得延迟的奖励。
|
||||
* 第三点是这个强化学习的训练过程中时间非常重要,因为你得到的数据都是有这个时间关联的,而不是这个 i.i.d 分布的。大家如果做过机器学习的话就会发现,如果你的观测数据有非常强的关联,其实会使得这个训练非常不稳定。这也是为什么监督学习我们希望我们的 data 尽量是 i.i.d 了,这样就可以消除数据之间的相关性。
|
||||
* 第四点是这个 agent 的行为会影响它随后得到的数据,这一点其实也是非常重要的。就是在我们训练这个 agent 的过程中,很多时候我们也是通过正在学习的这个 agent 去跟这个环境交互得到数据。所以如果我们在训练过程中,这个 agent 的模型如果快死掉了,那么就会使得我们采集到的数据也是非常糟糕的。这样整个训练过程就失败了。所以其实在强化学习里面一个非常重要的问题就是怎么使得让这个 agent 的行为一直稳定的提升。
|
||||
* 第四点是这个 agent 的行为会影响它随后得到的数据,这一点其实是非常重要的。在我们训练这个 agent 的过程中,很多时候我们也是通过正在学习的这个 agent 去跟这个环境交互得到数据。所以如果在训练过程中,这个 agent 的模型很快死掉了,那会使得我们采集到的数据是非常糟糕的,这样整个训练过程就失败了。所以其实在强化学习里面一个非常重要的问题就是怎么使得让这个 agent 的行为一直稳定地提升。
|
||||
|
||||

|
||||
|
||||
为什么我们关注这个强化学习,其中非常重要的一点就是强化学习得到的这个模型可以取得超人类的结果。这一个有意思的点就是之前的监督学习就是我们在获取的这些监督数据,其实是让人来标定的。比如说 ImageNet,这些图片都是人类标定的。那么我们就可以确定这个算法的 upper bound(上限)。其实就是人类的这个标定结果决定了它永远不可能超越人类。但是对于强化学习,它在环境里面自己探索,有非常大的潜力,它可以获得超越人的能力的这个表现,比如说 AlphaGo,谷歌 DeepMind 的 AlphaGo 这样一个强化学习的算法可以把人类最强的棋手都打败。
|
||||
为什么我们关注这个强化学习,其中非常重要的一点就是强化学习得到的这个模型可以取得超人类的结果。之前的监督学习获取的这些监督数据,其实是让人来标定的。比如说 ImageNet,这些图片都是人类标定的。那么我们就可以确定这个算法的 upper bound(上限),人类的这个标定结果决定了它永远不可能超越人类。但是对于强化学习,它在环境里面自己探索,有非常大的潜力,它可以获得超越人的能力的这个表现,比如说 AlphaGo,谷歌 DeepMind 的 AlphaGo 这样一个强化学习的算法可以把人类最强的棋手都打败。
|
||||
|
||||

|
||||
|
||||
@@ -71,11 +71,11 @@
|
||||
然后这个过程就是 rollout 的一个过程。Rollout 的意思是从当前帧去生成很多局的游戏。然后这个很多局就通过是你当前的这个网络去跟这个环境交互,然后你就会得到一堆这个观测。这里其实每一个观测,你就可以把它看成一个轨迹(Trajectory),轨迹的话就是当前当前帧以及它采取的策略,每一步的这个策略都有。最后结束过后,你会知道你到底有没有把这个球击到对方区域,然后对方没有接住,你是赢了还是输了。我们可以通过观测序列以及 Eventual Reward 来训练这个 agent ,使它尽可能地采取最后可以获得这个 Eventual Reward 的过程。
|
||||
|
||||

|
||||
其实强化学习是有一定的历史的,只是最近大家把强化学习跟深度学习结合起来,就形成了`深度强化学习(Deep Reinforcemet Learning)`。我这里做一个类比,就是把它类比于这个传统的计算机视觉以及深度计算机视觉。
|
||||
其实强化学习是有一定的历史的,只是最近大家把强化学习跟深度学习结合起来,就形成了`深度强化学习(Deep Reinforcemet Learning)`。我这里做一个类比,把它类比于这个传统的计算机视觉以及深度计算机视觉。
|
||||
|
||||
* 传统的计算机视觉由两个过程组成。你给一张图,我们先要提取它的特征,用一些设计好的 feature,比如说 HOG、DPM。提取这些 feature 后,我们再单独训练一个分类器。这些分类器可以是 SVM、Boosting,然后就可以分出这个图片到底是狗是猫。
|
||||
|
||||
* 2012年过后,我们有了这个卷积神经网络,大家就把特征提取以及分类两者合到一块儿去,就是说我们训练一个神经网络。这个神经网络既可以做特征提取,也可以做分类。然后它可以实现这种端到端的一个训练,然后可以让它里面的参数,在每一个阶段都得到极大的优化,这样就得到了一个非常重要的突破。
|
||||
* 2012年过后,我们有了卷积神经网络,大家就把特征提取以及分类两者合到一块儿去,就是说我们训练一个神经网络。这个神经网络既可以做特征提取,也可以做分类。然后它可以实现这种端到端的一个训练,然后可以让它里面的参数,在每一个阶段都得到极大的优化,这样就得到了一个非常重要的突破。
|
||||
|
||||

|
||||
|
||||
@@ -90,14 +90,14 @@
|
||||
|
||||
有几点组成:
|
||||
|
||||
* 第一点是我们有了更多的这个计算能力,我们有了更多的这个GPU显卡,然后可以更快的做更多的这个 trial-and-error 的尝试通。
|
||||
* 过这种不同尝试就可以使得 agent 在这个环境里面获得很多信息,然后可以在这个环境里面取得很大的奖励。
|
||||
* 第三点是我们有了这个端到端的一个训练,可以使得这个特征提取跟这个最后的这个价值估计或者决策一块来优化,这样就可以得到了一个更强的一个决策网络。
|
||||
* 我们有了更多的这个计算能力,我们有了更多的 GPU,然后可以更快地做更多的 trial-and-error 的尝试。
|
||||
* 通过这种不同尝试使得 agent 在这个环境里面获得很多信息,然后可以在这个环境里面取得很大的奖励。
|
||||
* 我们有了这个端到端的一个训练,可以使得这个特征提取跟这个最后的这个价值估计或者决策一块来优化,这样就可以得到了一个更强的一个决策网络。
|
||||
|
||||

|
||||
接下来我会给大家再看一些强化学习里面比较有意思的一些例子。
|
||||
|
||||
* 第一个例子是DeepMind 研发的一个走路的agent。这个 agent 往前走一步,你就会得到一个 reward。这个agent 有不同的这个形态,然后就可以学到很多有意思的功能。比如怎么跨越这个障碍物,就像那个蜘蛛那样的 agent 。怎么跨越障碍物,像这个人有双腿一样, 这个 agent 往前走。以及像这个人形 的agent,怎么在一个曲折的道路上面往前走,这个结果也是非常有意思。这个人形 agent 会把手举得非常高,因为它这个手的功能就是为了使它身体保持平衡,这样它就可以更快的在这个环境里面这个往前跑,而且这里你也可以增加这个环境的难度,加入一些扰动,这个 agent 就会变得更鲁棒。
|
||||
* 第一个例子是 DeepMind 研发的一个走路的agent。这个 agent 往前走一步,你就会得到一个 reward。这个agent 有不同的这个形态,然后就可以学到很多有意思的功能。比如怎么跨越这个障碍物,就像那个蜘蛛那样的 agent 。怎么跨越障碍物,像这个人有双腿一样, 这个 agent 往前走。以及像这个人形 的agent,怎么在一个曲折的道路上面往前走,这个结果也是非常有意思。这个人形 agent 会把手举得非常高,因为它这个手的功能就是为了使它身体保持平衡,这样它就可以更快的在这个环境里面这个往前跑,而且这里你也可以增加这个环境的难度,加入一些扰动,这个 agent 就会变得更鲁棒。
|
||||
|
||||
* 第二个例子是机械臂抓取的一个例子。因为这个机械臂的应用自动去强化学习需要大量的这个 rollout,所以它这里就有好多机械臂,然后一个分布式系统,然后可以让这个机械臂尝试抓取不同的物体。你发现这个盘子里面物体的形状、形态其实都是不同的,这样就可以让这个机械臂学到一个统一的一个行为。然后在不同的这个抓取物下面都可以采取最优的一个抓取特征。你的这个抓取的物件形态存在很多不同,一些传统的这个抓取算法就没法把这些所有物体都抓起来,因为你对每一个物体都需要做一个建模,这样的话就是非常花时间。但是就通过这个强化学习,你就可以学到一个统一的一个抓取算法,在不同物体上它都可以适用。
|
||||
|
||||
@@ -106,8 +106,11 @@
|
||||
* 第四个例子是一个穿衣服的 agent ,就是训练这个 agent 穿衣服。因为很多时候你要在电影或者一些动画实现这个人穿衣的这种场景,通过手写执行命令让机器人穿衣服其实是非常困难。有很多时候穿衣服也是一个非常精细的一个操作,那么它们这个工作就是通过训练这个强化学习 agent,然后就可以实现这个穿衣功能。这里你还可以加入一些扰动,然后 agent 可以抗扰动,然后可能有这种 failure case, agent 就穿不进去,就卡在这个地方。
|
||||
|
||||
## Introduction to Sequential Decision Making
|
||||
|
||||
### Agent and Environment
|
||||
|
||||

|
||||
接下来我们讲`序列决策过程`,强化学习研究的问题 是 agent 跟环境交互,这幅图左边画的是一个 agent,agent 一直在跟环境进行交互。这个agent 把它输出的动作给环境,然后环境取得这个动作过后,会进行到下一步,然后会把下一步的观测跟它上一步是否得到奖励返还给 agent。通过这样的交互过程,然后会产生很多观测,agent 就是为了从这些观测之中学到能极大化奖励的策略。
|
||||
接下来我们讲`序列决策过程`。强化学习研究的问题 是 agent 跟环境交互,这幅图左边画的是一个 agent,agent 一直在跟环境进行交互。这个agent 把它输出的动作给环境,然后环境取得这个动作过后,会进行到下一步,然后会把下一步的观测跟它上一步是否得到奖励返还给 agent。通过这样的交互过程,然后会产生很多观测,agent 就是为了从这些观测之中学到能极大化奖励的策略。
|
||||
|
||||
### Reward
|
||||
|
||||
@@ -134,13 +137,22 @@
|
||||

|
||||
在跟环境的交互过程中,agent 其实会获得很多观测。然后在每一个观测会采取一个动作,它也会得到一个奖励。Agent在采取当前动作的时候会依赖于它之前得到的这个历史,所以你可以把整个游戏的状态看成关于这个历史的函数。
|
||||
|
||||
Q: 状态和观测有什么关系?
|
||||
A: `状态(state)` $s$ 是对世界的完整描述,不会隐藏世界的信息。`观测(observation)` $o$ 是对状态的部分描述,可以会遗漏一些信息。
|
||||
|
||||
在 deep RL 中,我们几乎总是用一个 实值的向量、矩阵或者更高阶的张量来表示状态和观测。举个例子,我们可以用 RGB 像素值的矩阵来表示一个视觉的观测;我们可以用机器人关节的角度和速度来表示一个机器人的状态。
|
||||
|
||||

|
||||
在 Agent 自己的内部也有一个函数来更新这个状态。当 agent 的状态跟环境的状态等价的时候,我们就说现在这个环境是 full observability,就是全部可以观测。
|
||||
在 Agent 自己的内部也有一个函数来更新这个状态。当 agent 的状态跟环境的状态等价的时候,我们就说现在这个环境是 full observability,就是全部可以观测。换句话说,当 agent 能够观察到环境的所有状态时,我们称这个环境是完全可观测的(fully observed)。
|
||||
|
||||

|
||||
但是有一种情况是 agent 得到的观测并不能包含所有环境运作的状态,因为在这个强化学习的设定里面,环境的状态才是真正的所有状态。Agent 在玩游戏的过程中,比如说它在玩这个 Black jack 这个游戏,它能看到的其实是牌面上的牌或者在玩雅达利游戏的时候,你们观测到的只是当前电视上面这一帧的信息,你并没有得到游戏内部里面所有的运作状态。所以在这种情况下面,强化学习通常被建模成一个 POMDP 的问题。
|
||||
但是有一种情况是 agent 得到的观测并不能包含所有环境运作的状态,因为在这个强化学习的设定里面,环境的状态才是真正的所有状态。Agent 在玩游戏的过程中,比如说它在玩这个 Black jack 这个游戏,它能看到的其实是牌面上的牌或者在玩雅达利游戏的时候,你们观测到的只是当前电视上面这一帧的信息,你并没有得到游戏内部里面所有的运作状态。也就是说当 agent 只能看到部分的观测,我们就称这个环境是部分可观测的(partially observed)。在这种情况下面,强化学习通常被建模成一个 POMDP 的问题。
|
||||
|
||||
### Major Components of an RL Agent
|
||||
`部分可观测马尔可夫决策过程(Partially Observable Markov Decision Processes, POMDP)`是一个马尔可夫决策过程的泛化。POMDP 依然具有马尔可夫性质,但是假设智能体无法感知环境的状态 $s$,只能知道部分观测值 $o$。比如在自动驾驶中,智能体只能感知传感器采集的有限的环境信息。
|
||||
|
||||
POMDP 可以用一个 7 元组描述:$(S,A,T,R,\Omega,O,\gamma)$,其中 $S$ 表示状态空间,为隐变量,$A$ 为动作空间,$T(s'|s,a)$ 为状态转移概率,$R$ 为奖励函数,$\Omega(o|s,a)$ 为观测概率,$O$ 为观测空间,$\gamma$ 为折扣系数。
|
||||
|
||||
## Major Components of an RL Agent
|
||||
|
||||

|
||||
对于一个强化学习 agent,它有哪些组成成分,首先agent ,它可能有一个这决策函数,policy function,这个函数是会被 agent 用来选取它下一步的动作。
|
||||
@@ -186,9 +198,7 @@ Policy 就是决定了这个 agent 的行为,它其实是一个函数,把输
|
||||
|
||||

|
||||
|
||||
当我们有了这三个成分过后,然后其实就形成了一个马尔科夫决策过程(Markov Decision Process)。这个决策过程可视化了状态之间的转移以及我们采取的行为。
|
||||
|
||||
|
||||
当我们有了这三个成分过后,然后其实就形成了一个 `Markov Decision Process`。这个决策过程可视化了状态之间的转移以及我们采取的行为。
|
||||
|
||||

|
||||
|
||||
@@ -200,7 +210,7 @@ Policy 就是决定了这个 agent 的行为,它其实是一个函数,把输
|
||||

|
||||
如果换成 Value-based RL 这个算法,利用价值函数来作为导向,我们就会得到另外一种表征。这里就表征了你每一个状态会返回一个价值,比如说你现在当前在 start 位置的时候,你的价值是 -16,因为你最快可以16步到达终点。因为每走一步会减一,所以你这里的价值是 -16。当我们快接近最后终点的时候,它的这个数字是变得越来越大。在拐角的时候,比如要现在在第二格 -15。然后现在 agent 会看上下,他看到上面指变大变成 -14了,它下面是 -16,那么这个 agent 的肯定就会采取一个往上走的策略。所以通过这个学习的值的不同,我们可以抽取出现在最佳的策略。
|
||||
|
||||
### Types of RL Agents
|
||||
## Types of RL Agents
|
||||
|
||||

|
||||
根据强化学习 agent 的不同,我们可以把 agent 进行归类。
|
||||
@@ -241,7 +251,7 @@ A: 针对是否需要对真实环境建模,强化学习可以分为有模型
|
||||
|
||||
上图是有模型强化学习的流程图。
|
||||
|
||||
然而在实际应用中,智能体并不是那么容易就能知晓马尔科夫决策过程中的所有元素的。通常情况下,状态转移函数和奖励函数很难估计,甚至连环境中的状态都可能是未知的,这时就需要采用免模型学习。免模型学习没有对真实环境进行建模,智能体只能在真实环境中通过一定的策略来执行动作,等待奖励和状态迁移,然后根据这些反馈信息来更新行为策略,这样反复迭代直到学习到最优策略。
|
||||
然而在实际应用中,智能体并不是那么容易就能知晓MDP中的所有元素的。通常情况下,状态转移函数和奖励函数很难估计,甚至连环境中的状态都可能是未知的,这时就需要采用免模型学习。免模型学习没有对真实环境进行建模,智能体只能在真实环境中通过一定的策略来执行动作,等待奖励和状态迁移,然后根据这些反馈信息来更新行为策略,这样反复迭代直到学习到最优策略。
|
||||
|
||||
那么,有模型强化学习与免模型强化学习有哪些区别?各自有些优势呢?
|
||||
|
||||
@@ -263,7 +273,7 @@ A: 针对是否需要对真实环境建模,强化学习可以分为有模型
|
||||
|
||||
把几类模型放到同一个 pie chart 里面。三个组成部分:value function、policy、model。按一个 agent 具不具有三者中的两者或者一者可以把它分成很多类。
|
||||
|
||||
### Exploration and Exploitation
|
||||
## Exploration and Exploitation
|
||||
|
||||

|
||||
在强化学习里面,Exploration 和 Exploitation 是两个很核心的问题。
|
||||
@@ -275,7 +285,7 @@ A: 针对是否需要对真实环境建模,强化学习可以分为有模型
|
||||
因为在刚开始的时候这个强化学习 agent 并不知道它采取了某个行为会发生什么,所以它只能通过试错去探索。所以 Exploration 就是在试错来理解采取的这个行为到底可不可以得到好的奖励。Exploitation 是说我们直接采取已知的可以得到很好奖励的行为。所以这里就面临一个 trade-off。怎么通过牺牲一些短期的 reward 来获得行为的理解。
|
||||
|
||||

|
||||
这里我再给大家举一些例子来说明 Exploration 和 Exploitation 的定义。
|
||||
这里我给大家举一些例子来说明 Exploration 和 Exploitation 的定义。
|
||||
|
||||
* 比如说我们在选择餐馆的时候。
|
||||
* Exploitation 的意思是说我们直接去你最喜欢的餐馆吗,因为你去过这个餐馆去过很多次了,所以你知道这里面的菜都非常可口。
|
||||
@@ -306,11 +316,11 @@ A: 针对是否需要对真实环境建模,强化学习可以分为有模型
|
||||
|
||||

|
||||
|
||||
你就直接调用现有的包来实践,现在其实有很多深度学习的包可以用,熟练使用这里面的两三种其实已经可以实现非常多的功能。所以你并不需要从头去去造轮子,就直接调用它里面的函数去实现你想实现的功能。
|
||||
你就直接调用现有的包来实践。现在有很多深度学习的包可以用,熟练使用这里面的两三种,其实已经可以实现非常多的功能。所以你并不需要从头去去造轮子,就直接调用它里面的函数去实现你想实现的功能。
|
||||
|
||||

|
||||
|
||||
强化学习的话就不得不提 [ OpenAI](https://openai.com/)。OpenAI 是一个非盈利的人工智能研究公司。Open AI 公布了非常多的学习资源以及这个算法资源,他们之所以叫 Open AI,就是他们把他们所有开发的这些算法都 open source 出来。
|
||||
[ OpenAI](https://openai.com/) 是一个非盈利的人工智能研究公司。Open AI 公布了非常多的学习资源以及这个算法资源,他们之所以叫 Open AI,就是他们把他们所有开发的这些算法都 open source 出来。
|
||||
|
||||
### Gym
|
||||
|
||||
@@ -331,7 +341,7 @@ pip install gym
|
||||
|
||||
在 Python 环境中导入Gym,如果不报错,就可以认为 Gym 安装成功。
|
||||
|
||||
```python
|
||||
```bash
|
||||
$python
|
||||
>>>import gym
|
||||
```
|
||||
@@ -419,6 +429,8 @@ env.close()
|
||||
|
||||
* [百面深度学习](https://book.douban.com/subject/35043939/)
|
||||
* [白话强化学习与PyTorch](https://book.douban.com/subject/34809676/)
|
||||
* [OpenAI Spinning Up ](https://spinningup.openai.com/en/latest/algorithms/ddpg.html#)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -184,11 +184,11 @@ $$
|
||||
|
||||
### Bellman Equation
|
||||
|
||||
记策略 $\pi $ 的动作价值函数为 $Q^{\pi}(s_t,a_t)$,它表示在状态 $s_t$ 下,执行动作 $a_t$ 会带来的累积奖励 $G_t$ 的期望,具体公式为:
|
||||
记策略 $\pi $ 的状态-动作值函数为 $Q^{\pi}(s_t,a_t)$,它表示在状态 $s_t$ 下,执行动作 $a_t$ 会带来的累积奖励 $G_t$ 的期望,具体公式为:
|
||||
$$
|
||||
\begin{aligned} Q ^ { \pi } \left( s _ { t } , a _ { t } \right) & = \mathbb { E } \left[ G _ { t } \mid s _ { t } , a _ { t } \right] \\ & = \mathbb { E } \left[ r _ { t } + \gamma r _ { t + 1 } + \gamma ^ { 2 } r _ { t + 2 } + \cdots \mid s _ { t } , a _ { t } \right] \\ & = \mathbb { E } \left[ r _ { t } + \gamma \left( r _ { t + 1 } + \gamma r _ { t + 2 } + \cdots \right) \mid s _ { t } , a _ { t } \right] \\ & = \mathbb { E } \left[ r _ { t } + \gamma Q ^ { \pi } \left( s _ { t + 1 } , a _ { t + 1 } \right) \mid s _ { t } , a _ { t } \right] \end{aligned}
|
||||
$$
|
||||
上式是马尔可夫决策过程中 Bellman 方程的基本形式。累积奖励 $G_t$ 的计算,不仅考虑当下 $t$ 时刻的动作 $a_t$ 的奖励 $r_t$,还会累积计算对之后決策带来的影响(公式中的 $\gamma$ 是后续奖励的衰减因子)。从上式可以看出,当前状态的动作价值 $Q^{\pi}(s_t,a_t)$ ,与当前动作的奖励 $r_t$ 以及下一状态的动作价值 $Q^{\pi}(s_{t+1},a_{t+1})$ 有关,因此,动作价值函数的计算可以通过动态规划算法来实现。
|
||||
上式是马尔可夫决策过程中 Bellman 方程的基本形式。累积奖励 $G_t$ 的计算,不仅考虑当下 $t$ 时刻的动作 $a_t$ 的奖励 $r_t$,还会累积计算对之后決策带来的影响(公式中的 $\gamma$ 是后续奖励的衰减因子)。从上式可以看出,当前状态的动作价值 $Q^{\pi}(s_t,a_t)$ ,与当前动作的奖励 $r_t$ 以及下一状态的动作价值 $Q^{\pi}(s_{t+1},a_{t+1})$ 有关,因此,状态-动作值函数的计算可以通过动态规划算法来实现。
|
||||
|
||||
从另一方面考虑,在计算 $t$ 时刻的动作价值 $Q^{\pi}(s_t,a_t)$ 时,需要知道在 $t$、$t+1$、$t+2 \cdots \cdots$ 时刻的奖励,这样就不仅需要知道某一状态的所有可能出现的后续状态以及对应的奖励值,还要进行全宽度的回溯来更新状态的价值。这种方法无法在状态转移函数未知或者大规模问题中使用。因此,Q- learning 采用了浅层的时序差分采样学习,在计算累积奖励时,基于当前策略 $\pi$ 预测接下来发生的 $n$ 步动作($n$ 可以取 1 到 $+\infty$)并计算其奖励值。
|
||||
|
||||
@@ -197,7 +197,7 @@ $$
|
||||
Q^{\pi}\left(s_{t}, a_{t}\right)=\mathbb{E}_{s_{t+1}, a_{t+1}}\left[r_{t}+\gamma Q^{\pi}\left(s_{t+1}, a_{t+1}\right) \mid s_{t}, a_{t}\right]
|
||||
$$
|
||||
|
||||
Q-learning 算法在使用过程中,可以根据获得的累积奖励来选择策略,累积奖励的期望值越高,价值也就越大,智能体越倾向于选择这个动作。因此,最优策略 $\pi^*$ 对应的动作价值函数 $Q^*(s_t,a_t)$ 满足如下关系式:
|
||||
Q-learning 算法在使用过程中,可以根据获得的累积奖励来选择策略,累积奖励的期望值越高,价值也就越大,智能体越倾向于选择这个动作。因此,最优策略 $\pi^*$ 对应的状态-动作值函数 $Q^*(s_t,a_t)$ 满足如下关系式:
|
||||
|
||||
$$
|
||||
Q^{*}\left(s_{t}, a_{t}\right)=\max _{\pi} Q^{\pi}\left(s_{t}, a_{t}\right)=\mathbb{E}_{s_{t+1}}\left[r_{t}+\gamma \max _{a_{t+1}} Q\left(s_{t+1}, a_{t+1}\right) \mid s_{t}, a_{t}\right]
|
||||
|
||||
Reference in New Issue
Block a user