强化学习的模型

2023-11-09


前言

B站学习龙强老师强化学习相关视频后的总结笔记,视频链接:https://www.bilibili.com/video/BV1hq4y1n7aU?p=1


一、强化学习是什么?

根据维基百科对强化学习的定义:Reinforcement learning (RL) is an area of machine learning inspired by behaviorist psychology, concerned with how software agents ought to take actions in an environment so as to maximize some notion of cumulative reward. (强化学习是机器学习领域之一,受到行为心理学的启发,主要关注智能体如何在环境中采取不同的行动,以最大限度地提高累积奖励。)

强化学习主要由智能体(Agent)、环境(Environment)、状态(State)、动作(Action)、奖励(Reward)组成。智能体执行了某个动作后,环境将会转换到一个新的状态,对于该新的状态环境会给出奖励信号(正奖励或者负奖励)。随后,智能体根据新的状态和环境反馈的奖励,按照一定的策略执行新的动作。上述过程为智能体和环境通过状态、动作、奖励进行交互的方式。

智能体通过强化学习,可以知道自己在什么状态下,应该采取什么样的动作使得自身获得最大奖励。由于智能体与环境的交互方式与人类与环境的交互方式类似,可以认为强化学习是一套通用的学习框架,可用来解决通用人工智能的问题。因此强化学习也被称为通用人工智能的机器学习方法。
强化学习是一种无标签的学习,通过奖励函数来判断在确定状态下执行某一动作的好坏,学习过程就是通过奖励信号来改变执行动作的策略,最终结果就是形成一个使奖励最大的策略。


二、基本模型

1.基本框架

强化学习框图

智能体(Agent):强化学习的本体,作为学习者或者决策者,类比人的大脑。
环境(Environment):智能体以外的一切,主要是状态的集合,类比人的身体以及周围的自然环境。
状态(state):一个表示环境的数据,状态集则是环境中所有可能的状态。
动作(action):智能体可以做出的动作,动作测试智能体可以做出的所有动作。类比人类的大脑发出的向身体发出的指令。
奖励(Reward):智能体在执行一个动作后,获得的反馈信息,可以是正奖励,也可以是负奖励(惩罚)。
策略(Policy):环境状态到动作的映射称为策略,即智能体处在某一状态下,执行何种动作
目标:强化学习的目标是自动寻找在连续时间序列里的最优策略,这里的最优策略通常指使得长期累计奖励最大化的策略。强化学习实际上是智能体在与环境进行交互的过程中,学会最佳决策序列。

2.学习过程

  1. 智能体感知环境状态;
  2. 智能体根据某种策略选择动作;
  3. 动作作用于环境导致环境状态变化(环境转移);
  4. 同时,环境向智能体发出一个反馈信号。

三.马尔科夫决策过程(Markov Decision Process. MDP)

1.马尔科夫性质

在时间步t+1时,环境的反馈仅取决于上一时间步t的状态s以及动作a,与时间步t-1以及t-1步之前的时间步都没有关联性。
马尔科夫性是一种为了简化问题而做的假设。我们的强化学习就是基于这一假设来进行学习过程的,任何不符合该假设的问题都不太适合采用强化学习的方法来解决。

2.MDP的基本组成部分

状态集合 S = { s 1 , s 2 , s 3 , … , s m } S =\lbrace s_1,s_2,s_3,\text{\textellipsis},s_m \rbrace S={s1,s2,s3,,sm}
为了区分表述:
s i , i = 1 , 2 , 3 , … , m s_i,i=1,2,3,\text{\textellipsis},m si,i=1,2,3,,m(这里的 s i s_i si指的是状态集合中任意一个状态)
s t , t = 1 , 2 , 3 , … , T s_t,t=1,2,3,\text{\textellipsis},T st,t=1,2,3,,T(这里的 t t t指的时间序列, s t s_t st指的是 t t t时刻的状态)

动作集合 A = { a 1 , a 2 , a 3 , … , a n } A =\lbrace a_1,a_2,a_3,\text{\textellipsis},a_n \rbrace A={a1,a2,a3,,an} 表述方式同上
( A ∣ s i ) (A|s_i) (Asi)表示状态 s i s_i si下所有合法的动作 a a a的集合

状态转移概率 P s a ( s ′ ) Psa(s\\') Psa(s),状态在 s s s下采取动作 a a a,状态转移到 s ′ s\\' s的概率
P s a : S ∗ A ∗ S → [ 0 , 1 ] Psa:S*A*S\rightarrow[0,1] Psa:SAS[0,1]

奖励函数
R s a : S ∗ A → R ( 实数 ) Rsa:S*A\rightarrow R(实数) Rsa:SAR(实数) R s a ( s , a ) Rsa(s,a) Rsa(s,a)在状态 s s s下执行动作 a a a得到的奖励
R s a s : S ∗ A ∗ S → R ( 实数 ) Rsas:S*A*S\rightarrow R(实数) Rsas:SASR(实数),
R s a s ( s , a , s ′ ) Rsas(s,a,s\\') Rsas(s,a,s)在状态 s s s下执行动作 a a a转移到状态 s ′ s\\' s时得到的奖励

策略函数
π : S ∗ A → [ 0 , 1 ] \pi:S*A\rightarrow[0,1] π:SA[0,1]
π ( a ∣ s ) \pi(a|s) π(as):在状态 s s s的前提下,执行动作 a a a的概率
π ( a ∣ s ) = { 1 或 0 确定性策略  [ 0 , 1 ] 随机性策略 \pi(a|s)=\begin{cases} 1 或 0 &\text{确定性策略 } \\ [0,1] &\text{随机性策略} \end{cases} π(as)={10[0,1]确定性策略 随机性策略

折扣因子 γ ∈ [ 0 , 1 ] \gamma\isin[0,1] γ[0,1]

  • γ = 0 \gamma=0 γ=0:贪婪法,价值只由当前演示奖励决定
  • γ = 1 \gamma=1 γ=1:所有后续奖励和当前奖励同等重要
  • γ ∈ ( 0 , 1 ) \gamma\isin(0,1) γ(0,1):当前延时奖励的权重比后续奖励的权重大

马尔科夫决策过程可以用一个五元组来表示:
M D P ( S , A , P s a , R s a , γ ) MDP(S,A,Psa,Rsa,\gamma) MDP(S,A,Psa,Rsa,γ)

3.MDP的基本流程

No
Yes
初始化MDP,π
是否终止
选择动作at
反馈奖励 rt+1
状态转移st+1
t=t+1
Stop

产生一个状态-动作-奖励序列:
s 0 , a 0 , r 1 → s 1 , a 1 , r 2 → s 2 , a 2 , r 3 → s 3 , a 3 , r 4 … s t , a t , r t + 1 → … s T − 1 , a T − 1 , r T → s T ( 终止状态 ) s_0,a_0,r_1 \rightarrow s_1,a_1,r_2 \rightarrow s_2,a_2,r_3 \rightarrow s_3,a_3,r_4 \dots s_t,a_t,r_{t+1}\rightarrow\dots s_{T-1},a_{T-1},r_T\rightarrow s_T(终止状态) s0,a0,r1s1,a1,r2s2,a2,r3s3,a3,r4st,at,rt+1sT1,aT1,rTsT(终止状态)
当我们要解决的问题符合马尔科夫假设(状态的转移只与上一步执行的动作有关),那么强化学习的训练过程就可以用MDP决策过程来表述,一次完整的训练过程就可以形成一个完整的MDP序列(达到终止状态)。
策略就是从大量的完整MDP序列中学习(优化)到的
在这里我们重新回到强化学习的目标:自动寻找在连续时间序列里的最优策略,这里的最优策略通常指使得长期累计奖励最大化的策略。换句话说,策略是由长期累计奖励来判断好坏的。
累计奖励(Total Payoff)
G t = r t + 1 + γ r t + 2 + γ 2 r r + 3 + ⋯ + γ T − t − 1 r T G_t=r_{t+1}+\gamma r_{t+2}+\mathop{\gamma}^2r_{r+3}+\dots+\mathop{\gamma}^{T-t-1}r_T Gt=rt+1+γrt+2+γ2rr+3++γTt1rT

现在我们可以简单理解MDP流程:先初始化策略函数,一般是随机生成 π 0 \pi_0 π0,并且随机初始状态 s 0 s_0 s0,通过 π 0 \pi_0 π0来选择相应的动作 a 0 a_0 a0,这样不断执行得到一条完整的马尔科夫链( s 0 , a 0 , r 1 → s 1 , a 1 , r 2 → s 2 , a 2 , r 3 → s 3 , a 3 , r 4 … s t , a t , r t + 1 → … s T − 1 , a T − 1 , r T → s T ( 终止状态 ) s_0,a_0,r_1 \rightarrow s_1,a_1,r_2 \rightarrow s_2,a_2,r_3 \rightarrow s_3,a_3,r_4 \dots s_t,a_t,r_{t+1}\rightarrow\dots s_{T-1},a_{T-1},r_T\rightarrow s_T(终止状态) s0,a0,r1s1,a1,r2s2,a2,r3s3,a3,r4st,at,rt+1sT1,aT1,rTsT(终止状态))通过这个序列我们就可以计算出在状态 s 0 s_0 s0下选择动作 a 0 a_0 a0转移到 s 1 s_1 s1这个策略产生的累计奖励 G G G,通过这个G就可以评价这个策略的好坏,然后更新策略,至于具体如何评价策略,如何更新策略,在下一篇博客继续。


四、基于模型和免模型的强化学习

1.模型

模型是指对环境建模,具体指状态转移概率函数和奖励函数

2.基于模型的强化学习(Model-Based)

智能体知道在任何状态下执行任何动作所获得的回报,即 R ( s , a ) R(s,a) R(s,a)已知。可以直接使用动态规划法来求解最优策略,这种采取对环境进行建模的强化学习方法就是Model-Based强化学习。
若奖励函数和状态转移函数未知,我们就可以用特定的方法(比如神经网络或者物理机理)对它们进行模拟建模。

3.免模型的强化学习(Model-Free)

其实,不需要对环境进行建模我们就可以找到最优策略,最优策略对应的是最大累计奖励,所以我们可以通过直接求解最大累计奖励,然后再根据最大累计奖励来求解最优策略,这种方法就叫做Model-Free强化学,典型的方法有QlearningSarsa


model-free只能在一次行动之后静静得等待现实世界给的反馈然后再取材行动,而model-base可以采用想象力预判接下来发生的所有情况,然后根据这些想象的情况选择最好的那种,并根据这种情况来采取下一步的策略。

总结

强化学习的本质就是通过大量的马尔科夫链来计算长期累计奖励并根据这个奖励来更新策略。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强化学习的模型 的相关文章

  • 如何在anaconda python 3.6上安装tensorflow

    我使用 anaconda 包安装了新版本的 python 3 6 但是我无法安装张量流 总是收到这样的错误 tensorflow gpu 1 0 0rc2 cp35 cp35m win amd64 whl 在此平台上不受支持 如何在 ana
  • 熊猫加入具有不同索引级别/日期时间的数据帧?

    嗨 我有两个 DataFrame 如下所示 dineType menuName unique columns date y m d
  • 绘制对数轴

    我想使用 matplotlib 绘制一张带有一个对数轴的图 我一直在阅读文档 但无法弄清楚语法 我知道这可能很简单 scale linear 在情节争论中 但我似乎无法正确理解 示例程序 import pylab import matplo
  • 以编程方式结束/退出粘合作业

    我正在使用 Glue 书签来处理数据 我的工作是每天安排的 但也可以 手动 启动 由于我使用书签 有时胶水作业可以在没有新数据要处理的情况下启动 然后读取的数据帧为空 在这种情况下 我想好好地结束我的工作 因为它没有什么关系 我试过 if
  • 如何使用 django Rest 框架保存多对多字段对象

    我有博客 发布 标签三个模型 在博客模型中 我将字段 postedin 作为发布模型的外键 将 标签 作为标签模型的许多字段 模型 py class Posted models Model name models CharField Pos
  • 在 Python 中倾斜数组

    我有一个 2D 数组 我将使用它保存为灰度图像scipy misc toimage 在此之前 我想将图像倾斜给定角度 像这样进行插值scipy ndimage interpolation rotate 上图只是为了说明倾斜过程 我知道我必须
  • 我可以在pycharm中的断点处进入交互模式吗

    我是一个相当新的 Pycharm 3 用户 正在从事 django 项目 我可以在 pycharm3 中的断点处进入交互模式吗 这可能吗 当程序在断点处停止时 我尝试过工具 gt 打开调试命令行 但我没有看到控制台打开 我怎样才能让它发挥作
  • 如何使用Peewee查询多个相似的数据库?

    我遇到了使用 Peewee 查询多个数据库的问题 我有 2 个现有的 mysql 数据库 让我们将它们命名为 A 和 B 结构相似 因为它是两个 Bugzilla 数据库 我使用 Pwiz 生成模型 modelsA py 和 modelsB
  • 如何在 Django 中像应用程序一样从配置中注册 Flask 蓝图?

    如何从我的配置中注册 Flask 蓝图 就像 Django 中的应用程序一样 我想在配置文件中定义蓝图 它将自动注册 config py BLUEPRINTS news files 实际上我一直在一个暂定名为的项目中勾勒出类似的东西臀部口袋
  • Python3 - 如何将字符串转换为十六进制

    我正在尝试将字符串逐个字符转换为十六进制 但我无法在Python3中弄清楚它 在较旧的 python 版本中 我的以下内容有效 test This is a test for c in range 0 len test print 0x s
  • django-allauth:电子邮件确认

    我已经设置了 django allauth 并在新用户注册时使用电子邮件确认 效果很好 但在确认电子邮件中 我得到 Hello from example com You re receiving this e mail because us
  • 如何检查discord.py中的所有者

    我试图让这个命令只有所有者才能运行它 是否有办法检查服务器的最高角色或创建者 我尝试了 commands is owner 但这仅检查某人是否是机器人的所有者 Guild owner https discordpy readthedocs
  • Python 中的 Firebase 身份验证时出现 KeyError:“databaseURL”

    相信你做得很好 我是 firebase 的新手 正在尝试进行用户身份验证 我已经安装了pyrebase4并在firebase控制台上创建了一个项目 我还启用了使用 电子邮件和密码 登录并尝试连接我的应用程序 下面是我正在尝试的代码 impo
  • __author__ 的起源是什么?

    使用私有元数据变量的约定在哪里 author 一个模块内部从何而来 This http mail python org pipermail python dev 2001 March 013328 htmlPython 邮件列表线程似乎暗示
  • 在解析器/子解析器的开头使用 argparse.REMAINDER

    我想实现一个 arg 解析器 它允许我将单元测试作为子命令之一运行 盲目地将参数传递给 unittest main 例如 foo py unittest args to pass to unittest main 以及其他子命令 foo p
  • Tensorflow `tf.layers.batch_normalization` 不会向 `tf.GraphKeys.UPDATE_OPS` 添加更新操作

    以下代码 复制 粘贴可运行 说明了如何使用tf layers batch normalization import tensorflow as tf bn tf layers batch normalization tf constant
  • Hoare Partitioning算法讲解

    根据许多网站给出的伪代码 我写了这个Hoare分区算法 它采用一个数组 根据给定的主元来分区子数组的开始和结束索引 它工作得很好 但是有人可以解释一下逻辑 它是如何做到这一点的吗 这是代码 def hoare arr start end p
  • 内置模块位于哪里?

    我尝试查找列出的所有目录sys path但我找不到任何builtins py文件 那么它在哪里呢 从字面上看 该模块内置于 python 解释器中 gt gt gt import builtins gt gt gt builtins
  • 如何将动态数据传递给装饰器

    我正在尝试编写一个基本的 CRUD 控制器类来执行以下操作 下列的 class BaseCrudController model field validation template dir expose self template dir
  • 如何通过解析导入来组合并获取单个 Python 文件

    我正在尝试获取单个 Python 文件作为输出 我有一个 Python 脚本 其中有多个此类导入 from that import sub 导入来自所有本地模块 而不是来自系统或 Python 库 有什么方法可以解决这些问题并获得一个完整的

随机推荐

  • aivms--CentOS7.6安装/JDK1.8/ThingsBoard CE /PostgreSQL

    先决条件 yum install y nano wget yum install y https dl fedoraproject org pub epel epel release latest 7 noarch rpm 1 安装JDK8
  • Catowice City【Codeforces 1248 F】【BFS】

    Codeforces Round 594 Div 2 F 一开始是听闻有人说这是一道Tarjan好题 然后就点进来做了 但是想来想去 却想了个另类的法子 我们可以看到 如果N个人都要选择的话 那么每个人都只能是审判者 或者是参赛者 所以 我
  • hutool工具常用API

    hutool工具常用API 依赖 工具API 1 convert 2 DataUtil 3 StrUtil 4 ClassPathResource 5 ReflectUtil 6 NumberUtil 7 BeanUtil 8 CollUt
  • 使用C++11变长参数模板 处理任意长度、类型之参数实例

    变长模板 变长参数是依靠C 11新引入的参数包的机制实现的 一个简单的例子是std tuple的声明 template
  • Python六大基本数据类型介绍

    Python基本数据类型 一 数字型 一 整型 二 浮点型 三 布尔型 四 复数类型 二 字符串 三 列表 四 元组 五 集合 六 字典 一 数字型 一 整型 1 整型 int 在数字中 正整数 0 负整数都称为整型 例 intvar 10
  • 零知识证明zkSNARK

    最近接触学习零知识证明 很是头疼 没有一些背景知识 只能硬看了 而且也没有别的好方法 为什么要学习零知识证明 因为区块链的去中心化 导致信息都是公开透明的 比特币 以太坊 EOS等目前绝大部分项目区块链上的交易都是公开的 发送者的地址 金额
  • 试用版MindMaster思维导图转XMind方法分享

    在用MindMaster做导图的时候主题总是达到上限 于是想换成没有上限的XMind 就打算把已经做好的导图转到XMind上 现在网上的方法是通过导出docx文件或者复制大纲到word中然后再复制到XMind中 但受试用版限制 没办法导出w
  • 调用兄弟目录中的模块

    使用sys path append把父目录的加到模块搜索路径列表中即可 下面是具体原理分析 比如目前的目录结构如下 parDir dir1 test1 py dir2 test2 py 现在我需用在test1 py中导入dir2的test1
  • 合泰BS8116A-3触摸芯片开发踩坑指南

    一 硬件说明 引脚图 接线 说明 由于用到了唤醒检测 所以KEY16引脚用作IRQ中断唤醒功能 未使用引脚拉低 二 IIC配置说明 1 最大波特率 实际单片机配置最好不要设置波特率100Khz容易出错 50Khz就可以了 2 从机地址 注意
  • OpenCV基本知识

    1 OpenCV概述 1 什么是OpenCV 开源C C 计算机视觉库 面向实时应用进行优化 跨操作系统 硬件 窗口管理器 通用图像 视频载入 存储和获取 由中 高层API构成 为Intel 公司的 Integrated Performan
  • Vue ly-tab组件使用

    Vue ly tab组件的使用 目录 Vue ly tab组件的使用 安装 引入 使用 安装 这里使用指定版本安装 如果安装其他版本使用方法可能不一致 npm install ly tab 2 1 2 S 或者 cnpm install l
  • 深入理解采样定理 + Matlab 仿真 Sa 函数的采样与恢复

    建议配合国宝老师的视频食用 信号与线性系统分析 吴大正 郭宝龙 文章目录 1 采样的说明 1 为什么要取样 2 什么是取样 2 采样定理 1 为什么要有奈奎斯特频率 2 什么是采样定理 3 信号的恢复 4 Matlab的Sa函数取样仿真 1
  • nginx通过四层代理实现端口转发

    公司原有的测试数据库在主机192 168 10 5上边 现在数据库转移到了192 168 10 4上 为了不让各个地方都需要更改地址 现在需要一个四层代理工具 将原来请求到192 168 10 5的3306端口转发到192 168 10 4
  • ChatGPT数据泄露,技术细节公布

    事件发生后 OpenAI 临时关闭了 ChatGPT 服务以调查问题 后续 Open AI 的首席执行官 Sam Altman 也亲自发了推文 承认他们确实遭遇了重大问题 不过当时并没有公布问题的细节 只表示是一个开源库的错误导致的 由于一
  • 支持WIN7的VSCode版本

    我有台13年底买的电脑 装的WIN7 使用时发现 最新的VSCode已经不支持WIN7 目前VSCode官网上写的最低支持WIN8 经过确认 最后支持WIN7的版本是1 70 3 不论32位还是64位 都是这个版本
  • easyui 下拉框联动

    supplierCode combobox onChange function n o var supplierCodes n join ajax type post url pageContext request contextPath
  • 前端代码 录音样式 类似微信发送语音

    先来上图 wxml代码 不是小程序的就换成div
  • Python: 基于DearPyGUI的环境变量查看器

    文章目录 1 目的 2 效果 3 实现思路 获取环境变量 分隔环境变量取值 界面显示 4 代码实现 1 目的 无论是 Windows 还是 Linux 下 编辑环境变量总是绕不开的一个基本功 也许你已经熟练使用 vim 来查询和就地替换 P
  • npm下载依赖报错 Invalid dependency type requested: alias

    报这个是alias需要高版本的npm 查看一下npm版本 npm version alias这个好像得是6 9 0版本以上 我使用的是nvm管理node版本 我切换到12版本就可以了 成功安装 在此记录一下踩坑
  • 强化学习的模型

    文章目录 前言 一 强化学习是什么 二 基本模型 1 基本框架 2 学习过程 三 马尔科夫决策过程 Markov Decision Process MDP 1 马尔科夫性质 2 MDP的基本组成部分 3 MDP的基本流程 四 基于模型和免模