参考文献:
[1]《机器学习》,周志华(西瓜书)
[2]《强化学习》,邹伟,等(鳄鱼书)
(今天看书总是走神,干脆总结一下,希望帮自己理清思路。如果碰巧能被大神看到,如有不正确或不严谨之处,万望指教!)
动态规划法是典型的有模型强化学习算法,即模型已知,对任意状态 x x x, x ′ x' x′和动作 a a a,在 x x x状态下执行动作 a a a转移到 x ′ x' x′状态的概率 P x → x ′ a P_{x→x'}^a Px→x′a是已知的,该转移所带来的奖赏 R x → x ′ a R_{x→x'}^a Rx→x′a也是已知的。
在每执行一步策略后就进行值函数的更新。
1.策略评估
V π ( x , a ) V^\pi(x,a) Vπ(x,a)表示从状态 x x x出发,使用策略 π \pi π所才来的累积奖赏; Q π ( x , a ) Q^\pi(x,a) Qπ(x,a)表示从状态 x x x出发,执行动作a后再使用策略 π \pi π带来的累积奖赏。
对于T步累计奖赏有
V T π = ∑ a ∈ A π ( x , a ) ∑ x ′ ∈ X P x → x ′ a ( 1 T R x → x ′ a + T − 1 T V T − 1 π ( x ′ ) ) V_T^\pi=\sum_{a\in A}\pi(x,a)\sum_{x'\in X}P_{x→x'}^a(\frac{1}{T}R_{x→x'}^a+\frac{T-1}{T} V_{T-1}^\pi(x')) VTπ=∑a∈Aπ(x,a)∑x′∈XPx→x′a(T1Rx→x′a+TT−1VT−1π(x′))
对于 γ \gamma γ折扣累计奖赏有
V γ π ( x ) = ∑ a ∈ A π ( x , a ) ∑ x ′ ∈ X P x → x ′ a ( R x → x ′ a + γ V γ π ( x ′ ) ) V_\gamma^\pi(x)=\sum_{a\in A}\pi(x,a)\sum_{x'\in X}P_{x→x'}^a(R_{x→x'}^a+\gamma V_\gamma^\pi(x')) Vγπ(x)=∑a∈Aπ(x,a)∑x′∈XPx→x′a(Rx→x′a+γVγπ(x′))
有了状态值函数V,就能直接计算出状态-动作值函数
Q T π = ∑ x ′ ∈ X P x → x ′ a ( 1 T R x → x ′ a + T − 1 T V T − 1 π ( x ′ ) ) Q_T^\pi=\sum_{x'\in X}P_{x→x'}^a(\frac{1}{T}R_{x→x'}^a+\frac{T-1}{T} V_{T-1}^\pi(x')) QTπ=∑x′∈XPx→x′a(T1Rx→x′a+TT−1VT−1π(x′))
Q γ π ( x ) = ∑ x ′ ∈ X P x → x ′ a ( R x → x ′ a + γ V γ π ( x ′ ) ) Q_\gamma^\pi(x)=\sum_{x'\in X}P_{x→x'}^a(R_{x→x'}^a+\gamma V_\gamma^\pi(x')) Qγπ(x)=∑x′∈XPx→x′a(Rx→x′a+γVγπ(x′))
2.策略改进
立项的策略应能最大化累积奖赏: π ∗ = arg max π ∑ x ∈ X V π ( x ) \pi^*=\argmax_\pi \sum_{x\in X}V^\pi(x) π∗=πargmax∑x∈XVπ(x)
V T ∗ ( x ) = max a ∈ A ∑ x ′ ∈ X P x → x ′ a ( 1 T R x → x ′ a + T − 1 T V T − 1 π ( x ′ ) ) V_T^*(x)=\max_{a\in A}\sum_{x'\in X}P_{x→x'}^a(\frac{1}{T}R_{x→x'}^a+\frac{T-1}{T} V_{T-1}^\pi(x')) VT∗(x)=maxa∈A∑x′∈XPx→x′a(T1Rx→x′a+TT−1VT−1π(x′))
V γ ∗ ( x ) = max a ∈ A ∑ x ′ ∈ X P x → x ′ a ( R x → x ′ a + γ V γ π ( x ′ ) ) V_\gamma^*(x)=\max_{a\in A}\sum_{x'\in X}P_{x→x'}^a(R_{x→x'}^a+\gamma V_\gamma^\pi(x')) Vγ∗(x)=maxa∈A∑x′∈XPx→x′a(Rx→x′a+γVγπ(x′))
于是: V ∗ ( x ) = max x ∈ A Q π ∗ ( x , a ) V^*(x)=\max_{x\in A}Q^{\pi^*}(x,a) V∗(x)=maxx∈AQπ∗(x,a)
则最优状态-动作值函数有
Q T ∗ ( x , a ) = ∑ x ′ ∈ X P x → x ′ a ( 1 T R x → x ′ a + T − 1 T max a ′ ∈ A Q T − 1 ∗ ( x ′ , a ′ ) ) Q_T^*(x,a)=\sum_{x'\in X}P_{x→x'}^a(\frac{1}{T}R_{x→x'}^a+\frac{T-1}{T} \max_{a'\in A}Q_{T-1}^*(x',a')) QT∗(x,a)=∑x′∈XPx→x′a(T1Rx→x′a+TT−1maxa′∈AQT−1∗(x′,a′))
Q γ π ( x ) = ∑ x ′ ∈ X P x → x ′ a ( R x → x ′ a + γ max a ′ ∈ A Q γ ∗ ( x ′ , a ′ ) ) Q_\gamma^\pi(x)=\sum_{x'\in X}P_{x→x'}^a(R_{x→x'}^a+\gamma \max_{a'\in A}Q_{\gamma}^*(x',a')) Qγπ(x)=∑x′∈XPx→x′a(Rx→x′a+γmaxa′∈AQγ∗(x′,a′))
3.策略迭代与值迭代
策略迭代:策略评估→改进策略→策略评估→改进策略……
值迭代:将策略改进视为值函数的改善,得
V T ( x ) = max a ∈ A ∑ x ′ ∈ X P x → x ′ a ( 1 T R x → x ′ a + T − 1 T V T − 1 ( x ′ ) ) V_T(x)=\max_{a\in A}\sum_{x'\in X}P_{x→x'}^a(\frac{1}{T}R_{x→x'}^a+\frac{T-1}{T} V_{T-1}(x')) VT(x)=maxa∈A∑x′∈XPx→x′a(T1Rx→x′a+TT−1VT−1(x′))
V γ ∗ ( x ) = max a ∈ A ∑ x ′ ∈ X P x → x ′ a ( R x → x ′ a + γ V γ ( x ′ ) ) V_\gamma^*(x)=\max_{a\in A}\sum_{x'\in X}P_{x→x'}^a(R_{x→x'}^a+\gamma V_\gamma(x')) Vγ∗(x)=maxa∈A∑x′∈XPx→x′a(Rx→x′a+γVγ(x′))
学习算法不依赖于环境建模
1.蒙特卡洛强化学习
一种直接的策略评估评估替代方法是多次“采样”,然后求取平均累积奖赏来作为期望累积奖赏的近似。
由于模型未知,从V到Q转换困难,估计对象从V转变为Q。
其本质是通过多次尝试后求平均来作为期望累积奖赏的近似,但它在求平均时是“批量处理”进行的,即在一个完整的采样轨迹完成后再对所有状态-动作对进行更新。
此类算法需在完成一个采样轨迹之后再更新策略的值估计。缺点是:未充分利用强化学习任务的MDP结构。
1.1同策略蒙特卡洛学习算法
欲较好地获得值函数的估计,就需要多条不同采样轨迹。
蒙特卡洛方法进行策略评估后,进行策略改进。被评估和被改进的是同一个策略,因此称为“同策略”蒙特卡洛强化学习算法。
同策略蒙特卡洛强化学习算法最终产生的是 ϵ \epsilon ϵ-贪心策略。
1.2异策略蒙特卡洛学习算法
在策略评估时引入 ϵ \epsilon ϵ-贪心策略,在策略改进时改进原策略。
2.时序差分学习
结合了动态规划与蒙特卡洛的思路。
将蒙特卡洛强化学习的更新过程增量式进行。设对于状态-动作对 ( x , a ) (x,a) (x,a),假设基于 t t t个采样已估计出值函数 Q t π ( x , a ) = 1 t ∑ i = 1 t r i Q_t^\pi (x,a)=\frac{1}{t}\sum_{i=1}^{t}r_i Qtπ(x,a)=t1∑i=1tri,则在得到第 t + 1 t+1 t+1个采样 r t + 1 r_{t+1} rt+1时,通过增量求和可得
Q t + 1 π ( x , a ) = Q t π ( x , a ) + α ( R x → x ′ a + γ Q t π ( x ′ , a ′ ) + Q t π ( x , a ) ) Q_{t+1}^\pi(x,a)=Q_{t}^\pi(x,a)+\alpha (R_{x→x'}^a+\gamma Q_{t}^\pi(x',a')+Q_{t}^\pi(x,a)) Qt+1π(x,a)=Qtπ(x,a)+α(Rx→x′a+γQtπ(x′,a′)+Qtπ(x,a))
Sarsa算法是一个同策略算法,评估与执行均为 ϵ \epsilon ϵ-贪心策略。
将Sarsa修改为异策略算法,得到Q-学习算法
3.资格迹
状态值函数更新参考的距离在1~N之间。资格迹两种视角:
1)前向视角(理论视角):由当前状态出发向还未访问的状态观察设计,认为资格迹是连接时序差分法和蒙特卡洛方法的桥梁。
2)后向视角(工程视角):由当前状态向已访问过的状态观察设计的一种算法。
前向视角告诉我们资格迹在理论层面如何工作,后向视角告诉我们在工程层面如何实现。(一般采用后向视角实现)
3.1Sarsa( λ \lambda λ)方法
Sarsa( λ \lambda λ)后向算法为单个轨迹内,每进行一个时间步,都会基于这个时间步的数据对行为值函数进行更新,产生采样的策略和评估改进的策略都是 ϵ \epsilon ϵ-贪心策略。
3.2Q( λ \lambda λ)算法
4.总结
蒙特卡洛法:更新当前状态值函数时,蒙特卡洛法中,这个距离是整个轨迹的长度,记为N。
时序差分法:状态值更新距离是1个时间步。
资格迹:状态值更新在1~N之间的距离。
之前的强化学习为表格型强化学习。
状态空进连续,有无穷多个状态。直接对连续状态空间的值函数进行学习。
1.线性逼近
线性逼近时选定基函数。
假定状态空间为n维实数空间 X = R n X=\textbf{R}^n X=Rn,状态线性函数为: V θ ( x ) = θ T x = ∑ i = 1 d θ i x i ( s ) V_\boldsymbol{\theta}(x)=\boldsymbol{\theta}^T\boldsymbol{x}=\sum_{i=1}^d\boldsymbol{\theta}_ix_i(s) Vθ(x)=θTx=∑i=1dθixi(s)
这个时候 V θ ( x ) V_\boldsymbol{\theta}(x) Vθ(x)还是关于参数向量 θ \boldsymbol{\theta} θ的线性函数,因此还是属于线性函数逼近的范畴。此时 x ( s ) \boldsymbol{x}(\boldsymbol{s}) x(s)称为状态s的特征函数(基函数)。
常见基函数:1.多项式基函数;2.傅里叶基函数;3.径向基函数。
1.1增量法
针对每一步(轨迹中的每一个状态转换序列),一旦有增量发生,则立即优化近似函数。
希望学到的值函数尽可能近似真实值函数 V π ( s ) V_\pi(s) Vπ(s),近似程度常用最小而成误差来度量:
E θ = E π [ ( V π ( s ) − θ T x ( s ) ) 2 ] E_\theta=E_\pi[(\boldsymbol{V}_\pi(s)-\boldsymbol{\theta}^T\boldsymbol{x}(\boldsymbol{s}))^2] Eθ=Eπ[(Vπ(s)−θTx(s))2]
采用梯度下降法,对误差求负倒数,整理,得到单个样本的更新规则:
θ = θ + α ( V π ( x ) − θ T x ( s ) ) x \boldsymbol{\theta}=\boldsymbol{\theta}+\alpha(V^\pi(\boldsymbol{x})-\boldsymbol{\theta}^T\boldsymbol{x}(s))\boldsymbol{x} θ=θ+α(Vπ(x)−θTx(s))x
由于并不知道真实函数 V π ( s ) V^\pi(s) Vπ(s)的取值,可以考虑使用任何一个无模型方法对其进行估计。
1.1.1基于蒙特卡洛方法的参数逼近
θ = θ + α ( G t − θ T x ( s t ) ) x ( s t ) \boldsymbol{\theta}=\boldsymbol{\theta}+\alpha(G_t-\boldsymbol{\theta}^T\boldsymbol{x}(s_t))\boldsymbol{x}(s_t) θ=θ+α(Gt−θTx(st))x(st)
1.1.2基于时序差分法的参数逼近
θ = θ + α ( R t + 1 + γ θ T x ( s t + 1 ) − θ T x ( s t ) ) x ( s t ) \boldsymbol{\theta}=\boldsymbol{\theta}+\alpha(R_{t+1}+\gamma\boldsymbol{\theta}^T\boldsymbol{x}(s_{t+1})-\boldsymbol{\theta}^T\boldsymbol{x}(s_t))\boldsymbol{x}(s_t) θ=θ+α(Rt+1+γθTx(st+1)−θTx(st))x(st)
1.1.3基于前向TD( λ \lambda λ)的参数逼近
θ = θ + α ( G t λ − θ T x ( s t ) ) x ( s t ) \boldsymbol{\theta}=\boldsymbol{\theta}+\alpha(G_t^\lambda-\boldsymbol{\theta}^T\boldsymbol{x}(s_t))\boldsymbol{x}(s_t) θ=θ+α(Gtλ−θTx(st))x(st)
1.1.4基于后向TD( λ \lambda λ)的参数逼近
整体规则: θ = θ + α ( Q π ( s , a ) − θ T x ( s , a ) ) x ( s , a ) \boldsymbol{\theta}=\boldsymbol{\theta}+\alpha(Q^\pi(\boldsymbol{s},\boldsymbol{a})-\boldsymbol{\theta}^T\boldsymbol{x}(\boldsymbol{s},\boldsymbol{a}))\boldsymbol{x}(\boldsymbol{s},\boldsymbol{a}) θ=θ+α(Qπ(s,a)−θTx(s,a))x(s,a)
基于蒙特卡洛的参数逼近:
θ = θ + α ( G t − θ T x ( s t , a t ) ) x ( s t , a t ) \boldsymbol{\theta}=\boldsymbol{\theta}+\alpha(G_t-\boldsymbol{\theta}^T\boldsymbol{x}(s_t,a_t))\boldsymbol{x}(s_t,a_t) θ=θ+α(Gt−θTx(st,at))x(st,at)
基于Sarsa的参数逼近为:
θ = θ + α ( R t + 1 + γ θ T x ( s t + 1 , a t + 1 ) − θ T x ( s t , a t ) ) x ( s t , a t ) \boldsymbol{\theta}=\boldsymbol{\theta}+\alpha(R_{t+1}+\gamma\boldsymbol{\theta}^T\boldsymbol{x}(s_{t+1},\boldsymbol{a}_{t+1})-\boldsymbol{\theta}^T\boldsymbol{x}(s_t,\boldsymbol{a}_t))\boldsymbol{x}(s_t,a_t) θ=θ+α(Rt+1+γθTx(st+1,at+1)−θTx(st,at))x(st,at)
基于Q-学习的参数逼近为:
θ = θ + α ( R t + 1 + γ θ T x ( s t + 1 , π ( s t + 1 ) ) − θ T x ( s t , a t ) ) x ( s t , a t ) \boldsymbol{\theta}=\boldsymbol{\theta}+\alpha(R_{t+1}+\gamma\boldsymbol{\theta}^T\boldsymbol{x}(s_{t+1},\pi(\boldsymbol{s}_{t+1}))-\boldsymbol{\theta}^T\boldsymbol{x}(s_t,\boldsymbol{a}_t))\boldsymbol{x}(s_t,a_t) θ=θ+α(Rt+1+γθTx(st+1,π(st+1))−θTx(st,at))x(st,at)
一下给出其中一种算法的流程:
1.2批量法
针对一批历史数据(如一段轨迹)集中进行近似。
相比于增量法,数据利用率高,计算更为复杂。
批量法是把一段时间内的数据集中起来,如给定一段经验数据集 D = { ( s 1 , V 1 π ) , ( s 2 , V 2 π ) , . . . , ( s T , V T π ) } D=\{(s_1,V_1^\pi),(s_2,V_2^\pi),...,(s_T,V_T^\pi)\} D={(s1,V1π),(s2,V2π),...,(sT,VTπ)}通过学习,找到最好的拟合函数 V ^ ( s , θ ) \hat{V}(s,\theta) V^(s,θ)使得参数能较好地符合这段时间内所有的数据,满足损失函数最小化:
L ( θ ) = ∑ t = 1 T ( V t π − θ T x ( s t ) ) 2 L(\boldsymbol{\theta})=\sum_{t=1}^T(V_t^\pi-\boldsymbol{\theta}^T\boldsymbol{x}(\boldsymbol{s}_t))^2 L(θ)=∑t=1T(Vtπ−θTx(st))2
对 θ \theta θ求导,求解 θ \theta θ.,具体各方法求解成果见鳄鱼书P148.以下给出值函数逼近Q学习算法(批量法)如下:
2.非线性逼近
2.1DQN(Deep Q-Network)方法
2.1.1算法要点
DQN在Q-learning基础上进行如下改进:1.DQN使用深度神经网络从原始数据中提取特征,近似行为值函数(Q值);2.DQN利用经历回放对强化学习过程进行训练;3.DQN设置了单独的目标网络来处理TD偏差(一个网络固定参数专门用来产生TD目标,另一个网络专门用来评估策略更新参数,逼近值函数)
2.1.2操作步骤
1.原始图片预处理;2.神经网络参数更新;3.训练;4.评估
2.1.3算法流程
2.2Double DQN(DDQN)方法
将行为选择和行为评估采用不同的值函数实现。
传统DQN中,选择行为和评估行为用的是同一个网络参数,以及同一个值函数。DDQN分别采用不同的值函数实现动作选择和评估。传统DQN自身提供了两个网络:主网络和目标网络。因此可以直接使用主网络选择动作,在用目标网络进行动作评估,不必引入河外网络。
2.3Dueling DQN方法
Dueling DQN在不对算法进行改变的基础上,关注与改造神经网络架构本身,使其训练更为容易,结果更为稳定,更适合于无模型强化学习。
2.3.1价值和优势
将Q值分解为价值(Value)和优势(Advantage)
Q ( s , a ) = V ( s ) + A ( s , a ) Q(s,a)=V(s)+A(s,a) Q(s,a)=V(s)+A(s,a)
V ( s ) V(s) V(s)可表示在该状态s下所有可能动作对应的动作值函数乘以采取该动作的概率之和。动作值函数Q(s,a)是单个动作所对应的值函数,Q(s,a)-V(s)表示当前动作值函数相对于平均值的大小。故,优势表示的是动作值函数相比于当前状态值函数的优势,是在这个状态下各个动作的相对好坏程度。
2.3.2Dueling DQN算法
其与传统DQN唯一的区别就是网络结构。
(这个部分我暂时不确定是不是基于值函数的方法,是读西瓜书的时候整理的,等我把鳄鱼书整理完再来看它!)
机器能获得人类专家的决策过程返利,从范例中学习,称为“模仿学习”。
1.直接模仿学习
假定获得一批人类专家决策轨迹数据 { τ 1 , τ 2 , . . . , τ m } \{ \tau_1,\tau_2,...,\tau_m\} {τ1,τ2,...,τm},每条轨迹包含状态和动作序列 τ i = < s 1 i , a 1 i , s 2 i , a 2 i , . . . , s n i + 1 i > \tau_i=< s_1^i,a_1^i,s_2^i,a_2^i,...,s_{n_i+1}^i> τi=<s1i,a1i,s2i,a2i,...,sni+1i>,其中 n i n_i ni为第i条轨迹中的转移次数。
可利用监督学习来符合人类专家决策轨迹数据的决策。
将轨迹上所有“状态-动作对”抽取出来,构造一个新的数据集合 D D D,即吧状态作为特征,动作作为标记,然后对这个新构造出的数据集合D适用分类或回归算法即可学得策略模型。学得的策略可作为机器新型强化学习的处事策略,在通过强化学习方法基于环境反馈进行改进,获得更好策略。
2.逆强化学习
设计奖赏函数困难,从人类专家提供的范例数据中反推出奖赏函数。
基本思想:欲使机器做出与范例一致的行为,等价于在狗哥奖赏函数的环境中求解最优策略,该最优策略所产生的轨迹与范例数据一致。也就是说,我们要寻找某种奖赏函数使范例数据最优,即可使用这个江上寒暑来训练强化学习策略。
假设将行函数能表达为状态特征的线性函数,即 R ( x ) = w T x R(\boldsymbol{x})=\boldsymbol{w}^T\boldsymbol{x} R(x)=wTx,策略 π \pi π的积累奖赏可写为
ρ π = w T E [ ∑ t = 0 + ∞ γ t x t ∣ π ] \rho^\pi=\boldsymbol{w}TE[\sum_{t=0}^{+\infty}\gamma^t\boldsymbol{x}_t|\pi] ρπ=wTE[∑t=0+∞γtxt∣π]
即状态向量加权和的期望与系数 w \boldsymbol{w} w的内积。
将向量期望 E [ ∑ t = 0 + ∞ γ t x t ∣ π ] E[\sum_{t=0}^{+\infty}\gamma^t\boldsymbol{x}_t|\pi] E[∑t=0+∞γtxt∣π]简写为 x ˉ π \bar{\boldsymbol{x}}^\pi xˉπ,可用蒙特卡洛方法通过采样近似期望。可将每条范例轨迹上的状态加权求和再平均,记为 x ˉ ∗ \bar{\boldsymbol{x}}^* xˉ∗,于是有:
w ∗ = arg max w min π w T ( x ˉ ∗ − x ˉ π ) \boldsymbol{w}^*=\argmax_{w}\min_\pi \boldsymbol{w}^T(\bar{\boldsymbol{x}}^*-\bar{\boldsymbol{x}}^\pi) w∗=wargmaxminπwT(xˉ∗−xˉπ)
s . t . ∣ ∣ w ∣ ∣ ≤ 1 s.t. ||\boldsymbol{w}||\leq1 s.t.∣∣w∣∣≤1