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

2023-12-07 19:52
文章标签 学习 笔记 强化 hung yi lee

本文主要是介绍【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)作为生成器尝试生成数据(轨迹),而奖励函数在这里可以看作是鉴别器,用于区分生成的轨迹和专家轨迹的质量。

这篇关于【Hung-Yi Lee】强化学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/467161

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

硬件基础知识——自学习梳理

计算机存储分为闪存和永久性存储。 硬盘(永久存储)主要分为机械磁盘和固态硬盘。 机械磁盘主要靠磁颗粒的正负极方向来存储0或1,且机械磁盘没有使用寿命。 固态硬盘就有使用寿命了,大概支持30w次的读写操作。 闪存使用的是电容进行存储,断电数据就没了。 器件之间传输bit数据在总线上是一个一个传输的,因为通过电压传输(电流不稳定),但是电压属于电势能,所以可以叠加互相干扰,这也就是硬盘,U盘

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在