Merge pull request #38 from ZhouXiinlei/master

docs:Finish 4.6.9.3
This commit is contained in:
camera-2018
2023-04-28 01:08:21 +08:00
committed by GitHub

View File

@@ -1,5 +1,5 @@
# 基本概念介绍
前面已经介绍过,强化学习难入坑的的原因之一就在于概念繁多。下面将进行基本概念的介绍,本章节最好能够理解,不理解也没有关系,但是建议作为参考章节常看常新。后续章节不理解某个概念时,便回来看看,相信一定能够做到常看常新、从而加深你对于概念的理解。下面将进行个部分的介绍,分别为强化学习的基本过程、强化学习的基本要素、强化学习的目标。
前面已经介绍过,强化学习难入坑的的原因之一就在于概念繁多。下面将进行基本概念的介绍,本章节最好能够理解,不理解也没有关系,但是建议作为参考章节常看常新。后续章节不理解某个概念时,便回来看看,相信一定能够做到常看常新、从而加深你对于概念的理解。下面将进行个部分的介绍,分别为强化学习的基本过程、强化学习的基本组成内容、强化学习的基本概念以及强化学习的目标。
## 强化学习的基本过程
@@ -7,7 +7,7 @@
![](static/4.6.9.3.1.png)
正是在这个与环境的交互过程中,智能体不断得到反馈,目标就是尽可能地让环境反馈的奖励足够大。
## 强化学习的基本要素
## 强化学习过程的基本组成内容
为了便于理解,我们引入任天堂经典游戏——[新超级马里奥兄弟U](https://www.nintendoswitch.com.cn/new_super_mario_bros_u_deluxe/pc/index.html)作为辅助理解的帮手。作为一个2D横向的闯关游戏它的状态空间和动作空间无疑是简单的。
![](static/4.6.9.3.2.png)
@@ -38,6 +38,8 @@ $\pi(\mathrm{a} \mid \mathrm{s})=P(A=a \mid S=s)$
6.奖励(Reward):这是一种反馈信号,用于表现智能体与环境交互后"表现"如何。在不同的环境中,我们需要设置不同的奖励。比如,在围棋游戏中,最后赢得游戏才会获得一个奖励。比如在量化交易中,可以直接拿收益亏损作为奖励。拿我们的马里奥游戏举例,吃到金币可以获得较小的奖励,最终通关游戏会获得一个极大的奖励,这样使得智能体以通关为目标、以吃金币为锦上添花。当然了,如果碰到怪物或者是死亡,需要设置一个极大的负奖励,因为这将直接导致游戏结束。
我们可以得出一个结论:每一个奖励 $R_{i}$,都与当时刻的状态 $S_{i}$ 与动作 $A_{i}$ 有关。拿马里奥游戏举例,在当前状态下,是否采取什么样的动作就会决定获得什么样的奖励?马里奥如果采取"向上",就可以获得金币奖励。如果采取"向右",碰到小怪会死掉,会获得一个很大的负奖励。如果采取"向左",那么可能什么事情都不会发生。
7.状态转移(State transition):环境可不会在原地等你。在你操控马里奥执行一个动作后,比如"left",那屏幕上显示的画面肯定会改变,这就发生了一个状态转移。状态转移函数记作
<center>
@@ -56,3 +58,92 @@ iv.执行动作$a_{2}$,发生状态转移<br>
v.不断迭代......
该序列轨迹写作:$\langle s_{1},a_{1},r_{1},s_{2},a_{2},r_{2},\ldots,s_{T},a_{T},r_{T} \rangle$
## 强化学习的基本概念
在阅读了前两个小节后,你可能对于强化学习的基本过程以及基本组成内容有了初步的了解。下面将进行强化学习基本概念的介绍,本章节与"基本组成内容"小节是继承关系,请一起阅读。(注:标题真难取,其实上一章就是强化学习的基本元素,这一章为基础元素推导出的基础概念)
1.回报(Retrun),需要与奖励区分开来。回报又称为"未来的累计奖励"(Cumulative future reward),这可以在其定义中窥见端倪:
<center>
$U_{\mathrm{t}}=R_{t}+R_{t+1}+R_{t+2}+R_{t+3}+\ldots . R_{t+n}$
</center>
但是这个定义有一个很明显的问题未来时刻的奖励和现在的一样重要吗如果我承诺未来给你100块钱这份**承诺**在你心里的分量和现在就给你100块钱能够等价吗很明显不能。因此我们引入折扣因子 $\gamma$ ,用以对未来的奖励做出一个折扣。定义折扣回报(Cumulative Discounted future reward)如下:
<center>
$U_{t}=R_{t}+\gamma R_{t+1}+\gamma^{2} R_{t+2}+\ldots \gamma^{n} R_{t+n}$
</center>
这是我们在强化学习中经常使用的概念。其中,折扣率是一个超参数,会对强化学习的结果造成一定的影响。
**注意格式**:如果游戏结束,每一个时刻的奖励都被观测到了——即站在任意时刻,一直到游戏结束的奖励都是可被观测的状态,那么奖励使用小写字母 $r$ 表示。如果游戏还没有结束,未来的奖励还是一个随机变量,那么我们使用大写字母 $R$ 来表示奖励。由于回报是由奖励组成的,那么我们也理所当然地用大写字母 $U_{t}$ 来表示回报。
*Fix:真的理所当然吗?*<br>
让我们回顾一下,之前讲述"奖励"的定义时,我们得出过一个结论:每一个奖励 $R_{i}$,都与当时刻的状态 $S_{i}$ 与动作 $A_{i}$ 有关。我们又知道,状态 $S_{i}$ 与动作 $A_{i}$ 在某种意义上都是随机变量,不要忘了:<br>
i.状态$S_{i}$是由状态转移函数,随机抽样得到的<br>
ii.动作$A_{i}$是由策略 $\pi$ ,以状态$S_{i}$作为输入后随机抽样输出的
因此,$U_{t}$ 就跟 $t$ 时刻开始未来所有的状态和动作都有关,$U_{t}$的随机性也因此和未来所有的状态和动作有关。
2.动作价值函数(Action-Value Function)
$U_{t}$ 在强化学习过程中的重要性不言而喻,这就代表着总体奖励——可以用于衡量智能体总的表现水平,并且智能体的目标就是让这个回报越大越好。但是由于我们前面说过的原因,回报 $U_{t}$ 受制于状态与动作,是一个随机变量。也就是说,在 $t$ 时刻,我们无法得知 $U_{t}$ 究竟是什么。有没有一种办法,能够消除掉随机性?很自然的,我们想起了《概率论与数理统计》中的期望。从数学上来说,对 $U_{t}$ 在策略函数 $\pi$ 下求期望,就可以消掉里边所有的随机性。因此,我们得到动作价值函数 $Q_\pi$ 的定义如下:
<center>
$Q_\pi=E\left(U_t \mid S_t=s_t, A_t=a_t\right)$
</center>
动作价值函数 $Q_\pi$ 消除了不确定的未来的动作和状态,转而把已观测到的状态 $s_{t}$ 和动作 $a_{t} $ 作为被观测的变量而非随机变量来对待。动作价值函数带来的意义就在于,能够在策略 $\pi$ 下,对于当前状态 $s$ 下所有动作 $a$ 进行打分,基于分数我们就可以知道哪个动作好、哪个动作不好。
3.最优动作价值函数(Optimal action-value function)
动作价值函数对于回报 $U_{t}$ 关于策略 $\pi$ 求取了期望,成功地消去了状态以及动作的随机性。但是需要注意的是,使用不同的策略 $\pi$ 就会得到不同的动作价值函数 $Q_\pi$ ——其实质上受到三个参数影响,即($\pi$$s$$a$)。我们应该使用"效果最好"的那种函数,也就是能让 $Q_\pi$ 最大化的那个 $\pi$ ,基于此我们可以得到最优动作价值函数:
<center>
$Q^*\left(s_t, a_t\right)= \underset{\pi}{max} Q_\pi\left(s_t, a_t\right)$
</center>
我们跨出了历史性的一步。
如果有了 $Q^*$ 函数,意味着可以评价动作的好坏了。我们的价值函数不再和策略有关,在观测的状态 $s$ 下,$Q^*$函数成为指挥智能体动作的“指挥官”——哪个动作的分数最高,智能体就应该执行哪个动作。学习 $Q^*$ 函数也是强化学习的最终目标之一,我们可以维护一张价值表用于选择收益最大的动作。学习 $Q^*$ 函数的过程被称为**基于价值的学习**。
4.状态价值函数(State-value function)
在动作价值函数中,$Q^*$ 函数将未来的随机变量消去,留下 $s_{t}$ 和 $a_{t}$ 作为观测变量。如果把动作作为随机变量,然后对于动作求期望,求得的新函数将仅与策略 $\pi$ 和状态 $s$ 有关,这就得到了状态价值函数 $V_\pi\left(s_t\right)$ 。下面是状态价值函数的定义:
<center>
$\begin{aligned} & V_\pi\left(s_t\right)=E_A\left[Q_\pi\left(s_t, A\right)\right] \\ & A \sim \pi\left(\cdot \mid s_t\right)\end{aligned}$
</center>
状态价值函数消去了动作 $a$,留下了策略 $\pi$ 与状态 $s$。这就意味着,在策略$\pi$下,目前状态的好坏可以根据状态价值函数的值来判断。如果策略是固定的,那么 $V_\pi$ 的值越大代表当前形势越好、对自己越有利。同样,策略价值函数也能用于评价策略的好坏,策略越好,$V_\pi\left(s_t\right)$ 的平均值就会越大。
## 强化学习的基本目标
看完上述内容的你,心里想必有十万个为什么:我是谁?我在哪?我要做什么?
明明最初说好的要训练智能体打游戏,我才耐着性子看下去的!看了这么久了,我光学到了一大堆似是而非的概念,推导并尝试理解了一大堆可能之前都没有接触到过的数学公式,抑或是翻开了尘封已久的《概率论与数理统计》才勉强跟上公式推导及其步骤,却连强化学习怎么训练智能体都不知道!这是诈骗!~~日内瓦,退钱!~~
这也是我在学习过程中的心路历程。理解/半懂不懂的带过了一堆概念,却连强化学习最基本的任务都不明白。我要干什么,才能训练智能体打游戏?
还记得我们前面提到过的**基于价值的学习**和**基于策略的学习**吗?没错,强化学习的最终目标就是通过两者完成的,下面将给出具体阐述。
1.**基于价值的学习**。说人话,就是学习 $Q^*$ 函数。我们之前已经推导过 $Q^*$ 函数在学习过程中的重要性了,它就好像一个"指挥官",智能体只需要按照它输出的动作照着执行就够了。试想:在现实世界里如果有这样一位人,他一直在指导你炒股,并且证明了他的选择永远是收益最高的,你还管什么原理,跟着大哥梭哈就完事了!在基于价值的学习中,我们通过使用最优值函数来选择最优的动作以最大化长期奖励的方式来间接地学习最优策略。基于价值的学习使用值函数来指导行为,直接体现就是维护了一个价值表格或价值函数,并通过这个价值表格或价值函数来选取价值最大的动作。
2.**基于策略的学习**。说人话,就是学习 $\pi$ 函数。我们复习一下策略 $\pi$ 的定义,是指智能体采取动作的规则。试想:在现实世界里,由于少年你骨骼清朗,兼有大机缘大智慧大定力,捡到了一本炒股秘籍。这本秘籍想必是心思慎密的高人前辈所留,无论是在何种状态下都有规则匹配当前状态告诉你应该怎么操作——并且你操作之后收益永远是最大化的,这本指导手册就是策略。基于策略的学习在每个状态下选择最优的动作,以最大化长期奖励。这种方法的目标是直接优化策略本身,因此它通常需要在策略空间中进行搜索,并且在每个策略上评估其长期累积奖励。
通常情况下,学到 $Q^*$ 函数和 $\pi$ 函数之一,就可以操控智能体打游戏了。但是也有方法结合了价值学习和策略学习,这就是演员-批评家网络(Actor-Critic)。不必太过担心,我们会在后续章节详细阐述该框架。
## 总结与展望
在本章节里,我们了解了强化学习的基本过程、组成要素、基本概念以及最终目标,无论你是否真正搞懂每一个知识点,想必已经对强化学习有一个初步的了解了。接下来,我拟从 Q-learning、SARSA 算法等传统强化学习算法开始,推到结合了深度学习的 Deep Q-learning(DQN) ,以及其改进版本Double DQN(DDQN)、Dueling DQN 等算法,以完成基于价值学习侧的算法介绍。然后,我将从 Reinforce 这一最基础的强化学习算法引入基于策略学习侧的基本理念,然后介绍结合基于策略学习和基于价值学习的演员-批评家网络(Actor-Critic)架构并且引出PPO、DDPG等算法。
为了不让你的大脑继续过载,下一章节将讲述强化学习基本环境的搭建。