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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/923124.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何利用Python爬虫精准获得1688店铺的所有商品信息

在数字化时代&#xff0c;数据的价值日益凸显&#xff0c;尤其是在电商领域。1688作为中国领先的B2B电商平台&#xff0c;拥有丰富的商品数据。对于电商企业来说&#xff0c;获取这些数据对于市场分析、竞品研究等具有重要意义。本文将详细介绍如何使用Python编写爬虫程序&…

电子学习中的关键游戏化元素

游戏化彻底改变了电子学习领域&#xff0c;提供了一种使学习具有吸引力、互动性和有效性的方法。通过将类似游戏的功能集成到教育平台中&#xff0c;教育工作者可以增强动力&#xff0c;提高知识记忆&#xff0c;并创造动态的学习体验。游戏化的关键要素为设计与学习者产生共鸣…

docker镜像、容器、仓库介绍

docker docker介绍docker镜像命令docker容器命令docker仓库 docker介绍 官网 Docker 是一种开源的容器化平台&#xff0c;用于开发、部署和运行应用。它通过将应用程序及其依赖项打包到称为“容器”的单一包中&#xff0c;使得应用能够在任何环境下运行&#xff0c;不受底层系…

一些好的AI技术学习平台和资料(动态更新)

1. 大模型 1.1 提示词&#xff08;Prompt&#xff09; 目前&#xff0c;大模型技术已经深入到工作生活的方方面面&#xff0c;各技术大厂的大模型也层出不穷&#xff0c;从开始的OpenAI一家独大&#xff0c;到当今世界的“百模大战”。从一些日常使用的角度来说&#xff0c;模…

IDEA优雅debug

目录 引言一、断点分类&#x1f384;1.1 行断点1.2 方法断点1.3 属性断点1.4 异常断点1.5 条件断点1.6 源断点1.7 多线程断点1.8 Stream断点 二、调试动作✨三、Debug高级技巧&#x1f389;3.1 watch3.2 设置变量3.3 异常抛出3.4 监控JVM堆大小3.5 数组过滤和筛选 引言 使用ID…

QT简易项目 数据库可视化界面 数据库编程SQLITE QT5.12.3环境 C++实现

案例需求&#xff1a; 完成数据库插入&#xff0c;删除&#xff0c;修改&#xff0c;查看操作。 分为 插入&#xff0c;删除&#xff0c;修改&#xff0c;查看&#xff0c;查询 几个模块。 代码&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget…

丹摩征文活动|实现Llama3.1大模型的本地部署

文章目录 1.前言2.丹摩的配置3.Llama3.1的本地配置4. 最终界面 丹摩 1.前言 Llama3.1是Meta 公司发布的最新开源大型语言模型&#xff0c;相较于之前的版本&#xff0c;它在规模和功能上实现了显著提升&#xff0c;尤其是最大的 4050亿参数版本&#xff0c;成为开源社区中非常…

MySQL与Informix数据库中的同义表创建:深入解析与比较

MySQL与Informix数据库中的同义表创建:深入解析与比较 一、同义表的基本概念与用途1. 定义与概念2. 主要用途二、MySQL数据库中的同义表创建1. 使用视图创建同义表2. 使用别名创建同义表3. MySQL中的同义表限制与替代方案三、Informix数据库中的同义表创建1. 创建同义表的基本…

【LeetCode面试150】——202快乐数

博客昵称&#xff1a;沈小农学编程 作者简介&#xff1a;一名在读硕士&#xff0c;定期更新相关算法面试题&#xff0c;欢迎关注小弟&#xff01; PS&#xff1a;哈喽&#xff01;各位CSDN的uu们&#xff0c;我是你的小弟沈小农&#xff0c;希望我的文章能帮助到你。欢迎大家在…

鸿蒙进阶篇-状态管理之@Provide与@Consume

大家好&#xff0c;这里是鸿蒙开天组&#xff0c;今天我们来学习一下状态管理中的Provide与Consume。 一、概述 嘿&#xff01;大家还记得这张图吗&#xff1f;不记得也要记得哦&#xff0c;因为这张图里的东西&#xff0c;既是高频必考面试题&#xff0c;也是实际开发中&…

非交换几何与黎曼ζ函数:数学中的一场革命性对话

非交换几何与黎曼ζ函数&#xff1a;数学中的一场革命性对话 非交换几何&#xff08;Noncommutative Geometry, NCG&#xff09;是数学的一个分支领域&#xff0c;它将经典的几何概念扩展到非交换代数的框架中。非交换代数是一种结合代数&#xff0c;其中乘积不是交换性的&…

【AIGC】大模型面试高频考点-RAG篇

【AIGC】大模型面试高频考点-RAG篇 &#xff08;1&#xff09;RAG的基本原理&#xff08;2&#xff09;RAG有哪些评估方法&#xff1f;&#xff08;3&#xff09;RAG有哪些评估框架&#xff1f;&#xff08;4&#xff09;RAG各模块有哪些优化策略&#xff1f; &#xff08;1&am…

永磁同步电机末端振动抑制(输入整形)

文章目录 1、前言2、双惯量系统3、输入整形3.1 ZV整形器3.2 ZVD整形器3.3 EI整形器 4、伺服系统位置环控制模型5、仿真5.1 快速性分析5.2 鲁棒性分析 参考 1、前言 什么是振动抑制&#xff1f;对于一个需要精确定位的系统&#xff0c;比如机械臂、塔吊、码头集装箱等&#xff…

Spring 中的 ProxyFactory 创建代理对象

一、jdk 动态代理 和 cglib动态代理 简单介绍 1.jdk动态代理 public interface AService {public String serviceA(String param);public String serviceAA(String param); } public interface BService {public String serviceB(String param);public String serviceBB(Str…

C++数据结构与算法

C数据结构与算法 1.顺序表代码模版 C顺序表模版 #include <iostream> using namespace std; // 可以根据需要灵活变更类型 #define EleType intstruct SeqList {EleType* elements;int size;int capacity; };// Init a SeqList void InitList(SeqList* list, int capa…

贵州茅台[600519]行情数据接口

贵州茅台&#xff1a;实时行情 Restful API # 测试接口&#xff1a;可以复制到浏览器打开 https://tsanghi.com/api/fin/stock/XSHG/realtime?tokendemo&ticker600519获取股票实时行情&#xff08;开、高、低、收、量&#xff09;。 请求方式&#xff1a;GET。 Python示例…

Node.js的http模块:创建HTTP服务器、客户端示例

新书速览|Vue.jsNode.js全栈开发实战-CSDN博客 《Vue.jsNode.js全栈开发实战&#xff08;第2版&#xff09;&#xff08;Web前端技术丛书&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 要使用http模块&#xff0c;只需要在文件中通过require(http)引入即可。…

互联网直播/点播EasyDSS视频推拉流平台视频点播有哪些技术特点?

在数字化时代&#xff0c;视频点播应用已经成为我们生活中不可或缺的一部分。监控技术与视频点播的结合正悄然改变着我们获取和享受媒体内容的方式。这一变革不仅体现在技术层面的进步&#xff0c;更深刻地影响了我们。 EasyDSS视频直播点播平台是一款高性能流媒体服务软件。E…

基于Boost库的搜索引擎

本专栏内容为&#xff1a;项目专栏 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;基于Boots的搜索引擎 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f339;&#x1f339;&#x1f339;关注我带你学习编程知识…

安全加固方案

交换机安全加固 查看是否关闭未使用的接口 25GE1/0/1、25GE1/0/47、25GE1/0/48需要使用&#xff0c;暂不关闭 system-view # interface Eth-Trunk99 shutdown quit interface Eth-Trunk100 shutdown quit interface Eth-Trunk110 shutdown quit interface 25GE1/…