当前位置: 首页 > article >正文

【强化学习入门笔记】3.2 策略梯度法:REINFORCE

本系列为学习赵世钰老师的《强化学习的数学原理》所作的学习笔记.

课程视频网址:https://space.bilibili.com/2044042934

既然我们可以用函数拟合值函数, 那么是否可以直接拟合策略呢? 本节将介绍策略梯度法.

3.2.1 策略梯度法

3.2.1.1 策略表征

在之前的算法中, 我们的策略都是用离散表格的形式表达:

a 1 a 2 a 3 a 4 a 5 s 1 π ( a 1 ∣ s 1 ) π ( a 2 ∣ s 1 ) π ( a 3 ∣ s 1 ) π ( a 4 ∣ s 1 ) π ( a 5 ∣ s 1 ) ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ s 9 π ( a 1 ∣ s 9 ) π ( a 2 ∣ s 9 ) π ( a 3 ∣ s 9 ) π ( a 4 ∣ s 9 ) π ( a 5 ∣ s 9 ) \begin{array}{c|c|c|c|c|c}\hline & a_1 & a_2 & a_3 & a_4 & a_5 \\\hline s_1 & \pi\left(a_1 \mid s_1\right) & \pi\left(a_2 \mid s_1\right) & \pi\left(a_3 \mid s_1\right) & \pi\left(a_4 \mid s_1\right) & \pi\left(a_5 \mid s_1\right) \\\hline \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\\hline s_9 & \pi\left(a_1 \mid s_9\right) & \pi\left(a_2 \mid s_9\right) & \pi\left(a_3 \mid s_9\right) & \pi\left(a_4 \mid s_9\right) & \pi\left(a_5 \mid s_9\right) \\\hline\end{array} s1s9a1π(a1s1)π(a1s9)a2π(a2s1)π(a2s9)a3π(a3s1)π(a3s9)a4π(a4s1)π(a4s9)a5π(a5s1)π(a5s9)

与值函数拟合类似的, 也可以通过一个函数来拟合它, 或者通过神经网络:

其中 θ \theta θ是拟合函数的参数. 显然, 可以通过梯度下降法求最优策略:

θ t + 1 = θ t + α ∇ θ J ( θ t ) , \theta_{t+1}=\theta_t+\alpha \nabla_\theta J\left(\theta_t\right), θt+1=θt+αθJ(θt),

既然是一个最优化问题, 首先需要定义评价最优策略的指标. 有以下两种方法.

3.2.1.2 评价最优策略的指标:平均状态值

基于策略 π \pi π的所以状态值的加权平均值, 其中 d ( s ) d(s) d(s)是状态的权重分布:

v ˉ π = ∑ s ∈ S d ( s ) v π ( s ) = E S ∼ d [ v π ( S ) ] \bar{v}_\pi=\sum_{s \in \mathcal{S}} d(s) v_\pi(s)=\mathbb{E}_{S \sim d}\left[v_\pi(S)\right] vˉπ=sSd(s)vπ(s)=ESd[vπ(S)]

  • d ( s ) d(s) d(s)与状态值相互独立

此时我们可以简单的采用均匀分布 d ( s ) = 1 / ∣ S ∣ d(s)=1 /|\mathcal{S}| d(s)=1/∣S, 也可以只考虑某一个状态 d 0 ( s 0 ) = 1 , d 0 ( s ≠ s 0 ) = 0. d_0\left(s_0\right)=1, \quad d_0\left(s \neq s_0\right)=0 . d0(s0)=1,d0(s=s0)=0.

  • d ( s ) d(s) d(s)依赖于状态值

此时 d ( s ) d(s) d(s)是基于策略 π \pi π的静态分布 d π T d_\pi^T dπT, P π P_\pi Pπ是状态转移概率分布

d π T P π = d π T , d_\pi^T P_\pi=d_\pi^T, dπTPπ=dπT,

d π T d_\pi^T dπT被设计为:在马尔科夫决策过程中, 状态被探索到的概率.

总之 v ˉ π \bar{v}_\pi vˉπ代表策略的平均状态值, 我们的目标是调整参数 θ \theta θ, 让 v ˉ π \bar{v}_\pi vˉπ尽可能的大. 接下来我们写出的等价形式:

J ( θ ) = lim ⁡ n → ∞ E [ ∑ t = 0 n γ t R t + 1 ] = E [ ∑ t = 0 ∞ γ t R t + 1 ] J(\theta)=\lim _{n \rightarrow \infty} \mathbb{E}\left[\sum_{t=0}^n \gamma^t R_{t+1}\right]=\mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t R_{t+1}\right] J(θ)=nlimE[t=0nγtRt+1]=E[t=0γtRt+1]

上式实际就是马尔科夫决策过程中完整的奖励期望, 将期望按照状态和权重逐个展开:

E [ ∑ t = 0 ∞ γ t R t + 1 ] = ∑ s ∈ S d ( s ) E [ ∑ t = 0 ∞ γ t R t + 1 ∣ S 0 = s ] = ∑ s ∈ S d ( s ) v π ( s ) = v ˉ π \begin{aligned}\mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t R_{t+1}\right] & =\sum_{s \in \mathcal{S}} d(s) \mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t R_{t+1} \mid S_0=s\right] \\& =\sum_{s \in \mathcal{S}} d(s) v_\pi(s) \\& =\bar{v}_\pi\end{aligned} E[t=0γtRt+1]=sSd(s)E[t=0γtRt+1S0=s]=sSd(s)vπ(s)=vˉπ

另一个较为简单的等价形式:

v ˉ π = d T v π v π = [ … , v π ( s ) , … ] T ∈ R ∣ S ∣ d = [ … , d ( s ) , … ] T ∈ R ∣ S ∣ \begin{aligned} \bar{v}_\pi&=d^T v_\pi \\ v_\pi & =\left[\ldots, v_\pi(s), \ldots\right]^T \in \mathbb{R}^{|\mathcal{S}|} \\d & =[\ldots, d(s), \ldots]^T \in \mathbb{R}^{|\mathcal{S}|}\end{aligned} vˉπvπd=dTvπ=[,vπ(s),]TRS=[,d(s),]TRS

3.2.1.3 评价最优策略的指标:平均奖励值

也可以用平均奖励值作为指标, 定义如下:

r ˉ π ≐ ∑ s ∈ S d π ( s ) r π ( s ) = E S ∼ d π [ r π ( S ) ] \begin{aligned}\bar{r}_\pi & \doteq \sum_{s \in \mathcal{S}} d_\pi(s) r_\pi(s) \\& =\mathbb{E}_{S \sim d_\pi}\left[r_\pi(S)\right]\end{aligned} rˉπsSdπ(s)rπ(s)=ESdπ[rπ(S)]

d π T d_\pi^T dπT同样是马尔科夫决策过程中, 状态被探索到的概率.

其中具体某一个状态s的奖励值定义为:

r π ( s ) ≐ ∑ a ∈ A π ( a ∣ s , θ ) r ( s , a ) = E A ∼ π ( s , θ ) [ r ( s , A ) ∣ s ] r_\pi(s) \doteq \sum_{a \in \mathcal{A}} \pi(a \mid s, \theta) r(s, a)=\mathbb{E}_{A \sim \pi(s, \theta)}[r(s, A) \mid s] rπ(s)aAπ(as,θ)r(s,a)=EAπ(s,θ)[r(s,A)s]

同样我们也可以写出它的两个等价形式, 首先当n趋近无穷时, 下式就是平均奖励值:

lim ⁡ n → ∞ 1 n E [ ∑ t = 0 n − 1 R t + 1 ] = ∑ s ∈ S d π ( s ) r π ( s ) = r ˉ π . \lim _{n \rightarrow \infty} \frac{1}{n} \mathbb{E}\left[\sum_{t=0}^{n-1} R_{t+1}\right]=\sum_{s \in \mathcal{S}} d_\pi(s) r_\pi(s)=\bar{r}_\pi . nlimn1E[t=0n1Rt+1]=sSdπ(s)rπ(s)=rˉπ.

以及:

r ˉ π = ∑ s ∈ S d π ( s ) r π ( s ) = d π T r π r π = [ … , r π ( s ) , … ] T ∈ R ∣ S ∣ d π = [ … , d π ( s ) , … ] T ∈ R ∣ S ∣ \begin{aligned} &\bar{r}_\pi=\sum_{s \in \mathcal{S}} d_\pi(s) r_\pi(s)=d_\pi^T r_\pi \\ & r_\pi=\left[\ldots, r_\pi(s), \ldots\right]^T \in \mathbb{R}^{|\mathcal{S}|} \\& d_\pi=\left[\ldots, d_\pi(s), \ldots\right]^T \in \mathbb{R}^{|\mathcal{S}|}\end{aligned} rˉπ=sSdπ(s)rπ(s)=dπTrπrπ=[,rπ(s),]TRSdπ=[,dπ(s),]TRS

实际上, 平均奖励值是平均状态值的一部分:

r ˉ π = ( 1 − γ ) v ˉ π \bar{r}_\pi=(1-\gamma) \bar{v}_\pi rˉπ=(1γ)vˉπ

3.2.1.4 梯度计算

策略梯度定义如下:

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

其中 η \eta η是状态分布, ∇ θ π \nabla_\theta \pi θπ是基于参数 θ \theta θ的策略 π \pi π. 上式还可以写成:

∇ θ J ( θ ) = E S ∼ η , A ∼ π ( S , θ ) [ ∇ θ ln ⁡ π ( A ∣ S , θ ) q π ( S , A ) ] \nabla_\theta J(\theta)=\mathbb{E}_{S \sim \eta, A \sim \pi(S, \theta)}\left[\nabla_\theta \ln \pi(A \mid S, \theta) q_\pi(S, A)\right] θJ(θ)=ESη,Aπ(S,θ)[θlnπ(AS,θ)qπ(S,A)]

推导过程如下, 首先对下式求梯度:

∇ θ ln ⁡ π ( a ∣ s , θ ) = ∇ θ π ( a ∣ s , θ ) π ( a ∣ s , θ ) \nabla_\theta \ln \pi(a \mid s, \theta)=\frac{\nabla_\theta \pi(a \mid s, \theta)}{\pi(a \mid s, \theta)} θlnπ(as,θ)=π(as,θ)θπ(as,θ)

然后将其代入到公式中, 即可推导出第二种形式:

∇ θ J ( θ ) = ∑ s ∈ S η ( s ) ∑ a ∈ A ∇ θ π ( a ∣ s , θ ) q π ( s , a ) = E S ∼ η [ ∑ a ∈ A ∇ θ π ( a ∣ S , θ ) q π ( S , a ) ] = E [ ∑ a ∈ A π ( a ∣ S , θ ) ∇ θ ln ⁡ π ( a ∣ S , θ ) q π ( S , a ) ] = E S ∼ η , A ∼ π ( S , θ ) [ ∇ θ ln ⁡ π ( A ∣ S , θ ) q π ( S , A ) ] . \begin{aligned}\nabla_\theta J(\theta) & =\sum_{s \in \mathcal{S}} \eta(s) \sum_{a \in \mathcal{A}} \nabla_\theta \pi(a \mid s, \theta) q_\pi(s, a) \\& =\mathbb{E}_{S \sim \eta}\left[\sum_{a \in \mathcal{A}} \nabla_\theta \pi(a \mid S, \theta) q_\pi(S, a)\right]\\ & =\mathbb{E}\left[\sum_{a \in \mathcal{A}} \pi(a \mid S, \theta) \nabla_\theta \ln \pi(a \mid S, \theta) q_\pi(S, a)\right] \\ & =\mathbb{E}_{S \sim \eta, A \sim \pi(S, \theta)}\left[\nabla_\theta \ln \pi(A \mid S, \theta) q_\pi(S, A)\right] . \end{aligned} θJ(θ)=sSη(s)aAθπ(as,θ)qπ(s,a)=ESη[aAθπ(aS,θ)qπ(S,a)]=E[aAπ(aS,θ)θlnπ(aS,θ)qπ(S,a)]=ESη,Aπ(S,θ)[θlnπ(AS,θ)qπ(S,A)].

3.2.2 蒙特卡洛策略梯度 (REINFORCE)

首先, 我们写出策略梯度的更新公式:

θ t + 1 = θ t + α ∇ θ J ( θ t ) = θ t + α E [ ∇ θ ln ⁡ π ( A ∣ S , θ t ) q π ( S , A ) ] , \begin{aligned}\theta_{t+1} & =\theta_t+\alpha \nabla_\theta J\left(\theta_t\right) \\& =\theta_t+\alpha \mathbb{E}\left[\nabla_\theta \ln \pi\left(A \mid S, \theta_t\right) q_\pi(S, A)\right],\end{aligned} θt+1=θt+αθJ(θt)=θt+αE[θlnπ(AS,θt)qπ(S,A)],

但是它的真实梯度期望是不知道的, 因此用随机梯度下降法, 用采样梯度代替:

θ 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\left(a_t \mid s_t, \theta_t\right) q_t\left(s_t, a_t\right) θt+1=θt+αθlnπ(atst,θt)qt(st,at)

其中采样 q t ( s t , a t ) q_t\left(s_t, a_t\right) qt(st,at) q π ( s t , a t ) q_\pi\left(s_t, a_t\right) qπ(st,at)的近似, 如果使用蒙特卡洛估计动作值的方式, 即采样episode并计算discounted return. 那么这种方法就是REINFORCE.

接下来, 我们将详细的解释这个更新公式, 首先将梯度项展开:

∇ θ ln ⁡ π ( a t ∣ s t , θ t ) = ∇ θ π ( a t ∣ s t , θ t ) π ( a t ∣ s t , θ t ) \nabla_\theta \ln \pi\left(a_t \mid s_t, \theta_t\right)=\frac{\nabla_\theta \pi\left(a_t \mid s_t, \theta_t\right)}{\pi\left(a_t \mid s_t, \theta_t\right)} θlnπ(atst,θt)=π(atst,θt)θπ(atst,θt)

将其中的常数项简写为 β t \beta_t βt:

θ t + 1 = θ t + α ( q t ( s t , a t ) π ( a t ∣ s t , θ t ) ) ⏟ β t ∇ θ π ( a t ∣ s t , θ t ) , \theta_{t+1}=\theta_t+\alpha \underbrace{\left(\frac{q_t\left(s_t, a_t\right)}{\pi\left(a_t \mid s_t, \theta_t\right)}\right)}_{\beta_t} \nabla_\theta \pi\left(a_t \mid s_t, \theta_t\right), θt+1=θt+αβt (π(atst,θt)qt(st,at))θπ(atst,θt),

(1) β t \beta_t βt影响策略概率的变化

因为这是一个梯度下降法的更新公式, 因此:

  • β t > 0 \beta_t>0 βt>0时, π ( a t ∣ s t , θ t ) \pi\left(a_t \mid s_t, \theta_t\right) π(atst,θt)会在此次更新变大, 即选择动作 a t a_t at的概率变大
  • β t < 0 \beta_t<0 βt<0时, π ( a t ∣ s t , θ t ) \pi\left(a_t \mid s_t, \theta_t\right) π(atst,θt)会在此次更新变小, 即选择动作 a t a_t at的概率变小
  1. β t \beta_t βt代表探索(exploration)和开发(exploitation)的平衡

上面已经说明了 β t \beta_t βt越大, 会使得选择此动作的概率越大. 那么我们观察 β t \beta_t βt的分子是动作值, 分母是概率值.

  • 分子动作值越大, β t \beta_t βt越大, 代表鼓励开发(exploitation)当前动作值已经比较大的动作.
  • 分母概率值越小, β t \beta_t βt越大, 代表鼓励探索(exploration)当前概率值还比较小的动作.


http://www.kler.cn/a/542326.html

相关文章:

  • 【进程与线程】进程之间的通信
  • 力扣 单词拆分
  • gitlab多项目流水线
  • Golang Web单体项目目录结构最佳实践
  • stm32小白成长为高手的学习步骤和方法
  • kafka消费端之分区分配策略
  • 什么是矩阵账号?如何做矩阵账号运营?
  • HarmonyOS NEXT - picker 选择器( 包含 单列、多列、底部选择器)
  • Django学习笔记(第一天:Django基本知识简介与启动)
  • C++性能优化—人工底稿版
  • Ubuntu 下 nginx-1.24.0 源码分析 ngx_tm_t 类型
  • Node.js怎么调用到打包的python文件呢
  • 支持高并发的 Web 应用系统架构中LVS和keepalived是什么?
  • RabbitMQ 如何设置限流?
  • 安卓基础(Intent)
  • 运用 LangChain 编排任务处理流水线,实现多轮对话场景
  • 【C语言标准库函数】标准输入输出函数详解[4]:二进制文件读写函数
  • 通用的将jar制作成docker镜像sh脚本
  • 机器学习 - 数据的特征表示
  • 《Transformer架构完全解析:从零开始读懂深度学习的革命性模型》
  • 【C++指南】解锁C++ STL:从入门到进阶的技术之旅
  • LabVIEW 开发航天项目软件
  • SSM开发(十一) mybatis关联关系多表查询(嵌套查询,举例说明)
  • unity碰撞的监测和监听
  • SpringBoot 项目中使用Log4j2详细(避坑)
  • 在Uniapp中使用阿里云OSS插件实现文件上传