强化学习入门【3】:一些算法

参考:
ChatGPT
(加上个人理解,如有错误,欢迎指正)

我这里只记录了两个我最近需要的算法,并不适合刚入门强化学习的小白系统的学习RL,因为还有很多其它更基础、更经典的算法,推荐直接跟着https://hrl.boyuai.com/学习,超级深入浅出、系统性很强!

一、蒙特卡洛算法(Monte Carlo, MC)
1、概述
  • 蒙特卡洛方法主要用于给定策略下,估计每个状态或每个状态-动作对的值函数
  • 核心思想是通过大量随机采样来逼近某个期望值或概率分布
2、使用场景
  • 无法精确建模环境或不知道环境动态特性(如状态转移概率和奖励函数)时,可以通过反复采样得到估计的累积回报
  • 无法使用动态规划时,即环境过于复杂、状态空间过于庞大甚至是连续时
  • 需要学习迟到的奖励时,尤其是回合制事件,一个回合结束后才能获得奖励
  • 需要处理无法提前终止的探索任务时
3、关键步骤
  • 采样多个轨迹:智能体按照当前策略在环境中进行多次完整的采样实验,即从某个状态开始,执行一系列动作,直到到达终止状态。这一系列状态-动作-奖励的序列称为一个轨迹(episode)
  • 计算轨迹:对于每条轨迹,计算每个状态或动作的累积回报(Return)
  • 更新值函数:将多次轨迹的回报进行平均,作为该状态或动作的值函数估计。随着轨迹数目的增多,估计值会逐渐接近真实值
二、优势回归算法(Advantage-Weighted Regression, AWR)
1、优势函数Advantage Function
  • 优势函数A(s,a)A(s,a)A(s,a)表示在状态sss下采取动作aaa相较于在该状态平均表现(即状态价值V(s)V(s)V(s))的“相对好坏”
  • A(s,a)=Q(s,a)−V(s)A(s,a)=Q(s,a)-V(s)A(s,a)=Q(s,a)V(s)
  • 如果A(s,a)>0A(s,a)>0A(s,a)>0,意味着该动作比平均表现更好(优势)
  • 如果A(s,a)<0A(s,a)<0A(s,a)<0,意味着该动作比平均表现更差(劣势)
2、简介
  • AWR是一种基于回归的离线强化学习算法,它更像是一种行为克隆(Behavior Cloning)的变体
  • 通过优势函数来加权过往的经验,并使用这些加权的经验进行回归来优化策略,而不是通过梯度直接优化策略
  • 适合离线强化学习场景,智能体通过已收集的数据进行学习
3、关键步骤
  • 采集离线数据:预先收集一批经验数据(s,a,r,s′)(s,a,r,s')(s,a,r,s),包括状态sss、动作aaa、奖励rrr和执行动作aaa后转移到的下一状态s′s's
  • 计算优势函数A(s,a)=rt+γV(s′)−V(s)A(s,a)=r_t+\gamma V(s')-V(s)A(s,a)=rt+γV(s)V(s)

不使用A(s,a)=Q(s,a)−V(s)A(s,a)=Q(s,a)-V(s)A(s,a)=Q(s,a)V(s)的原因:

  • 简化计算:一般计算Q(s,a)Q(s,a)Q(s,a)需要更多估计步骤和计算资源,用rt+γV(s′)r_t+\gamma V(s')rt+γV(s)来近似Q(s,a)Q(s,a)Q(s,a)可简化计算量
  • 降低方差:直接使用Q(s,a)−V(s)Q(s,a)-V(s)Q(s,a)V(s)可能导致高方差,导致波动不稳定
  • 离线数据的局限性:由于离线数据,准确估计Q(s,a)Q(s,a)Q(s,a)更加困难
  • 通过加权回归更新策略:优势加权的软策略更新,πnew (a∣s)∝πold (a∣s)exp⁡(βA(s,a))\pi_{\text {new }}(a \mid s) \propto \pi_{\text {old }}(a \mid s) \exp (\beta A(s, a))πnew (as)πold (as)exp(βA(s,a)),使更新后的策略πnew \pi_{\text {new }}πnew 倾向于选择优势较大的动作

  • 执行行为克隆回归:通过最大化加权回归的方式来更新策略

    • 当策略是参数化模型时,通过最小化损失函数、梯度更新来实现回归过程

    AWR损失函数的两种形式:
    L=−∑s∑aπold (a∣s)exp⁡(βA(s,a))log⁡πnew (a∣s)\mathcal{L}=-\sum_s \sum_a \pi_{\text {old }}(a \mid s) \exp (\beta A(s, a)) \log \pi_{\text {new }}(a \mid s)L=saπold (as)exp(βA(s,a))logπnew (as)

    • πold (a∣s)\pi_{\text {old }}(a \mid s)πold (as)意味着是从旧策略采集的数据中得到了状态-动作对
    • exp(βA(s,a))log⁡πnew (a∣s)exp (\beta A(s, a)) \log \pi_{\text {new }}(a \mid s)exp(βA(s,a))logπnew (as)是加权后的关于新策略πnew\pi_{\text{new}}πnew的对数似然,不仅模仿专家,而且使得更优的动作在新策略中有更高的选择概率

    L=−∑(s,a) expertexp⁡(βA(s,a))log⁡πnew (a∣s)\mathcal{L}=-\sum_{(s,a)~expert} \exp (\beta A(s, a)) \log \pi_{\text {new }}(a \mid s)L=(s,a) expertexp(βA(s,a))logπnew (as)

    • ∑(s,a) expert\sum_{(s,a)~expert}(s,a) expert表示状态-动作对来自专家的演示数据,而不是智能体自己的旧策略πold\pi_{\text{old}}πold收集的数据
    • 当策略不是一个参数化模型,比如一个字典(表格时),通过优势加权实现回归过程
    • 旧策略表:在表格形式中,旧策略πold\pi_{\text{old}}πold是直接存储的,表示在状态sss下选择动作aaa的概率
    • 优势加权:对于每个状态,可以根据采样得到的经验数据,使用优势函数计算每个动作的加权概率,然后更新策略表
      πnew (a∣s)=πold (a∣s)exp⁡(βA(s,a))∑a′πold (a′∣s)exp⁡(βA(s,a′))\pi_{\text {new }}(a \mid s)=\frac{\pi_{\text {old }}(a \mid s) \exp (\beta A(s, a))}{\sum_{a^{\prime}} \pi_{\text {old }}\left(a^{\prime} \mid s\right) \exp \left(\beta A\left(s, a^{\prime}\right)\right)}πnew (as)=aπold (as)exp(βA(s,a))πold (as)exp(βA(s,a))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值