强化学习相关问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37895339/article/details/83315720

一次看到苏克在知乎写的强化学习问题,自己顺便学习了一下,可能总结有不对的地方,希望朋友们指出。

1. 强化学习与监督学习的区别

强化学习就是通过不断与环境交互,利用环境给出的奖惩来不断的改进策略(即在什么状态下采取什么动作),以求获得最大的累积奖惩。

主要区别:

  1. 监督学习的训练样本是有标签的,强化学习的训练是没有标签的,是通过不断与环境交互获得奖惩来学习的。
  2. 监督学习的过程是静态的,强化学习的过程是动态的。动静态是指是否与环境交互。监督学习是给什么样本就学得什么,强化学习是根据与环境交互的奖惩来学习。
  3. 强化学习更侧重于决策问题。监督学习更侧重执行问题。

2. 强化学习解决序列决策问题

3. 马尔科夫决策过程

马尔可夫决策过程是指决策者周期地或连续地观察具有马尔可夫性的随机动态系统,序贯地作出决策。即根据每个时刻观察到的状态,从可用的行动集合中选用一个行动作出决策,系统下一步(未来)的状态是随机的,并且其状态转移概率具有马尔可夫性。决策者根据新观察到的状态,再作新的决策,依此反复地进行。马尔可夫性是指一个随机过程未来发展的概率规律与观察之前的历史无关的性质。马尔可夫性又可简单叙述为状态转移概率的无后效性。状态转移概率具有马尔可夫性的随机过程即为马尔可夫过程。马尔可夫决策过程又可看作随机对策的特殊情形,在这种随机对策中对策的一方是无意志的。马尔可夫决策过程还可作为马尔可夫型随机最优控制,其决策变量就是控制变量。

4. 最优值函数与最优策略为什么等价

π \pi 为原策略, π \pi' 为改进后策略。
V π ( x ) Q π ( x , π ( x ) ) = x X P π ( x ) [ R x x π ( x ) + γ V π ( x ) ] x X P π ( x ) [ R x x π ( x ) + γ Q π ( x , π ( x ) ) ] = . . . = V π ( x ) V^\pi(x)\le Q^\pi(x,\pi'(x))=\sum_{x'\in X}P^{\pi'(x)}[R_{x-\to x'}^{\pi'(x)}+\gamma V^\pi(x')]\\ \le \sum_{x'\in X}P^{\pi'(x)}[R_{x-\to x'}^{\pi'(x)}+\gamma Q^\pi(x',\pi'(x'))]=...=V^{\pi'}(x)
由此可得值函数对于策略的每一点改进都是单调的,策略改进与值函数的改进是一致的,因此可将值函数的改进视为策略改进。

5. 求解马尔科夫决策过程都有哪些方法?有模型用什么方法?动态规划是怎么回事?

  1. 求解马尔科夫决策过程都有哪些方法?有模型用什么方法?
    策略迭代,值迭代。
  2. 动态规划是怎么回事?
    求解决策过程最优化的方法,把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系逐个求解,可以认为每个单阶段任务之前的多阶段过程是最优的,在之前最优的基础上选出当前阶段最优的决策。其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
    贝尔曼公式就是一个动态规划的过程。

6. 基于蒙特卡洛的强化学习方法

on-policy与off-policy

7. DP,MC,TD方法的异同

  1. DP有模型学习,利用后继状态的值函数估计当前状态值函数。——利用模型估计当前值函数,利用模型得到后继状态。
  2. MC,当没有模型时,后继状态无法完全得到,且没有状态转移概率,只能通过采样求平均的方法得到。相比于DP,MC需要一次多步实验结束才能改进一次策略,效率低。——利用采样求平均估计当前值函数
  3. TD,将DP与MC相结合,利用 R x x a + Q ( x , a ) R^a_{x\to x'}+Q(x',a') 来估计当前值函数。——DP与MC结合估计当前值函数。利用试验得到后继状态。

8. MC和TD分别是无偏估计吗,为什么?MC、TD谁的方差大,为什么?

  1. MC,MC的返回值为 G t = R t + 1 + γ R t + 2 + . . . + γ T 1 R T G_t=R_{t+1}+\gamma R_{t+2}+...+\gamma^{T-1}R_T G t = 1 T t i = t + 1 T R t G_t=\frac{1}{T-t}\sum_{i=t+1}^T R_t ,是对采样求平均,其就是值函数的定义,因此MC是无偏估计。但是非常依赖每一次的采样值,因此方差会很大。
  2. TD,TD利用的是 G t = R t + 1 + γ V ( x t + 1 ) G_t = R_{t+1}+\gamma V(x_{t+1}) ,若 V ( x t + 1 ) V(x_{t+1}) 为无偏的,则TD也为无偏估计,但是 V ( x t + 1 ) V(x_{t+1}) 为估计值,则TD是有偏的。由于TD只利用一次采样,因此对采样依赖小,随机性相对MC小,因此方差较小。

9. 写出用第n步的值函数更新当前值函数的公式(1-step,2-step,n-step的意思)。当n的取值变大时,偏差和方差分别变大、变小?

TD只利用下一个状态的值函数,如何利用第二个,第三个,…值函数呢?
G t 1 = R t + 1 + γ V ( s t + 1 ) G_t^1=R_{t+1}+\gamma V(s_{t+1}) 表示TD目标,利用第二步状态更新值函数为 G t 2 = R t + 1 + γ R t + 2 + γ 2 V ( s t + 2 ) G_t^2=R_{t+1}+\gamma R_{t+2}+ \gamma^2 V(s_{t+2}) ,利用第n步状态更新值函数为 G t n = R t + 1 + γ R t + 2 + . . . + γ n 1 V ( s t + n ) G_t^n=R_{t+1}+\gamma R_{t+2} + ... + \gamma^{n-1} V(s_{t+n}) .
n越大时方差变大,期望偏差变小。

10. TD(λ)方法:当λ=0时实际上与哪种方法等价,λ=1呢?

λ = 0 \lambda=0 时,等价于TD。
λ = 1 \lambda=1 时,等价于MC。

11. T D ( λ ) TD(\lambda)

对n个估计值利用加权的方法融合。
G t λ = ( 1 λ ) G t 1 + ( 1 λ ) λ G t 2 + ( 1 λ ) λ 2 G t 3 + . . . + ( 1 λ ) λ n 1 G t n [ ( 1 λ ) + ( 1 λ ) λ + ( 1 λ ) λ 2 + . . . + ( 1 λ ) λ n 1 ] V ( s t ) = V ( s t ) G_t^\lambda=(1-\lambda)G_t^1+(1-\lambda)\lambda G_t^2 + (1-\lambda)\lambda^2G_t^3+...+(1-\lambda)\lambda^{n-1}G_t^n\\ \approx [(1-\lambda)+(1-\lambda)\lambda+(1-\lambda)\lambda^2+...+(1-\lambda)\lambda^{n-1}]V(s_t)=V(s_t)
因此也可以利用 G t λ G_t^\lambda 来更新当前的状态值函数。

前向视角

V ( s t ) = V ( s t ) + α ( G t λ V ( s t ) ) G t λ = ( 1 λ ) G t 1 + ( 1 λ ) λ G t 2 + ( 1 λ ) λ 2 G t 3 + . . . + ( 1 λ ) λ n 1 G t n G t n = R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . + γ n 1 R t + n + γ n V ( s t + n ) V(s_t)=V(s_t)+\alpha(G_t^\lambda-V(s_t))\\ G_t^\lambda=(1-\lambda)G_t^1+(1-\lambda)\lambda G_t^2 + (1-\lambda)\lambda^2 G_t^3+...+(1-\lambda)\lambda^{n-1} G_t^{n}\\ G_t^n = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + ...+\gamma^{n-1} R_{t+n} + \gamma^n V(s_{t+n})
λ = 0 \lambda=0 时, G t λ = G t 1 G_t^\lambda=G_t^1 ,等价于MC方法。

后向视角

1.首先计算当前状态的TD偏差: δ t = R t + 1 + γ V ( s t + 1 ) V ( s t ) \delta_t=R_{t+1}+\gamma V(s_{t+1})-V(s_t) .
2.更新适合度轨迹:
E t ( s ) = { γ λ E t 1 , i f s s t γ λ E t 1 + 1 , i f s = s t E_t(s)=\left\{ \begin{array}{lr} \gamma \lambda E_{t-1},\qquad &if s\ne s_t \\ \gamma \lambda E_{t-1}+1, &if s = s_t \end{array} \right.
3.对于状态空间的每个状态s,更新值函数 V ( s ) = V ( s ) + α δ t E t ( s ) V(s)=V(s)+\alpha \delta_t E_t(s)

给出一个 S A R S E ( λ ) SARSE(\lambda) 的伪代码:

1.初始化Q(s,a),给定参数 λ , γ , α \lambda,\gamma,\alpha
2.Repeat:
 给定起始状态s,并根据 ϵ \epsilon 贪心策略在状态s处选择动作a,对所有 s S , a A ( s ) , E ( s , a ) = 0 s\in S,a\in A(s),E(s,a)=0
   Repeat(对于一幕的每一步)
    (a)根据 ϵ \epsilon 贪心策略在状态s处选择动作a,得到回报r和下一状态 s s' ,在状态 s s' 根据 ϵ \epsilon 贪心策略得到 a a'
    (b) δ = r + γ Q ( s , a ) Q ( s , a ) \delta=r+\gamma Q(s',a')-Q(s,a) E ( s , a ) = E ( s , a ) + 1 E(s,a)=E(s,a)+1
    (c)对于所有 s S , a A s\in S, a \in A : Q ( s , a ) = Q ( s , a ) + α δ E ( s , a ) Q(s,a) = Q(s,a)+\alpha \delta E(s,a) , E ( s , a ) = λ γ E ( s , a ) E(s,a)=\lambda \gamma E(s,a)
    (d) s = s , a = a s=s',a=a'
   Until: s为最终状态
  Until: Q(s,a)收敛
3.输出最终策略: π ( s ) = a r g m a x a A Q ( s , a ) \pi(s)=argmax_{a\in A}Q(s,a)

前向与后向视角的差异

1.前向需要等一次试验完全结束后才能更新一次现在的状态值函数;后向不需要一次实验完全结束,每一步都能更新值函数,采用增量形式。
2.前向在一次试验结束更新完当前状态值函数后,此状态的值函数就不再改变了。而后向,在每一步计算完当前的TD误差后,其他状态的值函数都需要利用当前状态的TD误差进行更新。
3.一次试验结束后,前向后向每个状态更新总量是相等的。

λ = 1 \lambda=1

δ t + γ δ t + 1 + γ 2 δ t + 2 + . . . + γ n δ t + n = R t + 1 + γ V ( s t + 1 ) V ( s t ) + γ R t + 2 + γ 2 V ( s t + 2 ) V ( s t + 1 ) + γ 2 R t + 3 + γ 3 V ( s t + 3 ) V ( s t + 2 ) . . . + γ T 1 t R T + γ T t V ( s T t ) γ T 1 t V ( s T t ) \delta_t+\gamma \delta_{t+1}+\gamma^2 \delta_{t+2}+...+\gamma^n \delta_{t+n} =R_{t+1}+\gamma V(s_{t+1}) - V(s_t)\\ +\gamma R_{t+2} + \gamma^2 V(s_{t+2}) - V(s_{t+1})\\ +\gamma^2 R_{t+3} + \gamma^3 V(s_{t+3}) - V(s_{t+2})\\ ...\\ +\gamma^{T-1-t}R_T + \gamma^{T-t}V(s_{T-t})- \gamma^{T-1-t}V(s_{T-t})
等价于MC方法。

12. 值函数参数化,值函数近似

值函数能表达为状态的线性函数
V θ ( x ) = θ T x V_\theta(x)=\theta^T x
x为状态向量, θ \theta 为参数。我们希望线性参数化的值函数能够逼近真实值函数,因此有一下代价函数
E θ = E x π [ ( V π ( x ) V θ ( x ) ) 2 ] E_\theta=E_{x \sim \pi}[(V^\pi(x)-V_\theta(x))^2]
求迭代的负梯度得

E θ θ = E x π [ 2 ( V π ( x ) V θ ( x ) ) V θ ( x ) θ ] = E x π [ 2 ( V π ( x ) V θ ( x ) ) x ] -\frac{\partial E_\theta}{\partial \theta}=E_{x\sim \pi}[2(V^\pi(x)-V_\theta(x))\frac{\partial V_\theta(x)}{\partial \theta}]\\ =E_{x\sim \pi}[2(V^\pi(x)-V_\theta(x))x]

因此 θ \theta 的迭代公式可以写为,借用TD的思想

θ = θ + α ( V π ( x ) V θ ( x ) ) x = θ + α ( r + γ V θ ( x ) V θ ( x ) ) x = θ + α ( r + γ θ T x θ T x ) x \theta = \theta+\alpha(V^\pi(x) - V_\theta(x))x\\ =\theta + \alpha(r+\gamma V_\theta(x')-V_\theta(x))x \\ =\theta + \alpha(r+\gamma \theta^Tx' - \theta^Tx)x

猜你喜欢

转载自blog.csdn.net/weixin_37895339/article/details/83315720