强化学习笔记3 回报和价值函数

2023-11-18

学习张斯俊和王树森两位大佬的专栏和课程后记的笔记。这篇笔记里面有一些个人理解,如有不对,欢迎大家指正。

  1. 回报return

上一篇说过奖励reward,奖励是指当前状态S下,选择动作A,环境将会反馈回奖励R,我们利用R作为智能体学习的引导,希望智能体能获得尽可能多的奖励。但是看待问题不能只顾当前所获得的利益,当前最优并不代表将来最优,比如马上期末考试了,我们以心情值作为奖励,目的是获得最大心情值。每天复习心情值-2,但是最后通过考试心情值+200;每天打游戏心情值+1,但是最后挂科心情值-100。长远来看,仅仅选择当前最优并不能获得胜利。

我们引出回报Ut:未来的累计奖励reward;T时刻的Return记作:Ut

Ut的定义:把从T时刻开始的奖励R全都加起来,加到游戏结束时的最后一个奖励

注:奖励Rt和Rt+1并不是同样的,就如立刻给你100块钱和十年后给你100块钱的差别。

  1. 折扣回报

由于未来的奖励没有现在的奖励值钱,强化学习中多采用折扣回报Discounted return

折扣率记作:γ (值界于0和1之间,如果未来和现在的权重一样,γ就等于1,如果未来的奖励不重要,γ就比较小)

  1. 回报的随机性

由于回报Ut依赖于奖励R,所以回报U也是个随机变量。也就是说回报不确定,之前举的那个例子,打游戏就一定会挂科吗,假设80%概率挂科,20%不挂科。我们打游戏等到的回报可能是+1+1+1...+200,也可能是+1+1+1...-100。实际的情况甚至远比这个复杂,有多种多样的不确定性。

再次提及:随机性的两个来源:①动作a:policy函数π,用状态s作为输入,输出一个概率分布,动作a就是从这个概率分布中随机抽样得到的②下一个状态s’:给定当前状态s和动作a,下一个状态s’是随机的,由状态转移函数p输出一个概率分布,环境从这个概率分布中随机抽样得到一个新的状态s’。

我们选择打游戏还是复习是不确定的,我们最后受环境影响挂科还是不挂科也是不确定的,所以回报也是不确定的。但是我们却能有个概率P帮助我们,比如说:选择复习概率是60%,选择打游戏概率是40%。

  1. 奖励与回报的区别
  1. 对于任意一个时刻i(i≥t),奖励Ri取决于当前状态Si和动作Ai。

  1. 假设已观测到t时刻的状态st,则Ut依赖于以下随机变量:一些未来的动作和未来的状态。

  1. 动作价值函数-Qπ

未来是不确定的,不确定性既包含在我们的策略,也包含在环境之中。那我们该如何作出对当前也是对未来最优的决策呢?那就是求期望(取平均)。

对Ut求期望,把里面的随机性(policy函数和状态转移函数带来的)都用积分给积掉,得到一个数记作。把Ut当做所有的动作a和所有的状态s的一个函数,未来的动作a和状态s都有随机性,动作a的概率密度函数是policy函数π,状态s的概率密度函数是状态转移函数p,期望就是对未来的动作a和状态s求的,求期望得到的Qπ被称作:动作价值函数。

Q值越高,表示从当前状态到最终状态能获得的平均奖励将会越高。所以智能体在当前状态,只需选择那个Q值最高的动作即可。(理解这块,看张斯俊的白话强化学习,一看就懂了)

动作价值函数的直观意义:Qπ告诉我们如果用policy函数π,那么在st这个状态下做动作at是好还是坏。已知policy函数π,Qπ就会给当前状态下所有的动作a打分,然后就知道哪个动作好哪个动作不好。

π:策略函数 p:状态转移函数

(这里是动作价值函数,后面还有状态价值函数,注意区别)

  1. 最优动作价值函数-Q*

把action-value function中的π去掉。对Qπ关于π求最大化,意思就是我们有无数种policy函数π,但是我们应该使用最好的那种policy函数,即可以让Qπ最大化的那个π。

  1. 状态价值函数-Vπ

当前状态下,有多个动作,每个动作都对应一个Q值,这个Q值是指从这个动作之后接下来一系列动作做到结束所能获得的奖励的总和。Qπ的值,是依据某个policy函数选出的一个动作,从该动作到结束所有一系列动作所获得的奖励总和。Q*的值,是选择确定了的最优的动作,从该动作到结束所有一系列动作所获得的奖励总和。

当前状态s下,有多个动作,每个动作都对应一个Q值,把这些Q值加起来求期望(或积分求期望),就得到了V值,V值表当前状态直至走到最终状态,这一游戏过程中所能获得的奖励总和。

Vπ:Qπ的期望

此处的期望是关于随机变量A求的,A的概率函数是π,根据期望的定义,可以把期望写成连加或积分的形式。如果动作都是离散的,比如上下左右,这样就可以把期望写成连加,期望等于对π和Q的乘积做连加,把所有的动作a都算上。

有时候动作a是个连续变量,比如自动驾驶汽车方向盘的角度,这个角度可以是+90到-90度之间所有的值,是连续的,用积分,对Q和π的乘积做积分,把a给积掉。

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

强化学习笔记3 回报和价值函数 的相关文章

  • Codeforces-1260-E. Tournament贪心

    题目描述 You are organizing a boxing tournament where n boxers will participate n is a power of 2 and your friend is one of
  • 利用celebA数据集训练MTCNN网络

    利用celebA数据集训练MTCNN网络 celebA数据集简介 训练数据的处理 网络和训练 侦测部分 结果展示 有问题可以联系我的邮箱 2487429219 qq com 关于MTCNN网络可以看我上一篇博客 链接 人脸检测算法 mtcn
  • 请用C + +语言写一个生成随机数程序

    include
  • windows系统更改远程桌面端口

    开启远程桌面 我的电脑属性 远程设置 步骤一 在服务器运行窗口中输入 regedit 打开注册表编辑器 步骤二 在注册表HKEY LOCAL MACHINE SYSTEM CurrentControlSet Control Terminal
  • 注解-Annotation Types学习

    前言 注解是JDK5 之后推出的特性 可修饰包 类 方法 变量等 通过在编译 加载和运行时读取其信息 可执行相应的处理 基本原理 java注解类型实质上是一个标记 如 Autowired private TestBean testBean
  • win10家庭中文版开启Hyper-V功能

    问题描述 由于win10家庭中文版是被阉割过的 有些功能就被禁用了 启用和禁用程序中就没有了Hyper V功能 如果想要更多的功能可以将系统升级成为专业版和企业版即可解决 但如果想直接在家庭中文版下创建也是可行 这里有一位大神给出了自己的方

随机推荐

  • LeetCode题解--160. 相交链表

    题目 编写一个程序 找到两个单链表相交的起始节点 例如 下面的两个链表 A a1 a2 c1 c2 c3 B b1 b2 b3 在节点 c1 开始相交 注意 如果两个链表没有交点 返回 null 在返回结果后 两个链表仍须保持原有的结构 可
  • html5中拖放,HTML5中的拖放

    关于HTML5中的拖放 拖放 Drag 和 Drop 是一种常见的特性 即抓取对象以后拖到另一个位置 在 HTML5 中 拖放是标准的组成部分 在HTML5中用户可以使用鼠标选择一个可拖动元素 将元素拖动到一个可放置元素 并通过释放鼠标按钮
  • OpenHarmony dump渲染和合成图层SurfaceBuffer指南

    OpenHarmony dump渲染和合成图层SurfaceBuffer指南 引言 博客停更很久了 提起笔来渐感生疏啊 看来 还是得抽出时间来更新更新啊 好了 感慨也发完了 是时候切入正题了 本篇博客主要以本人在实际项目的开发中 为了定位O
  • 韩信点兵的算法

    秦朝末年 楚汉相争 韩信率兵打仗 某次 他急需点兵迎战 就命士兵布阵三次 命3人一排 多出2名 命5人一排 多出3名 命7人一排 多出2名 后 直言有1073名勇士可击垮敌兵 其神机妙算鼓舞士气 旌旗摇动 大败楚军 首先这个故事的真实性很低
  • Linux下用户的创建与删除

    我们在Linux下创建用户主要有两种方式 adduser和useradd 它们的区别以及主要用法如下 adduser adduser的用法很简单 只需adduser username即可 如下 sudo adduser alvin 这个命令
  • python深入笔记--装饰函数

    装饰函数的参数是被装饰的函数对象 返回原函数对象 装饰的实质语句 hanshu zhuangshi hanshu 第一步 最简单的函数 第二步 对函数进行装饰 hanshu zhuangshi hanshu 定义zhuangshi函数功能
  • Vue中vuex的使用(四)

    四个map方法的使用 1 mapState方法 用于帮助我们映射state中的数据为计算属性 computed 借助mapState生成计算属性 sum school subject 从state中读取数据 对象写法 mapState su
  • RISCV架构单周期CPU设计

    指令选取 R类型指令 31 25 24 20 20 19 15 14 11 7 6 0 funct7 rs2 rs1 funct3 rd opcode 编号 指令 名称 1 add rd rs1 rs2 加 2 and rd rs1 rs2
  • 6个Python童年小游戏,开始敲起来,玩吧!

    你的童年 我的童年好像都一样 谁的童年又没玩过游戏呢 这些小游戏应该只有玩过才会懂吧 虽然程序员敲代码多年 但童心还是一直都在的 今天就分享一些私藏的童年游戏 十几行代码就能进入使用Python开发的小游戏快乐玩耍 1 五子棋 童年游戏不可
  • STM32驱动_旋转编码器EC11(中断触发版本)

    STM32驱动 旋转编码器EC11 中断触发版本 说明 根据示波器测量的真实波形 可以看到 旋转编码器转动一格 实际上只有波形的一个电平变化 并不是输出一个完整周期的波形 中断触发方案 将旋转编码器的A和B两个引脚设置为A下降沿触发 B上升
  • SQL 通配符

    在 SQL 中 通配符与 SQL LIKE 操作符一起使用 SQL 通配符用于搜索表中的数据 在 SQL 中 可使用以下通配符 通配符 描述 替代 0 个或多个字符 替代一个字符 charlist 字符列中的任何单一字符 charlist
  • 家庭IOT监测之摄像头数据上传ONENET

    本篇目标 将摄像头OV7670的照片数据 转换成BMP二进制 上传到ONENET平台 用于远程监测 材料准备 之前移植的温湿度及红外修改工程 温湿度及红外修改工程 继续往里面移植摄像头驱动上传代码 STM32F407最终摄像头上传ONENE
  • MQTT Qos详解(一)

    本文基于标准MQTT讨论 不适合其他对MQTT机制做了修改的非标准MQTT协议 MQTT设计了一套保证消息稳定传输的机制 包括消息应答 存储和重传 在这套机制下 提供了三种不同层次QoS Quality of Service QoS0 发送
  • 信息抽取(四)【NLP论文复现】Multi-head Selection和Deep Biaffine Attention在关系抽取中的实现和效果

    Multi head Selection和Deep Biaffine Attention在关系抽取中的应用 前言 Multi head Selection 一 Joint entity recognition and relation ex
  • Hash table and application in java

    查找的效率取决于在查找是比较的次数 次数越少效率越高 反之越低 最理想的情况是无需比较 一次存取便能找到所查找的记录 根据对应关系f找到给定值K的像f K hash function 应运而生 由此思想建的表称为hash table 集合h
  • MySQL 文本字符串

    mysql文本字符串主要包括 CHAR VARCHAR TINYTEXT TEXT MEDIUMTEXT LONGTEXTENUM SET 等类型 char用于储存固定长度的字符串 定长就是电话号码 一般需要声明字符串长度 如果你没有声明它
  • vue基于threejs实现的3D可视化编辑器

    随着5G网络的渐渐普及 物联网在人们的生活中渐渐广泛使用 社会向着越来越智能化的方向发展 当康科技经过不懈努力 研发属于自己的一款3D可视化编辑器 助力企业应用实现3D可视化服务 编辑器界面如下 操作视频演示 3D可视化编辑器v1 0版本完
  • styled-components组件升级v4版本的全局样式踩坑

    注 本文使用ES6 Module模块化 框架选用React 最新版的 styled components v4 已经将原有的 injectGlobal 方法替换成了 createGlobalStyle 而且用法也和之前的 injectGlo
  • C++任意数字类型转 2进制、8进制、16进制

    C 任意数字类型转 2进制 8进制 16进制 平时我们在写程序的过程中会经常碰见进制转换的操作 偶尔写一次还好每次写 我们都又要重新定义函数进行转换 在这里博主就分享一下我自己编写的一个进制转换的方法吧 也比较通用 如没有耐心可以直接跳过思
  • 强化学习笔记3 回报和价值函数

    学习张斯俊和王树森两位大佬的专栏和课程后记的笔记 这篇笔记里面有一些个人理解 如有不对 欢迎大家指正 回报return 上一篇说过奖励reward 奖励是指当前状态S下 选择动作A 环境将会反馈回奖励R 我们利用R作为智能体学习的引导 希望