强化学习精要(笔记)

一、概念

1. 强化学习和监督学习

  • 目标明确性不同:
    监督学习希望模型根据指定的输入得到对应的输出,而强化学习目标没有很明确,使当前状态获得最大回报的行动可能有很多。
  • 输出意义不同:
    监督学习主要着重输入和输出的匹配程度,我们希望每个输出都能与输入对应。强化学习的目标是让回报最大化,并不是每一个行动都会获得回报。

2. 模仿学习

模仿学习目标与强化学习一致,都是最大化长期回报。但是学习方法和监督学习类似,收集大量单步决策样本,让模型学习单步决策的逻辑。执行流程:

  • Expert与环境交互,得到交互序列
  • 用监督学习的方法让模型学习这些数据

3. 重要性采样

假设有一个很复杂的概率密度函数 p ( x ) p(x) p(x),求解随机变量基于此概率下的某个函数期望: E x ∼ p ( x ) [ f ( x ) ] E_{x\sim p(x)}[f(x)] Exp(x)[f(x)]
采用解析的方法,将公式展开为积分: ∫ x p ( x ) f ( x ) d x \int_xp(x)f(x)dx xp(x)f(x)dx
另一种是蒙特卡罗法(大数定理),当采样数量足够大时,采样的样本就可以无限近似地表示原分布: 1 N ∑ x i ∼ p ( x ) , i = 1 N f ( x i ) \frac{1}{N}\sum_{x_i\sim p(x),i=1}^Nf(x_i) N1xip(x),i=1Nf(xi)
如果概率密度函数 p ( x ) p(x) p(x)由深度神经网络构成,我们只能通过输入给定样本得到它的概率。利用重要性采样,令待采样分布 p ( x ) p(x) p(x)和具有相同定义域且简单可采样的密度函数 p ^ ( x ) \hat{p}(x) p^(x):
E x ∼ p ( x ) [ f ( x ) ] = ∫ x p ( x ) f ( x ) d x = ∫ x p ^ ( x ) p ( x ) p ^ ( x ) f ( x ) d x = 1 N ∑ x i ∼ p ^ ( x ) , i = 1 N p ( x ) p ^ ( x ) f ( x ) \begin{aligned} E_{x\sim p(x)}[f(x)] &= \int_xp(x)f(x)dx \\ &= \int_x\hat{p}(x)\frac{p(x)}{\hat{p}(x)}f(x)dx\\ &= \frac{1}{N}\sum_{x_i\sim \hat{p}(x),i=1}^N\frac{p(x)}{\hat{p}(x)}f(x) \end{aligned} Exp(x)[f(x)]=xp(x)f(x)dx=xp^(x)p^(x)p(x)f(x)dx=N1xip^(x),i=1Np^(x)p(x)f(x)

二、优化方法

1.梯度下降法

\qquad 梯度的方向相反可以看做函数值减少速度最快的方向。由泰勒公式证明,该点方向只在邻域内成立,所以影响到步长 s t e p step step的选取。

2.动量法

\qquad 一个已经结束的更新量不会立刻消失,只会以一定的形式衰减,剩下的能量将在优化中发挥作用。
g p r e d = g p r e d ∗ d i s c o u n t + g ( x ) ∗ s t e p g_{pred} = g_{pred} *discount + g(x)*step gpred=gpreddiscount+g(x)step
-Nesterov算法:
\qquad 解决动量算法未解决的更新抖动,其特点是:计算下一刻的梯度方向,与当前梯度方向,合并为真正的梯度更新方向。
g p r e d = [ g p r e d ∗ d i s c o u n t + g ( x − g p r e d ∗ d i s c o u n t ∗ s t e p ) ] ∗ s t e p g_{pred} = [g_{pred} *discount + g(x-g_{pred}*discount*step)] * step gpred=[gpreddiscount+g(xgpreddiscountstep)]step
-Adagrad算法:

三、强化学习基本算法

1.马尔科夫决策(MDP)

-MDP:策略与环境
\qquad s t s_t st表示 t t t 时刻状态的观测值,用 a t a_t at表示 t t t 时刻动作的选择,整个过程可用状态-行动链条表示:
{ s 0 , a 0 , s 1 , a 1 , … , s t − 1 , a t − 1 , s t } \{s_0,a_0,s_1,a_1,\dots,s_{t-1},a_{t-1},s_t\} {s0,a0,s1,a1,,st1,at1,st}
\qquad 该链条包含两种状态转换,一是状态-行动,二是行动-状态,分别由Agent和策略和环境的状态决定的。
\quad 第一种转换—策略
\qquad 策略是一种映射,它将环境的状态值 s t s_t st映射到一个行动集合的概率分布或概率密度上。对每一个行动,Agent都有一定的概率去执行且行动评价越高,概率越大。那么Agent就会选择概率最高的一种行动,即在 t t t时刻,动作为:
a t ∗ = a r g m a x a t , i p ( a t , i ∣ { s 0 , a 0 , … , s t } ) a_t^{*} = argmax_{a_{t,i}}p(a_{t,i}|\{s_0,a_0,\dots,s_t\}) at=argmaxat,ip(at,i{s0,a0,,st})
\qquad 根据马尔科夫性,下一时刻的行动只和当前时刻的状态有关,和之前状态时刻无关。公式变为:
a t ∗ = a r g m a x a i p ( a i ∣ S t ) a_t^{*} = argmax_{a_{i}}p(a_{i}|S_t) at=argmaxaip(aiSt)
\quad 第二种转换—状态转换
\qquad 当Agent完成动作后,环境会受到影响生成状态的转换。下一步的状态只受前一步状态的影响,概率表现形式为:
p ( S t + 1 ∣ S t , a t ) p(S_{t+1}|S_t,a_t) p(St+1St,at)
-值函数与Bellman公式
\qquad MDP的关键在于策略,通过量化每一个动作对实现最终目标贡献的价值,Agent就可以根据指标作出决策。
\qquad 环境提供了可以量化某一时刻的回报值 r r r,即每一个策略等同于最大化长期回报:
m a x i m i z e ∑ t r t maximize\sum_t r_t maximizetrt
\quad 求解该公式有两种困难:
\qquad 如果问题是一个无限步骤的,公式将无法计算。引入打折率 γ \gamma γ,利用无穷数列和收敛,降低未来回报对当期的影响,公式修正为:
∑ t γ t r t \sum_t \gamma ^tr_t tγtrt
\quad 长期回报定义:当前状态之后的所有回报,分别乘打折率 γ \gamma γ之和。
R t = ∑ k = 0 γ t r t + k + 1 R_t = \sum_{k=0}\gamma ^tr_{t+k+1} Rt=k=0γtrt+k+1
\qquad 另一个困难,我们无法知道未来的行动情况。为此引入策略的价值。在MDP中,状态-行动可以通过策略决定,而行动-状态由于环境的未知,有时无法确定。因此在衡量价值时,需考虑每一种状态转换的影响,所以需要基于状态转换求解长期回报的期望。令 τ \tau τ为根据策略状态转换采样得到的序列,价值公式定义为:
v π ( s t ) = E s , a ∼ τ [ ∑ k = 0 γ k r t + k + 1 ] v_\pi(s_t)=E_{s,a\sim\tau}[\sum_{k=0}\gamma^kr_{t+k+1}] vπ(st)=Es,aτ[k=0γkrt+k+1]
\qquad 根据MDP模型,值函数可以分为两类:

  • 状态值函数 v π ( s ) v_\pi(s) vπ(s):已知当前状态 s s s,按照某种策略产生长期回报期望。
  • 状态-行动值函数 q π ( s , a ) q_\pi{(s,a)} qπ(s,a):已知当前状态 s s s和动作 a a a,按照某种策略产生长期回报期望。

-值函数计算
\qquad 要计算从某个状态出发的值函数,相当于从某个策略把所有从这个状态出发的可能路径走一遍,将这些路径的长期回报依概率求期望:
v π ( s t ) = E τ [ ∑ k = 0 γ k r t + k + 1 ] = ∑ τ p ( τ ) ∑ k = 0 ∞ γ t r t + k + 1 \begin{aligned} v_\pi(s_t)&=E_\tau[\sum_{k=0}\gamma^k r_{t+k+1}]\\ &=\sum_{\tau}p(\tau)\sum_{k=0}^\infty \gamma^tr_{t+k+1} \end{aligned} vπ(st)=Eτ[k=0γkrt+k+1]=τp(τ)k=0γtrt+k+1
其中 τ \tau τ表示从状态 s t s_t st出发的某条路径。根据马尔科夫,路径可以展开为:
v π ( s t ) = ∑ ( s t , a t , …   ) ∼ τ π ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) ⋯ ∑ k = 0 γ t r t + k + 1 v_\pi(s_t)=\sum_{(s_t,a_t,\dots)\sim \tau}\pi(a_t|s_t)p(s_{t+1}|s_t,a_t)\dots\sum_{k=0}\gamma^tr_{t+k+1} vπ(st)=(st,at,)τπ(atst)p(st+1st,at)k=0γtrt+k+1
再根据代换消元法,进一步得到:
v π ( s t ) = ∑ ( s t , a t , …   ) ∼ τ π ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) ⋯ ∑ k = 0 ∞ γ t r t + k + 1 = ∑ a t π ( a t ∣ s t ) ∑ s t + 1 p ( s t + 1 ∣ s t , a t ) ∑ ( s t + 1 , a t + 1 , …   ) ∼ τ ′ π ( a t + 1 ∣ s t + 1 ) … [ r t + 1 + ∑ k = 1 ∞ γ t r t + k + 1 ] = ∑ a t π ( a t ∣ s t ) ∑ s t + 1 p ( s t + 1 ∣ s t , a t ) [ r t + 1 + ∑ ( s t + 1 , a t + 1 , …   ) ∼ τ ′ π ( a t + 1 ∣ s t + 1 ) ⋯ ∑ k = 1 ∞ γ t r t + k + 1 ] = ∑ a t π ( a t ∣ s t ) ∑ s t + 1 p ( s t + 1 ∣ s t , a t ) [ r t + 1 + v π ( s t + 1 ) ] \begin{aligned} v_\pi(s_t)&=\sum_{(s_t,a_t,\dots)\sim \tau}\pi(a_t|s_t)p(s_{t+1}|s_t,a_t)\dots\sum_{k=0}^\infty\gamma^tr_{t+k+1}\\ &=\sum_{a_t}\pi(a_t|s_t)\sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)\sum_{(s_{t+1},a_{t+1},\dots)\sim\tau^{'}}\pi(a_{t+1}|s_{t+1})\dots[r_{t+1}+\sum_{k=1}^\infty\gamma^tr_{t+k+1}]\\ &=\sum_{a_t}\pi(a_t|s_t)\sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{t+1}+\sum_{(s_{t+1},a_{t+1},\dots)\sim\tau^{'}}\pi(a_{t+1}|s_{t+1})\dots\sum_{k=1}^\infty\gamma^tr_{t+k+1}]\\ &=\sum_{a_t}\pi(a_t|s_t)\sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{t+1}+v_\pi(s_{t+1})] \end{aligned} vπ(st)=(st,at,)τπ(atst)p(st+1st,at)k=0γtrt+k+1=atπ(atst)st+1p(st+1st,at)(st+1,at+1,)τπ(at+1st+1)[rt+1+k=1γtrt+k+1]=atπ(atst)st+1p(st+1st,at)[rt+1+(st+1,at+1,)τπ(at+1st+1)k=1γtrt+k+1]=atπ(atst)st+1p(st+1st,at)[rt+1+vπ(st+1)]

\qquad 上式将值函数转换为递归的形式。假设值函数已经稳定,任意一个状态的价值可以由其他状态的价值,公式称为贝尔曼(Bellman)公式

\qquad 另一个为状态-行动值函数:
q π ( s t , a t ) = ∑ s t + 1 p ( s t + 1 ∣ s t , a t ) ∑ a t + 1 π ( a t + 1 ∣ s t + 1 ) [ r t + 1 + q π ( s t + 1 , a t + 1 ) ] q_\pi(s_t,a_t)=\sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)\sum_{a_{t+1}}\pi(a_{t+1}|s_{t+1})[r_{t+1}+q_\pi(s_{t+1},a_{t+1})] qπ(st,at)=st+1p(st+1st,at)at+1π(at+1st+1)[rt+1+qπ(st+1,at+1)]

2.策略迭代

\qquad 通过值函数的引入,强化学习就是找到最优的策略,使每一个状态的价值最大化,相当于求解:
π ∗ = a r g m a x π v π ( s ) , ∀ s \pi^*=argmax_{\pi} v_{\pi}(s),\forall s π=argmaxπvπ(s),s
\qquad 而对于每一个状态对应的行动,我们希望找到使其价值最大化的动作
a ∗ = a r g m a x a q π ∗ ( s , a ) a^*=argmax_aq_{\pi^*}(s,a) a=argmaxaqπ(s,a)
\qquad 为了求出最终的结果,需要同时更新交织在一起的策略和价值。
-策略迭代法
\qquad 策略评估(Policy Evalution)和策略提升(Policy improvement)两部分构成。由贝尔曼公式可知,迭代更新公式为:
v T ( s t ) = ∑ a t π ( a t ∣ s t ) ∑ s t + 1 p ( s t + 1 ∣ s t , a t ) [ r t + 1 + v T − 1 ( s t + 1 ) ] v^T(s_t)=\sum_{a_t}\pi(a_t|s_t)\sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{t+1}+v^{T-1}(s_{t+1})] vT(st)=atπ(atst)st+1p(st+1st,at)[rt+1+vT1(st+1)]

\qquad 再根据状态值函数计算状态-行动值函数
q ( s t , a t ) = ∑ s t + 1 p ( s t + 1 ∣ s t , a t ) [ r t + 1 + γ v ( s t + 1 ) ] q(s_t,a_t)=\sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{t+1}+\gamma v(s_{t+1})] q(st,at)=st+1p(st+1st,at)[rt+1+γv(st+1)]
\qquad 根据同一状态下的行动价值更新策略:
π ( s ) = a r g m a x a q ( s , a ) \pi(s)=argmax_a q(s,a) π(s)=argmaxaq(s,a)

3.价值迭代

\qquad 价值迭代可以看成策略评估迭代轮数为1的策略迭代法。首先将策略评估部分的两个公式合并:
π ( s ) = a r g m a x a ∑ s t + 1 p ( s t + 1 ∣ s t , a t ) [ r t + 1 + γ v ( s t + 1 ) ] \pi(s)=argmax_a\sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{t+1}+\gamma v(s_{t+1})] π(s)=argmaxast+1p(st+1st,at)[rt+1+γv(st+1)]
\qquad 对于每一个状态 s s s,最优策略 π \pi π会采取某一个行动 a a a,这种行动不会比其他行动差,我们可以得到状态值函数的更新方法:
v ( s ) ← m a x a q ( s , a ) ← m a x a ∑ s ′ p ( s ′ ∣ s , a ) [ r + γ v ( s ′ ) ] \begin{aligned} v(s) &\gets max_a q(s,a)\\ &\gets max_a\sum_{s^{'}}p(s^{'}|s,a)[r+\gamma v(s^{'})] \end{aligned} v(s)maxaq(s,a)maxasp(ss,a)[r+γv(s)]
\qquad 左右两边都出现了值函数,且左边值函数是迭代更新后的值函数,右边的值函数是上一轮的值函数。我们可以得到动态规划的解法:
走 两 步 的 最 大 奖 励 = m a x ( [ 目 标 的 一 步 奖 励 + 所 有 前 一 步 奖 励 的 情 况 ] ) 走两步的最大奖励=max([目标的一步奖励+所有前一步奖励的情况]) =max([+])

4.泛化迭代

\qquad 策略迭代的核心是策略 π \pi π,通过提升策略,值函数可以求解准确也可以求解不准确。值函数迭代的核心是值函数,核心部分没有涉及策略,直到算法后面采用值函数求出策略。
-广义迭代法
\qquad 定义一个迭代算法族,其中算法是由策略迭代和价值迭代组合而成的。由于同样的策略对应一定的值函数,同样最优的策略对应一定范围的值函数。价值迭代花费了一定时间去追求值函数最优,在下个策略时又重新花费时间进行最优求解。

四、值函数算法

1.Q-Learning

-状态转移概率
\qquad 我们将知晓状态转移概率 p p p的问题称为基于模型的问题(Model-based Problem),将不知晓状态转移的问题称为无模型问题(Model-free Problem)。
-蒙特卡洛方法
\qquad 当知晓状态转移概率时,可以用Bellman公式求解值函数:
q π ( s , a ) = ∑ s ′ p ( s ′ ∣ s , a ) [ r + γ v ( s ′ ) ] q_\pi(s,a)=\sum_{s^{'}}p(s^{'}|s,a)[r+\gamma v(s^{'})] qπ(s,a)=sp(ss,a)[r+γv(s)]
\qquad 而在无模型中,状态转移概率无法知晓,我们利用期望估计值函数,将公式转换为:
q π ( s , a ) = E s t + 1 ∼ p , π [ ∑ k = 0 ∞ γ k r t + k ] q_\pi(s,a)=E_{s_{t+1}\sim p,\pi}[\sum_{k=0}^\infty\gamma^kr_{t+k}] qπ(s,a)=Est+1p,π[k=0γkrt+k]
\qquad 采用蒙特卡洛方法去估计期望,公式可以近似等于:
q π ( s , a ) = 1 N ∑ i = 1 N ∑ k = 0 ∞ γ k r t + k q_\pi(s,a)=\frac{1}{N}\sum_{i=1}^N\sum_{k=0}^\infty\gamma^kr_{t+k} qπ(s,a)=N1i=1Nk=0γkrt+k
-蒙特卡洛的方差问题
\qquad 如果采样集合的方差比较大,那么想让均值收敛就需要更长的时间;如果采样序列的方差较小,那么收敛的速度也会相应地加快。
\qquad 导致方差的原因有很多,比如每次到达终点的时刻不一样,同一位置计算得到的长期回报也不一样。还有就是交互序列中的采样频率。一般的采样方法称为every-visit,交互序列中的每一个状态-行动对都会参与到计算中。在同一交互序列中,没有区分不同时刻到达同一位置时的值,而是将不同的长期回报等权重加在一起,这种统计方式会让方差增大。
\qquad 解决方法改用first-visit,只统计状态第一次出现时的长期回报,后面出现的同一状态不再统计。蒙特卡洛方法具有估计价值上是无偏差的但方差较高的特点。
-时序差分法(Temporal Difference 简称TD法)
\qquad TD法是一种结合了蒙特卡洛法和动态规划的方法。由状态-行动值函数的Bellman公式可知:
q π ( s , a ) = ∑ s ′ p ( s ′ ∣ s , a ) [ r ( s ′ ) + ∑ a ′ π ( a ′ ∣ s ′ ) q π ′ ( s ′ , a ′ ) ] q_\pi(s,a)=\sum_{s^{'}}p(s^{'}|s,a)[r(s^{'})+\sum_{a^{'}}\pi(a^{'}|s^{'})q_{\pi^{'}}(s^{'},a^{'})] qπ(s,a)=sp(ss,a)[r(s)+aπ(as)qπ(s,a)]
\qquad 利用蒙特卡罗法:
q π ( s , a ) = 1 N ∑ i = 1 N [ r ( s i ′ ) + γ q π ′ ( s i ′ , a i ′ ) ] q_\pi(s,a)=\frac{1}{N}\sum_{i=1}^N[r(s^{'}_i)+\gamma q_{\pi^{'}}(s^{'}_i,a^{'}_i)] qπ(s,a)=N1i=1N[r(si)+γqπ(si,ai)]
\qquad
\qquad 蒙特卡罗法在估计价值时使用了完整序列的长期回报,而TD法使用了当前回报和下一时刻的价值估计。将TD法写成迭代更新的形式:
q t ( s , a ) = q t − 1 ( s , a ) + 1 N ( r ( s ′ ) + γ q t − 1 ( s ′ , a ′ ) − q t − 1 ( s , a ) ) q_t(s,a)=q_{t-1}(s,a)+\frac{1}{N}(r(s^{'})+\gamma q_{t-1}(s^{'},a^{'})-q_{t-1}(s,a)) qt(s,a)=qt1(s,a)+N1(r(s)+γqt1(s,a)qt1(s,a))
\qquad 从形式上看,蒙特卡罗方法会通过大量的采样估计值函数的统计量,而TD法也同样需要。从更新公式上看,TD算法通过下一时刻的价值更新前一时刻的价值,似乎承认了下一个时刻的回报和价值足够优秀。
-SARSA算法
\qquad TD法属于SARSA算法的一种,该方法来源于五个关键因子:S(当前状态),A(当前动作),R(得到奖励),S(下一状态),A(下一动作)。
\qquad TD法只考虑当前一步的回报值,其余计算均使用了之前的估计值,所以当整体系统没有达到最优时,估计存在偏差,当由于只估计了一步,所以方差较小了很多。
-Q-Learning
\qquad TD法的核心公式是:
q T ( s , a ) = q T − 1 ( s , a ) + 1 N [ r ( s ′ ) + γ q T − 1 ( s ′ , a ′ ) − q T − 1 ( s , a ) ] q^T(s,a)=q^{T-1}(s,a)+\frac{1}{N}[r(s^{'})+\gamma q^{T-1}(s^{'},a^{'})-q^{T-1}(s,a)] qT(s,a)=qT1(s,a)+N1[r(s)+γqT1(s,a)qT1(s,a)]
\qquad 而另一种TD法叫做Q-Learning,基本公式为:
q T ( s , a ) = q T − 1 ( s , a ) + 1 N [ r ( s ′ ) + γ m a x a ′ q T − 1 ( s ′ , a ′ ) − q T − 1 ( s , a ) ] q^T(s,a)=q^{T-1}(s,a)+\frac{1}{N}[r(s^{'})+\gamma max_{a^{'}}q^{T-1}(s^{'},a^{'})-q^{T-1}(s,a)] qT(s,a)=qT1(s,a)+N1[r(s)+γmaxaqT1(s,a)qT1(s,a)]
\qquad Q-Learning算法没有遵从交互序列,而是在下一时刻选择了使用价值最大的行动。
-On-PolicyOff-Policy
\qquad 这两种算法分别代表了两种不同的策略评估方式,分别是On-PolicyOff-Policy。On-Policy对值函数的更新是完全依据交互序列进行的,我们在计算时认为价值可以直接使用采样的序列估计得到。Off-Policy在更新函数时并不完全遵从交互序列,而是选择来自其它策略的交互序列的子部分替换了原本的交互序列。从算法的思想上,Q-Learning结合了子部分的最优价值,更像结合了价值迭代的更新算法,希望每一次都使用前面迭代累积的最优结果进行。
\qquad Q-Learning存在着过高估计的问题,对于被采样的状态行动,Q-Learning会对其过高估计,而对于没采样到的行动,则无法享受过高估计的待遇,导致两者存在较大的差距,造成算法波动。

2.Deep Q Network(DQN)

\qquad DQN算法的整体思想是:使用Q-Learning作为优化算法,使用深层神经网络表示值函数,直接使用奖励进行训练。
\quad 两个创新:

  • Replay Buffer
    \qquad Q-Learning方法基于当前策略进行交互和改进,更像是一种在线学习(Online Learning)的方法,每一次模型利用交互生成的数据进行学习,学习后的样本被直接丢弃。但如果使用机器学习的方法存在两个问题。
    \quad 1)交互得到的序列存在一定的相关性。对于基于极大似然法的机器学习模型来说,一个重要的假设是:训练样本是独立同分布的。
    \quad 2)交互数据的使用率。采用梯度下降法进行模型更新时,模型训练往往需要经过多轮迭代才能收敛。如果每计算一次就丢弃,我们需要花费更多时间与环境交互。
    \qquad Replay Buffer保存了交互的样本信息,一般来说每一个样本都会保存当前的状态 s s s,动作 a a a和回报 r r r。Replay Buffer会从缓存中均匀随机采样一批样本进行学习。采用均匀采样,每次训练的样本通常来自多次交互的序列,这样单一序列的波动就被减轻,训练稳定,且提高了样本的利用率。
  • Target Network
    \qquad 模型不稳定的另一个原因来自算法本身。从Q-Learning的计算公式可知,算法分成两部分:
    \quad 1)计算当前状态行动下的价值目标值: Δ q ( s , a ) = r ′ ( s ′ ) + γ m a x a ′ q T − 1 ( s ′ , a ′ ) \Delta q(s,a)=r^{'}(s^{'})+\gamma max_{a^{'}}q^{T-1}(s^{'},a^{'}) Δq(s,a)=r(s)+γmaxaqT1(s,a)
    \quad 2)网络模型的更新: q T ( s , a ) = q T − 1 ( s , a ) + 1 N [ Δ q ( s , a ) − q T − 1 ( s , a ) ] q^T(s,a)=q^{T-1}(s,a)+\frac{1}{N}[\Delta q(s,a)-q^{T-1}(s,a)] qT(s,a)=qT1(s,a)+N1[Δq(s,a)qT1(s,a)]
    \qquad 作者通过引入Target Network对两部分解耦,Target Network与原本模型(Behvior Network),结构完全一样。在训练一定轮数后,将Behvior Network的模型参数同步给Target Network。

-伪代码

3.DQN算法的改进

-Double Q-Learning
\qquad DQN通过引入Target Network解决了Q-Learning训练的稳定性,但Q-Learning依然存在价值过高估计的问题。我们知道Target Network求解价值目标值的公式:
y j = r j + 1 + γ m a x a ′ Q ( s j + 1 , a ′ ; θ − ) y_j=r_{j+1} + \gamma max_{a^{'}}Q(s_{j+1},a^{'};\theta^-) yj=rj+1+γmaxaQ(sj+1,a;θ)
\qquad 将公式进一步展开:
y j = r j + 1 + γ Q ( s j + 1 , a r g m a x a ′ Q ( s j + 1 , a ′ ; θ − ) ; θ − ) y_j=r_{j+1} + \gamma Q(s_{j+1},argmax_{a^{'}}Q(s_{j+1},a^{'};\theta^-);\theta^-) yj=rj+1+γQ(sj+1,argmaxaQ(sj+1,a;θ);θ)
\qquad 模型在选择最优行动和计算目标值时使用了相同的Target网络,这样必然会造成对价值的过高估计。将选择最优行动和估计最优行动两个部分分离,得到:
y j = r j + 1 + γ Q ( s j + 1 , a r g m a x a ′ Q ( s j + 1 , a ′ ; θ ) ; θ − ) y_j=r_{j+1} + \gamma Q(s_{j+1},argmax_{a^{'}}Q(s_{j+1},a^{'};\theta);\theta^-) yj=rj+1+γQ(sj+1,argmaxaQ(sj+1,a;θ);θ)
-Dueling DQN
\qquad 定义公式:
q ( s t , a t ) = v ( s t ) + A ( s t , a t ) q(s_t,a_t)=v(s_t)+A(s_t,a_t) q(st,at)=v(st)+A(st,at)
\qquad 状态-行动值函数 q q q可以分解成状态值函数 v v v和优势函数 A A A。由于存在:
E a t [ q ( s t , a t ) ] = v ( s t ) E_{a_t}[q(s_t,a_t)]=v(s_t) Eat[q(st,at)]=v(st)
\qquad 优势函数可以表现出当前行动和平均表现之间的区别:优于平均表现,优势函数为正;反之为负。为了限制 A A A函数的输出,将公式变为:
q ( s t , a t ) = v ( s t ) + ( A ( s t , a t ) − 1 ∣ A ∣ ∑ a ′ A ( s t , a t ′ ) ) q(s_t,a_t)=v(s_t)+(A(s_t,a_t)-\frac{1}{|A|}\sum_{a^{'}}A(s_t,a_t^{'})) q(st,at)=v(st)+(A(st,at)A1aA(st,at))
-DQN冷启动
\qquad 以值函数为核心的Q-Learning,前期的算法迭代很难让模型快速进入到一个相对理想的环境,更何况估计存在较大的偏差。主要思路是利用预先准备好的优质采样轨迹加快模型前期的训练速度。最终模型的目标函数变成了多个学习目标的组合形式:
J ( q ) = J D Q ( q ) + λ 1 J n ( q ) + λ 2 J E ( q ) + λ 3 J L 2 ( q ) J(q)=J_{DQ}(q)+\lambda_1J_n(q)+\lambda_2J_E(q)+\lambda_3J_{L_2}(q) J(q)=JDQ(q)+λ1Jn(q)+λ2JE(q)+λ3JL2(q)
\qquad 其中 J D Q J_{DQ} JDQ是Deep Q-Learning的目标函数。 J n J_{n} Jn n n n步回报估计法为目标的Q-Learning目标函数。 J E J_{E} JE利用准备数据进行监督学习的目标函数。 J L 2 J_{L_2} JL2 L 2 L_2 L2正则的目标函数。Q-Learning在计算某个状态-行动值函数时,采用了如下估计:
q ′ ( s t , a t ) = r t + 1 + γ m a x a q ( s t + 1 , a ) q^{'}(s_t,a_t)=r_{t+1}+\gamma max_aq(s_{t+1},a) q(st,at)=rt+1+γmaxaq(st+1,a)
\qquad 这种方法存在着训练波动的时期,为了使模型更快稳定,将更多时刻的回报加入目标函数中。
q ′ ( s t , a t ) = r t + 1 + γ r r + 2 + ⋯ + γ n − 1 r r + n + γ n m a x a q ( s t + 1 , a ) q^{'}(s_t,a_t)=r_{t+1}+\gamma r_{r+2}+\dots+\gamma^{n-1} r_{r+n}+\gamma ^nmax_aq(s_{t+1},a) q(st,at)=rt+1+γrr+2++γn1rr+n+γnmaxaq(st+1,a)
\qquad 上式称为n步回报估计法,在公式中使用更多真实回报,值函数更容易在早期快速更新。对于监督学习的引入,为了避免少量数据和噪声对真正行动的影响,目标公式被定义为:
m a x a ∈ A [ Q ( s , a ) + l ( a E , a ) ] − Q ( s , a E ) max_{a\in A}[Q(s,a)+l(a_E,a)]-Q(s,a_E) maxaA[Q(s,a)+l(aE,a)]Q(s,aE)
\qquad a E a_E aE表示当前状态下专家给出的行动, l ( x , y ) l(x,y) l(x,y)是一个指示函数,当模型选择的行动与 a E a_E aE相同时,函数值为0;不同时,为固定的值。当模型行动与专家一致时,目标函数为0;相反,则说明模型有不弱于专家行动太多价值的行动。
-Distrubtional DQN
-Noisy Network
-Rainbow

五、策略梯度算法

1.策略梯度法(Policy Gradient)

\qquad 强化学习的目标是最大化长期回报,目标可以写作:
π ∗ = a r g m a x π E τ ∼ π ( τ ) [ r ( τ ) ] \pi^*=argmax_\pi E_{\tau\sim\pi(\tau)}[r(\tau)] π=argmaxπEτπ(τ)[r(τ)]
\qquad 其中 τ \tau τ可以表示使用策略进行交互的一条轨迹, r ( τ ) r(\tau) r(τ)表示这条轨迹的总体回报。由于值函数也是函数,我们可以利用梯度方法求解策略参数的更新方向,从而提升策略。
-算法推导
\qquad J ( θ ) J(\theta) J(θ)表示前面提到的目标函数,将轨迹的期望展开可得到:
J ( θ ) = E τ ∼ π ( τ ) [ r ( τ ) ] = ∫ τ ∼ π θ ( τ ) π θ ( τ ) r ( τ ) d τ J(\theta)=E_{\tau\sim\pi(\tau)}[r(\tau)]=\int_{\tau\sim\pi_\theta(\tau)}\pi_\theta(\tau)r(\tau)d\tau J(θ)=Eτπ(τ)[r(τ)]=τπθ(τ)πθ(τ)r(τ)dτ
\qquad 对公式求导,由于策略函数通常是定义良好的函数,所以求导运算可以和积分运算互换,得到:
∇ J ( θ ) = ∫ τ ∼ π θ ( τ ) ∇ θ π θ ( τ ) r ( τ ) d τ \nabla J(\theta)=\int_{\tau\sim\pi_\theta(\tau)}\nabla_\theta\pi_\theta(\tau)r(\tau)d\tau J(θ)=τπθ(τ)θπθ(τ)r(τ)dτ
\qquad 用对数求导基本公式:
y ∇ x l o g y = ∇ x y y\nabla_xlogy=\nabla_xy yxlogy=xy
\qquad 得到:
∇ θ π θ ( τ ) = π θ ( τ ) ∇ θ l o g π θ ( τ ) \nabla_\theta \pi_\theta(\tau)=\pi_\theta(\tau)\nabla_\theta log\pi_\theta(\tau) θπθ(τ)=πθ(τ)θlogπθ(τ)
\qquad 代入前面公式可得到:
∇ J ( θ ) = ∫ τ ∼ π θ ( τ ) π θ ( τ ) ∇ θ l o g π θ ( τ ) r ( τ ) d τ = E τ ∼ π θ ( τ ) [ ∇ θ l o g π θ ( τ ) r ( τ ) ] \begin{aligned} \nabla J(\theta)&=\int_{\tau\sim\pi_\theta(\tau)}\pi_\theta(\tau)\nabla_\theta log\pi_\theta(\tau)r(\tau)d\tau\\ &=E_{\tau\sim\pi_\theta(\tau)}[\nabla_\theta log\pi_\theta(\tau)r(\tau)] \end{aligned} J(θ)=τπθ(τ)πθ(τ)θlogπθ(τ)r(τ)dτ=Eτπθ(τ)[θlogπθ(τ)r(τ)]
\qquad 上式依旧存在不易计算的 ∇ θ l o g π θ ( τ ) \nabla_\theta log\pi_\theta(\tau) θlogπθ(τ)。假设轨迹的总长度为 T T T,将其展开为:
π ( τ ) = π ( s 0 , a 0 , … , s T , a T ) = p ( s 0 ) ∏ t = 0 T π θ ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) \begin{aligned} \pi(\tau)&=\pi(s_0,a_0,\dots,s_T,a_T)\\ &=p(s_0)\prod_{t=0}^T\pi_\theta(a_t|s_t)p(s_{t+1}|s_t,a_t) \end{aligned} π(τ)=π(s0,a0,,sT,aT)=p(s0)t=0Tπθ(atst)p(st+1st,at)
\qquad 对其求导,可以得到:
∇ θ l o g π ( τ ) = ∇ θ l o g [ p ( s 0 ) ∏ t = 0 T π θ ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) ] = ∇ θ [ l o g p ( s 0 ) + ∑ t = 0 T l o g π θ ( a t ∣ s t ) + ∑ t = 0 T l o g p ( s t + 1 ∣ s t , a t ) ] = ∑ t = 0 T ∇ θ l o g π θ ( a t ∣ s t ) \begin{aligned} \nabla_\theta log\pi(\tau)&=\nabla_\theta log[p(s_0)\prod_{t=0}^T\pi_\theta(a_t|s_t)p(s_{t+1}|s_t,a_t)]\\ &=\nabla_\theta [logp(s_0)+\sum_{t=0}^Tlog\pi_\theta(a_t|s_t)+\sum_{t=0}^Tlogp(s_{t+1}|s_t,a_t)]\\ &=\sum_{t=0}^T\nabla_\theta log\pi_\theta(a_t|s_t) \end{aligned} θlogπ(τ)=θlog[p(s0)t=0Tπθ(atst)p(st+1st,at)]=θ[logp(s0)+t=0Tlogπθ(atst)+t=0Tlogp(st+1st,at)]=t=0Tθlogπθ(atst)
\qquad 用蒙特卡罗的方法改写期望:
∇ θ J ( θ ) = E τ ∼ π θ ( τ ) [ ∑ t = 0 T ∇ θ l o g π θ ( s t , a t ) ( ∑ t = 0 T r ( s t , a t ) ) ] = 1 N ∑ i = 1 N [ ∑ t = 0 T ∇ θ l o g π θ ( s i , t , a i , t ) ( ∑ t = 0 T r ( s i , t , a i , t ) ) ] \begin{aligned} \nabla_\theta J(\theta)&=E_{\tau\sim\pi_\theta(\tau)}[\sum_{t=0}^T\nabla_\theta log\pi_\theta(s_t,a_t)(\sum_{t=0}^Tr(s_t,a_t)) ]\\ &=\frac{1}{N}\sum_{i=1}^N[\sum_{t=0}^T\nabla_\theta log\pi_\theta(s_{i,t},a_{i,t})(\sum_{t=0}^Tr(s_{i,t},a_{i,t})) ] \end{aligned} θJ(θ)=Eτπθ(τ)[t=0Tθlogπθ(st,at)(t=0Tr(st,at))]=N1i=1N[t=0Tθlogπθ(si,t,ai,t)(t=0Tr(si,t,ai,t))]
\quad Policy Gradient方法分为两步:

  • 计算 ∇ θ J ( θ ) \nabla_\theta J(\theta) θJ(θ)
  • θ ~ = θ + α ∇ θ J ( θ ) \widetilde\theta=\theta +\alpha\nabla_\theta J(\theta) θ =θ+αθJ(θ)

\qquad 在公式中要用策略的梯度乘以所有时刻的回报值总和,这种设计显然不合理。在 t t t时刻的决策,它最多只能影响 t t t时刻之后的所有回报,公式改写成:
∇ θ J ( θ ) = 1 N ∑ i = 1 N [ ∑ t = 0 T ∇ θ l o g π θ ( s i , t , a i , t ) ( ∑ t ′ = t T r ( s i , t ′ , a i , t ′ ) ) ] \nabla_\theta J(\theta)=\frac{1}{N}\sum_{i=1}^N[\sum_{t=0}^T\nabla_\theta log\pi_\theta(s_{i,t},a_{i,t})(\sum_{t^{'}=t}^Tr(s_{i,t^{'}},a_{i,t^{'}})) ] θJ(θ)=N1i=1N[t=0Tθlogπθ(si,t,ai,t)(t=tTr(si,t,ai,t))]
\qquad 在强化学习中:提高能最大化长期回报策略的概率,降低无法最大化长期回报策略的概率。转换为公式理解就是,让能最大化长期回报的策略的权重为正且尽可能大,让不能最大化长期回报的策略的权重为负且尽可能小。
∇ θ J ( θ ) = 1 N ∑ i = 1 N [ ∑ t = 0 T ∇ θ l o g π θ ( s i , t , a i , t ) ( ∑ t ′ = t T r ( s i , t ′ , a i , t ′ ) − b i , t ′ ) ] \nabla_\theta J(\theta)=\frac{1}{N}\sum_{i=1}^N[\sum_{t=0}^T\nabla_\theta log\pi_\theta(s_{i,t},a_{i,t})(\sum_{t^{'}=t}^Tr(s_{i,t^{'}},a_{i,t^{'}})-b_{i,t^{'}}) ] θJ(θ)=N1i=1N[t=0Tθlogπθ(si,t,ai,t)(t=tTr(si,t,ai,t)bi,t)]
\qquad 这个变量被设计为同一起点的不同序列在同一时刻的长期回报均值:
b i , t ′ = 1 N ∑ i = 1 N ∑ t ′ = t T r ( s i , t ′ , a i , t ′ ) b_{i,t^{'}}=\frac{1}{N}\sum_{i=1}^N\sum_{t^{'}=t}^Tr(s_{i,t^{'}},a_{i,t^{'}}) bi,t=N1i=1Nt=tTr(si,t,ai,t)
\qquad 经过处理后,所有时刻的权重变为0,就存在有正有负的行动,且权重的绝对值也得到了缩小。更重要的是,加入偏移量并不会使原本计算值有偏:
E [ ∇ θ l o g π θ ( τ ) b ] = ∫ τ ∼ π θ ( τ ) π θ ( τ ) ∇ θ l o g π θ ( τ ) b d τ = ∫ τ ∼ π θ ( τ ) ∇ θ π θ ( τ ) b d τ = b ∇ θ ∫ τ ∼ π θ ( τ ) π θ ( τ ) d τ = b ∇ θ 1 = 0 \begin{aligned} E[\nabla_\theta log\pi_\theta(\tau)b]&=\int_{\tau\sim\pi_\theta(\tau)}\pi_\theta(\tau)\nabla_\theta log\pi_\theta(\tau)bd\tau\\ &=\int_{\tau\sim\pi_\theta(\tau)}\nabla_\theta\pi_\theta(\tau)bd\tau\\ &=b\nabla_\theta\int_{\tau\sim\pi_\theta(\tau)}\pi_\theta(\tau)d\tau\\ &=b\nabla_\theta1\\ &=0 \end{aligned} E[θlogπθ(τ)b]=τπθ(τ)πθ(τ)θlogπθ(τ)bdτ=τπθ(τ)θπθ(τ)bdτ=bθτπθ(τ)πθ(τ)dτ=bθ1=0

2.Actor-Critic 算法

\qquad 在策略梯度法中,我们用轨迹的回报表示整个序列的价值,这种表示的无偏的。但是在真实的训练中,往往只会进行有限次数的交互,这些交互会给轨迹带来较大的方差。对于Actor-Critic算法来说,用一个独立的模型估计轨迹的长期回报,而不直接使用轨迹的真实回报。模型替代有四种情况:

  • 采用策略梯度法: ∑ t ′ = t T r ( s i , t ′ , a i , t ′ ) − b i \sum_{t^{'}=t}^Tr(s_{i,t^{'}},a_{i,t^{'}})-b_i t=tTr(si,t,ai,t)bi
  • 使用状态值函数估计轨迹的回报: q ( s , a ) q(s,a) q(s,a)
  • 直接使用优势函数估计轨迹的回报: A ( s , a ) = q ( s , a ) − V ( s ) A(s,a)=q(s,a)-V(s) A(s,a)=q(s,a)V(s)
  • 使用TD-Error估计轨迹的回报: r ( s r , a t ) + v ( s t + 1 ) − v ( s ) r(s_r,a_t)+v(s_{t+1})-v(s) r(sr,at)+v(st+1)v(s)

\qquad 以上的方法都能降低算法的方差,Actor-Critic算法选择了第四种。算法包含了两个模型,一个策略模型和一个价值模型。Actor表示策略模型,Critic表示价值模型。
-A3C算法和A2C算法
\qquad A3C(Asynchronous Advantage Actor-Critic)算法突出了异步优势两个概念。A2C(Advantage Actor-Critic)算法采用了同步方法进行优化。A3C是on-policy的学习方式,需要更快的收集样本,采用并行的方式。在A3C中,同时使用N个线程,每一个线程中的环境设定不同,线程得到的序列就不会完全一样。收集样本后,每一个线程将独立完成训练并得到参数的更新量,并异步更新到全局的模型参数中。下一次训练时,线程的模型参数将和全局参数完成同步。
\qquad 为了更好平衡方差和偏差,采用了多步回报估计法:
∑ i = 1 n γ i − 1 r t + 1 + v ( s t + n ) − v ( s t ) \sum_{i=1}^n\gamma^{i-1}r_{t+1}+v(s_{t+n})-v(s_t) i=1nγi1rt+1+v(st+n)v(st)
\qquad 为了增加模型的探索性,加入了策略的熵。由于熵可以衡量模型的概率分布的不确定性,我们希望模型的熵尽可能大,模型就可以拥有更好的多样性。
∇ θ J ( θ ) = 1 N ∑ i = 1 N [ ∑ t = 0 T ∇ θ l o g π θ ( s i , t , a i , t ) ( ∑ i = 1 n γ i − 1 r t + 1 + v ( s t + n ) − v ( s t ) ) + β ∇ θ H ( π ( s t ; θ ) ) ] \nabla_\theta J(\theta)=\frac{1}{N}\sum_{i=1}^N[\sum_{t=0}^T\nabla_\theta log\pi_\theta(s_{i,t},a_{i,t})(\sum_{i=1}^n\gamma^{i-1}r_{t+1}+v(s_{t+n})-v(s_t)) +\beta\nabla_\theta H(\pi(s_t;\theta))] θJ(θ)=N1i=1N[t=0Tθlogπθ(si,t,ai,t)(i=1nγi1rt+1+v(st+n)v(st))+βθH(π(st;θ))]
\qquad β \beta β为策略的熵在目标下的权重。异步与同步更新并不是决定算法的优劣的主要原因,因此基于同步更新的A2C算法被提出来。A2C将决策和训练的任务集中到一处,其他进程之负责环境模拟的工作。

3.策略单调提升算法

\qquad DQN和A3C算法都存在着波动性的问题,因此策略单调提升算法被提出。
-置信区域策略优化(Trust Region Policy Optimization,TRPO)

-近端策略优化(Proximal Policy Optimization, PPO)

4.Off-Policy策略梯度算法

-Retrace

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值