一、预备知识

1、什么是强化学习?

定义:强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题 。

强化学习的特点:

  • 没有监督数据、只有奖励信号。
  • 奖励信号不一定是实时的,而很可能是延后的,有时甚至延后很多。
  • 时间(序列)是一个重要因素。
  • 当前的行为影响后续接收到的数据。

2、马尔可夫决策过程

马尔可夫性

定义:马尔科夫性又称马氏性,指的是过程或者系统在时刻t0所处的状态为已知的条件下,过程在时刻t>t0所处状态的条件分布与过程在时刻t0之前所处的状态无关。

通俗理解:今天的结果与昨天有关与前天无关。

举例:一天内,晚餐的食量由午餐的时间和摄入直接决定,而由早餐的时间和摄入间接决定。

公式表达形式:
强化学习奖励设置_强化学习奖励设置

二、基本概念

1、概率论相关概念

随机变量

概念:一个变量,变量的值取决于随机事件的结果

一般使用大写字母来表示随机变量,如:X

一般使用小写字母来表示随机变量的观测值,如:x

概率密度函数

意味着随机变量在某个确定的取值点附近的可能性

连续的概率分布,如:高斯分布

高斯分布的概率密度函数为:
强化学习奖励设置_概率密度函数_02
其中的强化学习奖励设置_强化学习_03为标准差,强化学习奖励设置_概率分布_04为均值。

高斯分布的概率密度函数曲线为:

强化学习奖励设置_机器学习_05


图中的对称轴为强化学习奖励设置_强化学习_03,横轴为随机变量的取值,纵轴为概率密度。

离散的概率分布,如 X 强化学习奖励设置_强化学习_07

概率密度函数表示为:

强化学习奖励设置_强化学习_08

概率密度函数图:

强化学习奖励设置_机器学习_09

随机变量的相关性质

假设随机变量X的定义域为强化学习奖励设置_强化学习_10

对于连续型随机变量:
强化学习奖励设置_概率分布_11
对于离散型随机变量:
强化学习奖励设置_强化学习_12

期望

假设随机变量X的定义域为强化学习奖励设置_强化学习_10

对于连续型分布,若积分收敛,则随机变量期望的表达式为:
强化学习奖励设置_机器学习_14
对于离散型分布,随机变量的期望表达式为:
强化学习奖励设置_概率密度函数_15

随机抽样

随机抽样也叫概率抽样,有如下几个特点:

  • 抽样时按一定的概率以随机原则抽取样本
  • 每个单位被抽中的概率是已知的的,或者是可以计算出来
  • 当用样本对总体目标量进行估计时,要考虑到每个样本单位被抽中的概率,即估计量不仅与样本单位的观测值有关,也与其入样概率有关
#使用numpy库的choice函数进行随机抽样
from numpy.random import choice
samples = choice(['R','G','B'],size = 100,p=[0.2,0.5,0.3])
print('R的个数:',list(samples).count('R'))
print('G的个数:',list(samples).count('G'))
print('B的个数:',list(samples).count('B'))
print(samples)

2、强化学习相关术语

state and action

比如在下图超级玛丽游戏中:

强化学习奖励设置_概率分布_16

当前的状态state可以认为是上图的这个画面

强化学习奖励设置_概率分布_17

对于马里奥而言,在这个状态下可以可以做向左,向右,向上的三个动作,马里奥做的动作就叫作action。

在本例中马里奥被称为agent,在一个动作里,动作是由谁达成的,谁就是agent。

policy 强化学习奖励设置_概率分布_18

在上例中对于马里奥而言,可以有三种动作,向上,向左和向右。policy的作用即根据观测到的状态然后做出决策来控制agent运动。

  • policy函数强化学习奖励设置_概率密度函数_19在数学上的定义为:强化学习奖励设置_强化学习奖励设置_20
  • 含义:给定状态s,做出动作a的概率密度

比如说给定一个状态,将当前状态输入到policy函数强化学习奖励设置_概率分布_18中,会输出向左的概率是0.2,向右的概率是0.1,向上的概率是0.7
强化学习奖励设置_概率分布_22
如果令policy函数自动操作,则policy函数会进行随机抽样,以0.2的概率向左走,0.1的概率向右走,0.7的概率向上跳,三种情况

在抽样中都有可能发生,但是向上的可能性最大。强化学习也就是学习policy函数,只要有policy函数,就可以操作马里奥打赢游戏。

在本例中,agent动作是随机的,根据policy函数输出的概率来做动作。policy最好是概率密度函数,动作最好是随机抽样得到的

要有随机性。

reward

agent做出一个动作,游戏就会给出一个奖励。奖励通常有自己定义,但奖励定义的好坏非常影响强化学习的结果。

在超级玛丽的游戏例子中,可以给出如下奖励定义方法:

  • 向上跳吃到金币,奖励定义为:强化学习奖励设置_强化学习奖励设置_23
  • 游戏通关,奖励定义为:强化学习奖励设置_概率密度函数_24
  • 碰到了敌人,游戏结束,奖励定义为:强化学习奖励设置_机器学习_25
  • 什么都没有发生,奖励定义为:强化学习奖励设置_强化学习_26

强化学习的目标就是获得的奖励总和尽量要高

state transition

从旧状态→新状态叫作状态转移(state transition)

  • 状态转移可以是确定的,也可以是随机的,但通常状态转移是随机。
  • 状态转移的随机性是从环境中获得的,在本例中,环境就是游戏的程序,游戏的程序决定游戏的下一个状态是什么

可以把状态转移用P函数来表示:强化学习奖励设置_强化学习奖励设置_27

含义:如果观测到当前的状态s以及动作a,p函数输出状态变成强化学习奖励设置_机器学习_28

强化学习奖励设置_概率分布_29

举例说明状态转移的随机性:在上图的例子中,马里奥会向上跳这个动作是确定的。但敌人可能向左走,也可能向右走,向左走的概率是0.8,向右走的概率是0.2,这个概率对于玩家而言是不清楚的,只要程序自己知道,所以对于下一个状态而言,只能确定马里奥是向上跳的,但不清楚敌人如 何移动,所以状态的转移是随机的(因为状态的意思可以理解为下一幅定格图片)。

agent environment interaction

agent和环境的交互,在超级玛丽的例子中,agent是马里奥,环境是游戏程序。

agent在看到状态$ S_{t}强化学习奖励设置_概率分布_30a_{t}$,动作可以是向左走,向右走,或者是向上跳;agent做出动作之后,环境会更新

状态,把状态变成强化学习奖励设置_强化学习奖励设置_31,同时环境还会给agent一个奖励强化学习奖励设置_强化学习奖励设置_32

3、强化学习中的随机性

随机性共有两个来源:

第一个随机性是来源于agent的动作,因为动作是根据policy函数输出的概率随机抽样得到的,用policy函数来控制agent。

强化学习奖励设置_强化学习奖励设置_33


在获得每种动作的概率后,因为agent可以做其中任意一种动作,可能向左,向右,或者向上,但这些动作的概率有大有小。

强化学习奖励设置_机器学习_34

第二个随机性来源于状态转移,假设agent做出了向上跳的动作

强化学习奖励设置_概率密度函数_35


在做出向上的动作后,环境用状态转移函数P算出概率,然后用概率来随机抽样得到下一个状态强化学习奖励设置_机器学习_36,因此每种状态都有可能,是随机的。

4、AI自动打赢游戏

在上文的超级玛丽游戏中,如何让AI自动打赢游戏,通过强化学习学出policy函数强化学习奖励设置_概率密度函数_19运动。

AI控制的执行流程为:

  1. 在得到当前的状态S后,运用policy函数计算出不同动作发生的概率,再通过随机抽样得到动作强化学习奖励设置_强化学习_38
  2. 在agent做出响应动作之后,然后环境会生成下一个状态强化学习奖励设置_机器学习_39,并且给agent一个reward奖励。
  3. AI会会根据新的状态强化学习奖励设置_强化学习奖励设置_40作为输入,计算下一个动作
  4. …………

持续上述流程可以得到一个trajectory轨迹:强化学习奖励设置_强化学习_41,即每一步的状态、动作、奖励{state,action,reward}

5、Return

Defination:Return(aka cumulative future reward) 未来累计奖励

即:$ U_{t}=R_{t}+R_{t+1}+R_{t+2}+R_{t+3}+\cdots$,假定所有奖励权重相等的情况

但未来奖励和现在的奖励的重要性程度不同

  • 未来奖励比现在奖励的价值更低
  • 未来奖励强化学习奖励设置_概率密度函数_42应该比现在奖励强化学习奖励设置_强化学习奖励设置_43权重低

Defination:Discounted return(aka cumulative discounted future reward)

  • 强化学习奖励设置_概率分布_44 :折扣率,介于0-1之间,如果未来和现在权重相等,强化学习奖励设置_概率分布_44等于1,要是未来奖励不重要,强化学习奖励设置_概率分布_44比较小
  • 强化学习奖励设置_概率分布_47
  • 折扣率是一个超参数需要自己调,折扣率的大小对强化学习的结果有一定影响。

return的随机性来源

  1. 动作具有随机性 强化学习奖励设置_强化学习奖励设置_48
  2. 新状态具有随机性 强化学习奖励设置_强化学习_49

对于任意的未来时刻强化学习奖励设置_机器学习_50,奖励reward 强化学习奖励设置_概率密度函数_51取决于动作强化学习奖励设置_强化学习奖励设置_52和状态强化学习奖励设置_概率分布_53

对于给定的强化学习奖励设置_机器学习_54时刻而言,回报强化学习奖励设置_机器学习_55,取决于未来所有的状态和动作。

强化学习奖励设置_概率密度函数_56

agent的目标就是让Return 强化学习奖励设置_强化学习_57尽量大,越大越好,除此之外,假如知道了强化学习奖励设置_强化学习_57我们可以清楚这局游戏是快赢了还是快输了。但强化学习奖励设置_强化学习_57是一个随机变量。

6、Value-function

Action-value function

由于$ U_{t}=R_{t}+R_{t+1}+R_{t+2}+R_{t+3}+\cdots强化学习奖励设置_强化学习_60t强化学习奖励设置_概率密度函数_61U_{t}$是什么,那该如何评估当前的形势?

可以对强化学习奖励设置_机器学习_55求期望,把其中的随机性都用积分积掉,得到的就是一个实数。打个比方:在抛硬币之前不知道会得到什么结果,但清楚在结果中正反面各有一半的概率,如果正面记作1,反面记作0,得到的期望就是0.5,相同的道理,对随机变量强化学习奖励设置_机器学习_55求期望,就可以得到一个数,记作是强化学习奖励设置_概率密度函数_64:
强化学习奖励设置_强化学习奖励设置_65
该期望的求法:

  • 强化学习奖励设置_强化学习_57当成未来所有的动作A和未来所有的状态S的函数,未来的动作A和状态S都具有随机性。
  • 动作A的概率密度函数是policy函数强化学习奖励设置_概率密度函数_19强化学习奖励设置_机器学习_68
  • 状态S的概率密度函数是动作转移函数P,强化学习奖励设置_强化学习奖励设置_69
  • 期望就是对未来的动作A和状态S进行求解的,把这些随机变量都用积分给积分掉,除了强化学习奖励设置_概率密度函数_70强化学习奖励设置_概率分布_71其它的随机变量都被积分积掉了。
  • 求期望得到的函数被称为Action-value function,动作价值函数。

强化学习奖励设置_概率密度函数_72和当前强化学习奖励设置_强化学习_73强化学习奖励设置_强化学习_74有关,因为后面的随机变量都被积分给积掉了.强化学习奖励设置_强化学习_73强化学习奖励设置_强化学习_74被当成数值来对待,而不是当成随机变量

强化学习奖励设置_概率密度函数_72还与policy函数强化学习奖励设置_概率密度函数_19有关,因为积分时会用到policy函数,不同的policy函数积分得到的值也不一样

函数强化学习奖励设置_概率密度函数_72的直观意义为:如果用policy函数强化学习奖励设置_概率密度函数_19,那么在强化学习奖励设置_强化学习_73这个状态下,做动作强化学习奖励设置_强化学习_74是好还是坏,一直policy函数强化学习奖励设置_概率密度函数_19强化学习奖励设置_强化学习奖励设置_84就会给当前状态下所有的policy函数打分,然后可以得到哪个动作好与哪个动作不好,反应当前状态强化学习奖励设置_强化学习_73下做动作强化学习奖励设置_强化学习_74的好坏程度。

Optimal action-value function

如何把Action-value function函数中的强化学习奖励设置_概率分布_18去掉?

可以对强化学习奖励设置_概率密度函数_64关于强化学习奖励设置_概率分布_18求最大化,意思是对于无数种policy函数强化学习奖励设置_概率分布_18,但我们应该使用最好的那一种policy函数,最好的policy 函数就是让强化学习奖励设置_概率密度函数_64取得最大化的强化学习奖励设置_概率分布_18,把得到的函数强化学习奖励设置_概率密度函数_93称为optimal action-value function,最优动作价值函数,强化学习奖励设置_机器学习_94和policy函数强化学习奖励设置_概率分布_18无关,因为强化学习奖励设置_概率分布_18已经被max函数给消除掉。
强化学习奖励设置_机器学习_97
强化学习奖励设置_机器学习_94的直观意义:可以用来对动作a做出评价,如果当前的状态是强化学习奖励设置_机器学习_99,那么强化学习奖励设置_机器学习_94函数告知我们动作强化学习奖励设置_强化学习奖励设置_101好不好。比如下围棋时状态是当时的棋盘,强化学习奖励设置_机器学习_94函数告诉我们如果把棋子放到某个位置的胜算有多大,如果把棋子放到另外一个位置的胜算有多大。

如果有了强化学习奖励设置_概率密度函数_103函数,那么agent就可以根据强化学习奖励设置_概率密度函数_103对动作的评价来做出决策,给每个动作打分,如果强化学习奖励设置_概率密度函数_103认为向上走分数高,那么agent就应该向上跳等等

State-value function

$ V_{\pi}\left(s_{t}\right)=\mathbb{E}{A}\left[Q{\pi}\left(s_{t}, A\right)\right]$,式中的A为随机变量,对A求期望把A消掉,与A无关

只与强化学习奖励设置_概率分布_18和状态s有关,意义是可以反应当前的局势好与不好,假如根据policy函数强化学习奖励设置_概率分布_18来下围棋,让强化学习奖励设置_概率分布_108得到当前棋盘,强化学习奖励设置_概率分布_108会反馈当前的胜算有多大,快赢了,快输了,还是不分高下。
强化学习奖励设置_强化学习_110
如果强化学习奖励设置_概率分布_18是固定的,那么状态s越好,那么状态价值函数的值越大。

如果强化学习奖励设置_概率分布_18越好,那么状态价值函数的平均值就越大。

7、AI控制agent

第一种控制方式:

学习得到policy函数强化学习奖励设置_概率密度函数_113,即策略学习,如果有了policy函数强化学习奖励设置_概率分布_18,那么根据当前状态,就可以得到强化学习奖励设置_概率分布_18函数的输出值,即为每一种动作的概率,然后根据概率做随机抽样得到当前的动作。

第二种控制方式:

学习Optimal action-value function(最优动作价值函数)强化学习奖励设置_概率密度函数_93,即价值学习,在得到强化学习奖励设置_概率密度函数_93后,agent就可以根据强化学习奖励设置_概率密度函数_93函数来做相应的动作,强化学习奖励设置_概率密度函数_93得出,如果处在状态s,那么做出动作a是好还是坏。每观测到一个状态强化学习奖励设置_机器学习_99就作为强化学习奖励设置_概率密度函数_93函数一个输入,让强化学习奖励设置_概率密度函数_93对每一个动作都做一个评价,这样就可以得到向左,向上,向右每一个状态的Q值,哪一个Q值大就选哪个,因为Q值是对未来奖励总和的期望,Q值大的未来将会获得更大的奖励。
强化学习奖励设置_强化学习_123

强化学习的目的就是学习得到强化学习奖励设置_概率密度函数_19函数或者是强化学习奖励设置_概率分布_125函数,得到两者之一即可。