Skip to content

(18年笔记)强化学习算法小结

📅 发表于 2018/04/24
🔄 更新于 2025/10/23
👁️ — 次访问
📝 1217 字
⏳ 4 分钟
强化学习
#策略迭代
#值迭代
#蒙特卡罗
#时序差分
#SARSA
#Q学习
#Q网络
#DQN
#策略梯度

强化学习算法的简单总结,主要包括基于值函数/策略函数的学习方法、Actor-Critic算法。

强化学习笔记: 强化学习基础 、基于值函数的学习方法、基于值函数的学习方法

强化学习的目标 ​

强化学习的目标是学习到一个策略πθ(a∣s),来最大化这个策略的期望回报。希望智能体能够获得更多的回报。本质上是策略搜索。

J(θ)=Eτ∼pθ(τ)[∑t=0T−1γtrt+1]J(θ)=∫pθ(τ)⋅G(τ)dτ

基于值函数的学习方法 ​

策略迭代 ​

已知模型。利用贝尔曼方程(算均值)迭代计算出V(s),再算出Q(s,a)。选择最好的动作a去优化策略π(s)。

∀s,Vπ(s)=Ea∼π(a∣s)Es′∼p(s′∣s,a)[r(s,a,s′)+γVπ(s′)]Qπ(s,a)=Es′∼p(s′∣s,a)[r(s,a,s′)+γVπ(s′)]∀s,π(s)=arg⁡maxaQ(s,a)

值迭代 ​

已知模型。利用贝尔曼最优方程迭代算出V(s),再算出Q(s,a)。选择最好的动作a去优化策略π(s)。

∀s∈S,V∗(s)=maxaEs′∼p(s′∣s,a)[r(s,a,s′)+γV∗(s′)]Qπ(s,a)=Es′∼p(s′∣s,a)[r(s,a,s′)+γVπ(s′)]∀s,π(s)=arg⁡maxaQ(s,a)

蒙特卡罗 ​

未知模型。从(s,a)随机游走,采集N个样本。使用所有轨迹回报平均值近似估计Q(s,a) ,再去改进策略。重复,直至收敛。

Qπ(s,a)≈Q^π(s,a)=1N∑n=1NG(τ(n))

时序差分算法 ​

无需知道完整轨迹就能对策略进行评估。

时序差分学习=动态规划-贝尔曼估计G(τ) + 蒙特卡罗采样-增量计算Q(s,a)

贝尔曼估计轨迹总回报G(τ)

G(τ)←r(s,a,s′)+γ⋅Q(s′,a′)

增量计算Q(s,a)

Q(s,a)←Q(s,a)+α⋅(r+γ⋅Q(s′,a′)⏟实际值−Q(s,a)⏟预期值)

SARSA ​

同策略的时序差分算法,是Q学习的改进。

1、当前状态s,当前动作a (初始时选择a=πϵ(s),后续是更新得到的)

2、执行动作a,得到新状态s′,得到奖励r(s,a,s′)

4、依概率选择新动作a=πϵ(s′),新状态新动作的值函数:Q(s′,a′)

5、更新Q函数

Q(s,a)←Q(s,a)+α⋅(r+γ⋅Q(s′,a′)−Q(s,a))

6、更新状态和动作:s=s′,a=a′

Q学习 ​

1、当前状态s,选择当前动作a=πϵ(s)

2、执行动作a、得到新状态s′和奖励 r(s,a,s′)

3、不依概率选择新动作,而是直接选择最大的值函数maxa′Q(s′,a′)

4、更新Q函数

Q(s,a)←Q(s,a)+α⋅(r+γ⋅maxa′Q(s′,a′)−Q(s,a))

5、更新状态:s=s′

Q网络 ​

使用神经网络Qϕ(s,a)去近似值函数Q(s,a)。两个问题:实际目标值不稳定;样本之间具有强相关性。

L(s,a,s′;ϕ)=(r+γ⋅maxa′Qϕ(s′,a′)⏟实际目标值−Qϕ(s,a)⏟网络值)2

DQN ​

深度Q网络:

  • 目标网络冻结-稳定目标值。Qϕ(s,a)训练网络,Qϕ^(s,a)目标值网络。定期更新参数ϕ^←ϕ
  • 经验池的经验回放-去除样本相关性- 每次采集一条数据放入经验池,再从经验池取数据进行训练。

生成新数据加入经验池

1、状态s, 选择动作a=πϵ(s)

2、执行动作a, 得到r和s′

3、(s,a,r,s′) 加入经验池D

采经验池中采样一条数据计算

1、从D中采样一条数据,(ss,aa,rr,ss′)。 (去除样本相关性)

2、计算实际目标值Qψ^(ss,aa)。 (解决目标值不稳定的问题)

Qψ^(ss,aa)={rr,ss′为终态rr+γ⋅maxa′Qϕ^(ss′,a′),其它

3、损失函数如下,梯度下降法去训练Q网络

J(ϕ)=(Qϕ(ss,aa)−y)2=(Qϕ(ss,aa)−Qψ^(ss,aa))2

状态前进

s←s′

更新目标Q网络的参数

每隔C步更新:ϕ^←ϕ

基于策略函数的学习方法 ​

策略搜索本质上是一个优化问题,无需值函数可以直接优化策略。参数化的策略可以处理连续状态和动作。

策略梯度 :是一种基于梯度的强化学习方法。

策略连续可微假设:假设πθ(a∣s)是一个关于θ的连续可微函数。

最大化策略的期望回报

J(θ)=∫pθ(τ)⋅G(τ)dτ

策略梯度 ​

∂J(θ)∂θ≜Eτ∼pθ(τ)[∂∂θlog⁡pθ(τ)⋅G(τ)]∂∂θlog⁡pθ(τ)=∑t=0T−1∂∂θlog⁡πθ(at∣st)∂J(θ)∂θ=Eτ∼pθ(τ)[∑t=0T−1(∂∂θlog⁡πθ(at∣st)⋅γtG(τt:T))]

REINFORCE算法 ​

期望用采样的方式来近似,随机采样N个轨迹。

∂J(θ)∂θ≈1N∑n=1N[∑t=0T−1(∂∂θlog⁡πθ(at(n)∣st(n))⋅γtG(τt:T(n)))]

1、根据πθ(a∣s)生成一条完整的轨迹 :τ=s0,a0,s1,a1,⋯,sT−1,aT−1,sT

2、在每一时刻更新参数 (0~T)

先计算当前时刻的回报G(τt:T),再更新参数:

θ←θ+α⋅γtG(τt:T)⋅∂∂θlog⁡πθ(at∣st)

缺点:

  • 需要完整的轨迹
  • 不同轨迹之间的策略梯度方差大,导致训练不稳定

带基准函数的REINFORCE算法 ​

每个时刻t的策略梯度

∂Jt(θ)∂θ=Est,at[α⋅γtG(τt:T)⋅∂∂θlog⁡πθ(at∣st)]

基准函数

  • 为了减小策略梯度的方差
  • 引入与at无关的基准函数b(st)=V(st)
  • 越相关方差越小,所以选择值函数

每一时刻的策略梯度为:

∂J^t(θ)∂θ=Est,at[α⋅γt(G(τt:T)−b(st))⋅∂∂θlog⁡πθ(at∣st)]

1、根据策略πθ(a∣s)生成一条完整轨迹 :τ=s0,a0,s1,a1,⋯,sT−1,aT−1,sT

2、在每一时刻更新参数

计算当前时刻的轨迹回报G(τt:T) ,再利用基准函数(值函数)进行修正,得到δ

δ←G(τt:T)−Vϕ(st)

更新值函数Vϕ(s)的参数ϕ

ϕ←ϕ+β⋅δ⋅∂∂ϕVϕ(st)

更新策略函数πθ(a∣s)的参数θ

θ←θ+α⋅γtδ⋅∂∂θlog⁡πθ(at∣st)

缺点: 需要根据策略采集一条完整的轨迹。

Actor-Critic算法 ​

演员-评论家算法结合了策略梯度和时序差分算法。不需要一条完整的轨迹,可以单步更新参数,无需等到回合结束才进行更新。

演员

根据s和策略πθ(a∣s),执行动作a,环境变为s′,得到奖励r

评论员

根据真实奖励r和之前的标准,打分(估计回报):r+γVϕ(s′) ,再调整自己的打分标准ϕ。minϕ(G^(τt:T)−Vϕ(st))2

使评分更加接近环境的真实回报。

演员

演员根据评论的打分,调整自己的策略πθ,争取下次做得更好。θ←θ+α⋅γt(G(τt:T)−Vϕ(st))⋅∂∂θlog⁡πθ(at∣st)

1. 执行策略,生成样本

s,a,r,s′

2. 估计回报,生成δ

G(s)=r+γVϕ(s′),δ=G(s)−Vϕ(s)

3. 更新值函数和策略

ϕ←ϕ+β⋅δ⋅∂Vϕ(s)∂ϕθ←θ+α⋅λδ⋅∂∂θlog⁡πθ(a∣s)

4. 更新折扣率和状态

λ←λ⋅γ,s←s′
总访客数:— · 总访问量:—
PLM's Blog @ 2016 - 2026