Reinforcement Learning (李宏毅) 机器学习 2023 Spring HW12 (Boss Baseline)

54c7d2723b0d4cb08063e749aa1a2654.png

1. Reinforcement Learning (强化学习)简介

1.1 什么是强化学习

强化学习是一种机器学习方法,它训练智能体在环境中采取行动,以最大化累积奖励。智能体通过试错与环境互动,学习哪些行动会带来奖励(正反馈),哪些行动会导致惩罚(负反馈)。通过不断地学习和调整策略,智能体逐渐学会如何在特定环境中做出最优决策,以达到最终目标。与监督学习不同,强化学习不需要预先标注的数据,而是通过与环境的互动自主学习。

8b1b8ce17a615c6983d7ea6594051c1a.png
Reinforcement Learning (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

强化学习的应用非常广泛,比如:

  • 游戏AI: 训练AI玩各种游戏,例如围棋、Atari游戏等。

  • 机器人控制: 控制机器人完成各种任务,例如行走、抓取物体等。

  • 自动驾驶: 训练汽车在复杂环境中安全行驶。

  • 推荐系统: 根据用户的历史行为推荐商品或服务。

  • 金融交易: 制定交易策略以最大化利润。

在强化学习应用于《太空侵略者》游戏的场景中,智能体扮演控制母舰的角色,通过操纵虚拟摇杆与外星入侵者进行对抗。游戏主机构成智能体所处的环境,负责模拟外星人的攻击行为。智能体的观测信息来源于游戏画面的实时呈现。智能体的输入为当前游戏画面的图像,输出则为一系列可执行的动作指令。

例如,当智能体执行“向右移动”的动作时,该动作本身并不能直接消灭外星人,因此获得的即时奖励为零。执行动作后,游戏画面随之更新,产生新的观测信息,智能体将基于此新的观测结果决定下一步的动作。

f6179986beec80cde07e577ddf5a2b35.png
game 1 (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

若智能体执行“开火”动作并成功击落一个外星人,则获得相应的奖励,假设击落一个外星人得 5 分,则该动作的奖励值为 5。智能体在游戏过程中持续执行动作并接收相应的奖励反馈。强化学习的目标是训练智能体,使其在游戏过程中获得的累积奖励总和最大化。

06db9b5c0af80de861260c36cd148718.png
game 2 (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

与传统的机器学习范式相仿,强化学习亦遵循一套类似的框架。机器学习通常包含以下三个核心步骤:首先,构建一个参数化的函数模型,该模型中包含待学习的未知变量;其次,定义一个损失函数,用于衡量模型预测结果与真实值之间的差异;最后,通过优化算法调整模型中的未知变量,以最小化损失函数,从而获得最优的模型参数。强化学习同样遵循类似的步骤,但其具体内涵有所不同。

3777851c16b9e6a28e7e6f1eed58eb91.png
machine learning steps (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

第一步:定义函数模型

在强化学习框架中,智能体是构成决策主体的核心要素,其功能可类比于机器学习中的函数模型。策略网络本质上是一个复杂的函数,以游戏为例,其输入为游戏画面的像素信息,输出则是针对每个可执行动作的评分。

策略网络的架构设计具有一定的灵活性,其基本原则是能够接收游戏画面作为输入,并输出相应的动作评分。例如,若输入为静态图像,则可采用卷积神经网络(CNN)进行特征提取和处理;若需考虑游戏过程中连续的时序信息,即不仅关注当前时刻的画面,还要考虑之前所有帧的历史信息,则可采用循环神经网络(RNN)或Transformer等序列模型。

如图所示,策略网络接收游戏画面作为输入后,输出各个动作的评分,例如“左移”得分为 0.7,“右移”得分为 0.2,“开火”得分为 0.1。分类网络通常在最后一层使用softmax函数,将每个类别的原始评分转换为概率分布,使得所有类别的概率之和为 1。

智能体最终采取何种动作取决于各个动作的评分。一种常见的做法是将这些评分视为概率分布,并根据此概率分布进行随机采样,从而决定实际执行的动作。原因在于引入随机性有助于提升智能体的表现。虽然智能体可以总是选择评分最高的动作(例如上述示例中的“左移”),但通常采用基于概率的随机采样策略。这种策略的优势在于,即使面对相同的游戏画面,智能体每次执行的动作也可能略有不同。在许多博弈类游戏中,随机性至关重要。以“石头剪刀布”为例,如果智能体始终选择“石头”,则很容易被对手预测并击败。而引入随机性则可以提高智能体的策略多样性,使其更难以被预测,从而提升胜率。

9e55e15d3bd482a7abe7c7cad2479fc8.png
step 1 funtion with unknow (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

第二步:定义损失函数

强化学习的第二个关键步骤是定义目标函数,该目标函数驱动智能体学习最优策略。在强化学习中,我们旨在最大化智能体在一个回合(episode)中获得的累积奖励,该累积奖励亦称为回报(return)。仍旧以游戏为例,这一交互过程持续进行,智能体不断根据当前状态选择动作并接收相应的即时奖励,直至游戏结束。从游戏开始到结束的完整交互序列构成一个回合。

在一个回合中,智能体会执行一系列动作,每个动作都会产生一个即时奖励。将这些即时奖励累加起来,便得到该回合的总奖励,即回报。强化学习的目标是最大化期望回报,即找到一个策略,使得智能体在所有可能的回合中获得的平均回报最大。

需要明确的是,回报与损失的概念有所不同。在传统的监督学习中,损失函数旨在衡量模型预测与真实值之间的差距,其目标是最小化损失。而在强化学习中,我们关注的是最大化回报。为了在形式上与损失函数保持一致,有时会将负回报视为损失,此时目标则变为最小化负回报。简而言之,最大化回报等价于最小化负回报。

此外,需要区分即时奖励和回报。即时奖励是指智能体执行某个动作后立即从环境中获得的反馈,而回报则是指在一个回合中所有即时奖励的累积总和。回报是对智能体在一个回合内的整体表现的评估,是强化学习算法优化的直接目标。

a8b089767995939b07005cc22f375b49.png
Loss definition (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

48c05c7427be72aedda87f6eb0d7a2dc.png
Loss definition (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

第三步:进行优化

智能体与环境的交互是强化学习的核心过程。环境首先输出一个观测值,该观测值随即作为智能体的输入。智能体基于此输入输出一个动作,该动作又反过来成为环境的输入。环境接收到该动作后,更新其状态并输出新的观测值。此交互过程持续进行,直至满足预设的终止条件。在过程中,所有状态和动作的有序序列构成一条轨迹。

在智能体与环境的交互过程中,会产生相应的奖励。奖励可视为一个函数,其表示形式多样。在某些简单情境中,智能体采取的动作可以直接决定奖励值。然而,更常见的情况是,奖励的确定需要同时考虑动作和观测。例如,在射击游戏中,仅执行“开火”动作并不一定能得分,只有当子弹击中目标时才会获得奖励。因此,奖励函数通常定义为状态和动作的函数。奖励函数的输入为一个动作和一个状态,输出为相应的奖励值。一个回合的总奖励,即回报,是该回合中所有即时奖励的累加和。

强化学习的目标是最大化回报,相应的优化问题转化为寻找一组网络参数,使得回报值最大化。一种常用的优化方法是梯度上升。然而,强化学习的优化过程与传统的监督学习存在显著差异,并非简单的优化问题。

首要挑战在于智能体输出的随机性。在游戏的例子中,动作是通过采样生成的,即使输入相同的观测值,每次生成的动作也可能不同。若将环境、智能体和奖励视为一个整体网络,则该网络并非一个确定性网络,其内部存在随机层,导致每次输出都具有不确定性。

另一挑战源于环境和奖励函数的黑盒特性及其潜在的随机性。例如,当环境为游戏机时,其内部运行机制通常是未知的。虽然在许多游戏中,奖励的确定性规则是预先设定的(即给定观测和动作即可确定对应的奖励),但在某些强化学习问题中,奖励本身也可能具有随机性。例如,在一些游戏中,即使执行相同的动作,游戏机的响应也可能不同。又如下围棋,即使智能体在相同的位置落子,对手的后续应对也可能各有不同。环境和奖励的这种随机性使得强化学习的优化问题变得更为复杂,难以采用传统的优化方法。

强化学习的核心问题是如何找到一组网络参数,以最大化回报。这与生成对抗网络的思想存在某种相似性。在训练生成器时,生成器与判别器对接,通过调整生成器的参数,力求使判别器的输出最大化。在强化学习中,智能体类似于生成器,环境和奖励则类似于判别器,我们的目标是调整智能体的参数,以最大化其从环境中获得的回报(类似于判别器的输出)。然而,与生成对抗网络不同的是,生成对抗网络中的判别器也是一个神经网络,因此可以使用梯度下降等方法来训练生成器。而在强化学习中,环境和奖励并非神经网络,无法直接应用传统的梯度下降方法进行优化。这正是强化学习与传统机器学习方法的主要区别之一。

233a4cc0716ce8434013308c19ef7d68.png
Optimization (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

1.2 Policy Gradient (策略梯度)

在阐述策略梯度(Policy Gradient)方法之前,我们首先探讨如何引导执行者(actor)的输出,使其在接收到特定观测值时采取期望的行为。一种直观的方法是将此过程类比为分类问题。具体而言,当观察到某个画面时,我们期望执行者输出特定的动作。基于此,我们可以计算执行者输出与真实标签(ground truth)之间的交叉熵(cross-entropy)损失。

通过调整模型参数θ,并最小化该损失函数,便可使执行者学习到在特定游戏画面下执行相应动作的能力。

反之,若要避免执行者采取某种特定行为,只需将损失函数的定义取反,即在交叉熵前乘以负号即可。

d91bf3838e9ebfaf83c22e77b5dc5362.png
actor control (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

基于上述将行为控制类比为分类问题的思路,我们可以进一步构建训练执行者(actor)参数所需的总体损失函数。具体来说,我们可以收集一系列数据,这些数据包含观测值和对应的期望行为。然后,基于这些数据,我们可以定义一个损失函数,用于衡量执行者的输出与期望行为之间的差距。通过最小化该损失函数,我们可以训练执行者,使其在给定观测值的情况下采取更接近期望的行为。

4ce46e8ba068648e98bc1651bcc1c1fa.png
actor control (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

更进一步,我们可以将行为的“好坏”程度进行细化,不再局限于简单的二元划分(好或不好),而是使用连续的数值来表示。这意味着,对于每一个输入(观测值)和输出(行为),我们可以赋予一个浮点数(float)值,该值表示该行为在该观测下的优劣程度。

6a46fd6ea044a843272011ab051c33b5.png
actor control (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

接下来,一个很自然的问题是:我们如何获取这一系列观测值以及与其对应的期望行为呢?我们接下来通过解决方案迭代的方式来讲述这个问题。

7751e64d9a09b9d3d3d49c2cddb981cc.png
actor control (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

解决方案版本 0 - 即时奖励

我们首先会很自然地想到,可以让执行者(actor)与环境进行交互。如果执行者执行某个动作后获得了奖励(reward),我们就认为这个行为是好的,并倾向于再次采取这个行为;如果没有获得奖励,我们就认为这个行为不好,并倾向于避免采取。

c0832235393c3c4bb5ed24d77e06a92b.png
actor control version 0 (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

然而,这种方法存在一个明显的缺陷,即“短视”。在序列决策问题中,例如强化学习所研究的问题,智能体需要在一系列时间步骤中做出决策。每个时间步骤中,智能体根据当前的环境状态选择一个动作。该动作执行后,会改变环境的状态,并产生一个奖励信号。新的环境状态又会影响智能体在下一个时间步骤中可以采取的动作。因此,行为之间存在着明显的依赖关系。很多时候,为了获得更大的长期回报,我们需要采取一些短期内没有奖励甚至可能带来负面奖励的必要步骤。

d79b7efbfe8490cb4a14d2b2a416e6be.png
actor control version 0 (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

解决方案版本 1 - 累积奖励

我们可以用未来所有的奖励相加即可得到累积奖励 eq?G ,用以评估动作的优劣。累积奖励 eq?G_t 定义为从时间点 eq?t开始,将 eq?r_t 一直累加到 eq?r_N ​:

eq?G_t%20%3D%20%5Csum_%7Bi%3Dt%7D%5E%7BN%7D%20r_i%20%5C%5C

例如,以下是 eq?G_1eq?G_2eq?G_3 的具体定义:

eq?G_1%20%3D%20r_1%20+%20r_2%20+%20r_3%20+%20%5Cdots%20+%20r_N%20%5C%5C%20G_2%20%3D%20r_2%20+%20r_3%20+%20%5Cdots%20+%20r_N%20%5C%5C%20G_3%20%3D%20r_3%20+%20%5Cdots%20+%20r_N%20%5C%5C

动作 eq?a_1 ​ 的好坏并不完全由即时奖励 eq?r_1 ​ 决定,而是取决于执行 eq?a_1 后所导致的所有后续奖励,即 eq?G_1 ​。因此,动作的价值 eq?A_1​ 等于累积奖励 eq?G_1 。这种累积奖励的评估方式可以解决版本 0 的问题。例如,在游戏中右移可能没有直接奖励,但如果右移后能够瞄准并击中外星人,其累积奖励会是正值,因此右移可以被视为一个合理的动作,即使它本身没有即时收益。

8cf5258482eb81e9d78a8b59a4fc5879.png
cumulated reward (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

然而,版本 1 也存在不足。如果游戏时间很长,将远期奖励 eq?r_N 完全归因于初始动作 eq?a_1 可能并不合理。因为当智能体采取动作 eq?a_1​ 时,首先直接影响的是 eq?r_1,然后才逐步影响 eq?r_2eq?r_3 ​。若游戏过程极为漫长,动作 eq?a_1 对最终奖励 eq?r_N ​的实际贡献可能极低。

解决方案版本 2 - 折扣累积奖励

我们可以引入一个折扣因子 eq?%5Cgamma 。折扣因子是一个小于 1 的值,例如 0.9 或 0.99,用于减小远期奖励对当前累积奖励的影响。新的累积奖励公式如下:

eq?G%27_t%20%3D%20%5Csum_%7Bi%3Dt%7D%5E%7BN%7D%20%5Cgamma%5E%7Bi-t%7D%20r_i%20%5C%5C

bbf52ffd14a3d26eb0b9a85ad5d068d2.png
discount cumulated reward (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/drl_v5.pdf)

例如,以下是 eq?G_1%5E%5Cprime的具体定义::

eq?G%27_1%20%3D%20r_1%20+%20%5Cgamma%20r_2%20+%20%5Cgamma%5E2%20r_3%20+%20%5Cdots%20%5C%5C

使用折扣因子可以对时间上更接近动作 eq?a_t 的奖励赋予更高的权重,而对较远的奖励赋予较低权重。

解决方案版本 3 - 减去基线的折扣累积奖励

由于“好”或“坏”是相对概念,在某些游戏中,每次行动都会提供一个最低分,例如 10 分。然而,这种奖励即使是正数,也可能反映的是较差的表现。因此,奖励的评估需要相对化。使用

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

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

相关文章

# Java 发送电子邮件示例

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默, 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把…

滤波电路学习笔记(一)——速通低通、高通、带通、带阻等滤波电路的基本认知

前言 :原稿写了一大段,感觉车轱辘话太多了,还是速通一下吧,本文作为初学者笔记内容,供遗忘时查阅,有不足或侵权之处,敬请指出。 一、基本概念与作用 滤波电路:对于信号频率具有选择…

Unity打包+摄像机组件

转换场景 使用程序集:using UnityEngine.SceneManagement; 切换场景相关代码:SceneManager.LoadScene(1);//括号内可放入场景名称,场景索引等 //Application.LoadLevel(""); 老版本Unity加载场景方法 打包相关 Bundle Identi…

【游戏设计原理】58 - 主题

一、理解这里的游戏主题 1. 什么是游戏的主题呢?用一句话描述。 游戏主题是游戏所要传达的中心思想。 2. Theme 和 Message 的区别 特性主题(Theme)主旨(Message)定义是游戏围绕的上下文或背景,指游戏的…

26、【OS】【Nuttx】用cmake构建工程

背景 之前wiki 14、【OS】【Nuttx】Nsh中运行第一个程序 都是用 make 构建,准备切换 cmake 进行构建,方便后续扩展开发 Nuttx cmake 适配 nuttx项目路径下输入 make distclean,清除之前工程配置 adminpcadminpc:~/nuttx_pdt/nuttx$ make …

donet (MVC)webAPI 的接受json 的操作

直接用对象来进行接收&#xff0c;这个方法还不错的。 public class BangdingWeiguiJiluController : ApiController{/// <summary>/// Json数据录入错误信息/// </summary>/// <param name"WeiguiInfos"></param>/// <returns></r…

从预训练的BERT中提取Embedding

文章目录 背景前置准备思路利用Transformer 库实现 背景 假设要执行一项情感分析任务&#xff0c;样本数据如下 可以看到几个句子及其对应的标签&#xff0c;其中1表示正面情绪&#xff0c;0表示负面情绪。我们可以利用给定的数据集训练一个分类器&#xff0c;对句子所表达的…

Kafka 会丢消息吗?

目录 01 生产者(Producer) 02 消息代理(Broker) 03 消费者(Consumer) 来源:Kafka 会丢消息吗? Kafka 会丢失信息吗? 许多开发人员普遍认为,Kafka 的设计本身就能保证不会丢失消息。然而,Kafka 架构和配置的细微差别会导致消息的丢失。我们需要了解它如何以及何时…

RPM包安装Nginx部署Zr.Admin Vue2前端

0、确认node环境 安装node 参考Linux Red Hat安装包安装nodejs 设置 registry 执行 npm set registry https://registry.npmmirror.com/ 1、安装依赖 进入代码根目录 cd /lsp/code/zradmin/ZR.Vue 安装依赖 执行 npm install 最后生成node_modules文件夹 2、测试运行 …

【SpringBoot】入门

【SpringBoot】入门 一、前言1 什么是 Spring Boot ?2 特点与优势3 发展历程 二、项目构建【基于IDEA】1 创建 Spring Boot 项目2 项目结构3 运行 Spring Boot 项目 三、补充1 Maven操作2 项目打 jar 包在本地运行 一、前言 1 什么是 Spring Boot ? Spring Boot最开始基于S…

如何在本地部署大模型并实现接口访问( Llama3、Qwen、DeepSeek等)

如何在本地部署大模型并实现接口访问&#xff08; Llama3、Qwen、DeepSeek等&#xff09; 如何在本地部署大模型并实现接口访问&#xff08; Llama3、Qwen、DeepSeek等&#xff09;模型地址模型下载模型部署指定显卡运行app.py 运行环境requirements 调用接口代码调用 结语 如何…

vmware-ubuntu22.04配置虚拟机win10,重新上网成功

打开问题显示 Hardware配置 Options配置 最后的Advanced&#xff0c;第一次用了BIOS&#xff0c;然后启动中有更新&#xff0c;然后关闭&#xff0c;再用UEFI启动

GDPU Android移动应用 重点习题集

目录 程序填空 ppt摘选 题目摘选 “就这两页ppt&#xff0c;你还背不了吗” “。。。” 打开ppt后 “Sorry咯&#xff0c;还真背不了&#x1f61c;” 更新日志 考后的更新日志 没想到重点勾了一堆&#xff0c;还愣是没考到其中的内容&#xff0c;翻了一下&#xff0c;原…

运行.Net 7 Zr.Admin项目(后端)

1.下载Zr.Admin代码压缩包 https://codeload.github.com/izhaorui/Zr.Admin.NET/zip/refs/heads/main 2.打开项目 我这里装的是VS2022社区版 进入根目录&#xff0c;双击ZRAdmin.sln打开项目 3.安装.net7运行时 我当时下载的代码版本是.net7的 点击安装 点击安装&#xff0…

代码随想录算法训练营第3天(链表1)| 203.移除链表元素 707.设计链表 206.反转链表

一、203.移除链表元素 题目&#xff1a;203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 视频&#xff1a;手把手带你学会操作链表 | LeetCode&#xff1a;203.移除链表元素_哔哩哔哩_bilibili 讲解&#xff1a;代码随想录 注意&#xff1a; 针对头结点和非头结点的…

2024年总结及2025年目标之关键字【稳进】

1. 感受 时光荏苒&#xff0c;都731天&#xff08;2年时间&#xff09;下来了&#xff0c;从第一年的【坚持】&#xff0c;到第二年的【提速】&#xff0c;定目标&#xff0c;现在回头看&#xff0c;还是那句话【事非经过不知难】&#xff0c;那又怎么样呢&#xff0c;再难不是…

qt QLabel QPushButton 控件重写paintEvent后 控件消失

qt 继承自PushButton控件的类 重写paintEvent后 控件消失 解决办法&#xff0c;在paintevent结尾加上这条语句&#xff1a;QPushButton::paintEvent(event); void MyButton::paintEvent(QPaintEvent *event) {QPushButton::paintEvent(event); } 这里QPushButton不能写成Q…

苹果手机(IOS系统)出现安全延迟进行中如何关闭?

苹果手机&#xff08;IOS系统&#xff09;出现安全延迟进行中如何关闭&#xff1f; 一、设置二、隐私与安全性三、失窃设备保护关闭 一、设置 二、隐私与安全性 三、失窃设备保护关闭

ELK的搭建

ELK elk&#xff1a;elasticsearch logstatsh kibana统一日志收集系统 elasticsearch&#xff1a;分布式的全文索引引擎点非关系型数据库,存储所有的日志信息&#xff0c;主和从&#xff0c;最少需要2台 logstatsh&#xff1a;动态的从各种指定的数据源&#xff0c;获取数据…

从CentOS到龙蜥:企业级Linux迁移实践记录(龙蜥开局)

引言&#xff1a; 在我们之前的文章中&#xff0c;我们详细探讨了从CentOS迁移到龙蜥操作系统的基本过程和考虑因素。今天&#xff0c;我们将继续这个系列&#xff0c;重点关注龙蜥系统的实际应用——特别是常用软件的安装和配置。 龙蜥操作系统&#xff08;OpenAnolis&#…