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

RL--2

强化学习当中最难的两个点是:
1.reward delay;
2.agent的行为会影响到之后看到的东西,所以agent要学会探索世界;

关于强化学习的不同类型,可以分为以下三种:
一种是policy based:可以理解为它是去学习一个很强的actor,由actor去指导下一步的行动;
一种是value-based:学习一个好的critic,这个critic其实就是价值函数,由价值函数去指导做下一步的行动;
还有一种是当下最流行的二者结合的方法叫actor+critic,也是PPO 用的方法;
在这里插入图片描述

policy based

在这里插入图片描述
首先我们用神经网络去学习一个actor,他需要根据环境观察到的state(obervation)去得到action的output;
加下来,我们要判断这个action好不好,靠的是环境反馈的reward;
对于一次的游戏体验而已,reward是每次action累计的return的总和;
在这里插入图片描述
但是,我们知道游戏具有随机性,每次的整个游戏过程我们记录为T(s1,a1,r1…);
哪怕我们使用同一个actor,由于游戏本身的随机性T也是不一样的;
但是不同的actor得到的T的概率和倾向性肯定是不一样的;
比如说如果你的actor是见到敌人就呆住,那么你的T大概率就是敌人一出现你就挂了;
所以我们不能拿单次游戏的reward作为此actor的reward,我们要进行多次游戏,这就好比在T的分布中进行采样;N次采样取平均作为这个actor的reward;
在这里插入图片描述
接下来我们的目标是优化actor的参数去最大化游戏反馈的reward;
在这里插入图片描述
注意Trajactery对应得reward跟待优化的参数没关系,他是环境的反馈,所以可不可导无所谓;
在这里插入图片描述
在这里插入图片描述
这里要注意R(T)是某个trajactory完成后的reward,而不是某个action的reward,这个也很好理解;
在这里插入图片描述
关于这里为什么要取log的解释是,不同的action采样到的频次不一样,模型会提升采样到的多的action的概率,哪怕reward没有很高,所以要除以概率本身,这样子本来比较高概率的action的grad就会变小
在这里插入图片描述
注意R(T)如果都是正值应该不会有问题,也就意味着每个action都会被激励,只是激励有大有小,但是如果说采样过程中有个action没有采样到,不知道action a的reward是多少,这就会导致action a的概率比较低,所以最好给reward减去一个bias,这个bias是我们自己设计的。这样reward有正有负之后,可以去掉采样不均匀带来的一些影响
在这里插入图片描述
所以整个policy based RL的整体流程就是:现有一个初始化参数的actor,然后去sample(其实就是跟环境交互的过程)获取路径、行动、反馈,再拿上面三个去训练model,更新参数,其实log后面那部分和我们正常的深度学习网络一样的,(input就是s,label就是action a)只是前面会乘以整个路径的reward的系数,也就是把reward作用在这个actor上;
在这里插入图片描述
在这里插入图片描述
如果我们的enviroments和reward是model的话,可以直接训练;但如果不是,不能微分的话,就用policy gradient硬train一发;
在这里插入图片描述
这里的critic其实就是价值函数;
在这里插入图片描述
如何衡量价值函数好不好?很简单,价值函数的衡量越接近实际的reward越好;
在这里插入图片描述
我们需要给每一个action合理的reward;上述的同一个trajectory里面的每个action都是相同reward显然不合理,一个action的reward首先跟以往历史的action的reward无关,其次随时间会递减reward的影响;下图中的advantage function是相对于其他action,在当前actor采用本action的credit;
在这里插入图片描述
关于on policy,也就是采样数据=》更新model=>采样数据=》更新model的循环;
因为我们每次要根据trajectory最终的reward去计算每个action的credit,所以要等到一批数据采集完才能更新,当前的数据一旦更新完model就不能在用了,因为它只适用于当前的policy model,更新后policy model就变了;所以这个过程很繁琐耗时间;
off policy的意思就是我们训练的model和我们采集数据的model不是同一个model,我们可以随意选取一个actor去采集数据(大量数据),分布的事情可以靠分布之间的变换解决(关于这个变换后面的视频没有具体看,下次可以补上)
在这里插入图片描述
我们观察数据的actor的分布和实际train的actor的分布不能差太多,差太多以下近似公式会不成立
在这里插入图片描述
上图最后一项是待优化的函数:顾名思义:当前actor根据s采取的action的概率乘以对应的credit,我们希望其越大越好;

上面说到,我们不希望采样数据的分布和训练的actor分布差别太大,那么就需要用到限制,TRPO是额外加出来的限制,不好训练,用的少,PPO就是把限制加入到优化函数里面去了;然后关于beta的值是个动态调整的值,我们会自己设一个LKL最大最小值,超过最大值,就调小beta,反之亦然;这里要注意的是,KL计算的不是参数之间的距离,而是behaivor之间的距离;通用采样数据的s和a就可以计算;

在这里插入图片描述
PPO
在这里插入图片描述
PPO2的加了个clip来做,意思就是看图:如果A>0是正激励,就希望P越大越好,但是也不要太大,如果A<0是负激励,就希望P越小越好,但是也不要太小;
在这里插入图片描述
PPO就是紫色的线,可以看到PPO算法在RL中算是非常稳定和性能好的;
在这里插入图片描述

http://www.lryc.cn/news/537933.html

相关文章:

  • [JVM篇]分代垃圾回收
  • Dify本地安装
  • python | 两招解决第三方库安装难点
  • stm32mp15x 之 M4 使用 canfd
  • 第七天:数据提取-正则表达式
  • Python入门全攻略(六)
  • MongoDB副本集
  • 登录弹窗效果
  • C++上机_日期问题
  • 应对DeepSeek总是服务器繁忙的解决方法
  • web第三次作业
  • 力扣 438.找到字符串中所有字母异位词
  • 【Python】Python入门——基础语法及顺序语句
  • 2.2 反向传播:神经网络如何“学习“?
  • frp-tool,客户端frp命令行工具
  • 【学术投稿-第五届应用数学、建模与智能计算国际学术会议】CSS伪类选择器深度解析:分类、应用与技巧
  • 常用查找算法整理(顺序查找、二分查找、哈希查找、二叉排序树查找、平衡二叉树查找、红黑树查找、B树和B+树查找、分块查找)
  • Express 中 res 响应方法详解
  • DeepAR:一种用于时间序列预测的深度学习模型
  • 权限模型深度解析:RBAC vs ABAC vs PBAC vs TBAC,如何选择最适合的方案?
  • Windows逆向工程入门之堆栈结构与信息获取
  • 【c++初阶】类和对象②默认成员函数以及运算符重载初识
  • 【做一个微信小程序】校园地图页面实现
  • 成熟开发者需具备的能力
  • 计算机毕业设计--基于深度学习技术(Yolov11、v8、v7、v5)算法的高效人脸检测模型设计与实现(含Github代码+Web端在线体验界面)
  • 力扣做题记录 (二叉树)
  • 机试刷题_字符串的排列【python】
  • 百度智能云—千帆 ModelBuilder API的简单调用(Java)
  • unity学习43:子状态机 sub-state machine
  • Qt MainWindow