【深度学习】强化学习(四)强化学习的值函数

文章目录

  • 一、强化学习问题
    • 1、交互的对象
    • 2、强化学习的基本要素
    • 3、策略(Policy)
    • 4、马尔可夫决策过程
    • 5、强化学习的目标函数
    • 6、值函数
      • 1. 状态值函数(State Value Function)
        • a. 状态值函数的定义
        • b. 贝尔曼方程(Bellman Equation)
      • 2. 状态-动作值函数(State-Action Value Function)
      • 3. 值函数的作用
        • a. 评估策略
        • b. 优化策略
        • c. 改进策略
        • d. 探索与利用的平衡

一、强化学习问题

  强化学习的基本任务是通过智能体与环境的交互学习一个策略,使得智能体能够在不同的状态下做出最优的动作,以最大化累积奖励。这种学习过程涉及到智能体根据当前状态选择动作,环境根据智能体的动作转移状态,并提供即时奖励的循环过程。

1、交互的对象

  在强化学习中,有两个可以进行交互的对象:智能体环境

  • 智能体(Agent):能感知外部环境的状态(State)和获得的奖励(Reward),并做出决策(Action)。智能体的决策和学习功能使其能够根据状态选择不同的动作,学习通过获得的奖励来调整策略。

  • 环境(Environment):是智能体外部的所有事物,对智能体的动作做出响应,改变状态,并反馈相应的奖励。

2、强化学习的基本要素

  强化学习涉及到智能体与环境的交互,其基本要素包括状态、动作、策略、状态转移概率和即时奖励。

  • 状态(State):对环境的描述,可能是离散或连续的。

  • 动作(Action):智能体的行为,也可以是离散或连续的。

  • 策略(Policy):智能体根据当前状态选择动作的概率分布。

  • 状态转移概率(State Transition Probability):在给定状态和动作的情况下,环境转移到下一个状态的概率。

  • 即时奖励(Immediate Reward):智能体在执行动作后,环境反馈的奖励。

3、策略(Policy)

  策略(Policy)就是智能体如何根据环境状态 𝑠 来决定下一步的动作 𝑎(智能体在特定状态下选择动作的规则或分布)。

  • 确定性策略(Deterministic Policy) 直接指定智能体应该采取的具体动作
  • 随机性策略(Stochastic Policy) 则考虑了动作的概率分布,增加了对不同动作的探索。

上述概念可详细参照:【深度学习】强化学习(一)强化学习定义

4、马尔可夫决策过程

  为了简化描述,将智能体与环境的交互看作离散的时间序列。智能体从感知到的初始环境 s 0 s_0 s0 开始,然后决定做一个相应的动作 a 0 a_0 a0,环境相应地发生改变到新的状态 s 1 s_1 s1,并反馈给智能体一个即时奖励 r 1 r_1 r1,然后智能体又根据状态 s 1 s_1 s1做一个动作 a 1 a_1 a1,环境相应改变为 s 2 s_2 s2,并反馈奖励 r 2 r_2 r2。这样的交互可以一直进行下去: s 0 , a 0 , s 1 , r 1 , a 1 , … , s t − 1 , r t − 1 , a t − 1 , s t , r t , … , s_0, a_0, s_1, r_1, a_1, \ldots, s_{t-1}, r_{t-1}, a_{t-1}, s_t, r_t, \ldots, s0,a0,s1,r1,a1,,st1,rt1,at1,st,rt,,其中 r t = r ( s t − 1 , a t − 1 , s t ) r_t = r(s_{t-1}, a_{t-1}, s_t) rt=r(st1,at1,st) 是第 t t t 时刻的即时奖励。这个交互过程可以被视为一个马尔可夫决策过程(Markov Decision Process,MDP)
在这里插入图片描述

关于马尔可夫决策过程可详细参照:【深度学习】强化学习(二)马尔可夫决策过程

5、强化学习的目标函数

  强化学习的目标是通过学习一个良好的策略来使智能体在与环境的交互中获得尽可能多的平均回报。强化学习的目标函数 J ( θ ) J(\theta) J(θ) 定义如下: J ( θ ) = E τ ∼ p θ ( τ ) [ G ( τ ) ] = E τ ∼ p θ ( τ ) [ ∑ t = 0 T − 1 γ t r t + 1 ] J(\theta) = \mathbb{E}_{\tau \sim p_{\theta}(\tau)}[G(\tau)] = \mathbb{E}_{\tau \sim p_{\theta}(\tau)}\left[\sum_{t=0}^{T-1} \gamma^t r_{t+1}\right] J(θ)=Eτpθ(τ)[G(τ)]=Eτpθ(τ)[t=0T1γtrt+1]其中, θ \theta θ 表示策略函数的参数, τ \tau τ 表示强化学习的轨迹, γ \gamma γ 是折扣率……

  • 这个目标函数表达的是在策略 π θ \pi_{\theta} πθ 下,智能体与环境交互得到的总回报的期望。(这个期望是对所有可能的轨迹进行的)
  • 总回报(Total Return)是对一个轨迹的累积奖励,引入折扣率(Discount Factor)来平衡短期和长期回报。
    • 总回报:对于一次交互过程的轨迹,总回报是累积奖励的和。
    • 折扣回报:引入折扣率,考虑未来奖励的权重。

关于目标函数可详细参照:【深度学习】强化学习(三)强化学习的目标函数

6、值函数

  在强化学习中,为了评估策略 π \pi π 的期望回报,引入了值函数的概念,包括状态值函数状态-动作值函数

1. 状态值函数(State Value Function)

a. 状态值函数的定义

  状态值函数表示从某个状态开始,按照特定策略执行后获得的期望总回报。

  • 状态值函数的定义:

V π ( s ) = E τ ∼ p ( τ ) [ ∑ t = 0 T − 1 γ t r t + 1 ∣ τ s 0 = s ] V^\pi(s) = \mathbb{E}_{\tau \sim p(\tau)} \left[ \sum_{t=0}^{T-1} \gamma^t r_{t+1} \bigg| \tau_{s_0} = s \right] Vπ(s)=Eτp(τ)[t=0T1γtrt+1 τs0=s]

其中, τ \tau τ 表示强化学习的轨迹, γ \gamma γ 是折扣因子, s s s 是状态。状态值函数 V π ( s ) V^\pi(s) Vπ(s) 表示从状态 s s s 开始,执行策略 π \pi π 后获得的期望总回报。

b. 贝尔曼方程(Bellman Equation)

进一步,我们可以使用贝尔曼方程来表示状态值函数的计算:

V π ( s ) = E a ∼ π ( a ∣ s ) [ E s ′ ∼ p ( s ′ ∣ s , a ) [ r ( s , a , s ′ ) + γ V π ( s ′ ) ] ] V^\pi(s) = \mathbb{E}_{a \sim \pi(a|s)} \left[ \mathbb{E}_{s' \sim p(s'|s,a)} \left[ r(s, a, s') + \gamma V^\pi(s') \right] \right] Vπ(s)=Eaπ(as)[Esp(ss,a)[r(s,a,s)+γVπ(s)]]

  • 推导过程
    在这里插入图片描述

  • 贝尔曼方程表明,当前状态的值函数可以通过下一个状态的值函数来计算,这是强化学习中常用的迭代计算方法之一。在实际应用中,通过不断更新状态值函数,智能体可以逐步优化其策略,从而在环境中获得更好的回报。

2. 状态-动作值函数(State-Action Value Function)

  状态-动作值函数(Q函数或Q值)是另一种重要的值函数,它衡量在给定状态 s s s 下,采取特定动作 a a a 并按照某一策略执行后所获得的期望总回报。

  • 状态-动作值函数的定义:
    Q π ( s , a ) = E s ′ ∼ p ( s ′ ∣ s , a ) [ r ( s , a , s ′ ) + γ V π ( s ′ ) ] Q^\pi(s, a) = \mathbb{E}_{s' \sim p(s'|s,a)} \left[ r(s, a, s') + \gamma V^\pi(s') \right] Qπ(s,a)=Esp(ss,a)[r(s,a,s)+γVπ(s)]其中, Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 表示在状态 s s s 下采取动作 a a a 后,按照策略 π \pi π 执行的期望总回报。

  • 这个定义使用了之前介绍的状态值函数 V π ( s ) V^\pi(s) Vπ(s),表示了当前状态-动作对的价值。

  • 状态值函数和状态-动作值函数之间的关系可以通过以下方程表示: V π ( s ) = E a ∼ π ( a ∣ s ) [ Q π ( s , a ) ] V^\pi(s) = \mathbb{E}_{a \sim \pi(a|s)} \left[ Q^\pi(s, a) \right] Vπ(s)=Eaπ(as)[Qπ(s,a)]

    • 这说明状态值函数是关于动作的期望值,而状态-动作值函数则提供了每个动作在给定状态下的具体估计值
  • 状态-动作值函数满足贝尔曼方程,表示为:
    Q π ( s , a ) = E s ′ ∼ p ( s ′ ∣ s , a ) [ r ( s , a , s ′ ) + γ E a ′ ∼ π ( a ′ ∣ s ′ ) [ Q π ( s ′ , a ′ ) ] ] Q^\pi(s, a) = \mathbb{E}_{s' \sim p(s'|s,a)} \left[ r(s, a, s') + \gamma \mathbb{E}_{a' \sim \pi(a'|s')} \left[ Q^\pi(s', a') \right] \right] Qπ(s,a)=Esp(ss,a)[r(s,a,s)+γEaπ(as)[Qπ(s,a)]]

  • Q函数的不断迭代计算可以帮助智能体更好地理解状态和动作的关联,从而制定更优化的策略。在深度强化学习中,Q函数的使用更为普遍,特别是在处理复杂、连续状态和动作空间的问题时。

3. 值函数的作用

  值函数的引入为强化学习提供了一种有效的手段,使得我们可以通过对值函数的优化来改进策略,从而使智能体更好地在环境中行动。

  • 状态值函数 V π ( s ) V^{\pi}(s) Vπ(s)

    • 评估在状态 s s s 下采用策略 π \pi π 的效果,即从状态 s s s 出发,执行策略 π \pi π 所获得的期望总回报。
    • 可以用来比较不同状态的价值,帮助智能体决策。
  • 状态-动作值函数 Q π ( s , a ) Q^{\pi}(s, a) Qπ(s,a):

    • 评估在状态 s s s 下采取动作 a a a 并执行策略 π \pi π 的效果,即获得的期望总回报。
    • 可以用来指导智能体在给定状态下选择最优动作。
a. 评估策略

  值函数可以用于评估给定策略的好坏:比如,状态值函数 V π ( s ) V^\pi(s) Vπ(s) 表示在策略 π \pi π 下,从状态 s s s 开始执行策略的期望总回报,通过评估状态值函数,我们可以了解在不同状态下策略的性能,并比较不同策略之间的优劣。
V π ( s ) = E τ ∼ π [ G ( τ ) ∣ τ 0 = s ] V^\pi(s) = \mathbb{E}_{\tau \sim \pi} \left[ G(\tau) \mid \tau_0 = s \right] Vπ(s)=Eτπ[G(τ)τ0=s]

b. 优化策略

  基于值函数,我们可以通过优化策略来提高智能体的性能:当我们在某个状态 s s s 发现一个动作 a ∗ a^* a 使得 Q π ( s , a ∗ ) > V π ( s ) Q^\pi(s, a^*) > V^\pi(s) Qπ(s,a)>Vπ(s),即执行动作 a ∗ a^* a 的回报比当前策略的状态值更高,我们可以调整策略的参数,增加在状态 s s s 选择动作 a ∗ a^* a 的概率,从而优化策略。

π ′ ( a ∣ s ) = { π ( a ∣ s ) + ϵ if  a = a ∗ π ( a ∣ s ) − ϵ if  a ≠ a ∗ \pi'(a|s) = \begin{cases} \pi(a|s) + \epsilon & \text{if } a = a^* \\ \pi(a|s) - \epsilon & \text{if } a \neq a^* \end{cases} π(as)={π(as)+ϵπ(as)ϵif a=aif a=a
这个过程可以通过各种优化算法实现,例如梯度上升法(Policy Gradient Methods)。

c. 改进策略

  通过值函数的指导,我们可以设计更智能的策略,不仅考虑当前状态的回报,还能充分考虑长期的影响。

d. 探索与利用的平衡

  通过对值函数的估计,智能体可以更好地判断哪些动作可能导致更高的回报,从而在探索新动作和利用已知好动作之间找到平衡。

  值函数在强化学习中起到了桥梁的作用,连接了策略、状态和动作的关系。它们是智能体学习和改进的核心工具,使其能够在未知环境中获得最大的累积奖励。在深度强化学习中,利用深度神经网络逼近值函数,使其能够应对更复杂的状态和动作空间。

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

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

相关文章

亚马逊鲲鹏系统可快速创建大量的买家账户

在数字时代的浪潮中,人们总是在寻找更便捷、高效的方式来完成各种任务,而亚马逊鲲鹏系统的出现,无疑为那些渴望拥有大批量买家号的人提供了一个全新的可能性。在这个系统中,注册买家号变得轻而易举,只需准备好一些必要…

WebRTC AEC回声消除算法拆解

WebRTC AEC算法流程分析——时延估计(一) 其实,网上有很多类似资料,各个大厂研发不同应用场景设备的音频工程师基本都对其进行了拆解,有些闪烁其词,有些却很深奥,笔者随着对WebRTC了解的深入&a…

韵达快递查询入口,将途经指定城市的单号筛选出来

批量查询韵达快递单号的物流信息,并将途经指定城市的单号筛选出来。 所需工具: 一个【快递批量查询高手】软件 韵达快递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,第一次使用的伙伴记得先注册&#x…

生物分子相互作用的奥秘与挑战:探索未来药物设计的新方向

在生命科学领域,生物分子相互作用的研究日益受到关注。这种相互作用涉及蛋白质、核酸、脂质和糖类等生物分子之间的相互识别、结合和调控。理解这些相互作用对于揭示生命现象、疾病机制和治疗策略具有重要意义。 然而,生物分子相互作用的奥秘也带来了诸…

探索“超级服务器” TON:SDK 应用与开发入门

TON 是一个由多个组件构成的去中心化和开放的互联网平台,聚焦于实现广泛的跨链互操作性,同时在高可扩展性的安全框架中运作。TON 区块链被设计为分布式超级计算机或“超级服务器(superserver)”,旨在提供各种产品和服务…

在Node.js中MongoDB更新数据的方法

本文主要介绍在Node.js中MongoDB更新数据的方法。 目录 Node.js中MongoDB更新数据使用原生 MongoDB 驱动程序更新数据使用 Mongoose 更新数据 Node.js中MongoDB更新数据 在Node.js中,可以使用原生的 MongoDB 驱动程序或者使用 Mongoose 来更新 MongoDB 数据。 下面…

【腾讯云 HAI 域探秘】释放生产力:基于 HAI 打造团队专属的 AI 编程助手

文章目录 前言一、HAI 产品介绍二、HAI 应用场景介绍三、HAI 生产力场景探索:基于 HAI 打造团队专属的 AI 编程助手3.1 申请 HAI 内测资格3.2 购买 HAI 实例3.3 下载 CodeShell-7B-Chat 模型3.4 部署 text-generation-inference(TGI)推理服务3.4.1 下载 text-genera…

Linux 使用 Anaconda+Uwsgi 部署 Django项目和前端项目

一、安装Anaconda 使用Anaconda创建python环境的优点: virtualenv只能创建系统原有的python版本,而不能创建创建任意版本的环境 而Anaconda的虚拟环境中,你可以指定任意现存可使用的python环境(包括比原环境版本高的python版本&a…

代码签名证书:数字安全世界的守门员

在这个信息化的时代,如果说互联网是高速流动的信息海洋,那么软件便是承载这些信息的庞大船队。而让人倍感安心地乘坐这些船的,正是被称为代码签名证书的重要安全措施。 你可以把代码签名证书想象成是软件世界的一位神秘守门员。它存在的目的&…

使用Python爬取公众号的合集

文章目录 前言讲解爬取思路开爬爬取文章url文章爬取结果爬取图片图片爬取结果优化下载图片代码 声明结尾关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游…

激活Windows过程及报错解决: 0x803f7001 在运行Microsoft Windows 非核心版本的计算机上, 运行“ slui.exe 0x2a 0x803f7001 “以显示错误文本

激活Windows过程及报错问题解决: 0x803f7001 在运行Microsoft Windows 非核心版本的计算机上,运行“ slui.exe 0x2a 0x803f7001 “以显示错误文本。 前言 最近在激活Windows过程中,遇到了报错: 0x803f7001 在运行Microsoft Windows 非核心版本的计算机上…

【数据分析与可视化】利用Python对学生成绩进行可视化分析实战(附源码)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 下面对学生成句和表现等数据可视化分析 1:导入模块 import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][simhei] plt.rcParams[f…

【Android】使用 Glide 给 ImageView 加载图像的简单案例

前言 Android Glide是一个用于在Android应用中加载和显示图片的流行开源库。它提供了简单易用的API,可以帮助开发者高效地加载远程图片、本地图片以及GIF动画,并提供了缓存、内存管理等功能,使得图片加载在移动应用中更加流畅和高效。Glide还…

小白菜QQ云端机器人源码-去除解密授权

小白菜QQ云端机器人源码分享:解密授权学习版已去除 这款源码是专为群机器人爱好者设计的,它基于挂机宝机器人框架构建的网页站点。 用户可以通过网页登录QQ账号至挂机宝框架中,无需通过机器人实现登录。 而且,该源码解决了一个…

运筹学经典问题(三):最大流问题

问题描述 给定一个图网络 G ( V , E ) G(V, E) G(V,E),网络中连边的权重代表最大容量,在这个图中找出从起点到终点流量最大的路径。 数学建模 集合: I I I:点的集合; E E E:边的集合。 常量&#x…

使用代理IP时的并发请求是什么意思?

很多做过数据采集的技术们应该都有所了解,在选择代理IP时会有一个并发请求的参数,这个参数是什么意思呢?可能有很多新手不是很了解,其实代理IP的并发请求就是指同时发送多个请求到目标服务器,以提高请求的效率和速度。…

docker-consul(容器的自动发现与注册)

1、微服务(容器)、容器的注册和发现:是一种分布式管理系统,用于定位服务的方法 (1)在传统的架构中,应用程序之间直连到已知的服务,设备提供的网络(ip地址、基于tcp/ip的…

android 13.0 去掉recovery模式UI操作页面的菜单选项

1.概述 在13.0进行系统rom定制化开发中,在进行一些定制化开发中,会根据需要在进入recovery模式的时候,去掉recovery模式的一些菜单选项, Reboot to bootloader,Enter rescue等菜单项,经过分析得知, 就是在device.cpp去掉一些菜单选项就可以了,接下来就来分析实现相关功…

《PySpark大数据分析实战》-04.了解Spark

📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP…

python进行描述性统计分析,python怎么做描述性统计

大家好,小编来为大家解答以下问题,python语言的描述错误的选项,python描述算法的方法有几种,今天让我们一起来看看吧! 一、描述符是什么 描述符:是一个类,只要内部定义了方法__get__, __set__, …