强化学习综述

1.强化学习基础

1.1基础模型

强化学习通常用于求解能够建模成马尔可夫决策过程的问题,如图1所示

clip_image002-1701850510708-1

图1 马尔可夫决策过程

显然决策问题的最终目的就是为了使回报函数最大化,即让式(1)最大化(为了让回报函数收敛采用折扣回报,其中 0 < γ < 1 0<\gamma<1 0<γ<1):
R t = ∑ k = 0 ∞ γ k r t + k + 1 R_{\mathrm{t}}=\sum_{k=0}^{\infty} \gamma^k r_{t+k+1} Rt=k=0γkrt+k+1

1.2基于值迭代

1.2.1 Q-learning

对于进行决策的方法,很简单的想法就是给每个动作定义一个价值,把每个动作的价值估计出来后,选择最大价值的那个动作。

image-20231206163511954

图2 基于动作价值的决策方法

动作价值的估计方法:

首先根据动作价值的定义
Q ( s t , a t ) = E ( R t ∣ s t , a t ) Q\left(s_t, a_t\right)=E\left(R_t \mid s_t, a_t\right) Q(st,at)=E(Rtst,at)
显然可以通过蒙特卡洛模拟直接拟合求解,但是计算代价太大了。

对(2)进行变形
Q ( s t , a t ) = E ( r t + 1 + γ ∑ k = 0 ∞ γ k r t + k + 2 ∣ s t , a t ) = E ( r t + 1 + γ Q ( s t + 1 , a t + 1 ) ∣ s t , a t ) Q\left(s_t, a_t\right)=E\left(r_{t+1}+\gamma \sum_{k=0}^{\infty} \gamma^k r_{t+k+2} \mid s_t, a_t\right)=E\left(r_{t+1}+\gamma Q\left(s_{t+1}, a_{t+1}\right) \mid s_t, a_t\right) Q(st,at)=E(rt+1+γk=0γkrt+k+2st,at)=E(rt+1+γQ(st+1,at+1)st,at)
从而可以通过后时刻的Q值来估计前时刻的Q值。
Q target  ( s t , a t ) = r t + 1 + γ Q ( s t + 1 , a t + 1 ) Q^{\text {target }}\left(s_t, a_t\right)=r_{t+1}+\gamma Q\left(s_{t+1}, a_{t+1}\right) Qtarget (st,at)=rt+1+γQ(st+1,at+1)
因为下时刻的值也是不准确的,所以一般采用梯度更新的方式进行迭代
Q ( s t , a t ) = Q ( s t , a t ) + α ( Q taget  ( s t , a t ) − Q ( s t , a t ) ) Q\left(s_t, a_t\right)=Q\left(s_t, a_t\right)+\alpha\left(Q^{\text {taget }}\left(s_t, a_t\right)-Q\left(s_t, a_t\right)\right) Q(st,at)=Q(st,at)+α(Qtaget (st,at)Q(st,at))
动作选择:
π ( s ) = arg ⁡ max ⁡ a Q ( s , a ) \pi(s)=\arg \max _a Q(s, a) π(s)=argamaxQ(s,a)
根据动作价值估计和动作选择可以分为行为策略和目标策略。行为策略就是专门用于训练的策略,目标策略就是最后决策要用到的策略。

1.2.2 DQN

通常估计动作价值都是使用表格迭代的方式,但是针对许多场景,其状态空间巨大导致维度灾难。如图3所示。

image-20231206163518893

图3 太空入侵者游戏

2013年,Deepmind发表在NIPS上的一篇论文Playing Atari with Deep Reinforcement Learning1引入了深度学习来逼近Q函数, 构建了感知到决策的端到端架构。

Q ( s t , a t , θ ) ≈ Q ( s t , a t ) Q\left(s_t, a_t, \theta\right) \approx Q\left(s_t, a_t\right) Q(st,at,θ)Q(st,at)

随后的改进版本,加入了目标函数机制。Deepmind在2015年发表在nature2上。其采用卷积神经网络和全连接神经网络直接输出每个动作的价值函数,如图4。

image-20231206163523794

图4 DQN结构

其采用的结构作为后续版本改进的基础。

1.2.3 基于价值函数的后续改进版本

1.2.3.1 针对DQN过估计问题提出了DDQN

DDQN是由DeepMind在2015年12月发表在AAAI的文章提出,用于解决Q-学习存在的估计问题

过估计问题

场景假设:D到A,B,C是一个动态环境,3个动作会随机生成(-10,-5,1)的奖励值,假设当前时刻生成的奖励值导致第三个动作奖励值为1,下一时刻奖励值可能是-10.

clip_image002-1701854595527-2

图5 过估计问题场景假设

针对这个问题,设某一时刻智能体从E出发,得到的价值函数计算得到
Q target  ( E , a 1 ) = γ max ⁡ a ′ Q ( D , a ′ ) = 1 ⋅ γ Q^{\text {target }}\left(E, a_1\right)=\gamma \max _{a^{\prime}} Q\left(D, a^{\prime}\right)=1 \cdot \gamma Qtarget (E,a1)=γamaxQ(D,a)=1γ

Q target  ( E , a 2 ) = 0.9 Q^{\text {target }}\left(E, a_2\right)=0.9 Qtarget (E,a2)=0.9

Q target  ( E , a 3 ) = γ 0.9 Q^{\text {target }}\left(E, a_3\right)=\gamma 0.9 Qtarget (E,a3)=γ0.9

如果设置 γ = 1 \gamma =1 γ=1,那么么智能体再E状态会选择向左走到D,显然这不是一个很好的选择,因为到D状态会有很大的概率得到负奖励。

所以Q-learning对Q值的判断进行了高估,在动作的奖励有噪声的情况下(即环境动态变化,奖励不确定),高估不理会奖励的变化,就会导致选择错误的方向。

DDQN

利用动态环境奖励会一直变化的特性,维护两个Q函数,先正常估计第一个Q函数,然后用第一个Q函数估计出的动作计算第二个Q函数,由于奖励会变化,第二个Q函数的值必然和第一个Q函数不相同。

采用两个Q函数估计,计算价值函数时,先用 Q 2 Q_2 Q2选择一个最大动作来估计 Q 1 Q_1 Q1,然后用估计的 Q 1 Q_1 Q1选择最大动作估计 Q 2 Q_2 Q2
Q 1 target  ( E , a 1 ) = γ Q 1 ( D , a 2 ∗ ) , a 2 ∗ = arg ⁡ max ⁡ a Q 2 ( D , a ) Q_1^{\text {target }}\left(E, a_1\right)=\gamma Q_1\left(D, a_2^*\right), a_2^*=\arg \max _a Q_2(D, a) Q1target (E,a1)=γQ1(D,a2),a2=argamaxQ2(D,a)

Q 2 targ et  ( E , a 1 ) = γ Q 2 ( D , a 1 ∗ ) , a 1 ∗ = arg ⁡ max ⁡ a Q 1 ( D , a ) Q_2^{\text {targ et }}\left(E, a_1\right)=\gamma Q_2\left(D, a_1^*\right), a_1^*=\arg \max _a Q_1(D, a) Q2targ et (E,a1)=γQ2(D,a1),a1=argamaxQ1(D,a)

Q t target  ( s , a ) = r t + 1 + γ Q 2 ( s t + 1 , arg ⁡ max ⁡ a Q 1 ( s t + 1 , a ) ) Q_t^{\text {target }}(s, a)=r_{t+1}+\gamma Q_2\left(s_{t+1}, \arg \max _a Q_1\left(s_{t+1}, a\right)\right) Qttarget (s,a)=rt+1+γQ2(st+1,argamaxQ1(st+1,a))

算例:如果 Q 1 t a r g e t ( E , a 1 ) = 1 Q_1^{t a r g e t}\left(E, a_1\right)=1 Q1target(E,a1)=1且其选择的动作为 a 3 a_3 a3,那么 Q 2 t a r g e t ( E , a 1 ) Q_2^{t a r g e t}\left(E, a_1\right) Q2target(E,a1)计算时,奖励变化选择动作 a 3 a_3 a3的结果为奖励值为-10。那么最后的目标函数值为避 Q t a g e t ( E , a 3 ) = − 10 ⋅ γ Q^{t a g e t}\left(E, a_3\right)=-10 \cdot\gamma Qtaget(E,a3)=10γ免了一直是1的高估态。

1.2.3.2 网络改进方面提出了Dueling网络改进Q值估计

Dueling DQN网络是DeepMind在2016年发表在ICML上的文章。针对DQN在Q值估计上进行了网络方面的改进

优势函数
A π ( s , a ) = Q π ( s , a ) − V π ( s ) A^\pi(s, a)=Q^\pi(s, a)-V^\pi(s) Aπ(s,a)=Qπ(s,a)Vπ(s)
优势函数刻画的是某个动作对于平均值函数的“优势”。所以最优动作的选择也可以“仅”通过优势函数得到如式(15)所示,所以估计优势函数也很重要。
a π = a r g max ⁡ a A ( s , a ) a^{\pi}=arg\underset{a}{\max}A\left( s,a \right) aπ=argamaxA(s,a)
如图6所示,采用Dueling DQN的结构单独输出了状态价值和每个动作的优势函数,将结果相加得到动作价值。公式为
Q ( s , a ) = V ( s ) + ( A ( s , a ′ ) − 1 ∣ A ∣ ∑ a ′ A ( s , a ′ ) ) Q\left( s,a \right) =V\left( s \right) +\left( A\left( s,a\prime \right) -\small{\frac{1}{\left| A \right|}\sum_{a\prime}{A\left( s,a\prime \right)}} \right) Q(s,a)=V(s)+(A(s,a)A1aA(s,a))
image-20231206174050937

图6 Dueling DQN网络结构

论文在Atari 2600平台上的Enduro游戏上做了实验,红色覆盖为价值和优势显著性图。并且说明了价值学习学会了关注道路,优势学习只有在前方有车时才学会注意。

image-20231206175104143

图7 Enduro游戏中价值和优势显著性图
1.2.3.3 针对经验池采样效率问题提出优先经验回放(PER)

PER是DeepMind在2016年发表ICLR上的文章,用于解决经验池采样效率问题。

经验回放

经验回放是DQN算法的重要性质,DQN包含一个大规模的经验池来存储历史的样本。DQN采用的是均匀采样的方法

image-20231206182430913

图8 DQN的经验回放机制

PER

深度Q学习的损失可以表示为TD error绝对值的平方:
L θ = E s t , a t , r t + 1 , s t + 1   U ( D ) [ ∣ δ t ∣ 2 ] L_{\theta}=E_{s_t,a_t,r_{t+1},s_{t+1}~U\left( D \right)}\left[ \left| \delta _t \right|^2 \right] Lθ=Est,at,rt+1,st+1 U(D)[δt2]
U ( D ) U\left( D \right) U(D)代表均匀采样的概率, ∣ D ∣ |D| D表示经验池容量,TD error为:
∣ δ t ∣ = ∣ Q θ ( s t , a t ) − Q t t a r g e t ( r t , s t + 1 ) ∣ \left| \delta _t \right|=\left| Q_{\theta}\left( s_t,a_t \right) -Q_{t}^{target}\left( r_t,s_{t+1} \right) \right| δt= Qθ(st,at)Qttarget(rt,st+1)
PER的思路是,样本的TD error越大说明越重要,如果很小说明网络已经拟合得很好了。PER优先采样 δ t \delta _t δt较大的样本进行学习。样本的采样率从均匀采样改为:
P ( i ) = p i α ∑ p i α , p i = ∣ δ t ∣ + ϵ P\left( i \right) =\small{\frac{p_{i}^{\alpha}}{\sum{p_{i}^{\alpha}}},}p_i=\left| \delta _t \right|+\epsilon P(i)=piαpiα,pi=δt+ϵ
ϵ \epsilon ϵ表示一个很小的数,防止数值不稳定; α \alpha α用于控制优先回放的程度 。

1.3基于策略梯度迭代

不同于值迭代,策略迭代通常是直接对策略求梯度,免去了Q学习的步骤。

1.3.1 策略迭代的起源:REINFORCE

REINFORCE算法历史古老,是1992年发表在Machine Learning上的一篇论文。

确立目标函数为最大化回报函数
J ( π θ ) = E τ ∼ P ( τ ∣ θ ) [ R ( τ ) ] J\left(\pi_\theta\right)=E_{\tau \sim P(\tau \mid \theta)}[R(\tau)] J(πθ)=EτP(τθ)[R(τ)]
策略迭代方向为
θ k + 1 = θ k + α ∇ θ J ( π θ ) \theta_{k+1}=\theta_k+\alpha \nabla_\theta J\left(\pi_\theta\right) θk+1=θk+αθJ(πθ)
通过一些数学上的方法可以得到
∇ θ J ( π θ ) = E τ ∼ P ( τ ∣ θ ) [ ∑ t = 0 T ∇ θ log ⁡ π θ ( a t ∣ s t ) R ( τ ) ] \nabla_\theta J\left(\pi_\theta\right)=E_{\tau \sim P(\tau \mid \theta)}\left[\sum_{t=0}^T \nabla_\theta \log \pi_\theta\left(a_t \mid s_t\right) R(\tau)\right] θJ(πθ)=EτP(τθ)[t=0Tθlogπθ(atst)R(τ)]
对于梯度的求解通过采样N条轨迹来估计。

1.3.2异步策略梯度

1.3.2.1AC架构

AC架构sutton在2000年就有提到(具体提出的时间可能更久远),发表在Advances in Neural Information Processing Systems上。

1.3.2.2A2C
1.3.2.3A3C

1.3.3 PPO

1.3.4 DDPG

1.3.5 SAC

References:

[1]. Mnih, V., et al., Playing Atari with Deep Reinforcement Learning. ArXiv, 2013. abs/1312.5602.

[2]. Mnih, V., et al., Human-level control through deep reinforcement learning. Nature, 2015. 518(7540): p. 529-533.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值