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

李宏毅深度强化学习课程笔记

课程链接:

https://www.bilibili.com/video/BV1aes8ebEz3/?spm_id_from=333.1007.0.0&vd_source=132c74f7a893f6ef64b723d9600c40b7https://www.bilibili.com/video/BV1aes8ebEz3/?spm_id_from=333.1007.0.0&vd_source=132c74f7a893f6ef64b723d9600c40b7

Policy based approach:学习actor(policy)

actor(policy)就是一个function,输入是observation(或者叫state),输出是action,一般用\pi表示, 其中网络的参数用\theta表示。

优化目标:一场游戏中一连串action的reward的综合,叫做total reward(也叫return),用R(\tau)表示,其中R(\tau)可以是一个黑盒子,只需要能得到reward的值即可

强化学习的过程如下:其目标就是最大化total reward的期望

\tau代表一整个episode的state,action,reward的序列,通过不停的玩游戏,得到非常多的轨迹\tau,假设从中sample出N次玩的轨迹,假设这个N特别大。那么toral reward的期望\overline{R}_\theta

就可以由这N次轨迹的toral reward来估计

其中P(\tau | \theta)代表,使用\pi_\theta作为actor时,得到轨迹\tau的概率

R(\tau)是环境给出的,是一个黑盒子,只返回一个reward的数值

优化目标:最大化total reward的期望

轨迹\tau的计算方式如下:

对上面的式子进一步简化,并只保留和梯度相关的部分,得到最终的梯度表达式如下:

注意:1,在计算单个action时乘的R是整个trajectory的,而不是该单个步骤的,为什么?因为如果是单步,那么模型就学不到长期的(最终的reward)。比如需要经过一系列中间状态没有reward的trajectory。

2,为什么取log?为什么分母还要除以一个几率,为了避免频率高的reward差的action造成的影响,相当于做了一个normalization

如果R(\tau)全为正会出现问题:会导致正的reward部分变得平滑,反而选不出更好的决策

解决方案:减去一个baseline(表示为b)的值,使得最后的reward有正有负

最简单的baseline就是R(\tau)的平均值

原本的式子中,每个action的weight都是乘以整个轨迹的total reward,这样不合理。

我们希望给每个action都赋值不同的weight,这样才更合理,解决方案时reward只跟执行该action之后的reward,这样就引出了advantage function的概念:因为会减掉baseline,所以得到的是一个相对的值,对应英文advantage

PPO:

on policy和off policy

on policy:

首先一个由参数\theta决定的policy和环境做交互,得到多个轨迹\tau

表示为:\tau \sim p_\theta(\tau),其中p代表“分布的意思”,参数\theta代表这个分布由参数\theta决定。这个式子表示:轨迹\tau服从一个由参数\theta决定的分布。

当参数\theta更新时,data也要重新收集

Off-policy:

同一笔data 反复用多次,希望用另外一套polciy \pi_{\theta'} 来训练参数\theta,而\theta‘是固定的。用\pi_{\theta'}得到的data可以用很多次。

Importance sampling:

假设有一个function ,f(x)。假设要从p分布中sample 出x,然后带到f(x)中,算出其期望。

假设只能从另外一个q分布中sample 出x

可以把p换成q,但是p和q的差距不能太大,如果sample次数不过,难么结果差距就会非常大

用一个\theta'来sample出\tau,作为示范。然后用Importance sampling的思想,补上一个权重,就可以变成从固定的\theta'中采样

这样的话,就可以利用\theta'来sample出\tau,然后可以对\theta 来update多次

A^\theta(s_t,a_t)是advantage function,是用来估计s_t时刻采取a_t时的累积reward并减去baseline的值(也叫advantage),衡量了这一步选择action的好坏程度

log被消掉了

PPO和TRPO的区别:

TRPO会把KL散度单独作为一个constraint

clip函数clip(x,0.8,1.2)

其中clip函数部分的作用是蓝色虚线

如果A>0,则这个值越大越好,但是不能够太大,不能超过1+\epsilon,如果A过大,就不再增加A

A<0,则这个值越大越好,但是不能够太大,不能超过1+\epsilon,如果A过大,就不再增加A

这样的目的是为了不让p(\theta)p(\theta')相差过大

 Critics

Critics是用来估计reward的,

其中V^\pi(s)只估计actor 在某个state s时,能得到的total reward

学习的是critic: 评价某个state未来可能带来的reward效果有多好(看到某个state,对应的cumulated reward的估计值)

V的值取决于state以及actor \pi的好坏:V和\pi是有关的,是绑定的,所以是V^\pi

看到相同的state,不同的actor的V的值是不一样的

怎么计算V?

V^\pi实际上是一个network

monte-carlo (MC)based approach

Temporal-difference (TD) approach

 Q-learning

Q-function则是估计actor \pi在state s做出action a后会得到的total reward,采取的action不同,得到的reward也会不同

Q function:

Qfunction的核心在于,对于一个state,会穷举出当前state能做出的所有action对应的cumulated reward,这样就可以找到最好的action序列

Q function是用来衡量actor的好坏的

可以用Q-function找到一个好的actor

只要找到了一个actor的Q function,那么一定能找到一个更好的actor 

假设学习到了一个Q,那么根据这个Q的估计,每次都选取Q最大的action,那么,采取这些action形成的actor‘就是一个更好的actor

证明:

每次都选Q最大的action,那么这样做的actor就是一个更好的actor

Q的训练方法:

相当于做成了一个off policy的做法

Q-learning的训练过程

Tips of Q-leanring

Actor-Critic

Asynchronous Advantage Actor-Critic (A3C)

用期望来替代sample

A3C:

强化学习在LLM中的应用:

参考视频:

https://www.bilibili.com/video/BV1zP92YNEPW?spm_id_from=333.788.videopod.sections&vd_source=132c74f7a893f6ef64b723d9600c40b7https://www.bilibili.com/video/BV1zP92YNEPW?spm_id_from=333.788.videopod.sections&vd_source=132c74f7a893f6ef64b723d9600c40b7

要训练的LLM就叫policy,用于预测action (next token)

reward model 输出的是一个分数(value)

GRPO

GRPO可视化理解:

reward model 可以是一个简单的函数,比如字数限制,是否要出现think token

http://www.dtcms.com/a/573761.html

相关文章:

  • vue怎么拿到url上的参数
  • WiFi1到WiFi7的发展史:它们之间的区别有什么
  • 6-5〔O҉S҉C҉P҉ ◈ 研记〕❘ 客户端攻击▸利用Windows库文件进行攻击-1
  • 用Python和Telegram API构建一个消息机器人
  • 的建站公司绵阳吉工建设
  • 个人网站设计摘要给公司做一个网站流程
  • serde
  • 用品牌重塑秩序:短信LOGO认证打造沟通信任链
  • 网站板块策划南昌做网站和微信小程序的公司
  • 全网普盖网站建设河南asp
  • 解决 GitLab Token 轮换后 SourceTree 认证失败问题
  • SpringBoot项目实现国际化
  • Jupyter Notebook 完整安装指南
  • XPath进阶:复杂嵌套结构与条件查询的终极指南
  • Oracle AWR案例分析: 诊断‘enq: TX - row lock contention‘等待事件
  • 【云运维】Zabbix 6.0 基于 LNMP 架构部署指南
  • 企业做网站要注意些什么问题大宗交易平台查询
  • 网站安全的必要性做电影网站违法吗
  • EtherCAT、PROFINET、EtherNet/IP和Modbus TCP主要区别
  • 电脑误格式化误删除如何通过数据恢复软件免费版搭建数据恢复中心
  • 如何平衡 ToB 产品中不同客户的需求
  • 基础数据结构之数组的前缀和技巧:和为K的子数组(LeetCode 560 中等题)
  • 【基础排序】CF - 最优排列Permutator
  • [RE2] Prog对象(字节码) | Inst指令序列 | 字节映射和指令扁平化
  • 灰系网站网站运营设计
  • C++ STL::vector底层剖析
  • 多线程环境下,线程安全单例模式的方案避坑
  • 深度学习-卷积神经网络LeNet
  • Ubuntu误删libaudit.so.1 导致系统无法正常使用、崩溃
  • 【深度学习5】多层感知机