首页 > 其他分享 >状态价值函数、策略价值函数和动作价值函数

状态价值函数、策略价值函数和动作价值函数

时间:2024-05-24 18:30:17浏览次数:16  
标签:状态 价值 函数 动作 pi 策略

在这里插入图片描述

策略价值函数求解

策略价值函数 V π ( s ) V^\pi(s) Vπ(s) 表示在策略 π \pi π 下,从状态 s s s 开始并遵循该策略所能获得的期望回报(Gt 是在时间 t 的回报)。根据贝尔曼方程(Bellman Equation),状态价值函数可以展开为:

V π ( s ) = E [ G t ∣ S t = s ] = E [ R t + 1 + γ G t + 1 ∣ S t = s ] V^\pi(s) = E[G_t | S_t = s] = E[R_{t+1} + \gamma G_{t+1} | S_t = s] Vπ(s)=E[Gt​∣St​=s]=E[Rt+1​+γGt+1​∣St​=s]

进一步展开,我们得到策略价值函数的迭代方程:

V π ( s ) = ∑ a ∈ A π ( a ∣ s ) [ R ( s , a ) + ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V π ( s ′ ) ] V^\pi(s) = \sum_{a \in \mathcal{A}} \pi(a|s) \left[ R(s, a) + \sum_{s' \in \mathcal{S}} P(s' | s, a) V^\pi(s') \right] Vπ(s)=a∈A∑​π(a∣s)[R(s,a)+s′∈S∑​P(s′∣s,a)Vπ(s′)]

这个方程表明,状态 s s s 的价值是所有可能动作 a a a 的加权和,其中权重由策略 π \pi π 决定,以及每个动作对应的即时奖励和转移到新状态 s ′ s' s′ 的概率,以及新状态的价值。

动作价值函数求解

动作价值函数 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 表示在策略 π \pi π 下,从状态 s s s 开始执行动作 a a a 并随后遵循策略所能获得的期望回报。根据贝尔曼方程,动作价值函数可以展开为:

Q π ( s , a ) = E [ G t ∣ S t = s , A t = a ] Q^\pi(s, a) = E[G_t | S_t = s, A_t = a] Qπ(s,a)=E[Gt​∣St​=s,At​=a]

展开后得到动作价值函数的迭代方程:

Q π ( s , a ) = ∑ s ′ ∈ S P ( s ′ ∣ s , a ) [ R ( s , a ) + γ ∑ a ′ ∈ A π ( a ′ ∣ s ′ ) Q π ( s ′ , a ′ ) ] Q^\pi(s, a) = \sum_{s' \in \mathcal{S}} P(s' | s, a) \left[ R(s, a) + \gamma \sum_{a' \in \mathcal{A}} \pi(a'|s') Q^\pi(s', a') \right] Qπ(s,a)=s′∈S∑​P(s′∣s,a)[R(s,a)+γa′∈A∑​π(a′∣s′)Qπ(s′,a′)]

这个方程表明,状态-动作对 ( s , a ) (s, a) (s,a) 的价值是转移到新状态 s ′ s' s′ 的概率以及新状态和新动作 a ′ a' a′ 的价值的加权和,其中权重由策略 π \pi π 决定。

主要区别

  • 策略依赖性:策略价值函数 V π ( s ) V^\pi(s) Vπ(s) 直接依赖于策略 π \pi π,因为它考虑的是在给定策略下从状态 s s s 开始的回报。而动作价值函数 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 也依赖于策略,但它更关注于在给定状态下执行特定动作 ( a ) 的回报。
  • 动作的考虑:动作价值函数 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 明确考虑了动作 a a a,而策略价值函数 V π ( s ) V^\pi(s) Vπ(s) 是对所有可能动作的期望回报的加权和。
  • 优化应用:动作价值函数常用于寻找最优策略,因为它提供了关于在特定状态下采取特定动作的价值信息,可以用于改进策略。

结论

策略价值函数和动作价值函数都是评估和改进策略的重要工具。策略价值函数提供了在给定策略下从特定状态出发的长期价值评估,而动作价值函数则提供了在给定状态下执行特定动作的回报评估,有助于指导策略的优化。

标签:状态,价值,函数,动作,pi,策略
From: https://blog.csdn.net/qq_44154915/article/details/139150541

相关文章

  • 拷贝构造函数
    简介是一个特殊的构造函数,只有一个形参,该形参常用const修饰,是对该类型的引用。当定义一个新的对象并用一个同类型的对象对它进行初始化时,用显式拷贝构造函数。当该类型的对象传递给函数或从函数返回类型的对象时,用隐式拷贝构造函数。拷贝构造函数拷贝构造函数通常用于:1、通......
  • 【C语言】字符函数和字符串函数
    在C语言中,字符函数和字符串函数通常用于处理单个字符和字符串。这些函数定义在<ctype.h>(字符函数)和<string.h>(字符串函数)头文件中。以下是一些常用的字符函数和字符串函数及其用法:字符函数(ctype.h)字符函数主要用于测试字符的属性或转换字符。isalnum():检查字符是......
  • 窗口函数 | rows between …… and ……
    ROWSBETWEEN...AND... 是SQL窗口函数中的一个子句,用于定义窗口函数操作的行范围。窗口函数允许用户对一组相关的记录执行计算,这些记录被称为窗口。基本语法<窗口函数>OVER([PARTITIONBY<列名>]ORDERBY<列名>[ASC|DESC][ROWSBETWEEN......
  • js函数柯里化
    JavaScript函数柯里化详解 更新时间:2022年01月14日15:33:47 作者:天界程序员  这篇文章主要为大家介绍了JavaScript函数柯里化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助 −目录一、简单了解apply和call二、什么是函数柯里化?三、写......
  • lua打印调用的函数文件及行数
    lua根据调用堆栈可以打印调谁调用了我 string.split=function(s,delim)localsplit={}localpattern="[^"..delim.."]+"string.gsub(s,pattern,function(v)table.insert(split,v)end)returnsplitendfunctiongetWhoCallsMe()......
  • C++-函数
    函数(Function):是一个提前封装好的、可重复使用的、完成特定功能的独立代码单元。特点:提前封装、可重复使用的、完成特定功能将针对特定功能的、有重复使用需求的代码,提前封装到函数内,在需要的时候随时调用。基础函数语法return语句执行后,函数立刻结束函数不可定义在mai......
  • 在Go语言中如何实现变参函数和函数选项模式
    在Go语言编程中,我们经常会遇到需要给函数传递可选参数的情况。传统的做法是定义一个结构体,将所有可选参数作为结构体字段,然后在调用函数时创建该结构体的实例并传递。这种方式虽然可行,但是当可选参数较多时,创建结构体实例的代码就会变得冗长และ不太直观。Go语言的......
  • mySql 存储过程与函数
    过程CREATEDEFINER=`root`@`%`PROCEDURE`clearDate_Jk`()LANGUAGESQLNOTDETERMINISTICCONTAINSSQLSQLSECURITYDEFINERCOMMENT''BEGINDELETEFROMsys_deptWHEREcreate_time>'2023-12-31';truncatetablesys_file;ENDCREAT......
  • 浅谈C++函数
    目录一、函数的概念二、调用函数的两个前提三、函数传参的三种形式四、函数返回类型一、函数的概念函数是C++程序的基本模块,通常一个C++程序由一个或多个函数组成。函数可以完成用户指定的任务,一般分为库函数和用户自定义的函数。函数由函数头和函数体组成,函数头中包......
  • React后台管理(八)-- 开发页面前准备---插槽以及函数组件传值
    文章目录前言一、插槽的使用1.父组件结构如下2.子组件接受插槽内容二、父子函数组件传值1.父组件传值给子组件(1)父组件定义属性传值给子组件(2)子组件通过props去接收属性值2.子组件传值父组件(1)父组件接收子组件的值,更新数据(2)子组件通过方法,将值传出给父组件,类似vue的......