强化学习简介

article/2025/8/22 19:18:41

强化学习简介

强化学习(Reinforcement Learning,RL)是机器学习中的一个领域,是学习做什么(即如何把当前的情景映射成动作)才能使得数值化的收益最大化,学习者不会被告知应该采取什么动作,而是必须自己通过尝试去发现哪些动作会产生最丰厚的收益

强化学习同机器学习领域中的有监督学习无监督学习不同,有监督学习是从外部监督者提供的带标注训练集中进行学习(任务驱动型),无监督学习是一个典型的寻找未标注数据中隐含结构的过程(数据驱动型)

强化学习是与两者并列的第三种机器学习范式,强化学习带来了一个独有的挑战——探索利用之间的折中权衡,智能体必须利用已有的经验来获取收益,同时也要进行探索,使得未来可以获得更好的动作选择空间(即从错误中学习)

img

核心概念

强化学习的主要角色是 智能体环境,环境是智能体存在和互动的世界。智能体在每一步的交互中,都会获得对于所处环境状态的观察(有可能只是一部分),然后决定下一步要执行的动作。环境会因为智能体对它的动作而改变,也可能自己改变。

智能体也会从环境中感知到 奖励 信号,一个表明当前状态好坏的数字。智能体的目标是最大化累计奖励,也就是回报。强化学习就是智能体通过学习来完成目标的方法。
在这里插入图片描述

马尔可夫决策过程(MDP)

MDP 简单说就是一个智能体(Agent)采取行动(Action)从而改变自己的状态(State)获得奖励(Reward)与环境(Environment)发生交互的循环过程,MDP 的策略完全取决于当前状态(Only present matters),这也是它马尔可夫性质的体现

强化学习任务通常用马尔可夫决策过程 (Markov Decision Process, MDP)来描述,即

机器处于环境 E E E 中, 状态空间为 X , X, X, 其中每个状态 x ∈ X x \in X xX 是机器感知到的环境的描述

机器能采取的动作构成了动作空间 A A A ; 若某个动作 a ∈ A a \in A aA 作用在当前状态 x x x 上, 则潜在的转移函数 P P P 将使得环境从当前状态按某种概率转移到另一个状态; 在转移到另一个状态的同时, 环境会根据潜在的“奖赏” (reward)函数 R R R 反馈给机器一个奖赏

综合起来, 强化学习任务对应了四元组 E = ⟨ X , A , P , R ⟩ , E=\langle X, A, P, R\rangle, E=X,A,P,R, 其中 P : X × A × X ↦ R P: X \times A \times X \mapsto \mathbb{R} P:X×A×XR 指定了状态转移概率, R : X × A × X ↦ R R: X \times A \times X \mapsto \mathbb{R} R:X×A×XR 指定了奖赏; 在有的应用中, 奖赏函数可能仅与状态转移有关, 即 R : X × X ↦ R . R: X \times X \mapsto \mathbb{R} . R:X×XR.

策略

机器要做的是通过在环境中不断地尝试而学得一个“策略” (policy) π , \pi, π, 根据这个策略, 在状态 x x x 下就能得知要执行的动作 a = π ( x ) a=\pi(x) a=π(x)

策略有两种表示方法:

一种是将策略表示为函数 π : X ↦ A , \pi: X \mapsto A, π:XA, 确定性策略常用这种表示

另一种是概率表示 π : X × A ↦ R , \pi: X \times A \mapsto \mathbb{R}, π:X×AR, 随机性策略常用这种表示

π ( x , a ) \pi(x, a) π(x,a) 为状态 x x x 下选择动作 a a a 的概率, 这里必须有 ∑ a π ( x , a ) = 1 \sum_{a} \pi(x, a)=1 aπ(x,a)=1

确定性策略

确定性策略,在相同的状态下,其输出的动作是确定的

优缺点

  • 能够利用确定性梯度优化策略,所以不需要太多的采样数据,计算效率也很快
  • 由于每次面对同一状态其输出的动作是唯一的,无法讨论一些其它动作的效果,不具有自学习的能力

随机性策略

对于随机策略,对于相同的状态,其输出的状态并不唯一,而是满足一定的概率分布,从而导致即使是处在相同的状态,也可能输出不同的动作

优缺点

  • 随机策略将探索和改进集成到一个策略中
  • 需要采样的数据量较大,学习比较慢

奖励

强化学习中,奖励函数 R R R非常重要,它由当前状态、已经执行的行动和下一步的状态共同决定
r t = R ( s t , a t , s t + 1 ) r_{t}=R\left(s_{t}, a_{t}, s_{t+1}\right) rt=R(st,at,st+1)
长期累积奖励有多种计算方式

其中 T T T步累计奖赏,指的是在一个固定窗口步数 T T T内获得的累计奖励
R ( τ ) = ∑ t = 0 T r t R(\tau)=\sum_{t=0}^{T} r_{t} R(τ)=t=0Trt

另一种叫做 γ \gamma γ折扣奖励,指的是智能体获得的全部奖励之和,但是奖励会因为获得的时间不同而衰减。这个公式包含衰减率 γ ∈ ( 0 , 1 ) \gamma \in(0,1) γ(0,1)
R ( τ ) = ∑ t = 0 ∞ γ t r t R(\tau)=\sum_{t=0}^{\infty} \gamma^{t} r_{t} R(τ)=t=0γtrt
这里为什么要加上一个衰减率呢?为什么不直接把所有的奖励加在一起?可以从两个角度来解释: 直观上讲,现在的奖励比外来的奖励要好,所以未来的奖励会衰减;数学角度上,无限多个奖励的和很可能 不收敛,有了衰减率和适当的约束条件,数值才会收敛

探索与利用

所谓探索:是指做你以前从来没有做过的事情,以期望获得更高的回报

所谓利用:是指做你当前知道的能产生最大回报的事情

多臂赌博机问题

单步强化学习任务对应了一个理论模型, 即“ K K K -摇臂赌博机” , K K K -摇臂赌博机有 K K K 个摇臂, 赌徒在投入一个硬币后可选择按下其中一个摇臂, 每个摇臂以一定的概率吐出硬币, 但这个概率赌徒并不知道。赌徒的目标是通过一定的策略最大化自己的奖赏, 即获得最多的硬币

仅探索(exploration only): 将所有的尝试机会平均分配给每个摇臂(即轮流按下每个摇臂),最后以每个摇臂各自的平均吐币概率作为其奖赏期望的近似估计

仅利用(exploitation-only): 按下目前最优的(即到目前为止平均奖赏最大的)的摇臂,若有多个摇臂同为最优, 则从中随机选取一个.
在这里插入图片描述

显然,“仅探索”法能很好地估计每个摇臂的奖赏, 却会失去很多选择最优摇臂的机会;“仅利用”法则相反, 它没有很好地估计摇臂期望奖赏, 很可能经常 选不到最优摇臂. 因此, 这两种方法都难以使最终的累积奖赏最大化.
事实上,探索和利用这两者是矛盾的, 因为尝试次数(即总投币数)有限, 加强了一方则会自然削弱另一方, 这就是强化学习所面临的“探索-利用困境” (Exploration Exploitation dilemma)

显然, 欲累积奖赏最大, 则必须在探索与利用之间达成较好的折中

ϵ \epsilon ϵ -贪心法

ϵ \epsilon ϵ -贪心法基于一个概率来对探索和利用进行折中: 每次尝试时, 以 ϵ \epsilon ϵ 的概率进行探索, 即以均匀概率随机选取一个摇臂; 以 1 − ϵ 1-\epsilon 1ϵ 的概率进行利用, 即选择当前平均奖赏最高的摇臂(若有多个, 则随机选取一个)

Softmax

Softmax 算法基于当前已知的摇臂平均奖赏来对探索和利用进行折中

若各摇臂的平均奖赏相当, 则选取各摇臂的概率也相当; 若某些摇臂的平均奖赏明显高于其他摇臂, 则它们被选取的概率也明显更高.

强化学习的分类

在这里插入图片描述

有模型学习

考虑多步强化学习任务, 暂且先假定任务对应的马尔可夫决策过程四元组 E = ⟨ X , A , P , R ⟩ E=\langle X, A, P, R\rangle E=X,A,P,R 均为已知, 这样的情形称为“模型已知”,即机器已对环境进行了建模, 能在机器内部模拟出与环境相同或近似的状况。在已知模型的环境中学习称为“有模型学习” (model-based learning)

此时, 对于任意状态 x , x ′ x, x^{\prime} x,x 和动作 a , a, a, x x x 状态下执行动作 a a a 转移到 x ′ x^{\prime} x 状态的概率 P x → x ′ a P_{x \rightarrow x^{\prime}}^{a} Pxxa 是已知的, 该转移所带来的奖赏 R x → x ′ a R_{x \rightarrow x^{\prime}}^{a} Rxxa 也是已知的

优缺点

有模型学习最大的优势在于智能体能够 提前考虑来进行规划,走到每一步的时候,都提前尝试未来可能的选择,然后明确地从这些候选项中进行选择

最大的缺点就是智能体往往不能获得环境的真实模型。如果智能体想在一个场景下使用模型,那它必须完全从经验中学习,这会带来很多挑战。最大的挑战就是,智能体探索出来的模型和真实模型之间存在误差,而这种误差会导致智能体在学习到的模型中表现很好,但在真实的环境中表现得不好(甚至很差)

免模型学习

在现实的强化学习任务中, 环境的转移概率、奖赏函数往往很难得知, 甚至很难知道环境中一共有多少状态

若学习算法不依赖于环境建模,则称为免模型学习(model-free learning),这比有模型学习困难的多

参考

  • 机器学习—周志华
  • 强化学习简介 (Introduction of Reinforcement Learning)
  • OpenAI SpinningUp
  • 强化学习方法(一):探索-利用困境

http://chatgpt.dhexx.cn/article/JVLhfhmU.shtml

相关文章

强化学习(一):简介——什么是强化学习?

本文将介绍强化学习的基本含义,了解什么是强化学习、强化学习的概念与基本框架以及强化学习中常见的问题类型。 什么是强化学习? 强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习&#xff0c…

机器学习算法(三十):强化学习(Reinforcement Learning)

目录 1 简介 1.1 什么是强化学习 1.2 强化学习的主要特点 1.3 强化学习的组成部分 2 强化学习训练过程 3 强化学习算法归类 3.1 Value Based 3.2 Policy Based 3.3 Actor-Critic 3.4 其他分类 4 EE(Explore & Exploit)探索与利用 5 强化…

强化学习入门这一篇就够了!!!万字长文

强化学习 强化学习入门这一篇就够了万字长文带你明明白白学习强化学习... 强化学习入门这一篇就够了 强化学习前言一、概率统计知识回顾1.1 随机变量和观测值1.2 概率密度函数1.3 期望1.4 随机抽样 二、强化学习的专业术语2.1 State and action2.2 policy-策略2.3 reward2.4 状…

关于gensim的一些使用记录

NLP神器 Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。 支持包括TF-IDF,潜在语义分析(Latent Semantic Analysis,LSA),潜狄利克…

gensim官方文档实践笔记

中文文档比机翻还颠三倒四, 所以还是自己记录一下, 顺便加一些注解. 目录 文档document 语料库Corpus 语料库作用 语料库预处理 词汇编号 向量Vector 方法1: 特征向量(vector of features) 方法2: doc2bow 模型Model 语料库和向量空间 字符串转向量 语料库流Corpu…

gensim安装

输入以下命令即可: pip install gensim -i http://pypi.douban.com/simple --trusted-host pypi.douban.com以下是过程: 尝试1:直接在anaconda3上面搜索出来安装 速度太慢,失败 尝试2:更换pip源,如下所示…

Gensim:一款进行文本主题识别的 Python 工具库

从大量文本中自动提取人们谈论的主题(主题识别)是自然语言处理的基本应用之一。大型文本示例包括社交媒体订阅、消费者对酒店、电影和其他业务的评价、用户评论、新闻和客户发来的邮件。 在本中,将使用LDA 从 20Newsgroup 数据集 中提取主题的实战案例。欢迎深入探…

gensim 快速入门 Word2Vec

文章目录 gensim的核心概念Word2Vec简介Word2Vec初试探将单词可视化 训练自己的Word2Vec模型 gensim的核心概念 Document: 文档。可以是一个一句话,或者一段话Corpus: 文档的集合Vector: 文档向量。将文档通过数学向量表示。Model: 模型。将文档转换为向量的模型。…

vue获得焦点事件处理函数中控制其失去焦点,但是失去焦点后该获得焦点事件一直被触发

当input获取焦点的时候需要判断另一个操作是否已完成,否则需要引导用户先去执行另一个操作,是则允许输入。 另一个操作跟当前操作是在同一个页面上,无法通过“下一步”进行控制。 解决思路是: 当input获取焦点的时候&#xff0…

div失去焦点事件onblur()无效

初学js事件&#xff0c;想做一个点击时变红&#xff0c;取消聚焦时变白的div&#xff0c;于是我这样写代码&#xff1a; <div style"width: 100px;height: 50px;border: 1px solid;"></div> <script>let div document.getElementsByTagName(&quo…

input失去焦点事件和点击事件冲突的解决思路

首先说一下应用场景 el-input框为禁用状态时&#xff0c;点击取消禁用&#xff0c;并显示后方两个按钮&#xff0c; 点击绿色按钮保存input框当前值&#xff0c;失去焦点或点击红色框时恢复改变前的值 思路就是不在input上的失去焦点方法&#xff0c;而是手动调用失去焦点方法…

input中blur失去焦点事件与点击事件冲突

场景&#xff1a; 当在输入框里输入手机号的时候&#xff0c;输入框高亮&#xff0c;并且关闭按钮显示&#xff0c;input失焦时关闭按钮隐藏 现象&#xff1a; 遇到的问题是&#xff0c;当我们点击关闭按钮清空input框数据时&#xff0c;发现只是关闭按钮隐藏了&#xff0c…

div失去焦点事件onblur()不触发解决方法

需求&#xff1a; 做一个弹出框组件&#xff0c;文字点击时会在文字下方弹出一个框&#xff0c;在vue3中监听div元素的blur事件发现事件并不会在div失去焦点时触发 解决方法 bug原因&#xff1a;在vue中div默认不触发事件,除非将元素添加tabindex"-1"属性才会触发…

JavaScript学习(二十一)——表单相关事件(焦点事件)

表单事件实际上就是对元素获得或失去焦点的动作进行控制。可以利用表单事件来改变获得或失去焦点的元素样式&#xff0c;这里所指的元素可以是同一类型&#xff0c;也可以是多个不同类型的元素。 获取焦点与失去焦点事件 获得焦点事件(onfocus) 是当某个元素获得焦点时触发事件…

特征工程 - 数据分析 - 峰度 and 偏度

特征工程 - 数据分析 - 峰度 and 偏度 偏度峰度 偏度 偏度&#xff08;Skewness&#xff09;用来描述数据分布的对称性。 当偏度 <0 时&#xff0c;称为负偏&#xff0c;数据出现左侧长尾&#xff1b;当偏度>0时&#xff0c;称为正偏&#xff0c;数据出现右侧长尾。 正态…

python金融分析小知识(6)——偏度与峰度的计算

Hello 大家好&#xff0c;我是一名新来的金融领域打工人&#xff0c;日常分享一些python知识&#xff0c;都是自己在学习生活中遇到的一些问题&#xff0c;分享给大家&#xff0c;希望对大家有一定的帮助&#xff01; 相信大家在平时的统计分析中&#xff0c;一定会用到数组偏…

使用Excel计算峰度(Kurtosis)和偏度(Skewness)

峰度&#xff08;Kurtosis&#xff09;和偏度&#xff08;Skewness&#xff09; 峰度是描述总体中所有取值分布形态陡缓程度的统计量。计算公式是&#xff1a; 在Excel中的公式是&#xff1a;KURT 因为是与标准正态分布比较&#xff0c;而标准正态分布的四阶矩为3&#xff0c;…

Resnet解读

pytorch的resnet模块在torchvision的models中。 里面可以选择的resnet类型有&#xff1a; _all_列表的每一个resnet都提供了实现的函数&#xff1a; def resnet18(pretrainedFalse, progressTrue, **kwargs):"""Constructs a ResNet-18 model.Args:pretrained …

ResNet算法

Daily learning2 Q1&#xff1a;过拟合&#xff08;overfitting&#xff09;&#xff0c;欠拟合&#xff08;underfitting&#xff09;&#xff1f; A1:欠拟合&#xff1a;根本原因是特征维度过少&#xff0c;模型过于简单&#xff0c;导致拟合的函数无法满足训练集&#xff0c…

Resnet代码详解

这篇文章是用来讲解Resnet(残差网络)代码的&#xff0c;结合代码理解残差网络结构。 目录 Bottleneck类 Conv33 Conv11 BasicBlock ResNet _make_layer代码解析 完整的ResNet代码&#xff1a; 可以直接调用torch内置的resnet官方代码。 from torchvision.models impo…