【Hung-Yi Lee】强化学习笔记

文章目录

  • What is RL
  • Policy Gradient
    • Policy Gradient实际是怎么做的
    • On-policy v.s. Off-policy
    • Exploration
    • 配音大师
  • Actor-Critic
    • 训练value function的方式
    • 网络设计
    • DQN
  • Reward Shaping
  • No Reward:Learning from Demonstration

What is RL

定义一个策略网络,来接受输入,并决定什么输出

不断的在环境和执行的action之间切换,最后获得一个总的reward(每一步的reward加起来),是我们要最大化的东西。

reward是一个function,把s1(observation)和a1(action)当作输入,r1当作输出

我们要learn network里的参数,让R越大越好

但是RL没有一般的深度学习那么简单,主要难在以下几点:

  1. 对于Actor,对于一样的s1,其输出的a1是有随机性的
  2. ENV只是一个黑盒子,Reward只是一个规则。而不是一个network,只是都会输入一个东西,然后输出一个东西而已。此外他们也有随机性,对于同样的action,对手的反应是存在随机性的。

所以没办法用梯度下降的方式来训练

Policy Gradient

定义Loss为输出的 α \alpha α,与我们想要他进行的 α ^ \hat{\alpha} α^(比如这里是希望他向左),计算交叉熵,其结果就是loss,然后我们希望actor中的参数能让loss最小

这样用一个训练分类器的方法,大致就是可以去控制actor

这里就是给定s1和a1后,给出一个参数A1,用于判断a1这个行为对于当前s1这个环境,是正确的决定,还是不要执行的决定。而且有一个正确/错误的程度。

前面这个A的值只是±1,现在有大小区别

至于这个数据是如何产生的,这是后面要讨论的问题

  • 训练数据是如何产生的

跑很多个episode,然后进行每个pair的评估,将对应reward的值作为评估结果。

不过这样有个问题,这样是一个短期的评估,他没有长期的规划,只知道“一时爽”。

  • An action affects the subsequent observations and thussubsequent rewards.
    • 比如a1会影响到s2、a2、r2
  • Reward delay: Actor has to sacrifice immediate reward togain more fong-term reward.
    • 有时候我们需要牺牲短期利益,获取长期目标
    • 比如我们要先左右移动瞄准,再进行射击,左右瞄准没有短期reward,但并不代表不重要

  • 我们进一步修正,将对于一个a1,将其后面的r都加起来,作为reward,来评估action的好坏

  • 进一步添加 γ \gamma γ,距离越远,action的影响越小

  • 考虑到reward是相对的,所以我们要做一下类似标准化的事情
    • 比如全班的最高分是80,而你得了20分,这样其实是差的,但是G的绝对值还是20分,所以只拿G的数值去算是不对的
    • 所以给定一个baseline b,所有的G都要减去这个b

在这里插入图片描述

Policy Gradient实际是怎么做的

具体的操作

data collection是在for循环,这个训练里面的

  • 图像化表示这个过程,每一次更新参数之后,都要重新收集数据,这也是为什么rl的training这么浪费时间的原因

  • 为什么一次更新完就要重新收集资料呢
    • θ i \theta^i θi是根据 θ i − 1 \theta^{i-1} θi1推演过来的没错,但是在 θ i − 1 \theta^{i-1} θi1的时刻,其后面的推测的 θ i \theta^i θi的Traiectory部分,并非真正在 θ i \theta^i θi时刻的Traiectory
    • 所以不能只收集一次数据,要一轮收集一次

在这里插入图片描述

On-policy v.s. Off-policy

  • 我们前面用的方法都是On-policy的,就是训练的actor跟与环境交互的actor是同一个actor。但是也有Off-policy的训练方法,这个这里不细讲,比如用一些方法,用 θ i − 1 \theta^{i-1} θi1所搜集到的资料去训练 θ i \theta^{i} θi,这样就可以收集一次资料训练好多次,是Off-policy的好处
  • 举例一个Off-policy的方法

在这里插入图片描述

Exploration

一个重要的技巧

与环境互动的这个actor的随机性非常重要,这个actor多尝试,我们才能获取更大范围的资料,行为对应的reward,更好的训练。

配音大师

全视频最好笑的地方

配音大师 39:39

Actor-Critic

Critic 是 Actor-Critic 方法中的一部分,主要用于评估给定的Actor(即策略)的性能

对于同一个s,不同的actor θ \theta θ,其V值不同

值函数:这是一个由Critic学习的函数,用来估计在策略θ下,在状态s开始并遵循该策略能获得的折扣累积奖励。这个值函数预测了从当前状态s开始,未来所有可能收到的奖励的当前价值。

值函数表示一个策略特定状态s下的期望收益。它是一个平均的结果,因为它试图总结在该状态下,遵循特定策略可能导致的所有可能的未来路径的预期回报。

对于一个s,一个a会得到多种可能的汇报,而V是一个期望值

训练value function的方式

  • 马尔可夫方法
    • 需要玩完整把游戏,直接看我们观察到的资料
    • 通过完整的序列(或者说是episode)来估计价值函数,这意味着它必须等到一个episode结束后才能进行价值估计
    • MC方法不需要模型,即不需要知道环境的状态转移概率和奖励函数。

  • TD
    • 不需要玩完整把游戏
    • r t r_t rt越接近越好
    • TD方法可以在不需要等待当前episode结束的情况下,通过部分序列来估计价值函数,通常每步都会更新。
    • 它结合了当前收到的奖励和下一个状态的估计值来更新当前状态的价值。

  • 两种方法比较

选择MC方法还是TD方法取决于应用的特定需求,包括环境的特性、是否有明确的episode边界、以及学习的速度需求等。在实际中,强化学习的策略往往需要根据具体问题进行调整和优化。一些高级的算法如Actor-Critic方法,实际上结合了两种方法,使用TD方法来估计Critic的价值函数,同时使用Policy Gradient方法(可能基于MC的思想)来更新Actor的策略。

  • 将Critic用于RL

对于version3来说,如何设置b的值。这里给他设置为V(s)

learn出一个Critic后,对应每个s,都有V值

  • Advantage函数 A t A_t At:它定义为在时间步t的实际回报( G t ′ G^{'}_t Gt)减去在状态 S t S_t St下的值函数估计 ( V θ ( S t ) ) (V^{\theta}(S_t)) (Vθ(St))。这个值告诉我们一个动作实际上比我们通常期望的要好或要坏多少。
  • 如果 A t A_t At>0,意味着动作 a t a_t at的表现比平均的期望要好。
  • 如果 A t A_t At<0,意味着动作 a t a_t at的表现比平均的期望要差。

  • 为什么这样做

    • 对于一个s,actor的输出是有随机性的,所以会有不同的reward

    • 在实际训练中,我们会调整策略来提高那些具有正Advantage值的动作的概率,同时降低那些具有负Advantage值的动作的概率。

    • 但是这有一个小问题,就是 G t ′ G^{'}_t Gt是一次随机的值,而值函数估计 ( V θ ( S t ) ) (V^{\theta}(S_t)) (Vθ(St))是一个平均值,拿某一次值减随机,总感觉怪怪的。

    • 所以最后一个版本,就是拿平均减平均

  • Version 4

    • 根据训练好的Critic(相当于预测模型),可以直接根据 s t + 1 s_{t+1} st+1得到 V θ ( S t + 1 ) V^{\theta}(S_{t+1}) Vθ(St+1)

    • 这个版本与前面版本的主要区别在于它不等待整个序列(或episode)结束来计算回报 、G,而是使用当前步骤的即时奖励和对下一个状态的值估计来更新。

    • 意思是什么呢

      • 就是对于st,采取at这个action,得到的期望reward。减去不采取at,而是根据某种概率分布sample到的action得到的reward期望。两个期望值差距有多大
      • 如果 A t A_{t} At>0,那么就说明这个at好,否则就差。
      • 这就是大名鼎鼎的Advantage Actor-Critic

有一些我对概念的困惑,问了问gpt。

  • Actor:强化学习算法中的决策实体,负责根据当前环境状态选择动作。在Actor-Critic架构中,actor是指那部分网络,其目标是通过学习来优化策略参数 ( θ \theta θ ),以最大化期望奖励。

  • **Action ( $a_t KaTeX parse error: Can't use function '\)' in math mode at position 1: \̲)̲**:在每个时间步 \( t $) 智能体所执行的具体操作。动作是智能体与环境交互的手段,智能体的目标是通过选择最优动作来最大化其长期奖励。

    • Actor像是一个分类器,要经过训练,最后输出多个可能的Actions,并且带有每种Action 的概率。最后决定使用的Action是从中sample出来的。
  • 策略参数 ( $\theta $):定义智能体策略的参数集,通常在基于模型的强化学习中,( θ \theta θ ) 表示神经网络的权重和偏置。这些参数确定了智能体在特定状态下各个动作的选择概率。

  • 动作选择过程:智能体(actor)观察当前环境状态 ($ s_t $),并使用其策略参数 ( $\theta KaTeX parse error: Can't use function '\)' in math mode at position 1: \̲)̲ 来决定动作 \( a_t $) 的概率分布。然后智能体从这个概率分布中采样,以选择下一步要执行的具体动作。

总结如下:

智能体(Actor)使用其策略参数 ($ \theta$ ) 来决定在特定环境状态 ( s t s_t st ) 下的动作概率分布,并从中选择动作 ( a t a_t at ),这个动作随后会影响环境,产生新的状态和奖励。这些信息被用来更新策略参数 ($ \theta$ ),从而优化未来的动作选择。

如果有某些observation是没观察到过的话,就没办法训练

网络设计

训练技巧

在Actor-Critic强化学习架构中,"Actor"和"Critic"是两种不同的网络组件,但它们可以共享一些参数:

  1. Actor:负责选择动作的网络部分,它输出在给定状态下执行每个可能动作的概率。在上图中,Actor根据输入的状态 ( s ) 输出三个动作:“left”, “right”, 和 “fire”。

  2. Critic:评估当前策略价值的网络部分,它输出一个标量值,表示当前状态或者状态-动作对的预期回报。Critic的输出有助于指导Actor的训练,通过评价Actor选取动作的好坏。

  3. 共享参数:Actor和Critic可以共享一些底层的网络参数。在这种情况下,一个单独的网络会首先处理输入状态 ( s ),然后分别为Actor和Critic生成特征表示。这种共享结构的好处是可以减少模型的总参数数量,同时让Actor和Critic能从相同的状态表示中学习,这可能会导致更快的学习和更好的泛化能力。

图中所示的“Tip of Actor-Critic”表明,在设计Actor-Critic网络时,可以让Actor和Critic共享一些(通常是底层的)网络层。这种方法被认为可以提高学习效率和减少所需的计算资源。

DQN

在RL中,有一种犀利的做法,是只知道Critic就可以决定Action。其中最知名的就是DQN

Reward Shaping

对于某些任务,假设reward几乎都是0,只有某些情况有巨大的reward。这时候我们就提供格外的reward帮助训练,叫做Reward Shaping。类似望梅止渴

  • 举一个例子
    • 一款射击游戏,额外添加的一些reward

  • 再举一个例子

    • 训练机械手臂,只是将板子离棍子的距离越近作为新的reward,会造成一些错误
  • 所以reward shaping需要较强的domain knowledge,对问题本身和环境有足够的见解。才能更好的使用。

No Reward:Learning from Demonstration

有时候人定的reward不见得是最好的,容易让机器产生出人类意想不到的结果。

所以在没有reward的时候,有一种训练方式Imitation Learning。

但是如果只是单纯的让机器模仿人类的动作,在机器能力有限的情况下,容易造成更大的问题,机器不知道哪些该学哪些不该学。

于是又有一个新的技术Inverse reinforcement learning,让机器自己定reward。

  • 原来的

  • 反转的

    • 通过expert的掩饰,来反向学习出reward function
    • 再通过这个function进行训练
  • 举一个算法例子

    • 初始化一个智能体(Actor):这个智能体会在环境中执行动作,试图模仿专家的行为。
    • 交互:在每次迭代中,智能体与环境交互以获得轨迹,即一系列的状态和动作序列。
    • 定义奖励函数:基于专家的轨迹,定义一个奖励函数,这个函数旨在使专家的轨迹看起来比智能体的轨迹更好,即奖励专家动作高于智能体的动作。
    • 学习:智能体根据新定义的奖励函数学习并尝试最大化它的期望奖励,从而提升其行为策略贴近于专家。
  • 更加形象的表达这个过程

    1. 专家 ( π ∗ \pi^* π ):这是执行任务的最佳方式的模型或实体。专家的策略 ( π ∗ \pi^* π ) 生成了优化的轨迹集合 ( { τ 1 ∗ , τ 2 ∗ , . . . , τ K ∗ } \{\tau_1^*, \tau_2^*, ..., \tau_K^*\} {τ1,τ2,...,τK} ),这些轨迹表示在特定任务中的最佳行为序列。

    2. 奖励函数 R:IRL的目标是从专家的轨迹中推断出这个函数。奖励函数是一个映射,它将每一个轨迹映射到一个数值上,该数值表示轨迹的好坏。在这个框架中,我们希望找到一个奖励函数,使得专家轨迹的总奖励大于其他可能的轨迹 ($ \tau$ ) 的总奖励。

    3. Actor ( $\pi $):一旦获得了奖励函数,就会使用强化学习来训练一个智能体(Actor),使其能够基于这个奖励函数采取行动。Actor在这里充当了Generator的角色,尝试生成与专家轨迹相似的行为。

    4. 生成器和鉴别器:这个概念类似于生成对抗网络(GAN)中的概念。智能体(Actor)作为生成器尝试生成数据(轨迹),而奖励函数在这里可以看作是鉴别器,用于区分生成的轨迹和专家轨迹的质量。

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

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

相关文章

一则广告,一个故事,这就我选择学习计算机专业的两个原因

还记得当初自己为什么选择计算机&#xff1f; 现在回想起来&#xff0c;当初驱使自己选择学习计算机专业的原因&#xff0c;一共有两个&#xff1a; 一、一则长城电脑的广告。 上个世纪80年代&#xff0c;我还在读小学&#xff0c;当时在中央电视台上经常播放着的长城电脑的一则…

二十一章(网络通信)

计算机网络实现了多台计算机间的互联&#xff0c;使得它们彼此之间能够进行数据交流。网络应用程序就是在已连接的不同计算机上运行的程序&#xff0c;这些程序借助于网络协议&#xff0c;相互之间可以交换数据。编写网络应用程序前&#xff0c;首先必须明确所要使用的网络协议…

05 硬件知识入门(三极管)

1 三极管简介 三极管又称晶体三极管&#xff0c;是一种具有放大功能的半导体器件。图6-1&#xff08;a&#xff09;所示是一些 常见的三极管实物外形&#xff0c;三极管的图形符号如图6-1&#xff08;b&#xff09;所示。 1. 三极管引脚的基本介绍 三极管通常有三个引脚&…

二叉树的层平均值[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[3.00000,14.50000,1…

postman实现接口自动化图解步骤,测试用例集,断言,动态参数,全局变量的随笔记录

实现接口自动化的方式有很多种&#xff0c;requests unittest ddt 的接口自动化框架有些朋友也有接触&#xff0c;但是考虑到很多没有代码基础&#xff0c;且这种框架实现需要的时间周期比较长&#xff0c;但是大多数公司的项目时间并不充裕。 这篇随笔主要就是记录实现效率…

如何解决5G基站高能耗问题?

安科瑞 须静燕 截至2023年10月&#xff0c;我国5G基站总数达321.5万个&#xff0c;占全国通信基站总数的28.1%。然而&#xff0c;随着5G基站数量的快速增长&#xff0c;基站的能耗问题也逐渐日益凸显&#xff0c;基站的用电给运营商带来了巨大的电费开支压力&#xff0c;降低5…

网络机房的功能有哪些?

网络机房的功能主要包括&#xff1a; 信息存储和管理&#xff1a;机房作为信息系统的核心&#xff0c;需要提供可靠的存储和管理能力&#xff0c;包括服务器、存储设备、备份系统等硬件设备&#xff0c;以及数据备份、数据迁移、容灾等管理方法和技术。网络连接和通信&#xf…

202350读书笔记|《再别康桥:徐志摩诗选》——微风起,清芬酝藉,不减荼

202350读书笔记|《再别康桥&#xff1a;徐志摩诗选》——微风起&#xff0c;清芬酝藉&#xff0c;不减荼 《再别康桥&#xff1a;徐志摩诗选》我觉得有时候诗人是很狂热的&#xff0c;上头的感觉。 有几首很喜欢&#xff0c;节选如下&#xff1a; 偶然 我是天空里的一片云&…

代码随想录算法训练营第44天| 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ

JAVA代码编写 52. 携带研究材料 题目描述 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成果。他需要带一些研究材料&#xff0c;但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等&#xff0c;…

matplot函数调整子图大小测试

调整subplot()函数的子图间距 import numpy as np import matplotlib.pyplot as plt for i in range(1,7):figsize 10,6plt.subplot(2,3,i)plt.text(0.5,0.5,str((2,3,i)),fontsize18,hacenter) **plt.subplots_adjust(hspace3.3, wspace0.3)** plt.show()import numpy as np…

结构体精讲2

老铁们&#xff0c;有没有坚持每天敲代码呢&#xff1f;坚持做一件事确实很难&#xff0c;但还是要坚定一点咯&#xff01; 接下来我们接着上一期的知识进行讲解&#xff01; 结构体传参 那么对于上述的 print1 和 print2 函数哪个好些&#xff1f; 那么首选是我们的pri…

基于 Flink CDC 构建 MySQL 的 Streaming ETL to MySQL

简介 CDC 的全称是 Change Data Capture &#xff0c;在广义的概念上&#xff0c;只要是能捕获数据变更的技术&#xff0c;我们都可以称之为 CDC 。目前通常描述的 CDC 技术主要面向数据库的变更&#xff0c;是一种用于捕获数据库中数据变更的技术。CDC 技术的应用场景非常广泛…

探索SpringBoot发展历程

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 循序渐进学SpringBoot ✨特色专栏&…

可以彻底告别手写正则表达式了

大家好&#xff0c;我是风筝&#xff0c;公众号「古时的风筝」 这篇文章的目的是让你能得到完美的正则表达式&#xff0c;而且还不用自己拼。 说到正则表达式&#xff0c;一直是令我头疼的问题&#xff0c;这家伙一般时候用不到&#xff0c;等用到的时候发现它的规则是一点儿…

5G入门到精通 - 5G的十大关键技术

文章目录 一、网络切片二、自组织网络三、D2D技术四、低时延技术五、MIMO技术六、毫米波七、内容分发网络八、M2M技术九、频谱共享十、信息中心网络 一、网络切片 5G中的网络切片是一项关键技术&#xff0c;它允许将整个5G网络分割成多个独立的虚拟网络&#xff0c;每个虚拟网络…

超级好用的IDEA插件推荐

IDEA是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作&#xff0c;一般需要打开额外的调试工具。 今天给大家介绍一款IDEA插件&#xff1a;Api…

YOLO的全面综述:从YOLOv1到最新版本

文章目录 摘要1、简介2、YOLO在不同领域的应用3、目标检测的度量标准和非最大值抑制&#xff08;NMS&#xff09;3.1. AP如何工作&#xff1f;3.2. 计算AP3.3、非极大值抑制&#xff08;NMS&#xff09; 4、YOLO: You Only Look Once4.1、YOLOv1的工作原理4.2、YOLOv1架构4.3、…

Xilinx FPGA——ISE时序约束“建立时间不满足”问题解决记录

一、现象 最近使用赛灵思的FPGA设计项目时&#xff0c;出现时序约束失效问题。 点进去发现如下&#xff1a; 一个始终约束没有生效&#xff0c;有多处报错。 二、原因 出现这个问题的原因是&#xff0c;建立时间不满足。 时序违例的主要原因是建立时间和保持时间不满足要求&a…

用23种设计模式打造一个cocos creator的游戏框架----(九)访问者模式

1、模式标准 模式名称&#xff1a;访问者模式 模式分类&#xff1a;行为型 模式意图&#xff1a;将数据操作与数据结构分离&#xff0c;使得在不修改数据结构的前提下&#xff0c;可以添加或改变对数据的操作。 结构图&#xff1a; 适用于&#xff1a; 当你需要对一个复杂对…

Dockerfile详解#如何编写自己的Dockerfile

文章目录 前言编写规则指令详解FROM&#xff1a;基础镜像LABEL&#xff1a;镜像描述信息MAINTAINER&#xff1a;添加作者信息COPY&#xff1a;从宿主机复制文件到镜像中ADD&#xff1a;从宿主机复制文件到镜像中WORKDIR&#xff1a;设置工作目录 前言 Dockerfile是编写docker镜…
最新文章