《Reinforcement Learning: An Introduction》第1章笔记

news/2024/11/19 19:27:56/

文章目录

    • 1.1 强化学习
    • 1.2 强化学习的例子
    • 1.3 强化学习的要素
    • 1.4 局限和范围
    • 1.5 拓展例子:井字游戏
    • 1.6 总结
    • 1.7 强化学习的早期历史
    • 参考资料

1.1 强化学习

强化学习是学习做什么—如何将情景映射到动作—以便最大化数字奖励信号。学习者不会被告知该采取什么动作,而是必须通过尝试来发现哪个动作会获得最大的奖励。在最有趣和最具挑战的情况下,动作不仅仅影响即时的奖励还会影响下一情境,甚至通过这种情况影响到接下来的所有奖励。 试错搜索和延迟奖励(trial-and-error search and delayed reward)是强化学习最重要的两个区别性特征。

强化学习(Reinforcement learning)同其他名字以”ing" 结尾的主题如学习(learning)一样,同时是一个问题、一类可有效解决该问题的方法、研究这个问题和解决方法的领域。用一个名词表示三件事很方便,但是也要注意保持这三个概念的独立,不然就是造成很多困惑的源头了。

利用动态系统理论的思想将强化学习的问题形式化,特别是作为不完全已知的马尔科夫决策过程(incompletely-known Markov decision processes)的最优控制。 形式化的细节要等到第3章,但是最基本的思想是捕捉 学习agent随时间的推移与它的环境交互来实现一个目标 所面临的实际问题的最重要方面。一个学习agent必须能够某种程度上感知其环境的状态,并且必须采取能够影响到该状态的动作。 agent也必须有一个或多个与环境状态相关的目标。 马尔科夫决策过程意在只包含这三个方面—感知、行动、目标—在最简单的可能形式而不在意细节。 任何适合于解决此类问题的方法被考虑为一种强化学习方法。

强化学习被看作监督学习和无监督学习外的第3种机器学习范式:

强化学习与监督学习的区别:监督学习是从知识渊博的外部监督者提供的带标签示例的训练集中学习。监督学习的目标是泛化它的响应以便在 从未中出现于训练集的情景也表现正确。但是只靠监督学习不足以从交互中学习,在交互问题中,要获得既正确又代表 agent 必须采取行动的所有情况的期望行为的示例通常是不现实的。 在未知领域中,agent必须能够从自己的经验中学习。

强化学习与无监督学习的区别:无监督学习通常是发现未标注数据中的隐藏结构。强化学习是试图最大化奖励信号而不是发现隐藏结构。从agent的经验中揭示结构肯定对于强化学习有帮助,但是它本身不足以代表强化学习的最大化奖励。

强化学习面临探索(exploration)和利用(exploitation)的权衡的挑战:为了获得更多的奖励,强化学习agent必须偏爱过去尝试过并且发现能有效产生奖励的动作;但是为了发现这样的行为,它必须尝试它之前没有选择过的动作。也就是说agent必须利用(exploit)它已经经历的,同时为了在将来获得更好的动作选择也必须探索(explore)。困境在于,不管是探索还是利用都不可能在不失败的情况进行。agent必须尝试不同的动作并逐渐偏好那些看起来最好的。在随机任务中,每一个动作必须被试很多次来获得一个期望回报的可靠估计。探索-利用问题是数学家们几〸年来一直在深入研究的问题,但至今仍未得到解决。到目前为止,在监督学习和无监督学习中没有出现探索-利用问题。

强化学习考虑与目标导向的agent 与不确定的环境交互的整个问题, agent 有明确的目标,能够感知环境,能够选择影响环境的动作,并且从一开始就假定agent必须运行尽管对其面对环境有很大的不确定性。

1.2 强化学习的例子

  • 国际象棋大师走棋:选择是由规划—预期可能的回应或者反回应—以及对特定位置和移动的期望的即时、直觉判断决定的。
  • 自适应控制器实时调整炼油厂操作的参数:控制器根据指定的边际成本优化产量/成本/质量权衡,而不严格遵守工程师最初建议的设定点。
  • 一只小瞪羚在出生几分钟后挣扎着站起来。半小时后,它以每小时 20 英里的速度运行。
  • 移动机器人决定它是否应该进入一个新房间来收集更多的垃圾,还是开始试图找到回到电池充电站的路。它根据电池当前的充电水平以及过去找到充电器的速度和容易程度做出决定。
  • Phil 准备早餐的过程:过程里的每一个动作,不管是走到橱柜,拿碗和勺子等操作过程都可以看做例子

这些例子的共同点:

  • 主动决策的agent和其环境的交互
  • 动作的效果不能被完全预测
  • 随着时间的推移,agent 能够用它的经验来提高性能

1.3 强化学习的要素

除了agent和环境,强化学习系统还有四个要素:

  • 策略(policy): 策略 定义了学习agent在给定时间点的行为方式。一个策略是从感知到的环境状态到采取动作的映射。它就是心理学里的刺激-反应规则或关联的集合。有些情景下策略可能就是一个简单的函数或者查找表,其他场景可能会包含大量的计算比如搜索过程。一般而言,策略可能是随机的,为每一个动作指定概率。
  • 奖励信号(reward signal):奖励信号定义了强化学习问题的目标。环境在每一个时间步给强化学习agent一个奖励(reward)数值。agent的唯一目标就是使其长期收到的总奖励最大化。奖励信号是改变策略的基础,如果策略选择一个动作获得了低奖励,那么策略在将来可能会选择其他动作。一般而言,奖励信号可能是环境状态和动作的随机函数。
  • 值函数(value function):值函数确定了长期看什么是好的。粗略的讲,一个状态的价值是agent从当前状态开始,在未来期望累积的奖励总额。奖励决定了环境的即时的、内在的可取性,而状态的价值考虑了其后续的状态及它们的奖励的长期可取性。例如,一个状态可能总是返回低的即时奖励,但它仍然有高的价值因为它有规律的跟随着能获得高奖励的其他状态。 没有奖励就没有价值,估计价值的唯一目的是为了获得更多的奖励,但是在指定和评估决策时最关心的是价值,动作选择是基于价值判断做出的,因为寻求高价值从长远看可以获得最大奖励。奖励基本由环境直接给出,价值必须根据agent在其整个生命周期内所作的观察序列来估计和重新估计,所以有效估算价值是几乎所有强化学习算法中最重要的组成部分。
  • 环境模型(model of environment):模仿环境的行为,或能够推理环境将如何表现。比如,给定状态和动作,模型可以预测下一个状态和下一个奖励。

1.4 局限和范围

  • 本书关注的不是设计状态信号,而是根据任何可用的状态信号来决定采取什么动作
  • 本书考虑的大多数强化学习方法都是围绕估计值函数来构建的,但并不一定要这样做来解决强化学习问题。如遗传算法、遗传规划、模拟退火等其他进化方法

1.5 拓展例子:井字游戏

考虑儿童熟悉的井字游戏(tic-tac-toe): 两个玩家轮流在3X3的棋盘上下棋,一个玩家持X,另一个玩家持O,直到一个玩家通过水平、垂直或对角连续放置三个标记排成一行来获胜,就像X玩家在下面图中的游戏里获胜一样
井字棋示意

如何用值函数来处理井字游戏呢?

  1. 建立一个数字表格,表示游戏所有的可能状态。每个数字将是我们从该状态获胜概率的最新估计,把这个估计值当做状态的值,整个表就是学习到的值函数。假设我们总是玩X,那么所有的一行全为X的状态的获胜概率为1;所有的一行全为O的状态的获胜概率为0,将所有其他状态的初始值设为0.5,表示我们有0.5的概率获胜。

  2. 我们与对手下很多次棋。为了选择我们的移动,我们检查所有可能的移动状态并查询他们在表中的当前值。大多数时候,我们贪婪的移动,选择有最高估计概率赢的移动。然而,偶尔我们也随机的选择其他移动,也就是探索性(exploratory)移动,让我们经历从来没有见过的状态。一个移动过或被考虑的序列如下图所示

  3. 当我们在玩的时候,我们改变在游戏中遇到的状态的价值,试图作状态赢的概率的更准确的估计。设 S t S_t St 表示贪婪移动之前的状态, S t + 1 S_{t+1} St+1 是在该状态之后的移动。 V ( S t ) V(S_t) V(St) S t S_t St 估计值的更新,则有
    V ( S t ) ← V ( S t ) + α [ V ( S t + 1 ) − V ( S t ) ] V(S_t) \leftarrow V(S_t) + \alpha \left[V(S_{t+1}) - V(S_t) \right] V(St)V(St)+α[V(St+1)V(St)]
    ​ 式中 α \alpha α 是 正的步长参数,影响学习速率。 这个更新规则是时间差分(temporal-difference)学习方法的一个例子,因为 V ( S t + 1 ) − V ( S t ) V(S_{t+1}) - V(S_t) V(St+1)V(St) 的差值,即两个连续时间的估计而得名
    在这里插入图片描述

这个例子说明了进化方法和学习值函数的方法的区别: 1. 为了评估策略,进化方法保持策略不变,并与对手玩许多游戏或使用对手的模型来模拟许多游戏,而只使用游戏的结果,游戏中发生的事情被忽略了。而之函数方法允许评估各个状态。 2. 进化方法和值函数方法都搜索策略空间,但是学习值函数会利用游戏过程中可用的信息。

这个例子也说明了强化学习的一些关键特性:1. 强调在与环境互动的过程中学习;2. 有一个明确的目标,正确的行为要求规划和远见,需考虑到选择的延迟效应。

当然这个例子可能比较简单,不能因此而去猜测强化学习是不是有很多限制,实际上它的范围很广,作者做了好几段的论述。

1.6 总结

  • 强化学习是理解和自动化目标导向学习和决策的计算方法。它强调agent在与它的环境直接交互中学习,而不需要示例性监督或完全的环境模型
  • 强化学习使用马尔科夫决策过程的形式框架来定义agent与环境的状态、动作、奖励的交互
  • 价值和值函数的概念在本书中是大多数强化学习的关键要素,使用值函数区分了强化学习和进化方法(通过评估全部策略来直接搜索策略空间)

1.7 强化学习的早期历史

强化学习的早期历史有两条主线:第一条主线关注的是在试错中学习,起源于动物心理学;第二条主线关注的是最优化控制问题及其利用值函数和动态规划的解决方案。除此之外还有第三条主线关注时间差分方法,这三条主线在20世纪80年末交汇在一起,产生了在本书中介绍的现代强化学习领域。

参考资料

  1. 《Reinforcement Learning: An Introduction》Sutton, Richard S. and Andrew G. Barto. 第2版。 书籍网站 , 文中图片来自于书籍
  2. https://github.com/ShangtongZhang/reinforcement-learning-an-introduction
  3. https://github.com/YunlianMoon/reinforcement-learning-an-introduction-2nd-edition/tree/master

http://www.ppmy.cn/news/75539.html

相关文章

XPath语法:在XML文档中定位和选择节点的利器

XPath(XML Path Language)是一种用于在XML文档中定位和选择节点的语言。它提供了强大的定位和选择能力,使开发人员能够准确、灵活地定位所需的元素。本篇博客将介绍XPath的语法和常用定位方法,帮助你在Web自动化测试等场景中更好地…

[Python]JWT认证与pyjwt包简介

文章目录 JWT认证简介构成载荷声明 pyjwt编解码flask中验证 JWT是一种JSON的行业标准,广泛应用在系统的用户认证方面。 JWT认证简介 JWT(JSON Web Tokens),是为了在网络应用环境间传递声明而执行的一种开放的行业标准&#xff0…

Python 中的函数微分是如何实现的?

1. 如何编写计算函数微分的代码?举个简单例子 可以使用 PyTorch 中的自动微分功能来计算函数的导数。下面是一个简单的例子: import torch# 定义一个需要求导的函数 def f(x):return x ** 2 2 * x 1# 创建一个张量,并设置 requires_gradT…

第一个SpringBoot程序

如何创建一个SpringBoot项目,两种方式,官网或IDEA 官方提供了一个快速生成的网站,IDE集成了这个网站 spring官网 Spring | Homehttps://spring.io/进入spring官网,点击projects,点击SpringBoot,进到如下…

kicad学习笔记6:kicad启动及其grid参数设置和修改

1。kicad启动&#xff1a; single_top.cpp 启动函数&#xff1a; 1。 IMPLEMENT_APP( APP_SINGLE_TOP )2。 PGM_SINGLE_TOP::OnPgmInit()3。 PGM_BASE::InitPgm2。kicad参数 grid参数定义&#xff1a; struct GRID_SETTINGS {bool axes_enabled;std::vector<wxString&…

实时频谱-2.4窗口函数

窗口函数 在离散傅立叶变换(DFT)分析运算中&#xff0c;一个固有的假设是要处理的数据是单个周期定期重复的信号。例如&#xff0c;在图2-8中的帧2上应用DFT处理时&#xff0c;信号上会进行周期性扩展。 在连续的帧之间一般会发生不连续点&#xff0c;如图 2-9 所示。 这些人…

【PaperReading】Heterogeneous Graph Neural Network

Heterogeneous Graph Neural Network 1. 引言2. 问题定义2.1 内容关联异质图(Content-associated Heterogeneous Graphs)2.2 异质图表示学习(Heterogeneous Graph Representation Learning)3. HetGNN3.1 采样异质邻居节点(C1)3.2 编码异质的内容信息(C2)1 预训练分别得到不…

pg事务:multixact

什么是multixact&#xff1f; 在对同一行加锁时&#xff0c;元组上关联的事务ID可能有多个&#xff0c;pg将多个事务ID组合起来用一个MultiXactID来管理。TransactionId和MultiXactID是多对一的关系 multixactID跟TransactionId一样&#xff0c;也是32位&#xff0c;同样有wra…