Skip to content

基于策略函数的学习方法

📅 发表于 2018/04/22
🔄 更新于 2018/04/22
👁️ -- 次访问
📝 0 字
0 分钟
#策略函数
#策略梯度
#REINFORCE
#基准函数
#Actot-Critic
#强化学习算法总结

基于策略函数的学习方法和Actor-Critc算法。

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

基于策略函数的学习方法

强化学习目标

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

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

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

  • 基于梯度的优化
  • 无梯度的优化

策略梯度

1. 思想和假设

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

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

2. 优化目标

最大化策略的期望回报。

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

3. 策略梯度推导

采用梯度上升法来优化参数θ来使得J(θ)最大。

**策略梯度J(θ)θ**的推导如下:

1、参数θ的优化方向是总回报G(τ)大的轨迹τ,其概率pθ(τ)也就越大。

J(θ)θ=θpθ(τ)G(τ)dτ=(θpθ(τ))G(τ)dτ=pθ(τ)(1pθ(τ)θpθ(τ))G(τ)dτ=pθ(τ)(θlogpθ(τ))G(τ)dτEτpθ(τ)[θlogpθ(τ)G(τ)]

2、梯度只和策略相关,轨迹的梯度 == 各个时刻的梯度的求和

θlogpθ(τ)=θlog(p(s0)t=0T1πθ(atst)p(st+1st,at))=θlog(logp(s0)+t=0T1logπθ(atst)+t=0T1logp(st+1st,at))=t=0T1θlogπθ(atst)

3、策略梯度 == 轨迹的梯度*轨迹的回报 的期望

J(θ)θ=Eτpθ(τ)[(t=0T1θlogπθ(atst))G(τ)]=Eτpθ(τ)[(t=0T1θlogπθ(atst))(G(τ1:k1)+γkG(τk:T))]=Eτpθ(τ)[t=0T1(θlogπθ(atst)γtG(τt:T))]

其中G(τt:T)是从时刻t作为起始时刻收到的总回报

G(τt:T)=i=tT1γitri+1

4. 总结

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

REINFORCE算法

期望可以通过采样的方法来近似。对于当前策略πθ,可以随机游走采集N个轨迹τ(1),,τ(N)

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

可微分策略函数πθ(as),折扣率γ,学习率α

初始化参数θ, 训练,直到θ收敛

1、根据πθ(as)生成一条轨迹

τ=s0,a0,s1,a1,,sT1,aT1,sT

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

  • 计算G(τt:T)
  • θθ+αγtG(τt:T)θlogπθ(atst)

REINFORCE算法缺点不同路径之间的方差很大,导致训练不稳定;需要根据一个策略采集一条完整的轨迹

带基准线的REINFORCE算法

值函数作为基准函数,去减小策略梯度的方差

由于不同轨迹之间的方差很大,导致训练不稳定,使用基准函数去减小策略梯度的方差。

1. 减小方差的办法

目标:估计函数f的期望,同时要减小f的方差。

方法

  • 引入已知期望的函数g
  • f^=fα(gE[g])
  • 推导可知: E[f]=E[f^]
  • g去减小f的方差, D(f)=Var(f)
D(f^)=D(f)2αCov(f,g)+α2D(g)D(f^)α=0D(f^)D(f)=1ρ2(f,g)

所以**,fg的相关性越高,D(f^)越小**。

2. 带基准线的REINFORCE算法核心

每个时刻t的策略梯度

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

为了减小策略梯度的方差,引入一个和at无关的基准函数b(st),策略梯度为:

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

因为b(st)at无关,可以证明得到:(使用积分求平均,atπθ(atst)dat=1

Eat[b(st)θlogπθ(atst)]=θ(b(st)1)=0

所以得到:Jt(θ)θ=J^t(θ)θ

4. 基准函数的选择

为了减小策略梯度的方差,希望**b(st)G(τt:T) 越相关越好**,所以选择**b(st)=V(st)**(值函数)。

1、可学习的函数Vϕ(st)来近似值函数,类似于Q网络

ϕ=argminϕ(V(st)Vϕ(st))2

2、蒙塔卡罗方法进行估计值函数 也就是增量计算Q(s,a)嘛。

5. 带基准线的REINFORCE算法步骤

输入

  • 状态空间和动作空间,S,A
  • 可微分的策略函数πθ(as)
  • 可微分的状态值函数Vϕ(st)
  • 折扣率γ,学习率α,β

随机初始化参数θ,ϕ

不断训练,直到θ收敛

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,a),学习一个策略来得到尽可能高的回报
  • 评论员:值函数Vϕ(s),评估当前策略函数(演员)的好坏

演员

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

评论员

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

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

演员

演员根据评论的打分,调整自己的策略πθ,争取下次做得更好。

优点:可以单步更新参数,不需要等到回合结束才进行更新。

值函数的三个功能

1. 估计轨迹真实回报(打分)

G^(τt:T)=rt+1+γVϕ(st+1)

2. 更新值函数参数ϕ (调整打分标准)

minϕ(G^(τt:T)Vϕ(st))2

3. 更新策略参数θ时,作为基函数来减少策略梯度的方差(调整策略)

θθ+αγt(G(τt:T)Vϕ(st))θlogπθ(atst)

算法实现步骤

输入

  • 状态空间和动作空间,S,A
  • 可微分的策略函数πθ(as)
  • 可微分的状态值函数Vϕ(st)
  • 折扣率γ,学习率α>0,β>0

随机初始化参数θ,ϕ

迭代直到θ收敛,初始状态s, λ=1

从s开始,直到s为终止状态

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

2、执行动作a,得到即时奖励r和新状态s

3、利用值函数作为基函数计算δδr+γVϕ(s)Vϕ(s)

4、更新值函数:ϕϕ+βδVϕ(s)ϕ

5、更新策略函数:θθ+αλδθlogπθ(as)

6、更新折扣率和状态:λλγ,ss

强化学习算法总结

方法总览

1. 通用步骤

  1. 执行策略,生成样本
  2. 估计回报
  3. 更新策略

2. 值函数与策略函数的比较

值函数的方法

策略更新,导致值函数的改变比较大,对收敛性有一定的影响

策略函数的方法

策略更新,更加平稳

缺点:策略函数的解空间很大,难以进行充分采样,导致方差较大,容易陷入局部最优解。

四个典型方法

与监督学习的区别

强化学习监督学习
样本与环境进行交互产生样本,进行试错学习人工收集并标注
反馈只有奖励,并且是延迟的需要明确的指导信息(每个状态对应一个动作)
总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2025