机器学习——强化学习状态值函数V和动作值函数Q的个人思考

最近在回顾《西瓜书》的理论知识,回顾到最后一章——“强化学习”时对于值函数部分有些懵了,所以重新在网上查了一下,发现之前理解的,包括网上的大多数对于值函数的描述都过于学术化、公式化,不太能直观的理解值函数以及值函数的推导,我琢磨了一下,所以这篇文章想通过流程图的形式跟大家分享一下我个人对值函数的思考,如果有误,请见谅。当然,如果这篇文章还能入得了各位“看官”的法眼,麻烦点赞、关注、收藏,支持一下!

一、概念简述

状态值函数V(s):表示智能体从当前状态s出发,按照指定策略π执行直至终止的累积奖励

动作值函数Q(s,a):表示智能体从当前状态s出发,执行指定动作a后,再按照指定策略π执行直至终止的积累奖励

PS:建议小伙伴们去看一下我之前写的文章——《机器学习——强化学习中的“策略π”的个人思考》,这样可能更好的帮助大家理解“指定策略”这一概念

二、值函数详解及推导

为方便大家直观的了解值函数的相关概念,我先从最特殊的情况跟大家进行讲解,如下图1所示:

图1 

图1中S表示状态,a表示动作,R表示执行某一动作后获得的奖励,r表示执行某一动作所对应的奖励

图1是一种最特殊的情况,即当智能体状态为S0时,必然执行a0动作,执行a0动作后状态必然会改变至S1……其中,必然代表着概率是100%。从图中不难发现最后执行完毕后智能体的状态由S0变到了S4,状态值函数V(S0)=动作值函数(S0,a0),即:

进一步的,当只能体为状态S0时,其可执行的动作不仅仅是a0时,怎么办?我将结合图2继续说明:

 图2

图2中S和Y表示状态,a和c表示动作,R表示执行某一动作后获得的奖励,r和q表示执行某一动作所对应的奖励,π(S0,a0)表示按照策略π执行时,在当前状态S0选择执行动作a0的概率,π(S0,c0)同理,不做过多解释。

从图2中,可以很直观的看出,状态值函数V(S0)不再等于单一的动作值函数Q(S0,a0)或者Q(S0,c0),而是按照给定的概率由两个状态值函数构成,即如下所示:

图2中,智能体状态为S0时,可以执行的动作有两个,观察公式不难发现,此时,状态值函数V=不同的动作值函数Q与执行该动作的概率π的乘积累加和,因此,我们就可以将一个状态、两个动作推广到一个状态、多个动作,并得到相应的值函数,如下所示:

符号说明:上式中的s对应图2中的S0,表示当前状态,a对应的是图2中的a0和c0,表示当状态所要执行的动作,π(s,a)表示当前状态s下执行动作a的概率

既然一个状态可执行的动作不唯一,那么一个动作产生的状态是否也是不唯一的呢?我的答案是:是的!!!对此,我们依然采用从特殊到普遍的推导方法,来帮助大家更加直观的理解,直接上图:

 图3

图3中S和X表示智能体状态,a和b表示动作,R表示执行某一动作后获得的奖励,r和z表示执行某一动作所对应的奖励,P0表示智能体在状态S0时执行动作a0后状态变为S1的概率,P1同理,不做过多解释。

从图3中,可以很直观的得到如下几条等式:

因此,通过观察上述的公式,我们就可以将一个动作、两个状态推广到一个动作、多个状态,并得到相应的动作值函数,如下所示:

符号说明:上式中的s对应图3中的S0,表示当前状态,a对应的是图3中的a0,表示当状态所要执行的动作,s'对应图3中的S1和X1,表示下一个状态,P对应图3中的P0和P1,表示执行当前动作后状态变化的概率,Rs对应图3中的r0和z0,表示执行动作a且当前状态由s变到s'时环境返回的奖励,V(s')对应图3中的V(S1)和V(X1),表示智能体从下一状态s'出发,按照指定策略π执行直至终止的累积奖励,π(s,a)表示当前状态s下执行动作a的概率

上面已经讲了一个状态可能执行多个动作,以及一个动作可能产生多个状态的情况,那么有些脑子非常非常灵活的小伙伴可能已经想到,我们是否可以将两者结合,来推导出一下多个状态,多个动作的情况呢?我的答案是:可以!!!直接上图:

 图4

通过对比图2、图3和图4,不难发现,图4是图2和图3的有机结合,图4中既存在一个状态可能执行两个动作,又存在一个动作可能产生两个状态的情况,因此,我们可以从图4中得到如下公式:、

通过观察上述的公式,我们就可以得到多个状态,多个动作下的状态值函数,即如下所示:

符号说明:上式中的s对应图4中的S0,表示当前状态,a对应的是图4中的a0和c0,表示当状态所要执行的动作,s'对应图4中的S1、X1以及Y1,表示下一个状态,P对应图4中的P0和P1,表示执行当前动作后状态变化的概率,Rs对应图4中的r0、z0以及q0,表示执行动作a且当前状态由s变到s'时环境返回的奖励,V(s')对应图4中的V(S1)、V(X1)以及V(Y1),表示智能体从下一状态s'出发,按照指定策略π执行直至终止的累积奖励,π(s,a)表示当前状态s下执行动作a的概率

三、T步积奖例累函数推导说明

一些细心的小伙伴可能发现了,我上面列的一些公式可能跟市面上的大部分参考书不一样,但是内部的机理是一致的,为了防止有些朋友会存在困惑,所以我解释一下:

1、符号不一样:为了增加区分度,让各位的更清楚,所以自己增设了一些符号

2、奖励函数不一样:很多人在参考书上看到的奖励函数应该都是T步平均奖励,或者γ折扣奖励,而上文以T步的累计和作为奖励,之所以采用T步的累加和作为奖励,是因为这样大家可以更加的直观了解两个值函数之间的关系与转换

为了跟广大的参考书籍保持一致,下面这一小节,我主要对T步积累奖励函数及其相关推导进行说明。

这里给出的T步积累奖励函数的原公式来源于周志华老师的《西瓜书

先给出《西瓜书》中的公式:

看到《西瓜书》上的公式,我相信大部分小伙伴都发现了,我上文中推导出来的黄色高亮公式与《西瓜书》中的公式非常像,唯一区别就在于《西瓜书》中的公式中多出了为什么会这样呢?

其实原因很简单,《西瓜书》中的公式是以T步的平均值作为奖励,而上文中是以T步的累加和作为奖励。

当我们以T步的平均值作为奖励,也就是说,我们可以将每步的奖励看做是原来每步奖励的T分之一,于是图1将转换成下图5:

图5 

声明:本文中的 和《西瓜书》公式中的的表达式是不一致的,查看下面式子中红色标记部分即可知晓

于是,图5中的信息可表示为:

通过对比上面的公式,我们不难发现,其中中的T主要是因为每步的奖励变为了原来的T分之一,而主要是为了保证的显示格式统一。

通过上文,我想我应该讲清楚了T步积累奖励函数,如果有小伙伴还有不明白的,欢迎评论,另外,因为本人有点懒,又累了,所以就不对γ折扣奖励函数进行说明,原理跟T步积累奖励函数一致


http://www.niftyadmin.cn/n/5537213.html

相关文章

uni-app使用ucharts地图,自定义Tooltip鼠标悬浮显示内容并且根据@getIndex点击事件获取点击的地区下标和地区名

项目场景: uni-app使用ucharts地图,自定义Tooltip鼠标悬浮显示内容并且根据getIndex点击事件获取点击的地区下标和地区名 例如: 问题描述 官方给的文档有限,需要自己下载地图json数据然后自己渲染和编写鼠标悬浮显示内容以及获取点击地址…

深入 Laravel 的错误处理与异常处理机制

引言 Laravel 是一个优雅而强大的 PHP Web 应用框架,它提供了一系列工具来帮助开发者处理应用中的错误和异常。了解 Laravel 的错误处理和异常处理机制对于构建健壮和用户友好的应用程序至关重要。本文将深入探讨 Laravel 如何实现错误和异常处理,并提供…

【3维BFS】个人练习-Leetcode-LCP 79. 提取咒文

题目链接:https://leetcode.cn/problems/kjpLFZ/ 题目大意:给一个矩阵matrix[][],元素为小写英文字母。给一个字符串mantra,求从矩阵的(0,0)位置开始,可以移动(上下左右)或者提取字母&#xff…

使用deep修改前端框架中的样式

目录 1.deep的作用 2.使用方式 3.特别说明 scoped 的实现原理: !important 1.deep的作用 /deep/、::v-deep 和 :deep 都是用于穿透组件作用域的选择器。它们的主要目的是允许开发者在父组件中直接选择并样式化子组件内部的元素,即使这些元素被封装在…

数据分析入门指南:从基础概念到实际应用(一)

随着数字化时代的来临,数据分析在企业的日常运营中扮演着越来越重要的角色。从感知型企业到数据应用系统的演进,数据驱动的业务、智能优化的业务以及数智化转型成为了企业追求的目标。在这一过程中,数据分析不仅是技术的运用,更是…

深入浅出3D感知中的优化与基于学习的技术1(原创系列)

近期几乎看了所有有关NERF技术论文,本身我研究的领域不在深度学习技术方向,是传统的机器人控制和感知。所以总结了下这部分基于学习的感知技术,会写一个新的系列教程讲解这部分三维感知技术的发展到最新的技术细节,并支持自己最近…

AirPods“窃听门”曝光,苹果紧急修复重大安全漏洞

近日,苹果公司发布了AirPods的固件更新,但此次更新版本存在一个严重的安全漏洞,编号为CVE-2024-27867。这个漏洞可能使恶意行为者以未经授权的方式访问耳机。此漏洞影响广泛,包括AirPods第二代及其后续版本、所有型号的AirPods Pr…

2024 最新docker仓库镜像,6月,7月

目前下面的docker仓库镜像源还能使用。 vi /etc/docker/daemon.json添加如下配置{"registry-mirrors": ["https://hub.uuuadc.top", "https://docker.anyhub.us.kg", "https://dockerhub.jobcher.com", "https://dockerhub.icu&…