Reinforcement Learning 强化学习(一)

Task01
本次学习主要参照Datawhale开源学习及强化学习蘑菇书Easy RL
部分内容参考Shusen Wang的github开源项目DRL。

第1章 强化学习基础

1.1 强化学习概述

强化学习 (reinforcement learning)讨论的问题是智能体(agent)怎么在复杂、不确定的环境(environment)中最大化它能获得的奖励。强化学习由两部分组成:智能体和环境。在强化学习过程中,智能体与环境一直在交互。智能体在环境中获取某个状态后,它会利用该状态输出一个动作(action),这个动作也称为决策(decision)。然后这个动作会在环境中被执行,环境会根据智能体采取的动作,输出下一个状态以及当前这个动作带来的奖励。智能体的目的就是尽可能多地从环境中获取奖励。

Reinforcement Learning 强化学习(一)_第1张图片

1.1.1 强化学习与监督学习

监督学习(supervised learning)过程中,有两个假设:

  • 输入的数据(标注的数据)都应是独立同分布的。
  • 输入的数据是有标签的标签,学习器通过正确的标签来修正自己的预测。

通常假设样本空间中全体样本服从一个未知分布,我们获得的每个样本都是独立地从这个分布上采样获得的,即独立同分布(independent and identically distributed,简称 i.i.d.)。

在强化学习中,监督学习的两个假设其实都不能得到满足。强化学习和监督学习的区别如下:

  • 强化学习输入的样本是序列数据,而不像监督学习里面样本都是独立的。

  • 输入数据是无标签的,只能通过不停地尝试来发现最有利的动作。

  • 智能体获得自己能力的过程,其实是不断地试错探索(trial-and-error exploration)的过程。探索 (exploration)和利用(exploitation)是强化学习里面非常核心的问题。其中,探索指尝试一些新的动作, 这些新的动作有可能会使我们得到更多的奖励,也有可能使我们“一无所有”;利用指采取已知的可以获得最多奖励的动作,重复执行这个动作,因为我们知道这样做可以获得一定的奖励。因此,我们需要在探索和利用之间进行权衡,这也是在监督学习里面没有的情况。

  • 在强化学习过程中,没有非常强的监督者(supervisor),只有奖励信号(reward signal),并且奖励信号是延迟的。当我们采取一个动作后,如果我们使用监督学习,我们就可以立刻获得一个指导。而在强化学习里面,环境可能会告诉我们这个动作是错误的,但是它并没有告诉我们正确的动作是什么。而且更困难的是,它可能是在一两分钟过后告诉我们这个动作是错误的。所以这也是强化学习和监督学习不同的地方。

1.1.2 强化学习的例子

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

这里给大家举一些在现实生活中强化学习的例子。

(1)在自然界中,羚羊其实也在做强化学习。它刚刚出生的时候,可能都不知道怎么站立,然后它通 过试错,一段时间后就可以跑得很快,可以适应环境。

(2)我们也可以把股票交易看成强化学习的过程。我们可以不断地买卖股票,然后根据市场给出的反馈来学会怎么去买卖可以让我们的奖励最大化。

(3)玩雅达利游戏或者其他电脑游戏,也是一个强化学习的过程,我们可以通过不断试错来知道怎么 玩才可以通关。

1.1.3 强化学习的历史

强化学习是有一定的历史的,早期的强化学习,我们称其为标准强化学习。最近业界把强化学习与深度学习结合起来,就形成了深度强化学习(deep reinforcemet learning),因此,深度强化学习 = 深度学习 + 强化学习。我们可将标准强化学习和深度强化学习类比于传统的计算机视觉和深度计算机视觉。

传统的计算机视觉由两个过程组成。

  • 给定一张图片,我们先要提取它的特征,使用一些设计好的特征,比如方向梯度直方图(histogram of oriental gradient,HOG)、可变现的组件模型(deformable part model,DPM)。

  • 提取这些特征后,我们再单独训练一个分类器。这个分类器可以是支持向量机(support vector machine,SVM)或 Boosting,然后就可以辨别这张图片是狗还是猫。

(a)传统的计算机视觉

(b)深度计算机视觉

2012年,Krizhevsky等人提出了AlexNet,AlexNet在ImageNet分类比赛中取得冠军,迅速引起了人们对于卷积神经网络的广泛关注。大家就把特征提取以及分类两者合到一块儿去了,就是训练一个神经网络。这个神经网络既可以做特征提取,也可以做分类,它可以实现端到端训练,它的参数可以在每一个阶段都得到极大的优化,这是一个非常重要的突破。

我们可以把神经网络放到强化学习里面。

  • 标准强化学习:比如 TD-Gammon 玩 Backgammon 游戏的过程,其实就是设计特征,然后训练价 值函数的过程,如图 1.10a 所示。标准强化学习先设计很多特征,这些特征可以描述现在整个状态。 得到这些特征后,我们就可以通过训练一个分类网络或者分别训练一个价值估计函数来采取动作。

  • 深度强化学习:自从我们有了深度学习,有了神经网络,就可以把智能体玩游戏的过程改进成一个 端到端训练(end-to-end training)的过程,如图 1.10b 所示。我们不需要设计特征,直接输入状 态就可以输出动作。我们可以用一个神经网络来拟合价值函数或策略网络,省去特征工程(feature engineering)的过程。

(a)标准强化学习

(b)深度强化学习

1.1.4 强化学习的应用

为什么强化学习在这几年有很多的应用,比如玩游戏以及机器人的一些应用,并且可以击败人类的顶尖棋手呢?这有如下几点原因。首先,我们有了更多的算力(computation power),有了更多的GPU,可以更快地做更多的试错尝试。其次,通过不同尝试,智能体在环境里面获得了很多信息,然后可以在环境里面取得很大的奖励。最后,我们通过端到端训练把特征提取和价值估计或者决策一起优化,这样就可以得到一个更强的决策网络。

(1)DeepMind 研发的走路的智能体。这个智能体往前走一步,就会得到一个奖励。这个智能体有不 同的形态,可以学到很多有意思的功能。比如,像人一样的智能体学习怎么在曲折的道路上往前走。结果 非常有意思,这个智能体会把手举得非常高,因为举手可以让它的身体保持平衡,它就可以更快地在环境 里面往前走。而且我们也可以增加环境的难度,加入一些扰动,智能体就会变得更鲁棒。

(2)机械臂抓取。因为我们把强化学习应用到机械臂自动抓取需要大量的预演,所以我们可以使用多 个机械臂进行训练。分布式系统可以让机械臂尝试抓取不同的物体,盘子里面物体的形状是不同的,这样 就可以让机械臂学到一个统一的动作,然后针对不同的抓取物都可以使用最优的抓取算法。因为抓取的物 体形状的差别很大,所以使用一些传统的抓取算法不能把所有物体都抓起来。传统的抓取算法对每一个物 体都需要建模,这样是非常费时的。但通过强化学习,我们可以学到一个统一的抓取算法,其适用于不同 的物体。

(3)OpenAI 的机械臂翻魔方。OpenAI 在 2018 年的时候设计了一款带有“手指”的机械臂,它可以 通过翻动手指使得手中的木块达到预期的设定。人的手指其实非常灵活,怎么使得机械臂的手指也具有这 样灵活的能力一直是个问题。OpenAI 先在一个虚拟环境里面使用强化学习对智能体进行训练,再把它应 用到真实的机械臂上。这在强化学习里面是一种比较常用的做法,即我们先在虚拟环境里面得到一个很好 的智能体,然后把它应用到真实的机器人中。这是因为真实的机械臂通常非常容易坏,而且非常贵,一般 情况下没办法大批量地购买。OpenAI 在 2019 年对其机械臂进行了进一步的改进,这个机械臂在改进后 可以玩魔方了。

(4)穿衣服的智能体。很多时候我们要在电影或者一些动画中实现人穿衣服的场景,通过手写执行命 令让机器人穿衣服非常困难,穿衣服也是一种非常精细的操作。我们可以训练强化学习智能体来实现穿衣 服功能。我们还可以在里面加入一些扰动,智能体可以抵抗扰动。可能会有失败的情况(failure case)出 现,这样智能体就穿不进去衣服。

Reinforcement Learning 强化学习(一)_第2张图片

强化学习例子

1.2 序列决策

1.2.1 智能体与环境

接下来我们介绍**序列决策(sequential decision making)**过程。强化学习研究的问题是智能体与环境交互的问题。智能体一直与环境进行交互,智能体把它的动作输出给环境,环境取得这个动作后会进行下一步,把下一步的观测与这个动作带来的奖励返还给智能体。这样的交互会产生很多观测,智能体的目的是从这些观测之中学到能最大化奖励的策略。

1.2.2 奖励

奖励是由环境给的一种标量的反馈信号(scalar feedback signal),这种信号可显示智能体在某一步采 取某个策略的表现如何。强化学习的目的就是最大化智能体可以获得的奖励,智能体在环境里面存在的目的就是最大化它的期望的累积奖励(expected cumulative reward)。比如一个象棋选手,他的目的是赢棋,在最后棋局结束的时候,他就会得到一个正奖励(赢)或 者负奖励(输)。

1.2.3 序列决策

在一个强化学习环境里面,智能体的目的就是选取一系列的动作来最大化奖励,所以这些选取的动作必须有长期的影响。但在这个过程里面,智能体的奖励其实是被延迟了的,就是我们现在选取的某一步动作,可能要等到很久后才知道这一步到底产生了什么样的影响。强化学习里面一个重要的课题就是近期奖励和远期奖励的权衡 (trade-off),研究怎么让智能体取得更多的远期奖励。

在与环境的交互过程中,智能体会获得很多观测。针对每一个观测,智能体会采取一个动作,也会得到一个奖励。所以历史是观测、动作、奖励的序列:
H t = o 1 , a 1 , r 1 , … , o t , a t , r t H_{t}=o_{1}, a_{1}, r_{1}, \ldots, o_{t}, a_{t}, r_{t} Ht=o1,a1,r1,,ot,at,rt

智能体在采取当前动作的时候会依赖于它之前得到的历史,所以我们可以把整个游戏的状态看成关于这个历史的函数:

S t = f ( H t ) S_{t}=f\left(H_{t}\right) St=f(Ht)

Q:状态和观测有什么关系?

A:状态是对世界的完整描述,不会隐藏世界的信息。观测是对状态的部分描述,可能会遗漏一些信息。在深度强化学习中,我们几乎总是用实值的向量、矩阵或者更高阶的张量来表示状态和观测。例如, 我们可以用 RGB 像素值的矩阵来表示一个视觉的观测,可以用机器人关节的角度和速度来表示一个机器人的状态。

1.3 动作空间

不同的环境允许不同种类的动作。在给定的环境中,有效动作的集合经常被称为动作空间(action space)。像雅达利游戏和围棋(Go)这样的环境有离散动作空间(discrete action space),在这个动作空间里,智能体的动作数量是有限的。在其他环境,比如在物理世界中控制一个智能体,在这个环境中就有连续动作空间(continuous action space)。在连续动作空间中,动作是实值的向量。

例如,走迷宫机器人如果只有往东、往南、往西、往北这 4 种移动方式,则其动作空间为离散动作空 间;如果机器人可以向 360 ◦ 中的任意角度进行移动,则其动作空间为连续动作空间。

1.4 智能体的组成

部分可观测马尔可夫决策过程(Partially Observable Markov Decision Processes, POMDP) 是一个马尔可夫决策过程的泛化。POMDP 依然具对于一个强化学习 agent,它可能有一个或多个如下的组成成分:

对于一个强化学习智能体,它可能有一个或多个如下的组成成分。

  • 策略(policy)。智能体会用策略来选取下一步的动作。

  • 价值函数(value function)。我们用价值函数来对当前状态进行评估。价值函数用于评估智能体进入某个状态后,可以对后面的奖励带来多大的影响。价值函数值越大,说明智能体进入这个状态越有利。

  • 模型(model)。模型表示智能体对环境的状态进行理解,它决定了环境中世界的运行方式。

1.4.1 策略

策略是智能体的动作模型,它决定了智能体的动作。它其实是一个函数,用于把输入的状态变成动作。策略可分为两种:随机性策略和确定性策略。

随机性策略(stochastic policy)就是 π \pi π 函数,即 π ( a ∣ s ) = p ( a t = a ∣ s t = s ) \pi(a | s)=p\left(a_{t}=a | s_{t}=s\right) π(as)=p(at=ast=s)。输入一个状态 s s s,输出一个概率。 这个概率是智能体所有动作的概率,然后对这个概率分布进行采样,可得到智能体将采取的动作。比如可能是有 0.7 的概率往左,0.3 的概率往右,那么通过采样就可以得到智能体将采取的动作。

确定性策略(deterministic policy)就是智能体直接采取最有可能的动作,也就是 π \pi π 函数在观测到的状态 s s s下最大概率的动作 a ∗ a^{*} a,即 a ∗ = arg ⁡ max ⁡ a π ( a ∣ s ) a^{*}=\underset{a}{\arg \max} \pi(a \mid s) a=aargmaxπ(as)

1.4.2 价值函数

价值函数的值是对未来奖励的预测,我们用它来评估状态的好坏。
价值函数里面有一个折扣因子(discount factor),我们希望在尽可能短的时间里面得到尽可能多的奖励。比如现在给我们两个选择:10天后给我们100块钱或者现在给我们100块钱。我们肯定更希望现在就给我们 100 块钱,因为我们可以把这 100 块钱存在银行里面,这样就会有一些利息。因此,我们可以把折扣因子放到价值函数的定义里面,价值函数的定义为

V π ( s ) ≐ E π [ G t ∣ s t = s ] = E π [ ∑ k = 0 ∞ γ k r t + k + 1 ∣ s t = s ] , 对于所有的 s ∈ S V_{\pi}(s) \doteq \mathbb{E}_{\pi}\left[G_{t} \mid s_{t}=s\right]=\mathbb{E}_{\pi}\left[\sum_{k=0}^{\infty} \gamma^{k} r_{t+k+1} \mid s_{t}=s\right], \text{对于所有的} s \in S Vπ(s)Eπ[Gtst=s]=Eπ[k=0γkrt+k+1st=s],对于所有的sS

期望 E π \mathbb{E}_{\pi} Eπ 的下标是 π \pi π 函数, π \pi π 函数的值可反映在我们使用策略 π \pi π 的时候,到底可以得到多少奖励。

我们还有一种价值函数:Q 函数。Q 函数里面包含两个变量:状态和动作。其定义为
Q π ( s , a ) ≐ E π [ G t ∣ s t = s , a t = a ] = E π [ ∑ k = 0 ∞ γ k r t + k + 1 ∣ s t = s , a t = a ] Q_{\pi}(s, a) \doteq \mathbb{E}_{\pi}\left[G_{t} \mid s_{t}=s, a_{t}=a\right]=\mathbb{E}_{\pi}\left[\sum_{k=0}^{\infty} \gamma^{k} r_{t+k+1} \mid s_{t}=s, a_{t}=a\right] Qπ(s,a)Eπ[Gtst=s,at=a]=Eπ[k=0γkrt+k+1st=s,at=a]
所以我们未来可以获得奖励的期望取决于当前的状态和当前的动作。Q 函数是强化学习算法里面要学习的一个函数。因为当我们得到 Q 函数后,进入某个状态要采取的最优动作可以通过 Q 函数得到。

1.4.3 模型

模型决定了下一步的状态。下一步的状态取决于当前的状态以及当前采取的动作。它由状态转移概率和奖励函数两个部分组成。状态转移概率即
p s s ′ a = p ( s t + 1 = s ′ ∣ s t = s , a t = a ) p_{s s^{\prime}}^{a}=p\left(s_{t+1}=s^{\prime} \mid s_{t}=s, a_{t}=a\right) pssa=p(st+1=sst=s,at=a)

奖励函数是指我们在当前状态采取了某个动作,可以得到多大的奖励,即
R ( s , a ) = E [ r t + 1 ∣ s t = s , a t = a ] R(s,a)=\mathbb{E}\left[r_{t+1} \mid s_{t}=s, a_{t}=a\right] R(s,a)=E[rt+1st=s,at=a]
当我们有了策略、价值函数和模型3个组成部分后,就形成了一个马尔可夫决策过程(Markov decision process)。这个决策过程可视化了状态之间的转移以及采取的动作。

Reinforcement Learning 强化学习(一)_第3张图片

马尔可夫决策过程

1.4.4 强化学习智能体的类型

基于价值的智能体与基于策略的智能体

根据智能体学习的事物不同,我们可以把智能体进行归类。

  • 基于价值的智能体(value-based agent)显式地学习价值函数,隐式地学习它的策略。策略是其从学到的价值函数里面推算出来的。
  • 基于策略的智能体(policy-based agent)直接学习策略,我们给它一个状态,它就会输出对应动作的概率。基于策略的智能体并没有学习价值函数。
  • 演员-评论员智能体(actor-critic agent)。把基于价值的智能体和基于策略的智能体结合起来,这一类智能体把策略和价值函数都学习了,然后通过两者的交互得到最佳的动作。

Q: 基于策略和基于价值的强化学习方法有什么区别?

A: 在基于策略的强化学习方法中,智能体会制定一套动作策略(确定在给定状态下需要采取何种动作),并根据这个策略进行操作。强化学习算法直接对策略进行优化,使制定的策略能够获得最大的奖励。而在基于价值的强化学习方法中,智能体不需要制定显式的策略,它维护一个价值表格或价值函数,并通过这个价值表格或价值函数来选取价值最大的动作。基于价值迭代的方法只能应用在不连续的、离散的环境下(如围棋或某些游戏领域),对于动作集合规模庞大、动作连续的场景(如机器人控制领域),其很难学习到较好的结果(此时基于策略迭代的方法能够根据设定的策略来选择连续的动作)。
基于价值的强化学习算法有Q学习(Q-learning)、 Sarsa 等,而基于策略的强化学习算法有策略梯度(Policy Gradient,PG)算法等。此外,演员-评论员算法同时使用策略和价值评估来做出决策。其中,智能体会根据策略做出动作,而价值函数会对做出的动作给出价值,这样可以在原有的策略梯度算法的基础上加速学习过程,取得更好的效果。

有模型强化学习智能体与免模型强化学习智能体

另外,我们可以通过智能体到底有没有学习环境模型来对智能体进行分类。
有模型(model-based)强化学习智能体通过学习状态的转移来采取动作。
免模型(model-free)强化学习智能体没有去直接估计状态的转移,也没有得到环境的具体转移变量,它通过学习价值函数和策略函数进行决策。免模型强化学习智能体的模型里面没有环境转移的模型。

我们可以用马尔可夫决策过程来定义强化学习任务,并将其表示为四元组 < S , A , P , R > <S,A,P,R>,即状态集合、动作集合、状态转移函数和奖励函数。如果这个四元组中所有元素均已知,且状态集合和动作集合在有限步数内是有限集,则智能体可以对真实环境进行建模,构建一个虚拟世界来模拟真实环境中的状态和交互反应。
具体来说,当智能体知道状态转移函数 P ( s t + 1 ∣ s t , a t ) P(s_{t+1}|s_t,a_t) P(st+1st,at) 和奖励函数 R ( s t , a t ) R(s_t,a_t) R(st,at) 后,它就能知道在某一状态下执行某一动作后能带来的奖励和环境的下一状态,这样智能体就不需要在真实环境中采取动作,直接在虚拟世界中学习和规划策略即可。这种学习方法称为有模型强化学习

然而在实际应用中,智能体并不是那么容易就能知晓马尔可夫决策过程中的所有元素的。通常情况下,状态转移函数和奖励函数很难估计,甚至连环境中的状态都可能是未知的,这时就需要采用免模型强化学习。免模型强化学习没有对真实环境进行建模,智能体只能在真实环境中通过一定的策略来执行动作,等待奖励和状态迁移,然后根据这些反馈信息来更新动作策略,这样反复迭代直到学习到最优策略。

Q:有模型强化学习和免模型强化学习有什么区别?

A:针对是否需要对真实环境建模,强化学习可以分为有模型强化学习和免模型强化学习。有模型强化学习是指根据环境中的经验,构建一个虚拟世界,同时在真实环境和虚拟世界中学习;免模型强化学习是指不对环境进行建模,直接与真实环境进行交互来学习到最优策略。

总之,有模型强化学习相比免模型强化学习仅仅多出一个步骤,即对真实环境进行建模。因此,一些有模型的强化学习方法,也可以在免模型的强化学习方法中使用。在实际应用中,如果不清楚该用有模型强化学习还是免模型强化学习,可以先思考在智能体执行动作前,是否能对下一步的状态和奖励进行预测,如果能,就能够对环境进行建模,从而采用有模型学习。

免模型强化学习通常属于数据驱动型方法,需要大量的采样来估计状态、动作及奖励函数,从而优化动作策略。例如,在雅达利平台上的《太空侵略者》游戏中,免模型的深度强化学习需要大约两亿帧游戏画面才能学到比较理想的效果。相比之下,有模型的深度强化学习可以在一定程度上缓解训练数据匮乏的问题,因为智能体可以在虚拟世界中进行训练。
免模型学习的泛化性要优于有模型强化学习,原因是有模型强化学习算需要对真实环境进行建模,并且虚拟世界与真实环境之间可能还有差异,这限制了有模型强化学习算法的泛化性。
有模型的强化学习方法可以对环境建模,使得该类方法具有独特魅力,即“想象能力”。在免模型强化学习中,智能体只能一步一步地采取策略,等待真实环境的反馈;有模型强化学习可以在虚拟世界中预测出将要发生的事,并采取对自己最有利的策略。

目前,大部分深度强化学习方法都采用了免模型强化学习,这是因为:免模型强化学习更为简单、直观且有丰富的开源资料,如 AlphaGo 系列都采用免模型强化学习;在目前的强化学习研究中,大部分情况下环境都是静态的、可描述的,智能体的状态是离散的、可观察的(如雅达利游戏平台),这种相对简单、确定的问题并不需要评估状态转移函数和奖励函数,可直接采用免模型强化学习,使用大量的样本进行训练就能获得较好的效果。

我们可以把几类模型放到同一个图里面。

Reinforcement Learning 强化学习(一)_第4张图片

强化学习智能体的类型

1.5 学习与规划

学习(learning)和规划(planning)是序列决策的两个基本问题。
在强化学习中,环境初始时是未知的,智能体不知道环境如何工作,它通过不断地与环境交互,逐渐改进策略。

学习

在规划中,环境是已知的,智能体被告知了整个环境的运作规则的详细信息。智能体能够计算出一个完美的模型,并且在不需要与环境进行任何交互的时候进行计算。智能体不需要实时地与环境交互就能知道未来环境,只需要知道当前的状态,就能够开始思考,来寻找最优解。
Reinforcement Learning 强化学习(一)_第5张图片

规划
一个常用的强化学习问题解决思路是,先学习环境如何工作,也就是了解环境工作的方式,即学习得到一个模型,然后利用这个模型进行规划。

1.6 探索和利用

在强化学习里面,探索和利用是两个很核心的问题。
探索即我们去探索环境,通过尝试不同的动作来得到最佳的策略(带来最大奖励的策略)。利用即我们不去尝试新的动作,而是采取已知的可以带来很大奖励的动作。
在刚开始的时候,强化学习智能体不知道它采取了某个动作后会发生什么,所以它只能通过试错去探索,所以探索就是通过试错来理解采取的动作到底可不可以带来好的奖励。利用是指我们直接采取已知的可以带来很好奖励的动作。所以这里就面临一个权衡问题,即怎么通过牺牲一些短期的奖励来理解动作,从而学习到更好的策略。

以选择餐馆为例,利用是指我们直接去我们最喜欢的餐馆,因为我们去过这个餐馆很多次了,所以我们知道这里面的菜都非常可口。探索是指我们用手机搜索一个新的餐馆,然后去尝试它的菜到底好不好吃。我们有可能对这个新的餐馆感到非常不满意,这样钱就浪费了。

想要累积奖励最大,则必须在探索与利用之间达成较好的折中。

1.7 强化学习相关概念

强化学习之所以难理解是因为有很多概念,因此学习之前我们必须熟悉这些基础概念。

1.7.1 随机变量(Random Variable)

一个未知变量,值只取决于一个随机事件的结果

例如:抛一个硬币(随机事件),抛硬币的结果 X X X有两种取值,正面朝上0,反面朝上1。随机事件的概率 P ( X = 0 ) = 0.5 P(X=0)=0.5 P(X=0)=0.5 P ( X = 1 ) = 0.5 P(X=1)=0.5 P(X=1)=0.5
通常用大写字母 X X X表示随机变量,小写字母 x x x表示观测结果。
Reinforcement Learning 强化学习(一)_第6张图片

1.7.2 概率密度函数(Probability Density Function)

随机变量在某个确定的取值点附近出现的可能性

例如:高斯分布的概率密度函数。

对于离散的概率密度函数,随机变量在某个确定点的取值就是取该值的概率,所有点的概率密度函数和为1;对于连续的概率密度函数,随机变量在某个确定点的取值并没有实际意义,需要积分获得概率分布函数,得到在小于或大于该点数值的概率。
Reinforcement Learning 强化学习(一)_第7张图片

1.7.3 期望(Expectation)

数学期望是试验中每次可能结果的概率乘以其结果的总和

Reinforcement Learning 强化学习(一)_第8张图片

1.7.4 随机抽样(Random Sampling)

在全部调查单位中按照随机原则抽取一部分单位进行调查,根据调查结果推断总体的一种调查方式
例如:箱子里有10个球,一共三种颜色,随机有放回地从箱子里摸出一个球,观察球的颜色。这样一次随机抽样就完成了。
Reinforcement Learning 强化学习(一)_第9张图片
经过若干次随机抽样,我们就也可估计箱子里三种颜色球的个数。
Reinforcement Learning 强化学习(一)_第10张图片

1.7.5 状态(state)和 动作(action)

智能体(agent):强化学习的本体,作为学习者或者决策者。例如:超级玛丽游戏中的马里奥。
状态(state):一个表示环境的数据,状态集则是环境中所有可能的状态。例如:马里奥在某一帧图片的画面。
动作(action):智能体可以做出的动作,动作集则是智能体可以做出的所有动作。例如:马里奥向左向右向上的动作。

1.7.6 策略(policy)

策略(policy):从环境状态到动作的映射关系为策略。例如:马里奥在该帧画面下应该做什么动作。
policy π \pi π是个概率密度函数。也就是在状态 S = s S=s S=s下,智能体做出动作 a a a的概率密度。例如:观测到下图画面,马里奥做出向左,向右,向上的概率分别是0.2,0.1,0.7。

Q:策略为什么是个概率密度函数?
A:也可以是个确定函数,但策略确定比较容易让人猜到,随机性策略鲁棒性更强。

强化学习学的就是这个策略概率密度函数
Reinforcement Learning 强化学习(一)_第11张图片

1.7.7 奖励(reward)

奖励(reward):智能体在执行一个动作后,获得的正/负反馈信号,奖励集则是智能体可以获得的所有反馈信息。例如:马里奥吃到一个金币,奖励+1;赢了游戏,奖励+10000;碰到蘑菇游戏结束,奖励-10000;什么也没发生,奖励0。

强化学习的目标就是智能体寻找在连续时间序列里的最优策略,使得获得总的奖励最高。

Reinforcement Learning 强化学习(一)_第12张图片

1.7.8 状态转移(state transition)

状态转移(state transition):智能体在某状态执行某动作后,达到另一状态的概率。例如:马里奥在当前状态向上跳跃达到上升状态从而吃到金币的概率。
状态转移可以是随机的,因为环境是随机的。例如:马里奥向上跳跃,但蘑菇的运动有可能是向左也有可能是向右。
Reinforcement Learning 强化学习(一)_第13张图片

1.7.9 智能体和环境的交互

例如:超级玛丽游戏中,agent是马里奥,environment是游戏程序,当前画面是状态 s t s_t st。马里奥看到状态 s t s_t st后做出动作 a t a_t at,游戏画面变成 s t + 1 s_{t+1} st+1,同时环境给马里奥一个奖励 r t r_t rt。如果马里奥吃到一个金币,奖励+1;赢了游戏,奖励+10000;碰到蘑菇游戏结束,奖励-10000;什么也没发生,奖励0。
Reinforcement Learning 强化学习(一)_第14张图片

Reinforcement Learning 强化学习(一)_第15张图片

1.7.10 强化学习的随机性

动作随机性: 体现在policy函数 π ( a ∣ s ) \pi(a|s) π(as)的随机性上。
Reinforcement Learning 强化学习(一)_第16张图片

状态随机性: 体现在state transition函数 p ( s ′ ∣ s , a ) p(s^{'}|s,a) p(ss,a)的随机性上。
Reinforcement Learning 强化学习(一)_第17张图片

1.7.11 回报(return)

回报(returns):未来的累计奖励(reward)。
折扣回报(returns):未来的累计折扣奖励(reward)。

智能体当前时刻的动作在之后对不同时刻所获得的奖励是不同的,一般时间越远奖励越少。因此折扣率0~1。
Reinforcement Learning 强化学习(一)_第18张图片
由于某时刻奖励 R i R_i Ri取决于当前状态 S i S_i Si和动作 A i A_i Ai,而状态 S i S_i Si和动作 A i A_i Ai具有随机性。因此奖励 R i R_i Ri是随机的。而回报 U t U_t Ut作为未来的累计奖励,也是一个依赖于未来每个时刻状态和动作的随机数。
Reinforcement Learning 强化学习(一)_第19张图片

1.7.12 价值函数(action-value function)

t t t时刻的回报 U t U_t Ut是个随机变量,它依赖于未来所有动作和状态,我们并不知道是什么。为了消除随机性,我们对它求期望,把里边的随机性给积分掉。

动作价值函数
使用策略函数 π ( a ∣ s ) \pi(a|s) π(as)积分,得到:
动作价值函数(action-value function) Q π ( s t ∣ a t ) = E [ U t ∣ S t = s t , A t = a t ] Q_{\pi}(s_t|a_t)=E[U_t|S_t=s_t,A_t=a_t] Qπ(stat)=E[UtSt=st,At=at],只和策略 π \pi π、当前状态 s t s_t st、当前动作 a t a_t at有关。它表示如果使用策略 π \pi π,在状态 s t s_t st采用动作 a t a_t at的分数,这样我们就能判断在该策略和当前状态下这个动作的好坏。
Reinforcement Learning 强化学习(一)_第20张图片

用不同策略函数 π ( a ∣ s ) \pi(a|s) π(as)就有不同的 Q π Q_{\pi} Qπ,那用那种策略函数 π ( a ∣ s ) \pi(a|s) π(as)最好呢?
最优动作价值函数(optimal action-value function) Q ∗ ( s t ∣ a t ) = m a x π Q π ( s t ∣ a t ) Q^{*}(s_t|a_t)=\underset{\pi}{max}Q_{\pi}(s_t|a_t) Q(stat)=πmaxQπ(stat)。它表示在状态 s t s_t st采用动作 a t a_t at的分数,有了 Q ∗ Q^{*} Q我们就能对智能体各个状态下给出动作决策。

状态价值函数
在动作价值函数 Q π Q_{\pi} Qπ的基础上,把所有动作 A A A当成随机变量,关于 A A A求期望把 A A A消掉,得到:
状态价值函数(action-value function) V π ( s t ) = E A [ Q π ( s t ∣ A ) ] V_{\pi}(s_t)=E_A[Q_{\pi}(s_t|A)] Vπ(st)=EA[Qπ(stA)],只和策略 π \pi π、当前状态 s t s_t st有关。它表示如果使用策略 π \pi π,在状态 s t s_t st的得分,这样我们就能判断当前局势好不好。
Reinforcement Learning 强化学习(一)_第21张图片

总之,对于策略 π \pi π Q π ( s ∣ a ) Q_{\pi}(s|a) Qπ(sa)相当于在状态 s s s下智能体采用动作 a a a所得的分数, V π ( s ) V_{\pi}(s) Vπ(s)相当于智能体处于 s s s状态下的好坏。

最后我们来回顾一下两种强化学习方法

  • 基于策略的智能体(policy-based agent)
    进行学习时
    强化学习算法直接学习策略 π ( a ∣ s ) \pi(a|s) π(as)并对其进行优化,使制定的策略 π ( a ∣ s ) \pi(a|s) π(as)能够获得最大的奖励。
    进行控制时
    智能体根据策略 π ( a ∣ s ) \pi(a|s) π(as),对于观测到的状态 s t s_t st,获得该状态下每一个动作的概率 π ( ∗ ∣ s t ) \pi(*|s_t) π(st),再进行随机抽样得到动作 a t a_t at,智能体再执行这个动作 a t a_t at
  • 基于价值的智能体(value-based agent)
    进行学习时
    显式地学习最优动作价值函数 Q ∗ ( s ∣ a ) Q^{*}(s|a) Q(sa),隐式地学习它的策略 π ( a ∣ s ) \pi(a|s) π(as)。策略是其从学到的价值函数里面推算出来的。
    进行控制时
    对于观测到的状态 s t s_t st Q ∗ Q^{*} Q对每一个动作 a a a进行评价,找到使得 Q ∗ Q^{*} Q最大的动作 a t a_t at,智能体再执行这个动作 a t a_t at

附:强化学习名词总览
Reinforcement Learning 强化学习(一)_第22张图片

参考文献

  • 蘑菇书Easy RL
  • Shusen Wang的github开源项目DRL

你可能感兴趣的:(强化学习,人工智能,机器学习,算法)