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

(六)策略梯度算法 and Actor-Critic 框架

目录

  • 回顾 & 区别
    • 强化学习分类
    • 适用问题
    • on-policy & off-policy
  • 策略梯度算法
  • Actor-Critic 算法
  • 总结

回顾 & 区别

强化学习分类

  • Model-based
    • value-based
      动态规划
  • Model-free
    • value-based
      蒙特卡洛、时序差分
    • policy-based
      。。。。。。

适用问题

  • 状态、动作空间均离散且有限
    动态规划、时序差分
  • 连续状态,离散动作
    DQN

on-policy & off-policy

在线策略(on-policy)算法:你要学习/更新的策略和你采样的策略是一样的;
离线策略(off-policy)算法:你要学习/更新的策略和你采样的策略是不同的。

以上对之前涉及的内容做个区分和总结。

策略梯度算法

基于价值(value-base)的方法:主要是学习值函数,然后根据值函数导出一个策略,学习过程中并不存在一个显式的策略;
基于策略(policy-base)的方法:直接显式地学习一个目标策略。
之前的算法都是 value-base 的,现在是另一支 policy-base 的方法,一言以蔽之,即将策略参数化,而策略梯度是这类方法的基础,通过迭代求解策略梯度能优化策略

(1)首先,将策略参数化。我们的目标是要寻找一个最优策略并最大化此策略在环境中的期望回报。我们将策略学习的目标函数定义为:J(θ)=Es0[Vπθ(s0)]J(\theta)=\mathbb{E}_{s_0}[V^{\pi_\theta}(s_0)]J(θ)=Es0[Vπθ(s0)]
s0s_0s0 是初始状态。既然有目标函数,那将其对 θ\thetaθ 求导,然后按梯度上升法逐步优化目标函数,最终得到最优策略
关于对目标函数求梯度:
∇θJ(θ)∝∑s∈Sνπθ(s)∑a∈AQπθ(s,a)∇θπθ(a∣s)=∑s∈Sνπθ(s)∑a∈Aπθ(a∣s)Qπθ(s,a)∇θπθ(a∣s)πθ(a∣s)=Es∼νπθ,a∼πθ(⋅∣s)[Qπθ(s,a)∇θlog⁡πθ(a∣s)]=Eπθ[Qπθ(s,a)∇θlog⁡πθ(a∣s)]\begin{split}\nabla_{\theta}J(\theta)&\propto\sum_{s \in S}\nu^{\pi_{\theta}}(s)\sum_{a\in A}Q^{\pi_{\theta}}(s,a)\nabla_{\theta} \pi_{\theta}(a|s)\\ &=\sum_{s\in S}\nu^{\pi_{\theta}}(s)\sum_{a\in A}\pi_{\theta}(a|s )Q^{\pi_{\theta}}(s,a)\frac{\nabla_{\theta}\pi_{\theta}(a|s)}{\pi_{\theta}(a|s )}\\ & =\mathbb{E}_{s\sim\nu^{\pi_\theta},a\sim\pi_\theta(\cdot|s)}\left[Q^{\pi_\theta}(s,a)\nabla_\theta\log\pi_\theta(a|s)\right]\\ &=\mathbb{E}_{\pi_{\theta}}[Q^{\pi_{\theta}}(s,a)\nabla_{\theta} \log\pi_{\theta}(a|s)]\end{split}θJ(θ)sSνπθ(s)aAQπθ(s,a)θπθ(as)=sSνπθ(s)aAπθ(as)Qπθ(s,a)πθ(as)θπθ(as)=Esνπθ,aπθ(s)[Qπθ(s,a)θlogπθ(as)]=Eπθ[Qπθ(s,a)θlogπθ(as)]

log的底数默认是e

可以发现,其期望的下标是 πθ\pi_{\theta}πθ,故策略梯度算法为在线策略(on-policy)算法,即必须使用当前策略采样得到的数据来计算梯度。
直观解释这个式子:

  • ∇θlog⁡πθ(a∣s)\nabla_\theta\log\pi_\theta(a|s)θlogπθ(as):参数 θ\thetaθ 调整方向,通过调整来增加选择某动作的概率;
  • Qπθ(s,a)Q^{\pi_{\theta}}(s,a)Qπθ(s,a):在状态 sss 下选择动作 aaa 的好坏

组合起来:如果我们尝试了一下,发现 Qπθ(s,a)Q^{\pi_{\theta}}(s,a)Qπθ(s,a) 很大,说明是个好动作,就沿着 ∇θlog⁡πθ(a∣s)\nabla_\theta\log\pi_\theta(a|s)θlogπθ(as) 方向调整,增加这个动作的概率,否则就反向减小该动作概率。

(2)估计 Qπθ(s,a)Q^{\pi_{\theta}}(s,a)Qπθ(s,a)
目标函数的梯度里用的 Qπθ(s,a)Q^{\pi_{\theta}}(s,a)Qπθ(s,a),有多种方法估计它,比如 REINFORCE 算法就采用蒙特卡洛,对于一个有限步数的环境来说,REINFORCE 算法中的策略梯度为:
∇θJ(θ)=Eπθ[∑t=0T(∑t′=tTγt′−trt′)∇θlog⁡πθ(at∣st)]\nabla_{\theta}J(\theta)=\mathbb{E}_{\pi_{\theta}}\left[\sum_{t=0}^{T}\left( \sum_{t^{\prime}=t}^{T}\gamma^{t^{\prime}-t}r_{t^{\prime}}\right) \nabla_{ \theta}\log\pi_{\theta}(a_{t}|s_{t})\right]θJ(θ)=Eπθ[t=0T(t=tTγttrt)θlogπθ(atst)]

TTT :和环境交互的最大步数

(3)REINFORCE 算法流程:
∙初始化策略参数θ∙for序列e=1→Edo;∙用当前策略πθ采样轨迹{s1,a1,r1,s2,a2,r2,…sT,aT,rT}∙计算当前轨迹每个时刻t往后的回报∑t′=tTγt′−trt′,记为ψt∙对θ进行更新,θ=θ+α∑tTψt∇θlog⁡πθ(at∣st)∙endfor\begin{array}{l}\bullet\ \ \text{初始化策略参数}\theta\\ \bullet\ \ \boldsymbol{\mathsf{for}} \text{序列} e=1\to E \boldsymbol{ \mathsf{do}} ;\\ \bullet\ \ \ \ \ \ \ \ \text{用当前策略}\pi_{\theta}\text{采样轨迹}\{s_{1},a_{1},r_{1},s_{2},a_{2},r_{2},\ldots s_{T},a_{T},r_{T}\}\\ \bullet\ \ \ \ \ \ \ \text{计算当前轨迹每个时刻}t\text{往后的回报} \sum_{t^{\prime}=t}^{T}\gamma^{t^{\prime}-t}r_{t^{\prime}},\ \text{记为}\psi_{t}\\ \bullet\ \ \ \ \ \ \ \text{对}\theta\text{进行更新},\ \theta=\theta+\alpha\sum_{t}^{T}\psi_{t}\nabla_{\theta}\log\pi_{\theta}(a_{t}|s_{t}) \\ \bullet\ \ \boldsymbol{\mathsf{end}} \boldsymbol{\mathsf{for}}\end{array}  初始化策略参数θ  for序列e=1Edo;        用当前策略πθ采样轨迹{s1,a1,r1,s2,a2,r2,sT,aT,rT}       计算当前轨迹每个时刻t往后的回报t=tTγttrt, 记为ψt       θ进行更新, θ=θ+αtTψtθlogπθ(atst)  endfor

(4)小结

  • REINFORCE 算法是策略梯度乃至强化学习的典型代表
  • 从交互中学习,并且其优化的目标(即策略期望回报)正是最终所使用策略的性能,这比基于价值的强化学习算法的优化目标(一般是时序差分误差的最小化)要更加直接
  • REINFORCE 采用蒙特卡洛估计动作价值,对策略梯度的估计是无偏的,但方差很大

Actor-Critic 算法

Actor-Critic 与其说算法,不如说是一种架构,既有学习价值函数的操作,也有学习策略函数的思想

Actor-Critic = Value-based + Policy-based

目前很多高效的前沿算法都属于 Actor-Critic 算法。需要明确的是,Actor-Critic 算法本质上是基于策略的算法,因为这一系列算法的目标都是优化一个带参数的策略,只是会额外学习价值函数,从而帮助策略函数更好地学习。

(1)Q的优化
还记得上文讲到策略梯度目标函数的梯度吗?其中的Q函数用于指导策略的更新。Actor-Critic 对其做进一步优化,我们先把梯度写成更一般的形式:
g=E[∑t=0Tψt∇θlog⁡πθ(at∣st)]g= \mathbb{E} \left[ \sum_{t=0}^{T} \psi_{t} \nabla_{ \theta} \log \pi_{ \theta} \left( a_{t}|s_{t} \right) \right]g=E[t=0Tψtθlogπθ(atst)]
Actor-Critic 则令 ψt=rt+γVπ(st+1)−Vπ(st)\bm{\psi_{t}=r_{t}+\gamma V^{\pi}(s_{t+1})-V^{\pi}(s_{t})}ψt=rt+γVπ(st+1)Vπ(st)

这样换有啥用?
不难发现,ψt\psi_{t}ψt 变成时序差分残差的形式,那我们是不是可以在每一步采样后就做更新,而 REINFORCE 的蒙特卡洛需要采样序列结束后才能进行一次更新(这同时也要求任务具有有限的步数),很明显,这里就是时序差分TD 与蒙特卡洛MC 的区别

(2)Actor-Critic 的组成

  • Actor(策略网络):与环境交互,并在 Critic 价值函数的指导下用策略梯度学习一个更好的策略。
  • Critic(价值网络): 通过 Actor 与环境交互收集的数据学习一个价值函数,这个价值函数会用于判断在当前状态什么动作是好的,什么动作不是好的,进而帮助 Actor 进行策略更新。

(3)更新规则
Actor 的更新采用策略梯度的原则,而 Critic 的更新则是通过减小时序差分误差来使得价值函数优化。
我们将 Critic 价值网络表示为VwV_wVwwww 为参数,定义单个数据价值函数的损失函数:
L(ω)=12(r+γVω(st+1)−Vω(st))2\mathcal{L}(\omega)= \frac{1}{2} \left( r+ \gamma V_{ \omega} \left( s_{t+1} \right)-V_{ \omega} \left( s_{t} \right) \right)^{2}L(ω)=21(r+γVω(st+1)Vω(st))2
将其对参数 www 求导可得损失函数梯度:
∇ωL(ω)=−(r+γVω(st+1)−Vω(st))∇ωVω(st)\nabla_{\omega}\mathcal{L}(\omega)=-(\bm{r}+\gamma V_{\omega}(\bm{s}_{t+1})-V_ {\omega}(\bm{s}_{t}))\nabla_{\omega}V_{\omega}(\bm{s}_{t})ωL(ω)=(r+γVω(st+1)Vω(st))ωVω(st)
使用梯度下降方法来更新 Critic 价值网络参数即可

(4)Actor-Critic 算法流程
∙初始化策略网络参数θ,价值网络参数ω∙for序列e=1→Edo:∙用当前策略πθ采样轨迹{s1,a1,r1,s2,a2,r2,…}∙为每一步数据计算δt=rt+γVω(st+1)−Vω(st)∙更新价值参数w=w+αω∑tδt∇ωVω(st)∙更新策略参数θ=θ+αθ∑tδt∇θlog⁡πθ(at∣st)∙endfor\begin{array}{l}\bullet\ \ \text{初始化策略网络参数}\theta,\ \text{价值网络参数}\omega\\ \bullet\ \ \boldsymbol{\mathsf{for}} \text{序列} e=1\to\boldsymbol{E} \boldsymbol{\mathsf{do}} :\\ \bullet\ \ \ \ \ \ \ \ \text{用当前策略}\pi_{\theta}\text{采样轨迹}\{s_{1},a_{1},r_{1},s_{2},a_{2},r_{2},\ldots\}\\ \bullet\ \ \ \ \ \ \ \ \text{为每一步数据计算} \delta_{t}=r_{t}+\gamma V_{\omega}(s_{t+1})-V_{\omega}(s_{t})\\ \bullet\ \ \ \ \ \ \ \ \text{更新价值参数}w=w+\alpha_{\omega}\sum_{t}\delta_{t}\nabla_{\omega}V_{\omega}(s_{t})\\ \bullet\ \ \ \ \ \ \ \text{更新策略参数}\theta=\theta+\alpha_{\theta}\sum_{t}\delta_{t}\nabla_{\theta}\log\pi_{ \theta}(a_{t}|s_{t})\\ \bullet\ \ \boldsymbol{\mathsf{end}} \boldsymbol{\mathsf{for}}\end{array}  初始化策略网络参数θ, 价值网络参数ω  for序列e=1Edo:        用当前策略πθ采样轨迹{s1,a1,r1,s2,a2,r2,}        为每一步数据计算δt=rt+γVω(st+1)Vω(st)        更新价值参数w=w+αωtδtωVω(st)       更新策略参数θ=θ+αθtδtθlogπθ(atst)  endfor

总结

  • REINFORCE 是基于策略的算法,其采用蒙特卡洛估计Q函数,对梯度估计无偏但方差大
  • Actor-Critic= Value-based(Critic) + Policy-based(Actor),Actor-Critic 是对价值策略的集大成者,Critic 在 Actor 采样的数据中学习分辨动作的好坏,从而指导 Actor 进行策略更新。相比 REINFORCE 其训练过程更稳定,也即方差小。
http://www.dtcms.com/a/540263.html

相关文章:

  • 基于萤火虫算法(FA)优化支持向量机(SVM)参数的分类实现
  • 【C++】C++11出来之后,到目前为止官方都做了些什么更新?
  • 公司网站建设及推广淮南网云小镇怎么样
  • UE C++ 离线安装 经验
  • Smart SVG Viewer,一款免费的SVG 图像查看器
  • 基於 MAC 的模型算力估算方法
  • VoxCPM macOS 安装部署
  • 【Linux篇】ELF文件与程序加载:理解链接过程中的静态库,动态库及目标文件
  • 做体育直播网站做数据权威的网站
  • 《因为独特》不畏惧与众不同 王宁泡泡玛特的独特之道:低风险创业的人性解码与产品设计指南
  • 【打靶日记】VulNyx 之 Lower3
  • DomainNet 数据集下载
  • 6.1.2.1 大数据方法论与实践指南-离线任务分类
  • wordpress密码忘了怎么找回郑州网站优化网络建设有限公司
  • AI隐式标识‌中的红绿名单水印技术通俗讲解
  • idea能怎么对比2个文件
  • 纠删码(erasure coding,EC)技术现状
  • 使用mybatis 实现量表关联,并且统计数据量
  • 哈希表的HashMap 和 HashSet
  • 从编程语言出发如何考虑投入研发RAG智能体
  • 企业网站的推广方式和手段有哪些网站的建设主题
  • 微信服务号菜单链接网站怎么做创意界面
  • Qt 网络聊天室项目
  • Vue 3 中 ref 和 reactive 的区别
  • 第十章自我表达的路径--创建第二大脑读书笔记
  • 【码源】智能无人仓库管理系统(详细码源上~基于React+TypeScript+Vite):
  • 初识 Spring Boot
  • 人工智能助推城市规划新纪元:佛山年会深度解析大模型革新
  • c 网站开发 pdf洛阳已经开始群体感染了
  • 【Delphi】操纵EXE文件中版本信息(RT_VERSION)