强化学习3——马尔可夫性质、马尔科夫决策、状态转移矩阵和回报与策略(上)

与多臂老虎机问题不同,马尔可夫决策过程包含状态信息以及状态之间的转移机制。如果要用强化学习去解决一个实际问题,第一步要做的事情就是把这个实际问题抽象为一个马尔可夫决策过程。

马尔可夫决策过程描述

马尔可夫决策过程以智能体在与环境交互的过程中,学习的过程。智能体:充当做出决策、动作,并在交互过程中学习的角色。环境:智能体与之交互的一切外在事物,不包括智能体本身。

例如弹钢琴,我们本身为作为决策和学习的智能体,与之交互的钢琴是环境。我们通过钢琴发出的声音来判断按的力度是否合理,可以对下次弹的动作进行修正,这就是反馈。

image.png

智能体与环境每次交互以时步表示,以t表示时步, t = 0 , 1 , 2.... t=0,1,2.... t=0,1,2....每一步代表交互一次,而不是现实世界中过一秒。在每个时步t中,智能体可以观测或接收当前环境的状态 s t s_t st ,根据 s t s_t st 执行动作 a t a_t at 。执行动作 a t a_t at 后会得到奖励 r t + 1 r_{t+1} rt+1 ,同时环境会因为动作 a t a_t at 的影响进行改变,成为新的状态 s t + 1 s_{t+1} st+1 ,在下一时步被观测到,并进行循环。,即:
s 0 , a 0 , r 1 , s 1 , a 1 , r 2 , . . . , s t , a t , r t + 1 s_0,a_0,r_1,s_1,a_1,r_2,...,s_t,a_t,r_{t+1} s0,a0,r1,s1,a1,r2,...,st,at,rt+1
奖励可能是正的,也可能是负的,如同上课被老师表扬或批评。

马尔可夫性质

马尔可夫性质如下式所示:
P ( s t + 1 ∣ s t ) = P ( S t + 1 ∣ s 0 , s 1 , . . . , s t ) P(s_{t+1}|s_t)=P(S_{t+1}|s_0,s_1,...,s_t) P(st+1st)=P(St+1s0,s1,...,st)
即在 s t s_t st 发生的情况下 s t + 1 s_{t+1} st+1 发生的概率与 s 0 , s 1 , . . . , s t s_0,s_1,...,s_t s0,s1,...,st 都发生(或已知)的情况下相同,因此可以理解为,未来的状态只与当前的状态 s t s_t st 有关,不受过去状态的影响,允许我们在没有考虑系统完整的历史下进行预测和控制。但棋类游戏等需要了解历史走子情况,可以在后续的学习中靠决策模型、深度学习等解决。
但我们要注意,具有马尔可夫性不代表与历史完全没有关系,虽然 t + 1 t+1 t+1 时刻的状态只与 t t t 时刻的状态有关系,但是 t t t 时刻包含了 t − 1 t-1 t1 时刻的状态与信息。马尔可夫性简化了运算,只需要知道当前状态(已经包含了历史信息),不需要将以前的历史信息与状态带入运算了。

状态转移矩阵

在大多数强化学习场景中,状态一般是有限的,我们成为有限状态马尔可夫决策过程(finite MDP)。既然状态数量是有限的,可以通过状态流向图表示智能体与环境交互过程中的走向,可以构建马尔可夫链。

我们举一个例子,假设学生正在上课,一般来讲从老师的角度来说学生会有三种状态,认真听讲、玩手机和睡觉,分别用 s 1 s_1 s1 s 2 s_2 s2 s 3 s_3 s3 表示。

image.png

学生认真听课时处于状态 s 1 s_1 s1,会有0.2的概率继续认真听讲,分别有0.4和0.4的概率会去玩手机 s 2 s_2 s2 或者睡觉 s 3 s_3 s3 ,可以表示为
P 12 = P ( S t + 1 = s 2 ∣ S t = s 1 ) = 0.4 P_{12}=P(S_{t+1}=s_2|S_{t}=s_1)=0.4 P12=P(St+1=s2St=s1)=0.4
拓展到所有的状态:
P s s ′ = P ( S t + 1 = s ′ ∣ S t = s ) P_{ss'}=P(S_{t+1}=s'|S_t=s) Pss=P(St+1=sSt=s)
即表示当前状态是s,下一个状态是s’的概率
可以列成下表:

S t + 1 = s 1 S_{t+1}=s_1 St+1=s1 S t + 1 = s 2 S_{t+1}=s_2 St+1=s2 S t + 1 = s 3 S_{t+1}=s_3 St+1=s3
S t = s 1 S_t=s_1 St=s10.20.40.4
S t = s 2 S_t=s_2 St=s20.20.50.3
S t = s 3 S_t=s_3 St=s30.10.30.6

在数学上也可以使用矩阵来表示:
P s s ′ = [ 0.2 0.4 0.4 0.2 0.5 0.3 0.1 0.3 0.6 ] P_{ss'}=\begin{bmatrix} 0.2 & 0.4 & 0.4\\ 0.2 & 0.5 & 0.3\\ 0.1 & 0.3 & 0.6 \\ \end{bmatrix} Pss= 0.20.20.10.40.50.30.40.30.6
通用的表示方法为:
P s s ′ = ( p 11 p 12 ⋯ p 1 n p 21 p 22 ⋯ p 2 n ⋮ ⋮ ⋱ ⋮ p n 1 p n 2 ⋯ p n n ) P_{ss^{\prime}}=\begin{pmatrix}p_{11}&p_{12}&\cdots&p_{1n}\\p_{21}&p_{22}&\cdots&p_{2n}\\\vdots&\vdots&\ddots&\vdots\\p_{n1}&p_{n2}&\cdots&p_{nn}\end{pmatrix} Pss= p11p21pn1p12p22pn2p1np2npnn
其中, p 12 = P ( s 2 ∣ s 1 ) p_{12}=P(s_2|s_1) p12=P(s2s1),即在状态 s 1 s_1 s1 的情况下,转化为状态 s 2 s_2 s2 的概率。

这个矩阵就叫做状态转移矩阵(State Transition Matrix),某一状态的所有状态转移概率之和是1,状态转移矩阵是环境的一部分,与智能体无关。以刚刚的例子描述,老师无法决定学生的状态,只能根据学生的状态做决策,如学生玩手机,老师可以提醒他,让他认真听讲。

image.png

举一个小例子,大家试试手,写下他的状态转移矩阵吧!
P = [ 0.9 0.1 0 0 0 0 0.5 0 0.5 0 0 0 0 0 0 0.6 0 0.4 0 0 0 0 0.3 0.7 0 0.2 0.3 0.5 0 0 0 0 0 0 0 1 ] \mathcal{P}=\begin{bmatrix}0.9&0.1&0&0&0&0\\0.5&0&0.5&0&0&0\\0&0&0&0.6&0&0.4\\0&0&0&0&0.3&0.7\\0&0.2&0.3&0.5&0&0\\0&0&0&0&0&1\end{bmatrix} P= 0.90.500000.10000.2000.5000.30000.600.500000.300000.40.701
s 6 s_6 s6 不转移到其它状态,我们称其为终止状态。给定一个马尔可夫过程,我们就可以从某个状态出发,根据它的状态转移矩阵生成一个状态序列(episode),这个步骤也被叫做采样(sampling)。例如,从 s 1 s_1 s1 出发,可以生成序列 s 1 → s 2 → s 3 → s 6 s_1\to s_2\to s_3 \to s_6 s1s2s3s6

回报

在一个马尔可夫奖励过程中,从第t时刻状态 S t S_t St开始,直到终止状态,所有奖励之和为回报return,用 G t G_t Gt 表示,最简单的回报公式如下文所示:
G t = r t + 1 + r t + 2 + . . . + r T G_t =r_{t+1}+r_{t+2}+...+r_T Gt=rt+1+rt+2+...+rT
T为最后一个时步,即最大的步数(也就是完成了T步,第一个动作 a 0 a_0 a0 完成得到的第一个奖励是 r 1 r_1 r1 ,第T个动作,奖励为 r T r_T rT ),这是描述玉有限步骤,如一局游戏。如果为持续性任务,那么 T → ∞ T \to \infty T

接下来我们引入折扣因子的概念(discount factor) γ \gamma γ
G t = r t + 1 + γ r t + 2 + γ 2 r t + 3 + ⋯ = ∑ k = 0 T = ∞ γ k r t + k + 1 G_t=r_{t+1}+\gamma r_{t+2}+\gamma^2r_{t+3}+\cdots=\sum_{k=0}^{T=\infty}\gamma^kr_{t+k+1} Gt=rt+1+γrt+2+γ2rt+3+=k=0T=γkrt+k+1
γ \gamma γ 取值范围为0-1,表示对未来奖励的关注程度,越接近1,对所有未来奖励的关注度越高,可以将本时步的回报 G t G_t Gt 与下一个时步 G t + 1 G_{t+1} Gt+1 有关系:
G t = r t + 1 + γ r t + 2 + γ 2 r t + 3 + γ 3 r t + 4 + ⋯ = r t + 1 + γ ( r t + 2 + γ r t + 3 + γ 2 r t + 4 + ⋯ ) = r t + 1 + γ G t + 1 \begin{aligned} G_{t}& = r_{t+1}+\gamma r_{t+2}+\gamma^2r_{t+3}+\gamma^3r_{t+4}+\cdots \\ &=r_{t+1}+\gamma\left(r_{t+2}+\gamma r_{t+3}+\gamma^2r_{t+4}+\cdots\right) \\ &=r_{t+1}+\gamma G_{t+1} \end{aligned} Gt=rt+1+γrt+2+γ2rt+3+γ3rt+4+=rt+1+γ(rt+2+γrt+3+γ2rt+4+)=rt+1+γGt+1
下面举个例子,每个状态旁边的红字为奖励,如果设置折扣因子为0.5,则以序列 s 1 → s 2 → s 3 → s 6 s_1\to s_2\to s_3 \to s_6 s1s2s3s6为例子,设 s 1 s_1 s1 为起始状态,那么 G 1 = − 1 + 0.5 × ( − 2 ) + 0. 5 2 × ( − 2 ) = − 2.5 G_1=-1+0.5×(-2)+0.5^2×(-2)=-2.5 G1=1+0.5×(2)+0.52×(2)=2.5

image.png

import numpy as np
np.random.seed(0)
# 以刚刚的例子定义状态转移概率矩阵
P = [[0.9, 0.1, 0.0, 0.0, 0.0, 0.0],[0.5, 0.0, 0.5, 0.0, 0.0, 0.0],[0.0, 0.0, 0.0, 0.6, 0.0, 0.4],[0.0, 0.0, 0.0, 0.0, 0.3, 0.7],[0.0, 0.2, 0.3, 0.5, 0.0, 0.0],[0.0, 0.0, 0.0, 0.0, 0.0, 1.0],
]
P = np.array(P)
# 定义奖励函数与折扣因子
rewards=[-1,-2,-2,10,1,0]
gamma=0.5
# 给定一个序列,并计算回报
def computeReturn(startIndes,chain,gamma):G=0#按照公式,从后往前计算奖励for i in reversed(range(startIndes,len(chain))):G=gamma*G+rewards[chain[i]-1]ilist.append(i)return G
# 一个状态序列,s1-s2-s3-s6
chain = [1, 2, 3, 6]
startIndes = 0
ilist=[]
G = computeReturn(startIndes, chain, gamma)
print("根据本序列计算得到回报为:%s。" % G)
print(f'i执行的顺序{ilist}')
根据本序列计算得到回报为:-2.5。
i执行的顺序[3, 2, 1, 0]

此外,在马尔可夫链(马尔可夫过程)的基础上增加奖励元素就会形成马尔可夫奖励过程(Markov reward process, MRP)。可以使用五元组描述马尔可夫决策过程 < S , A , R , P , γ > <S,A,R,P,\gamma> <S,A,R,P,γ> ,其中  S 表示状态空间,即所有状态的集合,A 表示动作空间,R 表示奖励函数,P 表示状态转移矩阵, γ \gamma γ 表示折扣因子。

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

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

相关文章

【linux笔记1】

目录 【linux笔记1】文件内容的理解用户管理用户管理命令添加用户切换用户修改用户信息删除用户 用户组 【linux笔记1】 文件内容的理解 etc文件夹&#xff1a;etc是拉丁语"et cetera"的缩写&#xff0c;意思是“和其他的”或“等等”。在linux系统中&#xff0c;“…

[嵌入式C][入门篇] 快速掌握基础2 (数据类型、常量、变量)

开发环境&#xff1a; 网页版&#xff1a;跳转本地开发(Vscode)&#xff1a;跳转 文章目录 一、基本变量大小和范围&#xff08;1&#xff09;在8位/32位单⽚机中&#xff1a;测试代码结果&#xff1a;64位机器结果&#xff1a;32位机器&#xff08;单片机&#xff09;无对齐限…

Geoserver扩展发布MySQL视图功能

Geoserver中并不自带mysql数据发布功能&#xff0c;需要扩展外部插件。 1、示例以geoserver-2.20.5版本进行演示&#xff0c;所以MySQL插件需要到该版本对应的“Extensions”标题下查找&#xff0c;下载地址&#xff1a;GeoServer&#xff0c;详见下图 2、选择MySQL进入下载页…

Linux第11步_解决“挂载后的U盘出现中文乱码”

学习完“通过终端挂载和卸载U盘”&#xff0c;我们发现U盘下的中文文件名会出现乱码&#xff0c;现在讲解怎么解决这个问题。其实就是复习一下“通过终端挂载和卸载U盘”&#xff0c;单独讲解&#xff0c;是为了解决问题&#xff0c;一次性搞好&#xff0c;我们会不长记性。 在…

数据在内存中的存储之大小端

今天也是努力学编程&#xff0c;敲代码的一天&#xff01; 1.什么是大小端 其实超过一个字节的数据在内存中存储的时候&#xff0c;就有存储顺序的问题&#xff0c;按照不同的存储顺序&#xff0c;我们分为大端字节序 存储和小端字节序存储&#xff0c;下面是具体的概念: &…

HIL(硬件在环)技术汇总梳理

HIL&#xff08;Hardware-in-the-Loop&#xff09;测试领域的知名公司有dSPACE、NI、Vector和speedgoat等&#xff0c;以下是针对这几家HIL技术的对比分析&#xff1a; 文章目录 dSPACE NI Vector speedgoat 总结 dSPACE dSPACE成立于1988年&#xff0c;起源自德国的帕德…

vue3项目中axios的常见用法和封装拦截(详细解释)

1、axios的简单介绍 Axios是一个基于Promise的HTTP客户端库&#xff0c;用于浏览器和Node.js环境中发送HTTP请求。它提供了一种简单、易用且功能丰富的方式来与后端服务器进行通信。能够发送常见的HTTP请求&#xff0c;并获得服务端返回的数据。 此外&#xff0c;Axios还提供…

FSMC—扩展外部SRAM

一、SRAM控制原理 STM32控制器芯片内部有一定大小的SRAM及FLASH作为内存和程序存储空间&#xff0c;但当程序较大&#xff0c;内存和程序空间不足时&#xff0c;就需要在STM32芯片的外部扩展存储器了。STM32F103ZE系列芯片可以扩展外部SRAM用作内存。 给STM32芯片扩展内存与给…

【计算机网络】TCP原理 | 可靠性机制分析(一)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程、计算机网络的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目…

sensor 点亮出图后,画面全黑是为什么?

同事在点一个思特威的 sensor sc035hgs&#xff0c;这个 sensor 主要负责数据采集&#xff0c;然后给到后面的 NN&#xff08;神经网络&#xff09;去做处理。 点亮出图后&#xff0c;画面很黑&#xff0c;如下图所示&#xff1a; 因为没拿到板子&#xff0c;只能盲猜&#xf…

面试官:说说HashMap和HashTable的区别

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

算法日志的存在核心在于搭建自检系统

"相信每一个人执行与日志有关的任务都会遇到这样难题吧&#xff1f;长达几万行的日志&#xff0c;如果我们单纯用肉眼去一个个排查&#xff0c;那么恐怕所耗费的时间是以天为计量单位了。当然这是一种比较夸张的情况&#xff0c;根据我的项目经验&#xff0c;正常情况是十…

每日一博 - 多租户技术及其三种数据存储策略

文章目录 概述应用程序隔离数据隔离小结 概述 多租户技术&#xff08;Multi-Tenant Technology&#xff09;是软件即服务&#xff08;SaaS&#xff09;架构中的一项核心技术&#xff0c;允许单一软件应用或服务同时服务于多个客户&#xff08;即“租户”&#xff09;&#xff…

软件测试|Python函数参数之必传参数、默认参数、可变参数、关键字参数的详细使用

在Python中&#xff0c;函数参数是定义在函数头部的变量&#xff0c;用于接收传递给函数的数据。Python函数参数有四种类型&#xff1a;必传参数、默认参数、可变参数和关键字参数。每种类型都有不同的使用方式和适用场景。本文将详细介绍这四种函数参数的使用方法。 Python函…

ArkTS - 网络请求

一、Axios请求 应用通过HTTP发起一个数据请求&#xff0c;支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 前端开发肯定都使用过一个叫axios的第三方库&#xff0c;它是是一个基于 promise 的网络请求库&#xff0c;可以用于浏览器和 node.js&…

关于曲率、曲率半径和曲率圆,看这几篇文章就够啦

关于曲率、曲率半径和曲率圆的内容&#xff0c;是考研数学数学一和数学二大纲中明确要求掌握的内容&#xff0c;但这部分内容在很多教材教辅以及练习题中较少涉及。在本文中&#xff0c;荒原之梦考研数学网就为大家整理了曲率、曲率半径和曲率圆方程相关的概念、基础知识以及练…

LauraGPT

git&#xff1a;https://github.com/alibaba-damo-academy/FunCodec 文章目录 model archAudioTokenizermodel init model arch text-embedding 用千问的模型参数初始化&#xff1b;AudioEncoder用asr-conformer的参数初始化&#xff1b;所有的参数都参与更新&#xff0c;除了C…

实时语义分割模型PP-LiteSeg论文解读

paper&#xff1a;PP-LiteSeg: A Superior Real-Time Semantic Segmentation Model official implementation&#xff1a;https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.8/paddleseg/models/pp_liteseg.py 本文的创新点 提出了一种灵活的轻量级解码器&#xf…

SpringBoot+Vue轻松实现考试管理系统

简介 本系统基于 Spring Boot 搭建的方便易用、高颜值的教学管理平台&#xff0c;提供多租户、权限管理、考试、练习、在线学习等功能。主要功能为在线考试、练习、刷题&#xff0c;在线学习。课程内容支持图文、视频&#xff0c;考试类型支持考试、练习、问卷。 源码下载 网…

Linux|服务器|简单记录备忘VMware虚拟机开启桌面失败报错:VMware: No 3D enabled (0, Success).的解决

一&#xff0c; VMware虚拟机 Linux操作系统&#xff0c;centos7版本&#xff0c;安装完桌面后&#xff0c;执行startx 命令后 &#xff0c;报错&#xff1a;VMware: No 3D enabled (0, Success). 桌面没有启动成功 完整日志输出如下&#xff1a; [rootnode4 ~]# startx x…