RL夏令营第一讲回顾--强化学习介绍和Value-Based方法

动态规划

如果我们对环境的所有信息都了解,那么便可以用动态规划来求解问题。但是对于RL问题,大多数情况下我们是不知道环境的所有信息的,即不知道 P s s ′ a \mathscr{P}_{s s^{\prime}}^{a} Pssa R s ′ a \mathscr{R}_{s^{\prime}}^{a} Rsa,于是我们就不能直接应用贝尔曼方程。

  • 对于预测问题:
    • 输入:MDP模型和策略 π \pi π
      • 输出:值函数 v π v_{\pi} vπ
  • 对于控制问题
    • 输入:MDP模型
    • 输出:最优值函数 v ∗ v_{*} v π ∗ \pi_{*} π

策略评价(Policy Evaluation)

问题:对于给定的策略 π \pi π来计算值函数。
解决方法:对贝尔曼期望方程进行反向迭代。
如下图的更新方式:
在这里插入图片描述

策略提升(Policy Improvement)

  • 考虑一种确定性的策略 a = π ( s ) a = \pi(s) a=π(s)
  • 可以采用贪婪的方法得到更好地策略,也就是策略提升
    π ′ ( s ) = argmax ⁡ a ∈ A q π ( s , a ) \pi^{\prime}(s)=\underset{a \in \mathscr{A}}{\operatorname{argmax}} q_{\pi}(s, a) π(s)=aAargmaxqπ(s,a)
    如果满足下式在,则策略提升可以停止:
    q π ( s , π ′ ( s ) ) = max ⁡ a ∈ A q π ( s , a ) = q π ( s , π ( s ) ) = v π ( s ) q_{\pi}\left(s, \pi^{\prime}(s)\right)=\max _{a \in \mathscr{A}} q_{\pi}(s, a)=q_{\pi}(s, \pi(s))=v_{\pi}(s) qπ(s,π(s))=aAmaxqπ(s,a)=qπ(s,π(s))=vπ(s)
    因为此时贝尔曼最优方程已经满足:
    v π ( s ) = max ⁡ a ∈ A q π ( s , a ) v_{\pi}(s)=\max _{a \in \mathscr{A}} q_{\pi}(s, a) vπ(s)=aAmaxqπ(s,a)
    所以此时的策略 π \pi π是最优策略。

策略迭代

在这里插入图片描述
对于策略迭代来说要学到最优策略不用等到 v π ( s ) v_{\pi}(s) vπ(s)收敛。

价值迭代

问题:找到最优策略 π \pi π
解决方法:利用贝尔曼最优方程反向迭代
在这里插入图片描述

model free的方法

对于model-based方法,我们选择策略的时候采用的是如下的方式:
π ′ ( s ) = arg ⁡ max ⁡ a ∈ A ( R s a + P s s ′ a V ( s ′ ) ) \pi^{\prime}(s)=\underset{a \in \mathscr{A}}{\arg \max }\left(\mathscr{R}_{s}^{a}+\mathscr{P}_{s s^{\prime}}^{a} V\left(s^{\prime}\right)\right) π(s)=aAargmax(Rsa+PssaV(s))
而对于model-free的方法,我们无法知道状态转移矩阵和奖励函数的大小,所以我们需要用Q函数来进行greedy采样:
π ′ ( s ) = arg ⁡ max ⁡ a ∈ A Q ( s , a ) \pi^{\prime}(s)=\underset{a \in \mathscr{A}}{\arg \max } Q(s, a) π(s)=aAargmaxQ(s,a)

Off-Poicy Learning

Off-Policy的意思就是通过follow行为策略(behavior policy) μ ( a ∣ s ) \mu(a|s) μ(as),来评价目标策略(target policy) π ( a ∣ s ) \pi(a|s) π(as)

重要性采样

从一个不同的分布中估计期望
E X ∼ P [ f ( X ) ] = ∑ P ( X ) f ( X ) = ∑ Q ( X ) P ( X ) Q ( X ) f ( X ) = E X ∼ Q [ P ( X ) Q ( X ) f ( X ) ] \begin{aligned} \mathbb{E}_{X \sim P}[f(X)] &=\sum P(X) f(X) \\ &=\sum Q(X) \frac{P(X)}{Q(X)} f(X) \\ &=\mathbb{E}_{X \sim Q}\left[\frac{P(X)}{Q(X)} f(X)\right] \end{aligned} EXP[f(X)]=P(X)f(X)=Q(X)Q(X)P(X)f(X)=EXQ[Q(X)P(X)f(X)]
重要性采样是沿着整个episode进行累乘。
G t π / μ = π ( A t ∣ S t ) μ ( A t ∣ S t ) π ( A t + 1 S t + 1 ) μ ( A t + 1 ∣ S t + 1 ) … π ( A T ∣ S T ) μ ( A T ∣ S T ) G t G_{t}^{\pi / \mu}=\frac{\pi\left(A_{t} \mid S_{t}\right)}{\mu\left(A_{t} \mid S_{t}\right)} \frac{\pi\left(A_{t+1} S_{t+1}\right)}{\mu\left(A_{t+1} \mid S_{t+1}\right)} \ldots \frac{\pi\left(A_{T} \mid S_{T}\right)}{\mu\left(A_{T} \mid S_{T}\right)} G_{t} Gtπ/μ=μ(AtSt)π(AtSt)μ(At+1St+1)π(At+1St+1)μ(ATST)π(ATST)Gt
这样的话,重要性采样会极大地增加variance。

Q-learning

Q-learning不需要重要性采样,在Q-learning中target policy是greedy策略,behavior policy策略是 ϵ − g r e e d y \epsilon-greedy ϵgreedy
所以target策略的Q函数的更新方式就如下:
R t + 1 + γ Q ( S t + 1 , A ′ ) = R t + 1 + γ Q ( S t + 1 , argmax ⁡ a ′ Q ( S t + 1 , a ′ ) ) = R t + 1 + max ⁡ a ′ γ Q ( S t + 1 , a ′ ) \begin{array}{l} R_{t+1}+\gamma Q\left(S_{t+1}, A^{\prime}\right) \\ =R_{t+1}+\gamma Q\left(S_{t+1}, \underset{a^{\prime}}{\operatorname{argmax}} Q\left(S_{t+1}, a^{\prime}\right)\right) \\ =R_{t+1}+\max _{a^{\prime}} \gamma Q\left(S_{t+1}, a^{\prime}\right) \end{array} Rt+1+γQ(St+1,A)=Rt+1+γQ(St+1,aargmaxQ(St+1,a))=Rt+1+maxaγQ(St+1,a)

有关Cliff Walking的思考

在这里插入图片描述
在前500个回合的时候,Q-learning的reward会比SARSA的要低。但最终的话,Q-learning学得到最优路径,但reward并没有比SARSA高。原因是:
Q-Learning可以收敛出Optimal Policy而SARSA却选择的是Safe Path,本质上是因为Q-Learning的Target Policy是绝对的greedy策略,绝对的greedy策略保证了Agent在Q值进入收敛后不会也不可能再记录可能掉入悬崖的状态动作的Q值,也可以说是Off-Policy类的控制方法并不会受到greedy策略无探索性的影响,所以才能够产生Optimal Policy。

然而SARSA算法使用的epsilon-greedy策略来更新Q值,也就是说不论何时,Agent总是有epsilon的概率选择非最优的动作,其中掉入悬崖的动作也始终有一定的概率被选中,并在Q函数更新时被记录下来,所以整个Grid的Q函数变成了越靠近悬崖,值越小的分布,最终导致了SARSA选择的是safe path。

Q-Learning的Target Policy是基于Q值的完全greedy policy,但在学习探索过程中决定Agent行走的Behavior Policy的更新却和SARSA同是epsilon-greedy policy。在进入收敛后,由于Q-Learning的Agent每次选择的都是Optimal Path但又因为Behavior Policy保持了一定的探索性,所以总是有一定的概率选择掉入悬崖的动作,虽然这些动作产生的Q值并不会被更新记录。SARSA的Agent在进入收敛后,基本上选择的是Safe Pass,掉入悬崖的概率比Q-Learning的Agent要小很多。所以,SARSA算法平均每个episode获得的Reward值通常要比Q-Learning更接近实际的步数乘上-1,也就是说SARSA的在线学习的效果比Q-Learning更好。

Value Function Approximation

在状态和动作空间很大的时候,我们再也不能用查表的方式进行Q值估计,所以需要采用一个Function Approximation来逼近。所以常规想法的流程是这样的:

  • 我们的目标是估计一个动作-价值函数
    q ^ ( S , A , w ) ≈ q π ( S , A ) \hat{q}(S, A, \mathbf{w}) \approx q_{\pi}(S, A) q^(S,A,w)qπ(S,A)

  • 计算两者的差值,并利用梯度下降来更新参数
    J ( w ) = E π [ ( q π ( S , A ) − q ^ ( S , A , w ) ) 2 ] Δ w = α ( q π ( S , A ) − q ^ ( S , A , w ) ) ∇ w q ^ ( S , A , w ) J(\mathbf{w})=\mathbb{E}_{\pi}\left[\left(q_{\pi}(S, A)-\hat{q}(S, A, \mathbf{w})\right)^{2}\right]\\ \Delta \mathbf{w}=\alpha\left(q_{\pi}(S, A)-\hat{q}(S, A, \mathbf{w})\right) \nabla_{\mathbf{w}} \hat{q}(S, A, \mathbf{w}) J(w)=Eπ[(qπ(S,A)q^(S,A,w))2]Δw=α(qπ(S,A)q^(S,A,w))wq^(S,A,w)
    但这里存在的问题是我们是不知道 q π ( S , A ) q_{\pi}(S,A) qπ(S,A)的。
    所以我们需要替换 q π ( S , A ) q_{\pi}(S,A) qπ(S,A)

对于MC而言,target是 G t G_{t} Gt
Δ w = α ( G t − q ^ ( S t , A t , w ) ) ∇ w q ^ ( S t , A t , w ) \Delta \mathbf{w}=\alpha\left(G_{t}-\hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right) Δw=α(Gtq^(St,At,w))wq^(St,At,w)

对于TD而言,target是 R t + 1 + γ q ^ ( S t + 1 , A t + 1 w ) R_{t+1}+\gamma \hat{q}\left(S_{t+1}, A_{t+1} \mathbf{w}\right) Rt+1+γq^(St+1,At+1w)
Δ w = α ( R t + 1 + γ q ^ ( S t + 1 , A t + 1 , w ) − q ^ ( S t , A t , w ) ) ∇ w q ^ ( S t , A t , w ) \Delta \mathbf{w}=\alpha\left(R_{t+1}+\gamma \hat{q}\left(S_{t+1}, A_{t+1}, \mathbf{w}\right)-\hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{q}\left(S_{t}, A_{t}, \mathbf{w}\right) Δw=α(Rt+1+γq^(St+1,At+1,w)q^(St,At,w))wq^(St,At,w)

对于Q-learning来说参数更新方式如下:

  1. 根据 ϵ − g r e e d y \epsilon-greedy ϵgreedy来采取动作和观察 ( s , a , r , s ′ ) (s,a,r,s^{'}) (s,a,r,s)
  2. 参数的变化采用如下的方式:
    Δ w = α ( r + γ max ⁡ a ′ q ^ ( s ′ , a ′ , w ) − q ^ ( s , a , w ) ) ∇ w q ^ ( s , a , w ) \Delta \mathbf{w}=\alpha\left(r+\gamma \max _{a^{\prime}} \hat{q}\left(s^{\prime}, a^{\prime}, \mathbf{w}\right)-\hat{q}(s, a, \mathbf{w})\right) \nabla_{\mathbf{w}} \hat{q}(s, a, \mathbf{w}) Δw=α(r+γamaxq^(s,a,w)q^(s,a,w))wq^(s,a,w)

但这样的更新方式存在以下两个问题

  1. 状态和状态之间是强相关的,是有时序关系的,不符合神经网络的输入的基本假设;
  2. 目标值 r + γ max ⁡ a ′ q ^ ( s ′ , a ′ , w ) r+\gamma \max _{a^{\prime}} \hat{q}\left(s^{\prime}, a^{\prime}, \mathbf{w}\right) r+γmaxaq^(s,a,w)是一直在变化的。

所以DQN的提出就是为了解决这两个问题

DQN

DQN使用了experience replay和target network来解决。
在这里插入图片描述
这里采用memory buffer(解决连续状态之间的相关性)和冻结参数(使得在N步之内,target value是不变的)的思想来分别对应两个解决问题的方法。

DQN存在的问题

DQN的Q值存在过估计的问题。谈到过估计(overestimate)问题的时候,我们需要先交代一下背景,现在训练神经网络的时候,不是一张图一张图的进行训练,我们是通过一个batch一个batch去训练,每个batch里面包含了N张图,所以经常在看到别的网络参数的时候会有一个batch size的参数。

假设N=32,就是32张图分别经过CNN网络计算,然后计算出32个Loss,然后会把这32个Loss求和或者求平均转换成1个Loss,最后才使用back propagate更新网络的参数。

在更新网络的时候,DQN求得的Q值的公式为:
max ⁡ a ′ Q ( S t + 1 , a ′ ; θ − ) \max _{a^{\prime}} Q\left(S_{t+1}, a^{\prime} ; \theta^{-}\right) amaxQ(St+1,a;θ)

每次求得的Q target都是通过取max得到的,然而我们做的是需要对计算出来的Q值取平均之后才能更新我们的网络,我们都知道
E ( max ⁡ ( X 1 , X 2 ) ) ≥ max ⁡ ( E ( X 1 ) , E ( X 2 ) ) E(\max (X 1, X 2)) \geq \max (E(X 1), E(X 2)) E(max(X1,X2))max(E(X1),E(X2))
可以看出,我们把N(设为32)个Q值先通过取max操作之后,然后求平均(期望),会比我们先算出32个Q值取了期望之后再max要大。这就是overestimate的原因。

Double DQN解决DQN的问题

DQN中有这样一步操作:
max ⁡ a ′ Q ( s ′ , a ′ ; w − ) = Q ( s ′ , arg ⁡ max ⁡ a ′ Q ( s ′ , a ′ ; w − ) ; w − ) \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime} ; \mathbf{w}^{-}\right)=Q\left(s^{\prime}, \arg \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime} ; \mathbf{w}^{-}\right) ; \mathbf{w}^{-}\right) amaxQ(s,a;w)=Q(s,argamaxQ(s,a;w);w)
等式两边是等价的。DQN有一个显著的问题,就是DQN估计的Q值往往会偏大。这是由于我们Q值是以下一个s’的Q值的最大值来估算的,但下一个state的Q值也是一个估算值,也依赖它的下一个state的Q值…,这就导致了Q值往往会有偏大的的情况出现。于是有人想到一个互相监察的想法。
这个思路也很直观。如果只有一个Q网络,它不是经常吹牛嘛。那我就用两个Q网络,因为两个Q网络的参数有差别,所以对于同一个动作的评估也会有少许不同。我们选取评估出来较小的值来计算目标。这样就能避免Q网络吹牛的情况发生了。
所以Double DQN的更新方式就变成这样了:
r + γ Q ( s ′ , arg ⁡ max ⁡ a ′ Q ( s ′ , a ′ ; w ) ; w − ) r+\gamma Q\left(s^{\prime}, \underset{a^{\prime}}{\arg \max } Q\left(s^{\prime}, a^{\prime} ; \mathbf{w}\right) ; \mathbf{w}^{-}\right) r+γQ(s,aargmaxQ(s,a;w);w)
DoubleDQN的算法如下:
在这里插入图片描述
这里的参数采用了软更新的更新方式。

Dueling DQN

我们只需要稍微改动DQN中的神经网络的结构,就能大幅提升学习效果,加速收敛,这种新方法叫做Dueling DQN。用一句话概括Dueling DQN就是:它将每一个动作的Q拆分成了state的Value加上每个动作的Advantage。
我们看一下Dueling DQN的神经网络架构和普通DQN有什么不同:

在这里插入图片描述
我们可以很明显地看出,上面普通的DQN只有一个输出,就是每一个动作的Q值;而Dueling DQN则拆成了state的Value和每个动作的Advantage。
我们再来看一下公式:
Q ( s , a ; θ , α , β ) = V ( s ; θ , β ) + A ( s , a ; θ , α ) Q(s, a ; \theta, \alpha, \beta)=V(s ; \theta, \beta)+A(s, a ; \theta, \alpha) Q(s,a;θ,α,β)=V(s;θ,β)+A(s,a;θ,α)
它分成了这个state的值,加上每个动作在这个state上的advantage。因为有时候在某种state,无论做什么动作,对下一个state都没有多大的影响,故这样的做法可以加速学习,快速收敛。

Prioritized Experience Replay

创新点:在抽取经验池中过往经验样本时,采取按优先级抽取的方法。
改进原因:原来随机抽取经验忽略了经验之间的重要程度,实际上如人脑中一定会有更为重要的记忆。
带来益处:使得算法更快收敛,效果更好。

有待以后深入地进行研究

DDPG

在连续动作空间我们如何进行 a r g m a x argmax argmax的操作呢?

TD3:Twin Delayed DDPG

对DDPG进行修正。

DQN使用的注意事项

  1. 先在简单的任务上进行应用,确保我们的应用是正确的;
  2. 更大的replay_buffer能够提高稳定性;
  3. 训练好一个DQN是需要时间的;
  4. 希望一开始用较大的 ϵ \epsilon% ϵ然后逐渐衰减,learning_rate也是如此;
  5. DDQN可能会更有用;
  6. 尝试多种随机数种子,每个随机数种子之间差异会比较大。

控制算法的收敛性分析

在这里插入图片描述
对于神经网络来说一般来说都是不收敛的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值