Skip to content

强化学习算法小结

📅 发表于 2018/04/25
🔄 更新于 2018/04/25
👁️ -- 次访问
📝 0 字
0 分钟
强化学习
#策略迭代
#值迭代
#蒙特卡罗
#时序差分
#SARSA
#Q学习
#Q网络
#DQN
#策略梯度

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

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

强化学习的目标

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

J(θ)=Eτpθ(τ)[t=0T1γtrt+1]J(θ)=pθ(τ)G(τ)dτ

基于值函数的学习方法

策略迭代

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

s,Vπ(s)=Eaπ(as)Esp(ss,a)[r(s,a,s)+γVπ(s)]Qπ(s,a)=Esp(ss,a)[r(s,a,s)+γVπ(s)]s,π(s)=argmaxaQ(s,a)

值迭代

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

sS,V(s)=maxaEsp(ss,a)[r(s,a,s)+γV(s)]Qπ(s,a)=Esp(ss,a)[r(s,a,s)+γVπ(s)]s,π(s)=argmaxaQ(s,a)

蒙特卡罗

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

Qπ(s,a)Q^π(s,a)=1Nn=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、不依概率选择新动作,而是直接选择最大的值函数maxaQ(s,a)

4、更新Q函数

Q(s,a)Q(s,a)+α(r+γmaxaQ(s,a)Q(s,a))

5、更新状态:s=s

Q网络

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

L(s,a,s;ϕ)=(r+γmaxaQϕ(s,a)Qϕ(s,a)网络值)2

DQN

深度Q网络:

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

生成新数据加入经验池

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

2、执行动作a, 得到rs

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

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

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

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

Qψ^(ss,aa)={rr,ssrr+γmaxaQϕ^(ss,a),

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

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

状态前进

ss

更新目标Q网络的参数

每隔C步更新:ϕ^ϕ

基于策略函数的学习方法

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

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

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

最大化策略的期望回报

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

策略梯度

J(θ)θEτpθ(τ)[θlogpθ(τ)G(τ)]θlogpθ(τ)=t=0T1θlogπθ(atst)J(θ)θ=Eτpθ(τ)[t=0T1(θlogπθ(atst)γtG(τt:T))]

REINFORCE算法

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

J(θ)θ1Nn=1N[t=0T1(θlogπθ(at(n)st(n))γtG(τt:T(n)))]

1、根据πθ(as)生成一条完整的轨迹τ=s0,a0,s1,a1,,sT1,aT1,sT

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

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

θθ+αγtG(τt:T)θlogπθ(atst)

缺点:

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

带基准函数的REINFORCE算法

每个时刻t的策略梯度

Jt(θ)θ=Est,at[αγtG(τt:T)θlogπθ(atst)]

基准函数

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

每一时刻的策略梯度为:

J^t(θ)θ=Est,at[αγt(G(τt:T)b(st))θlogπθ(atst)]

1、根据策略πθ(as)生成一条完整轨迹τ=s0,a0,s1,a1,,sT1,aT1,sT

2、在每一时刻更新参数

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

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

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

ϕϕ+βδϕVϕ(st)

更新策略函数πθ(as)的参数θ

θθ+αγtδθlogπθ(atst)

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

Actor-Critic算法

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

演员

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

评论员

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

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

演员

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

1. 执行策略,生成样本

s,a,r,s

2. 估计回报,生成δ

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

3. 更新值函数和策略

ϕϕ+βδVϕ(s)ϕθθ+αλδθlogπθ(as)

4. 更新折扣率和状态

λλγ,ss
总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2025