【AI】【强化学习】强化学习算法总结、资料汇总、个人理解

前言:自己学习西湖大学赵老师的课、youtube系列的课程相关比较重要的内容,后续不断再进行完善。

YouTube Serrano.academy rlhf讲的很好 合集最后一个没看

强化学习第四章
police没一步需要无穷,值迭代只需要一步 收敛不一样
值迭代:原因在于值迭代在于贝尔曼最优方程的值,核心的目的在于优化得到矩阵方块中每个格子的值。只需要每步骤选择action的q值最大的策略,然后不断迭代,然后就能优化得到最后收敛的格子值。
策略迭代: 策略迭代之所以需要n步,就是因为策略迭代需要进行策略矩阵求解,如果不进行矩阵求解的话就要进行值迭代

第五章
蒙卡诺纳 mc basis 还是之前的policy evaluate policy improve 只不过q值不是模型计算出来的,而是取样取出来的
mc exploring starts 一条轨迹走的很远,从而一条轨迹能有很多的复用
mc greedy 采取策略的时候不用argmax 最优化的选择,而是放宽一点策略,允许一些随机游动,增加探索性

第六章
RM算法 :在不知道具体函数表达式的情况之下,在第k次的根的估值值wk计算之后,再进行一次有噪音的观测乘以系数加和,就得到了wk+1次根估计观测
Rm算法的收敛条件 1.梯度有限 2.系数值不要收敛到0太快,但是也也要收敛到0,比如1/k 3.高斯噪声满足期望为0,方差有限
随机梯度下降收敛性分析:随机梯度下降在初始值距离最优值很远的时候,表现像梯度下降。当距离最优值很近的时候,就会上下跳跃浮动,随机性很大
批量梯度下降,所有样本都用上了,随着n变大,所有样本平均值接近于真实梯度值。小批量梯度下降 用了几个,随机梯度下降只用了一个

第七章
第二小节
TD learning最简单的形式 PPT红色部分的表达式
vt+1(st) 每个下标不同的含义,vt+1的t+1代表是t+1时刻的估计值(也不能理解为时刻 可以理解为迭代次数),st中的t代表环境中的agent在t时候到达了某个状态st
TD error 就是当前第t次的估计值,与还是t次不过状态st要到下一个st+1状态后续TD target的差距,TD算法就是类似RM,不断优化迭代
TD算法本质是一个使用rm求解一个贝尔曼期望方程
TD与MC的区别,td算法是在线的 不需要一个episode结束,是持续改进的,需要给一个初始值的Initial guess,是低反差 因为随机变量少rt+1 st+1 at+1 但是有偏估计(对比mc算法,从头开始估计episode)

第三节
Sarsa算法 和TD算法类似,只不过从状态值变成了action值的估计
sarsa算法过程,policy evaluate 就是action值得估计,然后得到一步迭代之后,就里面policy improve ,使用部分greedy算法

第四节
expected sarsa是将q值变化的地方action值变为从具体单个样本迭代值,变为变量,从而可以再求期

第五节
n-step sarsa ,n=1变成,sarsa算法,n=无穷变成MC算法(需要无穷样本)

第六节
q learning 解决的是一个贝尔曼最优方程
off-policy 就是说behavior policy 和target policy不一样,我们可以从别人不一样的经验里面学东西,sarsa和mc算法是on policy,q learning是off policy的
q learning 有2个版本 on policy 策略更新policy improve采用greedy算法,便于探索性,off policy采用episode从πa生存,然后policy improve不采用greedy算法,直接取最优的情况

第七节
不同的td算法,本质就是td target的不同,从sarsa到n step 到expected sarsa 到q learning到mc 方法

第八章
第二节
2.1最后 dπ代表一个轨迹走了很远之后,出现在每一个状态的概率值。dπ=dπ*pπ,代表在轨迹走了很远很远趋于无穷之后,乘以pπ,状态转移矩阵,还是相同的概率值
2.2优化算法 采用类似RM迭代式算法来优化参数w相关的东西。方式采用随机梯度下降的算法,一个个采样st进行迭代式下降
2.3 说表格的表示方法是线性估计法的特例,其中推导过程中部分表达式看着看着就看不懂了,比如tabular是function approximation的一个特殊形式,最后推导过程中w(s),代表参数向量w中第s个参数,wt(st+1)代表wt第t次迭代向量参数,t+1时刻agent所在的s的状态
2.5 告诉我们实际上真正TD线性算法状态是估计是最小化投影后的贝尔曼方差

这章后面dqn算法,本质就拿神经网络拟合相应的参数,类似线性拟合法,具体细节需要看PPT

第九章
第九章和第八章类似,第八章是action和state可以从表格变成函数,第九章是策略也可以用函数表达
9.1 policy gradient的基本思想
使用j(θ)来定义最优策略,然后使用梯度上升最优化策略
9.2 讲的是怎么定义j(θ)
第一种方式 -所有状态的期望值
① d的分布和策略π无关,那么就记作d0,最终的值记作v-0
② d的分布与策略π有关,可以利用dπ=dπ*pπ,知道pπ可以知道平稳状态下的dπ情况
第二种方式- 一步reward的平均值
具体最终的值的递进关系如下:
rπ- (所有状态s的期望值) <- rπ(s) (在特定状态s的所有action的最终期望) <-r(s,a)(所有可能reward的期望) 【具体看PPT】

附录:在论文中经常看到lim1/n Rt+k 的加和,实际就是rπ-
上面两种方式,在discounted情况下实际是等价的,rπ-=+(1-y)vπ-

总结: rπ- =dπ(s)rπ(s)的加和= lim1/n Rt的加和
vπ- =dπ(s)vπ(s)的加和 =y^tRt+1 从0到无穷的期望加和
论文中经常读到的是后者

9.3 主要讲的是最优策略的梯度的表达式
这里定义了一个表达式,但是具体推导没给出来。通过这个公式我们可以不断进行梯度上升,

9.4 讲解到底怎么梯度上升
这节课表达式中的qt(st,at),可以使用MC估计的方法来估计,叫做REANFORCE方法
具体见PPT,其中迭代算法系数值,有一个平衡的机制,一部分是加强选择更大的q值,一部分是加强更强的探索性,刚好平衡了这两点

算法步骤
一开始π(θk),产生一些episode,然后qt使用MC算法进行近似迭代。然后进行policy更新,最后拿更新后的policy再进行迭代。注意的是这个是离线的算法,需要等都采样完之后才能更新。

10 actor-critics方法 主要思想就是第八章 value approximation方法引入到第九章 policy gradient方法里面

10.1最简单的AC算法 QAC算法
其中算法和第九章最后的算法步骤一模一样,θ的迭代算法就是指的actor,qt(s,a)其中qt就是指的是critic
其中qt值被用mc进行估计,就是第九章算法,叫做REANFORCE
而QAC是如下形式
其中critica实际就是算法步骤中sarsa+value function估计的方法(但是这里我还是没懂和之前的算法有什么本质的区别???) ,actor指的是policy update方法,这个算法是on policy的能改进原来的算法情况
为什么叫qac,q实际指的是q值

10.2 A2C主要目的是在求策略函数的时候,怎么加进去一个东西使其的方差最小。加进入这个b(s)就是vπ(s),经过一系列的简化步骤之后,我们发现使用迭代算法优化θt,我们会采用相对值而不是绝对值q值来优化θ,因为q值1w看着很大,但是周围2w,相对来讲也不是最优值了

算法过程:前提 将qt(st,at)-vt(st)简化成rt+1+yvt(st+1)-vt(st)这样后面万一用神经网络拟合时候少用一个网络
算法具体步骤
先算 td error
然后 critic (value update)采用的是
td算法,拿之前算的td error来带入
然后 再进行actor (policy update)
进行θ迭代,同样拿之前的td error带入进行迭代
(???但是我还是没有理解里面的本质含义)

10.3 off policy actor-critic
重要性采样:一个分布用来behavior一个用来改进策略,两个分布不同,所以直接采样肯定用a的分布来估计b肯定不准,所以要讲a的概率分布进行表达式进行转换,转成b的这样就不会有问题了
重要性 权重就是p0(xi)/p1(xi) ,但是这个里面需要知道我们想要求的a分布(对应p0),和b分布(对应p1),但是重要性采样的权重的表达式都知道p0(xi)/p1(xi)*xi,相当于直接求期望,为什么不这样呢,因为有的分布不好直接求期望,比如用神经网络拟合的分布

整体的算法步骤相比,critic和actor中多了一个转换的系数因子

10.4 deterministic policy
这样的策略 a=u(s,θ),不像之前的π一样都是大于0的 ,输出的直接是一个action,比如向上 向下什么的

deterministic policy。是off policy的,因为在推导中策略函数j(θ)的梯度,中a被u(s,θ)代替了,所以我们不需要像之前那样a,s,a,s这样交替更换下去,来判断a是是哪个策略来的,可以是任何策略 所以是off policy的

这个算法步骤和之前类似,最后有些不一样

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一键掌控三线资源:极简 Shell 脚本实现 CPU·磁盘·内存可视化巡检

目录 前言 数值型 for 循环 语法格式 示例&#xff1a;打印 1 到 5 示例&#xff1a;打印5次Hello World 示例&#xff1a;计算 1 到 100 的累加和 遍历型 for 循环 语法格式 示例&#xff1a;遍历字符串列表 示例&#xff1a;遍历数组 示例&#xff1a;遍历文件列表…

数据结构:创建堆(或者叫“堆化”,Heapify)

目录 最直观的思路 更优化的思路&#xff08;自底向上的构建&#xff09; 第一步&#xff1a;重新审视问题 第二步&#xff1a;找到规律&#xff0c;形成策略 用一个实例来推演 第三步&#xff1a;编写代码 总结与分析 我们来深入探讨“创建堆”&#xff08;或者叫“堆化…

基于 GPT-OSS 的成人自考口语评测 API 开发全记录

1️⃣ 需求与指标 在项目启动前&#xff0c;我们设定了核心指标&#xff1a; 字错率&#xff08;WER&#xff09;< 5%响应延迟 < 800 ms高可用、可扩展 这些指标将贯穿整个开发和测试流程。 2️⃣ 数据准备 准备训练数据是关键步骤&#xff0c;我们使用了 1k 条自考口…

Linux初始——基础指令篇

Linux常用指令pwdlscdtouchmkdirrmmancpmvcatmorelesswhichwhereisaliasgrepfilezip/unzip 指令rzsztarpwd 在xshell中输入pwd并回车&#xff0c;将输出当前用户所存在的目录位置 可看到当前用户是在/home/hhw这个目录下 ls 在xshell中输入ls会显示当前目录所包含的文件 其中…

Vue-24-利用Vue3的element-plus库实现树形结构数据展示

文章目录 1 项目启动 1.1 创建和启动项目(vite+vue) 1.2 清理不需要的代码 1.3 下载必备的依赖(element-plus) 1.4 完整引入并注册(main.sj) 1.5 设置@别名(vite.config.js) 2 el-tree树形控件 2.1 TreeComponents.vue 2.1.1 模板部分 2.1.2 类型定义(Tree) 2.1.3 树形数据(dat…

Kubernetes 部署与发布完全指南:从 Pod 到高级发布策略

引言:告别手动,拥抱声明式 在传统的部署流程中,我们常常需要手动执行一系列命令:SSH 到服务器、拉取新代码、编译、重启服务、检查日志、处理错误…这个过程不仅繁琐低效,而且极易出错,难以保证环境的一致性。 Kubernetes 彻底改变了这一切。它通过一种 “声明式” 的模…

支持向量机核心知识总结

一、核心基础概念核心目标&#xff1a;在样本空间中找到划分超平面&#xff0c;将不同类别样本分开&#xff0c;且该超平面对训练样本局部扰动的 “容忍性” 最优&#xff08;即抗干扰能力强&#xff09;。超平面定义超平面是 n 维空间中的 n-1 维子空间&#xff0c;是 SVM 分类…

Spark学习记录

1、Spark基础介绍 1.1、Spark基础概念 Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎 1.2、Spark运行架构 运行过程&#xff1a; Driver 执行用户程序&#xff08;Application&#xff09;的main()方法并创建 SparkContext&#xff0c;与 Cluster Manager 建…

二进制方式安装部署 Logstash

背景说明 Logstash 是一个开源的数据收集和处理引擎&#xff0c;是 Elastic Stack 的重要组件之一。在本方案中&#xff0c;我们使用 Logstash 作为 Kubernetes 集群日志收集的关键组件&#xff0c;主要用于&#xff1a; 从 Kafka 消费各服务的日志数据对日志数据进行过滤和转…

如何用 Kotlin 在 Android 手机开发一个计算器

使用 Kotlin 开发 Android 计算器1. 创建新项目 打开 Android Studio&#xff0c;选择新建项目&#xff0c;模板选择 "Empty Activity"&#xff0c;语言选择 Kotlin&#xff0c;确保最低 API 级别为 21 或更高。2. 设计用户界面 在 res/layout/activity_main.xml 中定…

【Hadoop】Zookeeper、HBase、Sqoop

Zookeeper概述Zookeeper可以监视HDFS系统的name node和data node&#xff0c;HBase也极度依赖zookeeper&#xff0c;因为zookeeper维护了HBase的源数据以及监控所有region server的健康状态&#xff0c;如果region server宕机会通知master 。它也可以避免脑裂&#xff08;只有一…

MLIR - Linalg

简介 Linalg是MLIR中的HHO&#xff08;High-level Hierarchical Optimization&#xff09;中的核心方言&#xff0c;设计用于支持如下的核心Transformation&#xff1a; Progressive Buffer Allocation.Parametric Tiling.Promotion to Temporary Buffer in Fast Memory.Tile…

SQL相关知识 CTF SQL注入做题方法总结

SQL MySQL基础 MySQL基本操作 1.查询本地所有数据库&#xff1a; show databases; 2.使用数据库&#xff1a;use 数据库名; 3.查看当前使用的数据库名&#xff1a;select database(); 4.查看当前使用的数据库的所有表&#xff1a;show tables; 5.查看数据库版本&#xff1a;sel…

魔方的使用

三阶魔方入门玩法教程 【简单实用11个公式】三阶魔方分步还原公式图解 【初级篇】三阶魔方入门教程 1、底棱归位&#xff08;底十字对中层&#xff09; 先顶黄白十字&#xff0c;旋转对齐中层后&#xff0c;R’2翻到底层 2、底角归位 上右-前-》右下 &#xff1a;URU’R’…

新手友好!剪映:开启你的视频剪辑之旅!(国际版)

一.软件介绍 剪映&#xff08;CapCut&#xff09;是一款由​​抖音旗下深圳市脸萌科技有限公司​​开发的全功能视频编辑软件&#xff0c;自2019年5月上线以来&#xff0c;因其简单易用且功能强大&#xff0c;受到了大量用户的喜爱。 1.功能和作用&#xff1a; 功能类别主要…

使用AI大模型Seed1.5-VL精准识别开车接打电话等交通违法行为

原文链接 本案例根据用户上传的电子警察或道路卡口抓拍的图片,使用豆包全新视觉深度思考模型Doubao-1.5-thinking-vision-pro,精准识别车牌号码、车牌颜色、车身颜色、车辆品牌等车辆信息,同时通过算法精确识别开车打电话、未系安全带等交通违法行为,具有极强的实用价值。…

骑行商城怎么开发

随着骑行运动普及与数字化消费升级&#xff0c;“骑行中控数据变现积分商城”模式成为新趋势。以下从核心步骤、关键要点、风险规避三方面&#xff0c;详解如何搭建该类型小程序。一、明确核心架构与需求定位在开发前需确定小程序的核心逻辑与目标用户&#xff0c;避免功能冗余…

揭秘表格推理的“思维革命”:RoT模型介绍

–– RoT: Enhancing Table Reasoning with Iterative Row-Wise Traversals今天&#xff0c;我想和大家探讨一个我们每天都会遇到&#xff0c;却可能从未深思过其背后奥秘的事物——表格。从公司的财务报表、医疗数据&#xff0c;到体育赛事统计&#xff0c;表格无处不在&#…

【C++】AVL树(详解)

文章目录 上文链接一、什么是 AVL 树二、AVL 树的实现1. 引入平衡因子2. 整体结构3. AVL 树中的插入操作(1) 插入节点(2) 更新平衡因子更新规则停止更新条件 4. 旋转(1) 旋转的目的(2) 右单旋(3) 左单旋(4) 左右双旋(5) 右左双旋 5. AVL 树的查找与删除6. AVL 树的平衡检测 三、…

shell编程-核心变量知识

文章目录shell简介如何学好shell初识shell什么是shell执行shell脚本常用的三种方式shell变量变量相关的配置文件变量的定义shell核心位置变量shell简介 为什么学习shell&#xff0c;shell的作用 面试题&#xff1a;给你一台主机你的操作流程是什么&#xff1f; 1.自动化安装操…