强化学习笔记——第八节

第八节——策略梯度下降

1.策略梯度的相关概念

策略的函数表示

π ( a ∣ s , θ ) \pi(a|s,\theta) π(as,θ)

函数代替表格方法的好处

当状态空间很大的时候,表格方法不能穷尽的表示所有状态,会造成计算效率低下。

表格形式和函数形式的区别

  • 定义最优策略的区别
    • 表格法: π ∗ : V π ( S ) ≤ V π ∗ ( S ) \pi^*:V_{\pi}(S) \le V_{\pi^*}(S) π:Vπ(S)Vπ(S)
    • 函数法:定义一个标量目标函数,再优化这个函数
  • 判断一个动作发生的可能
    • 表格法:查表
    • 函数法:通过函数计算
  • 更新策略的不同
    • 表格法:直接在表格里改
    • 函数法:通过更新函数中的参数 θ \theta θ

策略梯度定义

  • J ( θ ) J(\theta) J(θ)为目标函数

  • 采用梯度下降来优化算法
    θ t + 1 = θ t + α ∇ θ J ( θ t ) \theta_{t+1}=\theta_{t}+\alpha \nabla_{\theta}J(\theta_t) θt+1=θt+αθJ(θt)

2.状态平均值average state value

参数方法与向量方法表示
v ˉ π = ∑ s ∈ S d ( s ) v π ( s ) = d T v π \bar{v}_{\pi}=\sum _{s \in S}d(s)v_{\pi}(s)=d^Tv_{\pi} vˉπ=sSd(s)vπ(s)=dTvπ

  • v ˉ π \bar{v}_{\pi} vˉπ是state value的加权平均

  • d ( s ) ≥ 0 d(s) \ge 0 d(s)0是权重

  • ∑ s ∈ S d ( s ) = 1 \sum_{s\in S}d(s) = 1 sSd(s)=1表示d(s)为状态s被选中的概率,此时目标函数可写为
    v ˉ π = E [ v π ( S ) ] \bar{v}_{\pi}=\mathbb{E}[v_{\pi}(S)] vˉπ=E[vπ(S)]

概率分布d的选取

  1. d独立于策略 π \pi π
    • 认为所有状态均匀分布,即认为每一个状态都是同等重要的
    • 可能特别关心某个状态
  2. d依赖于策略 π \pi π
    • 此时d为stationary distribution
      • 访问多的状态,权重 d π ( s ) d_\pi(s) dπ(s)会大
      • 反之,则小

3.平均单步奖励值average one-step reward

第一种表现形式
r ˉ π ≐ ∑ s ∈ S d π ( s ) r π ( s ) = E [ r π ( S ) ] r π ( s ) ≐ ∑ a ∈ A π ( a ∣ s ) r ( s , a ) \begin{align} \bar{r}_{\pi} &\doteq \sum_{s \in S}d_{\pi}(s)r_{\pi}(s)=\mathbb{E}[r_{\pi}(S)] \\ r_{\pi}(s) &\doteq \sum_{a \in A}\pi(a|s)r(s,a) \end{align} rˉπrπ(s)sSdπ(s)rπ(s)=E[rπ(S)]aAπ(as)r(s,a)
其中,

  • r ( s , a ) r(s,a) r(s,a)是当前的奖励值
  • d π d_{\pi} dπ是stationary distribution

第二种表现形式

有一个策略,根据该策略形成了一个轨迹,并沿着该轨迹得到很多奖励 ( R t + 1 , R t + 2 , . . . . . ) (R_{t+1},R_{t+2,.....}) (Rt+1,Rt+2,.....),可以表示为
lim ⁡ n → ∞ 1 n [ ∑ k = 1 n R t + k ∣ S = s 0 ] = lim ⁡ n → ∞ 1 n [ ∑ k = 1 n R t + k ] \lim_{n\to \infty} \frac{1}{n}[\sum_{k=1}^{n}R_{t+k}|S=s_0]=\lim_{n\to \infty} \frac{1}{n}[\sum_{k=1}^{n}R_{t+k}] nlimn1[k=1nRt+kS=s0]=nlimn1[k=1nRt+k]
以上式子表示,从一个状态出发,走无穷多步的平均,走了无穷多步其实和初始状态没有什么关系了

4.目标函数的梯度

∇ θ J ( θ ) = ∑ s ∈ S η ( s ) ∑ a ∈ A ∇ θ π ( a ∣ s , θ ) q π ( s , a ) \nabla_{\theta}J(\theta)=\sum_{s \in S}\eta(s)\sum_{a \in A}\nabla_{\theta}\pi(a|s,\theta)q_{\pi}(s,a) θJ(θ)=sSη(s)aAθπ(as,θ)qπ(s,a)

其中,

  • J ( θ ) J(\theta) J(θ)可以是 v ˉ π 、 r ˉ π 或 v ˉ π 0 \bar{v}_{\pi}、\bar{r}_{\pi}或\bar{v}_{\pi}^0 vˉπrˉπvˉπ0
  • “=”不是严格的等号
  • η \eta η在不同情况下会呈现出不同的分布

以上式子还可以写成以下,这个是真实的梯度
∇ θ J ( θ ) = E [ ∇ θ ln ⁡ π ( A ∣ S , θ ) q π ( S , A ) ] \nabla_{\theta}J(\theta)=\mathbb{E}[\nabla_{\theta} \ln \pi(A|S,\theta)q_{\pi}(S,A)] θJ(θ)=E[θlnπ(AS,θ)qπ(S,A)]
其中,

  • 由于对数函数的性质, π ( A ∣ S , θ ) > 0 \pi(A|S,\theta)>0 π(AS,θ)>0
    • 为了实现以上性质,使用softmax函数将其归一化
    • 使用神经网络来实现
    • 该式是随机且具有探索性的

使用随机梯度代替真实梯度
∇ θ J ≈ ∇ θ ln ⁡ π ( A ∣ S , θ ) q π ( S , A ) \nabla_{\theta}J \approx \nabla_{\theta} \ln \pi(A|S,\theta)q_{\pi}(S,A) θJθlnπ(AS,θ)qπ(S,A)

5.梯度上升算法

定义

  • 梯度上升的算法做的事情是最大化 J ( θ ) J(\theta) J(θ)
    θ t + 1 = θ t + α ∇ θ J ( θ ) = θ t + α E [ ∇ θ ln ⁡ π ( A ∣ S , θ ) q π ( S , A ) ] \begin{align} \theta_{t+1} &=\theta_{t}+\alpha \nabla_{\theta}J(\theta) \\ &=\theta_{t}+\alpha \mathbb{E}[\nabla_{\theta}\ln\pi(A|S,\theta)q_{\pi}(S,A)] \end{align} θt+1=θt+αθJ(θ)=θt+αE[θlnπ(AS,θ)qπ(S,A)]

  • 由于以上是真实梯度,无法得到,用随机梯度代替,故有以下式子
    θ t + 1 = θ t + α ∇ θ ln ⁡ π ( a t ∣ s t , θ t ) q π ( s t , a t ) \theta_{t+1} =\theta_{t}+\alpha\nabla_{\theta}\ln\pi(a_t|s_t,\theta_t)q_{\pi}(s_t,a_t) θt+1=θt+αθlnπ(atst,θt)qπ(st,at)

    • 对于无法计算的 q π ( s t , a t ) q_{\pi}(s_t, a_t) qπ(st,at)
      • 使用蒙特卡洛方法,得到一个episode,用这个episode里的 q t ( s , a ) q_t(s,a) qt(s,a)来估计 q π ( s t , a t ) q_{\pi}(s_t, a_t) qπ(st,at)
      • 使用TD等方法

对于采样问题

  • 对于S来说,其分布满足在策略 π \pi π下的long run behavior
  • 对于A来说
    • A ∼ π ( A ∣ S , θ ) A \sim \pi(A|S,\theta) Aπ(AS,θ),故在 s t s_t st根据当前的 π ( θ t ) \pi(\theta_t) π(θt)采样 a t a_t at
    • 故该策略是on-policy算法

理解该算法

首先有
∇ θ ln ⁡ π ( a t ∣ s t , θ t ) = ∇ θ π ( a t ∣ s t , θ t ) π ( a t ∣ s t , θ t ) \nabla_{\theta}\ln{\pi}(a_t|s_t,\theta_t) =\frac{\nabla_{\theta}\pi(a_t|s_t,\theta_t)}{\pi(a_t|s_t,\theta_t)} θlnπ(atst,θt)=π(atst,θt)θπ(atst,θt)
其次
θ t + 1 = θ t + α ∇ θ ln ⁡ π ( a t ∣ s t , θ t ) q π ( s t , a t ) = θ t + α ( q t ( s t , a t ) π ( a t ∣ s t , θ t ) ) ⏟ β t ∇ θ π ( a t ∣ s t , θ t ) \begin{align} \theta_{t+1} &=\theta_{t}+\alpha\nabla_{\theta}\ln\pi(a_t|s_t,\theta_t)q_{\pi}(s_t,a_t) \\ &= \theta_{t}+\alpha \underbrace{(\frac{q_t(s_t,a_t)}{\pi(a_t|s_t,\theta_t)})}_{\beta_t} \nabla_{\theta}\pi(a_t|s_t,\theta_t) \end{align} θt+1=θt+αθlnπ(atst,θt)qπ(st,at)=θt+αβt (π(atst,θt)qt(st,at))θπ(atst,θt)
最终,梯度上升算法表示为
θ t + 1 = θ t + α β t ∇ θ π ( a t ∣ s t , θ t ) \theta_{t+1} =\theta_{t}+\alpha \beta_t\nabla_{\theta}\pi(a_t|s_t,\theta_t) θt+1=θt+αβtθπ(atst,θt)

  • β t > 0 \beta_t > 0 βt>0 π ( a t + 1 ∣ s t , θ t + 1 ) > π ( a t ∣ s t , θ t ) \pi(a_{t+1}|s_t,\theta_{t+1}) > \pi(a_t|s_t,\theta_t) π(at+1st,θt+1)>π(atst,θt)
  • β t < 0 \beta_t < 0 βt<0 π ( a t + 1 ∣ s t , θ t + 1 ) < π ( a t ∣ s t , θ t ) \pi(a_{t+1}|s_t,\theta_{t+1}) < \pi(a_t|s_t,\theta_t) π(at+1st,θt+1)<π(atst,θt)

β t \beta_t βt可以很好的平衡算法的探索性和利用性

REINFORCE算法
θ t + 1 = θ t + α ∇ θ ln ⁡ π ( a t ∣ s t , θ t ) q t ( s t , a t ) \theta_{t+1} =\theta_{t}+\alpha\nabla_{\theta}\ln\pi(a_t|s_t,\theta_t)q_{t}(s_t,a_t) θt+1=θt+αθlnπ(atst,θt)qt(st,at)
即用 q t ( s t , a t ) 近似 q π ( s t , a t ) q_{t}(s_t,a_t)近似q_{\pi}(s_t,a_t) qt(st,at)近似qπ(st,at)

image-20240531162037981

本节代码

7_PolicyGradient(github.com)

7_PolicyGradient(gitee.com)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值