具身智能-强化学习-强化学习基础-马尔可夫

文章目录

  • 参考
  • 强化学习基础
    • 强化学习特点
    • reward函数
    • 两种强化学习
    • 两种策略:探索(Exploration) vs. 利用(Exploitation)
    • gym库的使用
  • 马尔可夫
    • 马尔可夫过程
    • 马尔可夫奖励过程(Markov Reward Process, MRP)
      • 折扣因子
      • 贝尔曼方程
      • 计算马尔可夫奖励过程价值的迭代算法
    • 马尔可夫决策过程(MDP)
      • 马尔可夫决策过程和马尔可夫过程/马尔可夫奖励过程的区别
      • 马尔可夫决策过程中的价值函数
      • 备份图
      • 策略评估/预测/控制
      • 马尔可夫决策过程控制办法
  • 关键词/习题/面试题

参考

李宏毅老师讲的【强化学习】

蘑菇书EasyRL

个人觉得直接看磨菇书就好了,如果遇到实在看不懂,再看对应部分的李宏毅老师的课程就行

强化学习基础

  1. 根据当前得到的环境返回一个reward
  2. 根据当前的环境得到一个行动
  3. 行动更新环境
  4. 上面三步反复循环,统计得到的reward总和,目标要使得reward总和最大

但只如果只做使得返回的reward最大的行为,可能会忽略可能导致未来reward更大但当前reward比较小的行为

强化学习特点

强化学习和监督学习的区别如下。

(1)强化学习输入的样本是序列数据,而不像监督学习里面样本都是独立的。

(2)学习器并没有告诉我们每一步正确的动作应该是什么,学习器需要自己去发现哪些动作可以带来 最多的奖励,只能通过不停地尝试来发现最有利的动作。

(3)智能体获得自己能力的过程,其实是不断地试错探索(trial-and-error exploration)的过程。探索 (exploration)和利用(exploitation)是强化学习里面非常核心的问题。其中,探索指尝试一些新的动作, 这些新的动作有可能会使我们得到更多的奖励,也有可能使我们“一无所有”;利用指采取已知的可以获得最多奖励的动作,重复执行这个动作,因为我们知道这样做可以获得一定的奖励。因此,我们需要在探索和利用之间进行权衡,这也是在监督学习里面没有的情况。

(4)在强化学习过程中,没有非常强的监督者(supervisor),只有奖励信号(reward signal),并且奖励信号是延迟的,即环境会在很久以后告诉我们之前我们采取的动作到底是不是有效的。因为我们没有得 到即时反馈,所以智能体使用强化学习来学习就非常困难。当我们采取一个动作后,如果我们使用监督学习,我们就可以立刻获得一个指导,比如,我们现在采取了一个错误的动作,正确的动作应该是什么。而在强化学习里面,环境可能会告诉我们这个动作是错误的,但是它并没有告诉我们正确的动作是什么。而且更困难的是,它可能是在一两分钟过后告诉我们这个动作是错误的。所以这也是强化学习和监督学习不同的地方。

reward函数

在这里插入图片描述
第一个价值函数:代表在某个策略下,当前状态开始到未来结束各种可能情况,各种结束的累积奖励并分别加权对应的折扣因子的对应次方,并对各种情况求平均
第二个价值函数:代表在某个策略下,当前状态,采取某个动作开始到未来结束各种可能情况,各种结束的累积奖励并分别加权对应的折扣因子的对应次方,并对各种情况求平均

(一种情况代表就是当前状态开始到未来结束,这期间可能会采取不同动作,得到不同情况,多步累积起来就得到这个期望)

两种强化学习

根据智能体学习的事物不同,我们可以把智能体进行归类。基于价值的智能体(value-based agent)显式地学习价值函数,隐式地学习它的策略。策略是其从学到的价值函数里面推算出来的。基于策略的智能体(policy-based agent)直接学习策略,我们给它一个状态,它就会输出对应动作的概率。基于策略的智能体并没有学习价值函数。把基于价值的智能体和基于策略的智能体结合起来就有了演员-评论员智能体(actor-critic agent)。这一类智能体把策略和价值函数都学习了,然后通过两者的交互得到最佳的动作。

Q: 基于策略和基于价值的强化学习方法有什么区别?

A: 对于一个状态转移概率已知的马尔可夫决策过程,我们可以使用动态规划算法来求解。从决策方式来看,强化学习又可以划分为基于策略的方法和基于价值的方法。决策方式是智能体在给定状态下从动作集合中选择一个动作的依据,它是静态的,不随状态变化而变化。 在基于策略的强化学习方法中,智能体会制定一套动作策略(确定在给定状态下需要采取何种动作),并根据这个策略进行操作。强化学习算法直接对策略进行优化,使制定的策略能够获得最大的奖励。 而在基于价值的强化学习方法中,智能体不需要制定显式的策略,它维护一个价值表格或价值函数,并通过这个价值表格或价值函数来选取价值最大的动作。基于价值迭代的方法只能应用在不连续的、离散的环境下(如围棋或某些游戏领域),对于动作集合规模庞大、动作连续的场景(如机器人控制领域),其很难学习到较好的结果(此时基于策略迭代的方法能够根据设定的策略来选择连续的动作)。 基于价值的强化学习算法有Q学习(Q-learning)、 Sarsa 等,而基于策略的强化学习算法有策略梯度(Policy Gradient,PG)算法等。此外,演员-评论员算法同时使用策略和价值评估来做出决策。其中,智能体会根据策略做出动作,而价值函数会对做出的动作给出价值,这样可以在原有的策略梯度算法的基础上加速学习过程,取得更好的效果。

两种策略:探索(Exploration) vs. 利用(Exploitation)

索即我们去探索环境,通过尝试不同的动作来得到最佳的策略(带来最大奖励的策略)。
利用即我们不去尝试新的动作,而是采取已知的可以带来很大奖励的动作。

gym库的使用

马尔可夫

S是状态,A是行为,R是奖励值

马尔可夫过程

在这里插入图片描述
只包含状态(或者说状态转移矩阵)

在这里插入图片描述

马尔可夫奖励过程(Markov Reward Process, MRP)

多了个多了奖励函数(reward function)。奖励函数 R 是一个期望,表示当我们到达某一个状态的时候,可以获得多大的奖励。这里另外定义了折扣因子
γ 。如果状态数是有限的,那么 R 可以是一个向量(就是向量的不同标量值表示不同状态的奖励值)

在这里插入图片描述

奖励函数 R(s) 表示在状态 s 中获得的期望奖励。

状态价值函数:就是当前状态的未来的各种可能的回合对应的汇报的平均值

折扣因子

  1. 避免无穷奖励
    在某些马尔可夫过程中,智能体可能会陷入循环状态,导致累积奖励无限大。例如,假设智能体在一个环境中可以无限期地获得小的正奖励,而没有终止状态。如果没有折扣因子,累积奖励将趋向于无穷大,这在数学上是不可处理的。通过引入折扣因子 γ(其中 0≤γ<1),未来的奖励会被逐渐减少,从而避免累积奖励无限大的问题。
  2. 处理不确定性
    在实际应用中,我们通常无法完全准确地模拟环境。未来的奖励可能受到多种因素的影响,包括环境的随机性、模型的不准确性和智能体的决策误差。通过引入折扣因子,我们可以更注重当前的奖励,而不是过于依赖对未来的预测。这反映了我们对未来的不确定性,希望尽快获得奖励,而不是在未来某个不确定的时间点获得奖励。
  3. 反映奖励的实际价值
    在许多实际场景中,即时奖励比未来的奖励更有价值。例如,一笔钱现在的价值通常比未来某个时间点的相同金额更有价值,因为现在的钱可以立即使用,而未来的钱可能会受到通货膨胀等因素的影响。类似地,在强化学习中,智能体可能更倾向于获得即时奖励,而不是未来的奖励。
  4. 鼓励即时奖励
    折扣因子还可以用来调整智能体的行为策略。通过设置不同的折扣因子,我们可以鼓励智能体更关注即时奖励或未来奖励。例如:
    γ=0:智能体只关注当前的奖励,完全忽略未来的奖励。这适用于那些只需要关注即时效果的场景。
    γ=1:智能体对未来的奖励和当前的奖励同等重视,不进行任何折扣。这适用于那些未来奖励和当前奖励同等重要的场景。
    0<γ<1:智能体在即时奖励和未来奖励之间进行平衡。折扣因子越小,智能体越倾向于即时奖励;折扣因子越大,智能体越倾向于未来奖励。

贝尔曼方程

具体证明见
https://datawhalechina.github.io/easy-rl/#/chapter2/chapter2?id=_222-%e8%b4%9d%e5%b0%94%e6%9b%bc%e6%96%b9%e7%a8%8b

注意价值函数和奖励函数是不同的东西!!!

贝尔曼方程就是当前状态与未来状态的迭代关系,表示当前状态的价值函数可以通过下个状态的价值函数来计算。
在这里插入图片描述

计算马尔可夫奖励过程价值的迭代算法

N是轨迹数量(轨迹就是未来各种状态的连续可能)
这里就是计算未来各种轨迹的回报,最后求和取平均作为价值
在这里插入图片描述
另外方法是一直迭代贝尔曼方程,直到价值函数没多大变化,我们就可以得到某个状态的价值

在这里插入图片描述

马尔可夫决策过程(MDP)

马尔可夫决策过程在马尔可夫奖励过程的基础上增加了动作。它描述了智能体在每个状态下可以采取的动作,以及这些动作如何影响状态转移和奖励。

在这里插入图片描述

简单来书就是:状态到动作有个概率,动作到下一个状态也有个概率
在这里插入图片描述
此时每个状态和行为都有一个奖励函数(确定的),对于状态的奖励函数是要将该状态和对应各种行为的奖励函数和该状态下对应行为的发送概率加权求和

马尔可夫决策过程和马尔可夫过程/马尔可夫奖励过程的区别

马尔可夫过程/马尔可夫奖励过程:直接状态转移,状态转移概率
马尔可夫决策过程:还有一个动作概率和状态和动作转移到下一个状态的概率

马尔可夫决策过程中的价值函数

价值函数
在这里插入图片描述
动作的价值函数也叫Q 函数(Q-Function)表示在状态 s 下采取动作 a 后所能获得的期望累积奖励。它考虑了状态和动作的组合,提供了一个更细粒度的期望回报估计。

在这里插入图片描述
二者关系如下在这里插入图片描述
之前说过Q 函数(Q-Function)表示在状态 s 下采取动作 a 后所能获得的期望累积奖励,也可以理解为当前即使奖励+下一个状态的价值函数(即累积期望),当然这里的下一个状态价值函数又可以拆解为各个状态动作价值函数和每个动作的概率加权和
在这里插入图片描述
在这里插入图片描述

备份图

就是一种图表示状态动作更迭方式,空心圆圈代表状态,实心圆圈代表状态-动作对。
在这里插入图片描述

在这里插入图片描述
可以看出s的状态价值函数等于两个状态动作价值函数合对应动作价值的奖励的和的加权和

在这里插入图片描述

策略评估/预测/控制

在这里插入图片描述
可以通过贝尔曼方程迭代得到价值函数
在这里插入图片描述
在这里插入图片描述

马尔可夫决策过程控制办法

寻找最佳策略的过程就是马尔可夫决策过程的控制过程

策略搜索:
在这里插入图片描述
策略迭代:
第一个步骤是策略评估,当前我们在优化策略 π(一个具体策略比如每一步应该怎么走),在优化过程中得到一个最新的策略。我们先保证这个策略不变,然后估计它的价值,即给定当前的策略函数来估计状态价值函数。
第二个步骤是策略改进,得到 状态价值函数后,我们可以进一步推算出它的 Q 函数。得到 Q 函数后,我们直接对 Q 函数进行最大化,通过在 Q 函数做一个贪心的搜索来进一步改进策略。
在这里插入图片描述
这两个步骤一直在迭代进行。

在这里插入图片描述
价值迭代:在这里插入图片描述
就是初始化各个价值函数,然后不停迭代价值函数,没有策略评估这一过程
在这里插入图片描述

关键词/习题/面试题

https://datawhalechina.github.io/easy-rl/#/chapter2/chapter2_questions&keywords?id=%e5%85%b3%e9%94%ae%e8%af%8d

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

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

相关文章

半导体器件与物理篇5 mosfet及相关器件

认识mos二极管 MOS二极管是研究半导体表面特性最有用的器件之一。MOS二极管可作为存储电容器&#xff0c;并且是电荷耦合器件(CCD)的基本结构单元。 MOS二极管结构的重要参数包括&#xff1a;氧化层厚度d&#xff1b;施加于金属平板上的电压V&#xff08;正偏压时V为正&#x…

037 DFS回溯

1.回溯模板求排列 2.回溯模板求子集 # 当前位于点x&#xff0c;步长为length def dfs(x,length):passvis[x]length #接下来走下一个点 #判断下一个点是否走过if vis[a[x]]!0:#此时存在环global ansansmax(ans,length-vis[a[x]]1)else:dfs(a[x],length1)nint(input()) a[0]list(…

RK3568使用QT搭建TCP服务器和客户端

文章目录 一、让RK3568开发板先连接上wifi二、客户端代码1. `widget.h` 文件2. `widget.cpp` 文件**详细讲解**1. **`Widget` 类构造函数 (`Widget::Widget`)**2. **UI 布局 (`setupUI`)**3. **连接按钮的槽函数 (`onConnectClicked`)**4. **发送消息按钮的槽函数 (`onSendMess…

力扣988. 从叶结点开始的最小字符串

Problem: 988. 从叶结点开始的最小字符串 文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的先序遍历) 在先序遍历的过程中&#xff0c;用一个变量path拼接记录下其组成的字符串&#xff0c;当遇到根节点时再将其反转并比较大小&#xff08;字典顺序大小&…

本地Ollama部署DeepSeek R1模型接入Word

目录 1.本地部署DeepSeek-R1模型 2.接入Word 3.效果演示 4.问题反馈 上一篇文章办公新利器&#xff1a;DeepSeekWord&#xff0c;让你的工作更高效-CSDN博客https://blog.csdn.net/qq_63708623/article/details/145418457?spm1001.2014.3001.5501https://blog.csdn.net/qq…

Codeforces Round 1002 (Div. 2)(部分题解)

补题链接 A. Milya and Two Arrays 思路&#xff1a;题意还是比较好理解&#xff0c;分析的话我加了一点猜的成分&#xff0c;对a&#xff0c;b数组的种类和相加小于4就不行&#xff0c;蒋老师的乘完后小于等于2也合理。 AC代码&#xff1a; #include <bits/stdc.h> u…

几种用户鉴权的方式对比

几种用户鉴权的方式对比 最近也要准备秋招&#xff0c;刚好整理下前后端一般采用的几种鉴权方式。 一、传统用户鉴权 详细步骤 用户登录 用户通过前端提交用户名和密码到后端服务器&#xff0c;后端服务器验证用户名和密码是否正确。如果验证成功&#xff0c;后端生成一个 s…

基于springboot+vue的航空散货调度系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

区块链的核心原理:加密算法、共识机制与分布式账本

区块链&#xff08;Blockchain&#xff09;技术自比特币诞生以来&#xff0c;已经从一个单纯的数字货币系统演变为广泛应用于金融、供应链、医疗、政府等多个领域的技术架构。作为一种去中心化的分布式账本技术&#xff0c;区块链的核心原理主要依赖于三个关键组成部分&#xf…

Altium Designer绘制原理图时画斜线的方法

第一步&#xff1a;检查设置是否正确 打开preferences->PCB Editor ->Interactive Routing->Interactive Routing Options->Restrict TO 90/45去掉勾选项&#xff0c;点击OK即可。如下图所示&#xff1a; 然后在划线时&#xff0c;按下shift空格就能够切换划线…

Elasticsearch基本使用详解

文章目录 Elasticsearch基本使用详解一、引言二、环境搭建1、安装 Elasticsearch2、安装 Kibana&#xff08;可选&#xff09; 三、索引操作1、创建索引2、查看索引3、删除索引 四、数据操作1、插入数据2、查询数据&#xff08;1&#xff09;简单查询&#xff08;2&#xff09;…

Intel 与 Yocto 项目的深度融合:全面解析与平台对比

在嵌入式 Linux 领域&#xff0c;Yocto 项目已成为构建定制化 Linux 发行版的事实标准&#xff0c;广泛应用于不同架构的 SoC 平台。Intel 作为 x86 架构的领导者&#xff0c;在 Yocto 生态中投入了大量资源&#xff0c;为其嵌入式处理器、FPGA 和 AI 加速硬件提供了完整的支持…

java命令详解

这里以jdk8为例子&#xff0c;查看默认的垃圾回收器 java -XX:PrintCommandLineFlags -version-XX:UseParallelGC : Parallel Scavenge 和 Parallel Old 组合 -XX:InitialHeapSize268435456 : 初始化堆大小&#xff08;字节&#xff09; -XX:MaxHeapSize4294967296 : 最大堆大…

51单片机看门狗系统

在 STC89C52 单片机中&#xff0c;看门狗控制寄存器的固定地址为 0xE1。此地址由芯片厂商在硬件设计时确定&#xff0c;但是它在头文件中并未给出&#xff0c;因此在使用看门狗系统时需要声明下这个特殊功能寄存器 sfr WDT_CONTR 0xE1; 本案将用一个小灯的工作状况来展示看门…

中间件的概念及基本使用

什么是中间件 中间件是ASP.NET Core的核心组件&#xff0c;MVC框架、响应缓存、身份验证、CORS、Swagger等都是内置中间件。 广义上来讲&#xff1a;Tomcat、WebLogic、Redis、IIS&#xff1b;狭义上来讲&#xff0c;ASP.NET Core中的中间件指ASP.NET Core中的一个组件。中间件…

Unity实现按键设置功能代码

一、前言 最近在学习unity2D&#xff0c;想做一个横版过关游戏&#xff0c;需要按键设置功能&#xff0c;让用户可以自定义方向键与攻击键等。 自己写了一个&#xff0c;总结如下。 二、界面效果图 这个是一个csv文件&#xff0c;准备第一列是中文按键说明&#xff0c;第二列…

独立开发浏览器插件:案例与启示

浏览器插件&#xff08;Browser Extension&#xff09;作为提升用户浏览体验的重要工具&#xff0c;近年来吸引了许多独立开发者的关注。从广告拦截到生产力工具&#xff0c;再到个性化定制功能&#xff0c;浏览器插件的开发为个人开发者提供了一个低成本、高潜力的创业机会。本…

Deep Sleep 96小时:一场没有硝烟的科技保卫战

2025年1月28日凌晨3点&#xff0c;当大多数人还沉浸在梦乡时&#xff0c;一场没有硝烟的战争悄然打响。代号“Deep Sleep”的服务器突遭海量数据洪流冲击&#xff0c;警报声响彻机房&#xff0c;一场针对中国关键信息基础设施的网络攻击来势汹汹&#xff01; 面对美国发起的这场…

基于STM32景区环境监测系统的设计与实现(论文+源码)

1系统方案设计 根据系统功能的设计要求&#xff0c;展开基于STM32景区环境监测系统设计。如图2.1所示为系统总体设计框图。系统以STM32单片机作为系统主控模块&#xff0c;通过DHT11传感器、MQ传感器、声音传感器实时监测景区环境中的温湿度、空气质量以及噪音数据。系统监测环…

Docker 部署教程jenkins

Docker 部署 jenkins 教程 Jenkins 官方网站 Jenkins 是一个开源的自动化服务器&#xff0c;主要用于持续集成&#xff08;CI&#xff09;和持续交付&#xff08;CD&#xff09;过程。它帮助开发人员自动化构建、测试和部署应用程序&#xff0c;显著提高软件开发的效率和质量…