基本概念
一、数学知识
1)随机变量(Random Variable)

统计学中往往用字母的大小写来区分随机变量和观测值,例如X表示随机变量,x表示观测值
2)概率密度函数(Probability Density Function)

概率密度函数(Probability Density Function)有这样的性质:

3)期望(Expectation)
简单来说,对某一随机变量求期望就是在求它的平均。有微积分基础的可以理解:对于连续的随机变量可以采用求某一段积分来获得期望;而对于离散的随机变量只需求和公式即可。
期望(Expectation)有如下性质:

4)随机抽样(Random Sampling)
举个例子,对于某一随机变量X,可能X产生的值有['R', 'G', 'B'],那么随机抽样的过程就是在X可能产生的值['R', 'G', 'B']抽取的过程
二、专业术语(Terminology)
1)状态和动作(State and Action)
状态(State s)
Agent(智能体)在某一时刻t所处的状态,即为State s,常常记为

动作(Action a)
Agent(智能体)在某一时刻t进入状态,做出相应的动作,即为Action a ,常常即为

2)策略(Policy )
在数学上,策略是一个概率密度函数(Probability Density Function),在某一状态时,策略控制Agent做出动作,这里做出的动作是随机抽样得到的。

3)奖励(Reward)
Agent在某一状态中做出一个动作,就会获得一个奖励

4)状态转移(State Transition)
一个状态转移到另一个状态的过程叫做状态转移

5)智能体环境交互过程

6)强化学习中的两种随机性
策略对动作进行随机抽样,状态转移函数对状态进行随机抽样

7)强化学习的训练过程(一个trajectory)

8)回报(Return)
定义为:未来奖励的总和(Cumulative Future Reward),记作,由于每一步我们并不知道的大小,因此是随机变量

由于未来奖励的不确定性,因此强化学习中往往采用折扣回报
定义为:折扣性未来奖励的总和(Cumulative Discounted Future Reward)

回报的随机性(Randomness in Returns)
由于回报取决于奖励,而奖励又是由Agent所进入的状态和做出的动作进行打分而得到的,上文已经提到了在强化学习中状态和动作均具有随机性, 因此回报(Return)也具有随机性。

9)动作价值函数(Action-Value Function)
上面讲到了,是一个随机变量,依赖于未来所有的动作A和状态S,因此为了无法评估当前形势。故引入动作价值函数,用对求期望,用积分将随机性积掉,这样就能得到一个实数,用于评估形势。
期望的求取方法:将当成未来所有状态A和S的一个函数,所以除了当前的动作和状态,其余所有的状态和动作都被积掉了,因此这里的对于策略的动作价值函数只取决于当前的动作和状态的观测值

最优动作价值函数(Optimal Action-Value Function):能让动作价值函数最大化的那个
,这里与无关

对于动作状态价值函数的理解

10)状态价值函数(State-Value Function)
可以告诉我们当前的形势的好坏

这里的需要区分连续动作和离散动作:

对于状态价值函数的理解:

三、如何利用AI的强化学习控制智能体训练
1)价值学习(Value-Based Learning)
采用最优动作价值函数

2)策略学习(Policy-Based Learning)
采用策略

四、总结(summary)
直接附上王树森大神的Summary的图:

强化学习的一个总体过程:

价值学习 Value-Based Learning
一、深度Q网络(Deep Q-Network DQN)
1)近似Q函数(Approximate the Q* Function)
可以被看成一个先知,它可以告诉Agent如何选择一个最好的动作a,但并不知道,因此这里需要近似
DQN是一种价值学习的方法,利用一个神经网络(Neural Network NN)去近似一个,记为

对于不同问题,DQN也许不一样,以超级玛丽为例:

DQN的训练Agent的一个trajectory如下图:

2)时序差分方法(Temporal Difference Learning TD-Learning)
例子:如果我想要从纽约到亚特兰大,且模型预测了消耗的时间是1000分钟,这个模型一开始是随机的。
那么如何更新模型,使模型的预测值变得越来越准确?
①首先做出一个预测:q=Q(w) → q=1000
②完成这段路程得到真实值y:y=860
这时,产生了一个偏差(q-y)
我们记损失Loss为:,即L2范式,前面的1/2可以理解为方便计算梯度,线性变换并不会影响数据整体的相对值,例如,1相对于2是1/2倍的关系,0.5相对于1是1/2倍的关系。
那么,为了是预测值尽可能的逼近真实值,我们必须需要让Loss取到最小值。因此这里就引入了L对w的梯度Gradient,也可以认为是求导。使用偏微分的链式法则,我们可以推导出L对w梯度的表达式,如下图所示:

这样,我们在进行参数更新时,采用梯度下降算法(Gradient Descent)即可使参数w不断接近真实值对应的参数。
而现在,若到达不了目的地,不获取到真实的全路程的真实值,就可以利用TD算法来更新模型参数。
假设我们从纽约想亚特兰大出发,途中经过华盛顿,而在华盛顿停住不走,那么此时的预测就不再能使用整条路的真实值来更新预测值了。
因此,这里采用TD算法
我们已知模型做出一个预测:q=Q(w) → q=1000
而从我们从纽约经过华盛顿停住不走,那么便有一个从纽约到华盛顿的真实值:y1=300
而从华盛顿到亚特兰大有一个模型预测值:q1=Q(w1)→q=600
那么此时我们定义TD target为 y=y1+q1=900,这里的TD target比原本的模型预测值1000更加可靠。
我们记损失Loss为:L=1/2*(q-y)²,定义TD error为δ=q-y=1000-900;此处也可以理解成模型对纽约到华盛顿的预测值为400,而真实值是300,δ=400-300=100
类似地,我们可以得到Loss Function关于w的一个函数,对w求梯度,得到Loss的最小值对应的w用于更新参数(采用梯度下降方法Gradient Descent)

我们必须使TD error尽可能地小,当TD error=0时,那么我们就获得了最优的模型
二、TD Learning+DQN
如何将TD算法用于学习DQN
对于上述例子,我们有了这样的方程

类似地,在深度强化学习中,有如下方程,即是用TD算法学习DQN的方程:

其中,方程左边是DQN在t时刻对状态和动作进行的一次估计;等式右边是在t时刻真实观测到的奖励,以及DQN在t+1时刻对于状态和动作进行的一次估计。
推导如下:

因此,将TD算法与DQN结合:

等式左边可以认为是模型对于时刻t关于参数w的预测值(Prediction);右边则是真实值+模型对于时刻t+1关于参数w的预测值,和式记为TD target。
个人理解,这是一个贝尔曼方程,具体可以参照忆臻:马尔科夫决策过程之Bellman Equation(贝尔曼方程)

三、总结(Summary)

TD算法用于学习DQN的一次迭代:

多次进行迭代,最后就可以将TD error逐渐减小;换句话说,模型预测值越来越接近TD target。
策略学习 Policy-Based Learning
一、策略函数近似(Policy Function Approximation)
1)策略函数(Policy Function)
策略函数(Policy Function) 是一个概率密度函数,其输入是某个状态s,输出是在该状态下可能产生的动作a的概率值。假设在状态st下,Agent可能做出的动作at可能有n个,那么即输出一个n维向量,其元素对应每个可能做出动作at的概率值。有了这n个概率值,Agent就会在这个向量中做一次随机抽样(Random Sampling),并做出随机抽样所得的动作

2)策略网络(Policy Network)
策略网络(Policy Network)则是使用了神经网络去近似策略函数,其中是神经网络中的一个可训练参数

策略网络(Policy Network)有着如下性质:

由于策略网络对于在动作空间A中所有可能取到的a所对应的概率之和必须等于1,因此在策略网络的最后一层必须加上一个Sotmax这个Activation Function。
二、状态价值函数近似(State-Value Function Approximation)
1)状态价值函数(Action-Value Function)
首先回顾上一章的三类函数:

这里注意:式3表示离散动作的期望求法;若为连续动作,则对动作空间中的所有a进行积分。
类比State-Value Function和Approximation State-Value Function,区别在于:将策略换成了策略网络

V 可以评价状态s和策略网络的好坏。若给定状态s,策略网络越好,那么V的值越大。因此,我们采用V关于的随机梯度上升的方法更新参数,则有以下定义:

这类方法即策略梯度上升的方法,这里我们定义策略梯度(Policy Gradient)是近似状态价值函数关于的梯度。
2)策略梯度(Policy Gradient)
这里放上策略梯度的推导:

这里假设不依赖于,因此能够相当于一个常数提出来。但在实际中,由于依赖于,而是由神经网络参数所决定的,因此往往不能被提出。
因此,策略梯度的一种形式可以被写成如下形式:

这里,如果动作a是离散的,那么只需要对a进行连加就可以将策略梯度算出来。
然而实际应用中往往不会用这个公式来计算策略梯度,而是使用蒙特卡洛近似的方法来近似。
这里对蒙特卡洛近似推导:

这里,有必要解释一下,这里利用了log函数的求导性质,有微积分基础的应该没什么问题,如果仅有高中水平的朋友可以自己上手求一下导,正着看或许有点问题,可以反过来推导,如上图紫色字体。

至此,我们证明了这两项是相等的:

这里我们就可以使用蒙特卡洛近似,推导出如下等式:

上面提到了这个推导不严谨,原因是因为与策略有关,因而与神经网络参数有关,但事实上,最后的对也求偏导,最后也能得到这个式子。
至此,我们得到了策略梯度的两种等价形式:

对于离散的动作,我们可以采用第一种形式:

由于第一种形式的使用对象的局限性,因而第二种形式比第一种形式更为常用,这里举了连续动作的一种策略梯度的例子:

显然,这里对关于A求期望就是策略梯度;且是根据策略中随机抽样得到的,故是策略梯度的一个无偏估计。因此,我们就可以利用去近似策略梯度,即蒙特卡洛近似(Monte Carlo Approximation)。具体推导可以参考蒙特卡洛近似。
三、使用策略梯度更新策略网络

那么我们如何估计动作价值函数?
给出了这两种方法:
REINFORCE:必须获取到一个完整的trajectory才能进行一次模型参数的更新,也就是蒙特卡罗方法(MC Method)来估计Q

Actor-Critic(AC):使用另一个神经网络来近似

四、总结(Summary)

Actor-Critic Method(AC Method)
Actor-Critic方法,是策略学习和价值学习结合的一种方法。
Actor是策略网络,用来控制Agent运动,可以看做“运动员”。
Critic是价值网络,用来给动作打分,可以看做“裁判”。
