蘑菇书(EasyRL)学习笔记(1)

news2024/10/23 20:38:20

1、强化学习概述       

        强化学习(reinforcement learning,RL讨论的问题是智能体(agent)怎么在复杂、不确定的环 境(environment)里面去最大化它能获得的奖励。如下图所示,强化学习由两部分组成:智能体和环境

        智能体在每个状态中选择一个动作,环境根据这个动作给出下一个状态和相应的奖励。智能体的目标是学习一个策略,这个策略能够指导它在不同状态下选择动作,以获得尽可能多的奖励。

        下面,我将举一个很简单的例子,加深大家对强化学习概念的理解:训练一个小狗学会坐下。

  1. 环境:小狗所处的环境就是训练场所,可能是家里的客厅或者后院。

  2. 智能体:在这个例子中,智能体就是小狗。

  3. 状态:小狗的状态可以是“站立”或“坐下”。

  4. 动作:智能体(小狗)可以执行的动作是“坐下”或“不坐下”。

  5. 奖励:当小狗坐下时,主人会给予奖励,比如拍拍它、给它零食或者口头表扬。

  6. 目标:智能体(小狗)的目标是学会在听到“坐下”命令时执行“坐下”动作,以获得奖励。

        在这个过程中,小狗通过不断尝试和错误来学习。每当它在听到命令后坐下,就会得到奖励,这强化了它的学习过程。如果它站立不动,就没有奖励,它就会慢慢学会在听到命令时坐下以获得奖励。这就是一个简单的强化学习的例子。

1.1、强化学习与监督学习

        如下图,在图片分类的监督学习中,首先有两个假设:一是输入数据独立同分布,数据之间没有关联;二是正确标签已知,模型可以根据标签进行修正。训练过程中,模型根据输入数据和标签调整预测,当预测错误时,通过损失函数和反向传播进行优化。

通常假设样本空间中全体样本服从一个未知分布,每个样本都是独立地从这个分布上采样获得的, 即独立同分布(independent and identically distributed,i.i.d.)当我们抛一枚公平的硬币多次时,每次抛掷都是独立的,不受之前结果的影响,并且每次抛掷得到正面或反面的概率都是相同的,这就是一个独立同分布(i.i.d.)的简单例子。

        相比之下,强化学习中的这两个假设并不成立。以雅达利游戏 Breakout 为例,如下图,发现智能体得到的观测(observation)不是独立同分布的,上一帧与下一帧间其实有非常强的连续性。 我们得到的数据是相关的时间序列数据,不满足独立同分布。另外,我们并没有立刻获得反馈,游戏没有 告诉我们哪个动作是正确动作。比如我们现在把木板往右移,这只会使得球往上或者往左去一点儿,我们 并不会得到立刻的反馈。因此,强化学习之所以这么困难,是因为智能体不能得到即时的反馈,然而我们依然希望智能体在这个环境里面学习。

        如下图所示,在强化学习中,训练数据是智能体与环境交互的过程。在打砖块游戏中,智能体从第 1 步开始采取动作(如移动木板接住球),接着在第 2 步再作出新的动作,整个过程形成一个序列。这个序列输入到网络后,网络根据当前状态输出动作(例如往右移或往左移)。

        与监督学习不同,强化学习没有立即的标签来判断当前动作是否正确,必须等到游戏结束时(可能10秒后)才能知道结果。当前动作是否对游戏胜利有帮助是不明确的,这带来了延迟奖励(delayed reward)的问题。这意味着强化学习中的反馈是延迟的,导致训练网络更加困难。智能体需要通过长时间的训练,逐渐学会哪些动作能够带来长期的成功,而不是立即的回报。

强化学习与监督学习的主要区别和特征总结如下:

  1. 样本类型

    • 监督学习:样本是独立的,数据满足独立同分布(IID),样本之间没有关联。
    • 强化学习:样本是序列数据,具有时间关联,上一状态和下一状态有密切关系,数据不是独立同分布的。
  2. 反馈机制

    • 监督学习:学习器知道每一步的正确标签,能够根据标签直接调整预测,训练过程有明确的反馈。
    • 强化学习:学习器不知道每一步的正确动作,需要通过试错(trial-and-error)不断探索发现最优动作。反馈信号(奖励)通常是延迟的,环境不会立即提供正确与否的反馈。
  3. 探索与利用

    • 强化学习中的核心问题是“探索利用”的权衡:
      • 探索(exploration):尝试新的动作,虽然可能带来更大回报,也可能失败。
      • 利用(exploitation):执行已知可以获得较高奖励的动作,通过重复执行已验证的策略来获得稳定的回报。
    • 这一问题在监督学习中没有体现,因为监督学习明确知道每一步的正确标签。
  4. 反馈延迟

    • 强化学习:奖励信号是延迟的,智能体可能在执行一系列动作后很久才知道某个动作是否正确。这使得强化学习更具挑战性,因为无法立刻获得反馈。
    • 监督学习:即时反馈,当预测出错时,立即通过标签修正。
  5. 时间与数据关联

    • 强化学习:时间非常重要,智能体的动作影响后续观测数据,形成关联性数据。这种序列数据使得训练不稳定,因为当前动作的效果可能影响未来的状态和奖励。
    • 监督学习:时间不重要,所有数据都是独立的,可以无视它们的顺序进行训练。
  6. 动作与环境的影响

    • 强化学习:智能体的动作直接影响其所获得的观测数据。如果智能体的策略不稳定或行为不合理,数据质量可能变差,影响训练效果。
    • 监督学习:输入数据与模型的预测过程没有直接的互动,数据是固定的,模型不会改变数据的生成过程。

总结: 强化学习的关键特征在于试错探索、延迟反馈、时间关联的样本,以及智能体通过与环境的交互不断优化自身行为。这与监督学习依赖独立同分布数据、标签驱动的明确反馈机制截然不同,也使得强化学习在实践中更加复杂和具有挑战性。

1.2、强化学习的例子

        为强化学习的一个经典例子,即雅达利的 Pong 游戏。如下图,Pong 游戏是一个类似乒乓球的游戏,左边和右边的选手通过挡板把球来回击打。右边的选手把球打到左边,左边的选手要接住球并把球打回右边。强化学习的智能体就是这个游戏的一个玩家。

        如果强化学习通过学习一个 策略网络来进行分类,那么策略网络会输入当前帧的图片,输出所有决策的可能性,比如往上移动的概率,如下图所示

        对于监督学习,我们可以直接告诉智能体正确动作的标签是什么。但在 Pong 游戏中, 我们并不知道它的正确动作的标签是什么,如下图所示

         在强化学习里面,我们让智能体尝试玩 Pong 游戏,对动作进行采样,直到游戏结束,然后对每个动作进行惩罚。如下图所示,这是一个预演(rollout的过程,预演是指我们从当前帧对动作进行采样,生成很多 局游戏。我们将当前的智能体与环境交互,会得到一系列观测。每一个观测可看成一个轨迹(trajectory。 轨迹就是当前帧以及它采取的策略,即状态和动作的序列:

 

 

        最后结束时,我们会知道到底有没有把这个球拍到对方区域,对方有没有接住,我们是赢了还是输了。我 们可以通过观测序列以及最终奖励(eventual reward)来训练智能体,使它尽可能地采取可以获得最终奖励的动作。一场游戏称为一个回合(episode或者试验(trial

1.3、强化学习的历史 

        标准强化学习 ——> 深度强化学习。如下图所示,它们的主要区别在于如何处理特征和动作选择:

1. 标准强化学习:

  • 特征设计:在标准强化学习中,首先需要设计很多特征,这些特征用于描述当前的状态。举个例子,像在 TD-Gammon 玩 Backgammon(西洋双陆棋)的过程中,我们需要人为地提取出一些能够反映游戏局势的特征,这些特征能帮助智能体理解当前的状态。

  • 动作选择:当得到这些特征后,可以训练一个分类器或价值估计函数,它会帮助智能体根据当前状态来选择动作。

  • 例子:TD-Gammon 通过提前设计好的特征,使用强化学习的方法来训练智能体玩双陆棋。

2. 深度强化学习:

  • 端到端训练:随着深度学习的发展,强化学习不再需要人为设计特征。通过神经网络,智能体可以直接从原始状态(比如屏幕上的图像或当前的数据信息)中学习到如何采取行动。

  • 不需要特征工程:深度强化学习的优势在于不用人为地设计特征,省去了复杂的特征工程。我们不需要设计特征,直接输入状 态就可以输出动作。我们可以用一个神经网络来拟合价值函数或策略网络。 神经网络本身能够从数据中学习出有用的特征,并自动优化决策。

  • 例子:深度强化学习的智能体(比如 AlphaGo 或雅达利游戏中的智能体)直接输入游戏画面,通过神经网络预测出下一步应该做的动作。这是一个端到端的过程,状态(比如当前屏幕的图片)直接输入,动作(比如移动挡板的方向)直接输出。

总结:

  • 标准强化学习:需要人为设计特征,训练分类器或价值估计函数。
  • 深度强化学习:直接从原始数据中学习特征,通过神经网络进行端到端训练。

1.4、强化学习的应用

        近年来,强化学习在诸如游戏、机器人等领域得到了广泛应用,甚至能够击败顶尖的人类棋手,原因有以下几点:

  • 计算能力提升:随着更强大的计算资源(如GPU)的发展,强化学习可以通过大量的试错来提升智能体的表现。
  • 信息积累与环境反馈:智能体在不断尝试中,从环境中获取大量信息,进而学会在复杂环境中获取更高的奖励。
  • 端到端优化:通过端到端训练,特征提取、价值估计和决策得以同时优化,使得智能体可以更有效地作出更优的决策。

经典的强化学习应用实例:

  • DeepMind的走路智能体:通过奖励机制,智能体学习如何在复杂环境中行走。为了保持平衡,它学会了举手动作,展现了适应性和灵活性。当环境难度增加时,智能体还能抵抗扰动,表现出更强的鲁棒性。
  • 机械臂抓取:强化学习让机械臂学会统一的抓取策略,无需为每个物体单独建模。分布式系统可以让多个机械臂同时训练,从而提升效率,使机械臂能够应对各种不同形状的物体进行最优的抓取。
  • OpenAI的机械臂翻魔方:OpenAI开发的带有手指的机械臂,能够通过强化学习在虚拟环境中学习后,成功应用到现实中。这种方式降低了真实环境中机械臂损坏的风险,并显著节约了成本。
  • 穿衣智能体:训练智能体完成复杂的穿衣操作,模拟人类穿衣过程中的精细动作,甚至能够处理扰动。虽然有时会失败,但整体上展现了强化学习在精细任务中的潜力。

总结:

        强化学习通过结合强大的计算资源、丰富的环境反馈以及端到端优化,在多个复杂任务中展现出了极大的应用潜力,推动了游戏、机器人等领域的技术进步。

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

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

相关文章

【Petri网导论学习笔记】Petri网导论入门学习(七) —— 1.5 并发与冲突

导航 1.5 并发与冲突1.5.1 并发定义 1.14定义 1.15 1.5.2 冲突定义 1.17 1.5.3 一般Petri网系统中的并发与冲突定义 1.18一般网系统中无冲撞概念阻塞(有容量函数K的P/T系统,类似于冲撞)一般Petri网中并发与冲突共存情况 1.5 并发与冲突 Petr…

计算机导论

概述 计算机简史 1935年代,英国数学家图灵(Alan Turing)提出“图灵机”,奠定了计算机的理论基础。 1952年,冯诺依曼确定了计算机由运算器、控制器、存储器、输入、输出等5部分组成(Von Neumann 体系结构)。 60年代…

【MySQL备份】Percona XtraBackup

这份文档针对的是最新发布的版本:Percona XtraBackup 2.4.29(发布说明)。 Percona XtraBackup是一款针对MySQL系列服务器的开源热备份工具,在备份过程中不会锁定您的数据库。它能够对MySQL 5.1、5.5、5.6和5.7服务器以及带有Xtra…

实战华为AC6508无线控制器+华为无线AP上线配置(AirEngine5762S-12+AirEngine5760-10)+无线WIFI配置

一、适用场景 1、适用于企业环境、校园环境、大户型家庭多层楼环境。 2、对于无线网络需要集中管理和监测的环境,无线wifi覆盖范围面积大,适用本实例。 3、当无线WIFI需要从一个区域到另一个区域无缝漫游时,确保应用不掉线,可使用…

Linux下的隐藏技术(文件隐藏、进程隐藏、端口隐藏、权限隐藏、命令隐藏)

目录 隐藏文件 隐藏权限 隐藏历史操作命令 端口复用 进程隐藏 隐藏文件 Linux 下创建一个隐藏文件:touch .test.txt touch 命令可以创建一个文件,文件名前面加一个 点 就代表是隐藏文件,如下图: 一般的Linux下的隐藏目录使用命令ls -l是查看不出来的,只能查看到文件及…

从0到1实现你自己的AI Chat应用

目标 基于大语言模型的 Chat 应用,是一种利用自然语言处理技术来进行对话交互的智能应用。 大语言模型通过大量数据的学习和训练,能够理解自然语言表达的语义,具备智能对话的能力。当用户向 Chat 应用提出问题时,Chat 应用就会利…

理解TypeScript模块-声明-配置

目录 模块化内置类型导入命名空间类型查找内置类型外部定义声明第三方库自定义声明 tsconfig.json文件在Vue项目中应用在React项目中应用 模块化 在TypeScript中最主要使用的模块化方案就是ES Module,先理解 TypeScript 认为什么是一个模块: JavaScript…

如何利用 Python抓取网页数据 其他方式抓取网页数据列举

在 Python 中可以使用多种方法抓取网页数据,以下是一种常见的方法,使用requests和BeautifulSoup库。 一、安装所需库 在命令提示符或终端中执行以下命令安装requests和BeautifulSoup库: pip install requests pip install beautifulsoup4二…

Spring Boot论坛网站开发:最佳实践指南

3系统分析 3.1可行性分析 通过对本论坛网站实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本论坛网站采用SSM框架,JAVA作为开发语言,是…

使用 Cursor 和 Devbox 快速开发并上线 Gin 项目

作为开发者,最让我们头疼的事情是什么?那必须是环境配置、版本控制以及各种部署配置等等繁琐的工作。 想象一下,如果你只需点击几下鼠标,就能拥有一个完全配置好的开发环境,支持从 Java 到 Python,从 Reac…

[实时计算flink]作业开发上线流程及规范

随着数据量的爆炸性增长和业务需求的日益复杂化,企业对实时数据处理能力的需求愈发迫切。Flink作为一种强大的流处理框架已经成为实时计算标准,其规范化的开发和运维流程对于企业提升数据处理效率、确保系统稳定性至关重要,旨在提升研发效率&…

电商大数据获取渠道分享--官方接口、爬虫、第三方如何选择?

在当今大数据驱动的商业环境中,电商企业越来越依赖数据分析来洞察市场、优化运营和提升竞争力。本文将分享几种常见的电商大数据获取渠道,帮助电商从业者更有效地收集和利用数据资源。 一、电商平台官方接口 各大电商平台如淘宝、京东、拼多多等&#…

DML语言

DML(数据操作语言) 用于操作数据库对象中所包含的数据 包括: INSERT ( 添加数据语句 ) UPDATE ( 更新数据语句 ) DELETE ( 删除数据语句 ) INSERT ( 添加数据语句 ) INSERT INTO 表名 [ ( 字段1, 字段2, 字段3, … ) ] VALUES ( 值1, 值2,…

计算机网络-RSTP工作过程与原理

前面我们已经学习了RSTP的一些基础概念以及对于STP的改进之处,因为RSTP兼容STP,所以实际上两者工作原理是一致的,这里只简单过一遍,然后进行一些基础实验即可,大致还是遵循选举根桥、确定端口角色与状态、全网收敛的思…

CentOS 8 Stream环境下通过yum安装Mysql

1.在Mysql下载页面MySQL :: Download MySQL Community Server页尾 点击 “MD5 checksums and GnuPG signatures” 进入下一页面 2.打开下载yum repo文件页面 (MySQL :: Download MySQL Yum Repository) 3.点击"DownLoad"按钮,打开下载页面, 4.…

GB/T28181-2022规范解读、应用场景和技术实现探究

GB/T28181-2022和GB/T28181-2016区别 GB/T28181-2022《公共安全视频监控联网系统信息传输、交换、控制技术要求》与 GB/T28181-2016 相比,主要有以下区别: 术语和定义方面: 术语删减:GB/T28181-2022 删除了 “联网系统信息”“数…

大模型LLM学习路线图2024年最新版!全面掌握学习路径,非常详细,零基础想学大模型收藏这一篇就够了

ChatGPT的出现在全球掀起了AI大模型的浪潮,2023年可以被称为AI元年,AI大模型以一种野蛮的方式,闯入你我的生活之中。 从问答对话到辅助编程,从图画解析到自主创作,AI所展现出来的能力,超出了多数人的预料&…

【redis】redis的多线程和IO多路复用

【redis】redis的多线程和IO多路复用 【一】前言【二】Redis单线程和多线程问题的背景【1】Redis的单线程【2】Redis为什么选择单线程?【3】Redis为什么开始利用多核?【4】Redis当前的性能瓶颈【5】Redis的主线程如何和IO线程协同 【三】IO多路复用的理解…

【Trick】IOS系统解决“未受信任的企业级开发者”问题

问题: 本人通过扫码下载了一个软件,下载完毕后出现以下提示: 解决方法: 这个主要是操作系统的问题,需要在设置里面更改,具体步骤如下: 【1】打开设置,选择【通用】 【2】选择【VP…