【强化学习的数学原理】第09课-策略梯度方法-笔记

news/2025/2/21 4:59:02/

学习资料:bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接:强化学习的数学原理 西湖大学 赵世钰

文章目录

  • 一、该方法的基本思路
  • 二、该方法的目标函数1-Average value
  • 二、该方法的目标函数2-Average reward
  • 三、目标函数的梯度计算
  • 四、梯度上升算法和REINFORCE


一、该方法的基本思路

In this lecture, we will move

  • from value-based methods to policy-based methods
  • from value function approximation to policy function approximation

以前介绍的方法都是value-based,这次课和下次课所介绍的方法都是policy-based。value-based的方法以value为核心,比如以前有的方法通过估计action value做policy evaluation,然后在此基础上去选择更好的策略,在此过程中value发挥了重要的作用。policy-based方法直接建立一个关于策略的目标函数,通过优化这个目标函数就可以直接得到最优的策略。

在之前,策略的表示是用表格呈现的。要想知道状态 s 1 s_1 s1下选择动作 a 1 a_1 a1的概率,直接去查表 π ( a 1 ∣ s 1 ) \pi(a_1|s_1) π(a1s1)就行。

在这里插入图片描述
下面,尝试把策略的表示方法从表格转换成函数。其中 θ \theta θ是参数。
(1)这个函数可以是神经网络的形式。输入是状态 s s s,输出是采取动作action的概率,神经网络的参数是 θ \theta θ
(2)用函数表达的优点是:存储空间小、泛化性强。(和前面value function approximation类似,不再分析)
(3)函数的表达形式可能有多种,也可以写成 π ( a , s , θ ) \pi(a,s,\theta) π(a,s,θ) π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(as)或者 π θ ( a , s ) \pi_{\theta}(a,s) πθ(a,s)
在这里插入图片描述
表格和函数表示的区别有哪些?
1. 定义最优策略的方法有差别
在表格情况下,如果在策略 π \pi π下,每个状态的state value都要大于其他策略,那这个策略就是最优策略。在函数情况下,会定义一个标量的目标函数scalar metrics,并去优化这个目标函数。
在这里插入图片描述

2.获取一个动作的概率的方法有差别
在表格情况下,查表即可。在函数情况下,需要输入到神经网络计算 π ( a ∣ s , θ ) \pi(a|s,\theta) π(as,θ)
在这里插入图片描述

2.更新策略的方法有差别
在表格的情况下,直接修改表格里的值就行。在函数情况下,需要去修改参数 θ \theta θ
在这里插入图片描述

policy gradient的基本思路:
(1)用一个函数 J ( θ ) J(\theta) J(θ)来定义最优策略。
(2)用梯度上升法来优化函数,使 J ( θ ) J(\theta) J(θ)最大化。
在这里插入图片描述

二、该方法的目标函数1-Average value

我们所选中的目标函数是什么?
第一类目标函数是average state value,或者被称作average value。函数的定义如下图所示。实际上就是对 v π ( s ) v_{\pi}(s) vπ(s)的加权平均, d ( s ) d(s) d(s)是权重,所有 d ( s ) d(s) d(s)加起来等于1。 v ˉ π \bar{v}_{\pi} vˉπ是一个关于策略的函数,策略不同, v ˉ π \bar{v}_{\pi} vˉπ对应的值也不同。因此需要找到一个最优的策略,让这个值达到最大。 d ( s ) d(s) d(s)也可以被当做一个概率分布。
在这里插入图片描述
v ˉ π \bar{v}_{\pi} vˉπ也可以被写成向量乘积的形式,如下图所示。
在这里插入图片描述
v ˉ π \bar{v}_{\pi} vˉπ中,如何去选择distribution d呢? 有两种情况。
第一种情况:distribution d和策略 π \pi π是独立的。
在这种情况下,求 v ˉ π \bar{v}_{\pi} vˉπ梯度就会变得简单,因为d中不含 π \pi π,只有 v π v_{\pi} vπ中含有 π \pi π。在这种情况下,把 d d d表示为 d 0 d_0 d0 v ˉ π \bar{v}_{\pi} vˉπ表示为 v ˉ π 0 \bar{v}_{\pi}^0 vˉπ0
如何选择 d 0 d_0 d0
(1)假设每个状态都是同等重要。
在这里插入图片描述
(2)我们只关注某一个特定的状态,就把这个状态的权重赋值为1,其他状态的权重赋值为0
在这里插入图片描述

第二种情况:distribution d和策略 π \pi π不是独立的。
这里用stationary distribution的方法去选择d作为 d π ( s ) d_{\pi}(s) dπ(s)。stationary distribution在上节课中也有提到,简单说就是,现在有一个策略,根据这个策略不断地和环境进行交互,执行这个策略很多次之后,就可以预测,agent在某一个状态的概率是多少。并且这个概率能够直接通过下面这个式子计算出来(知道 P π P_{\pi} Pπ之后,可以求解出 d π T d_{\pi}^T dπT)。
在这里插入图片描述

二、该方法的目标函数2-Average reward

第二种目标函数是average one-step reward,或者被简单称作average reward。
下面这个式1就是目标函数,和上一节的差异就是 v π ( s ) v_{\pi}(s) vπ(s)变成了 r π ( s ) r_{\pi}(s) rπ(s) r π ( s ) r_{\pi}(s) rπ(s)是从s出发所得到的immediate reward的平均值。 d π ( s ) d_{\pi}(s) dπ(s)是对应的权重,这里所用的是stationary distribution。式1也可以被展开成式2、式3的形式。
在这里插入图片描述
下面给出average reward的另外一种形式。这种形式在论文和书籍中比较常见。
基于给定策略生成了一个trajectory,这个trajectory 包含 ( R t + 1 , R t + 2 , . . . ) (R_{t+1}, R_{t+2},...) (Rt+1,Rt+2,...)。假设从状态 s 0 s_0 s0出发,把所有这些 R R R加起来
求期望,再除以n(平均),再将n趋于无穷大取极限。这就代表着从某一个状态出发跑无穷多步,其reward的平均是什么。
在这里插入图片描述
又可以写成下面的形式(去掉了 s 0 s_0 s0,因为跑了无穷多步之后,从哪里出发已经不重要了),这个形式和本节中一开始给出的形式是等价的。
在这里插入图片描述

一些补充:

  • 所有这些目标函数都是关于策略 π \pi π的函数。
  • 策略 π \pi π的参数都是 θ \theta θ,所以它是关于 θ \theta θ的函数。
  • 希望找到最优的 θ \theta θ值来最大化目标函数,从而得到最好的策略 π \pi π
  • r ˉ π \bar{r}_{\pi} rˉπ v ˉ π \bar{v}_{\pi} vˉπ分别是两个不同的目标函数,这两个函数满足下面这个等式,对其中一个函数做优化的时候,另外一个函数也会达到极值。

在这里插入图片描述

三、目标函数的梯度计算

本节的任务是,给定目标函数,计算其梯度。梯度求解结果如下:
在这里插入图片描述
下面对梯度求解结果进行分析。如下图所示,求解结果可以把求和符号全都去掉,改成expectation的形式。其中,S、A是随机变量,S满足 η \eta η的分布,A满足 π ( A ∣ S , \pi(A|S, π(AS,theta ) ) )的分布。下面就可以用这个expectation形式的梯度去做优化。
在这里插入图片描述
下图给出了上面等式的证明过程。
在这里插入图片描述
在这里插入图片描述
上面公式中有一个 l n π ( a ∣ s , θ ) ln \pi(a|s,\theta) l(as,θ),对数的存在要求 π ( a ∣ s , θ ) \pi(a|s,\theta) π(as,θ)一定要大于0。因此使用softmax函数将向量归一化,这样就不会存在负值的情况了。引入softmax后, π ( a ∣ s , θ ) \pi(a|s,\theta) π(as,θ)可以写成如下图所示的形式,其中 h ( s , a , θ ) h(s,a,\theta) h(s,a,θ)是另外一个函数,这个函数通常是一个神经网络。
在这里插入图片描述
用神经网络来实现时,输入的参数是状态 s s s,输出的结果是 π ( a 1 ∣ s , θ ) \pi(a_1|s,\theta) π(a1s,θ) π ( a n ∣ s , θ ) \pi(a_n|s,\theta) π(ans,θ)
在这里插入图片描述

四、梯度上升算法和REINFORCE

梯度上升方法的计算公式如下图所示,公式中有一个期望,这就涉及到一些分布的信息,这些信息我们是不知道的,所以无法求出,因此使用随机梯度上升来代替真实的梯度。
在这里插入图片描述
不过,在上面这个式子中, q π ( s t , a t ) q_{\pi}(s_t,a_t) qπ(st,at)也是不知道的。所以对其进行近似/采样,把 q π ( s t , a t ) q_{\pi}(s_t,a_t) qπ(st,at)换成 q t ( s t , a t ) q_{t}(s_t,a_t) qt(st,at)
第一种方法是基于蒙特卡洛的方法,要估计 q t ( s t , a t ) q_{t}(s_t,a_t) qt(st,at),那么就从(s,a)出发,收集一个episode的return,把这个return用来近似 q t ( s t , a t ) q_{t}(s_t,a_t) qt(st,at)。这个方法叫REINFORCE,后面会详细讲。
第二种方法是TD的方法,下节课会详细讲。
在这里插入图片描述
下面补充 几个说明:
1.如何去做采样?
梯度公式中涉及的随机变量是S和A,所以对S和A进行采样。
如何采样S? S服从分布d,这个分布本来是经过很长的时间,达到平稳状态,再去用这个数据。但是在实际使用中,一般不太考虑,因为耗费的时间有点长。
如何采样A? A服从分布 π ( A ∣ S , θ ) \pi(A|S,\theta) π(AS,θ)。所以,应当根据当前的策略 π \pi π去采样。
在这里插入图片描述

2.如何去理解这个算法?
梯度上升算法可以被改写成如下图所示的形式。这么一看呢,我们这个计算过程其实是在优化 π ( a t ∣ s t , θ t ) \pi(a_t|s_t,\theta_t) π(atst,θt)
在这里插入图片描述
β t > 0 \beta_t>0 βt>0的时候,选择 ( s t , a t ) (s_t,a_t) (st,at)的概率增加了;反之,选择 ( s t , a t ) (s_t,a_t) (st,at)的概率减小了。
在这里插入图片描述

β t > 0 \beta_t>0 βt>0的作用是能够在exploration和exploitation之间取得一个较好的平衡。
如果 q t ( s t , a t ) q_t(s_t,a_t) qt(st,at)的是比较大的,那么选择 ( s t , a t ) (s_t,a_t) (st,at)的概率会增大。算法倾向于提高已经比较好的动作的概率。(exploitation)
如果 π ( a t ∣ s t , θ t ) \pi(a_t|s_t,\theta_t) π(atst,θt)是比较小的,那么选择 ( s t , a t ) (s_t,a_t) (st,at)的概率会增大。算法倾向于对低概率的动作再探索探索。(exploration)
在这里插入图片描述

下面给出了REINFORCE算法。该算法是最早的,也是最简单的一个policy gradient算法。
在这里插入图片描述
这是reinforce的伪代码。
在这里插入图片描述


http://www.ppmy.cn/news/1573352.html

相关文章

云贝餐饮连锁V3独立版全开源+vue源码

一.介绍 云贝餐饮连锁V3独立版,作为一款全开源、全插件的源码部署系统,其在餐饮行业软件系统中独树一帜。该系统不仅功能全面,涵盖了餐饮连锁企业的日常运营、财务管理、库存管理、会员管理等多个方面,而且框架结构清晰&#xff…

《Ollama 与 DeepSeek 整合应用入门指南》一、二、三章

第一章:工具概述与核心价值 1.1 Ollama 技术解析 本地化部署优势:无需网络连接的数据隐私保护 跨平台架构设计:支持Windows/macOS/Linux全平台 模型管理引擎:自动化处理模型依赖与版本控制 1.2 DeepSeek 模型特性 多模态处理…

[代码调试]安装Text2Image(stable diffusion)模型环境的踩坑记录

文章目录 一、xFormers版本问题1、先确认下自己torch版本所对应的cuda版本2.安装对应版本(1) 到对应官网下载包本地安装(2)代码安装 二、attn_mask尺寸错误三、diffusers四、Huggingface 配置基于stable diffusion预训练模型的环境,记录踩坑记录 一、xFormers版本问…

springcloud集成gateway

本篇文章只介绍gateway模块的搭建步骤,并无gateway详细介绍 gateway详解请查看:SpringCloudGateway官方文档详解 前置处理 父模块中已指定版本 不知道如何选择版本看这篇: 手把手教你梳理springcloud与springboot与springcloudalibaba的版本…

AI角色扮演聊天前端SillyTavern

本文软件由网友 P家单推人 推荐 简介 什么是 SillyTavern ? SillyTavern 是一个可以安装在电脑(和安卓手机)上的用户界面,让您可以与文本生成的人工智能互动,并与您或社区创建的角色聊天/玩角色扮演游戏。 主要特点 …

React实现自定义图表(线状+柱状)

要使用 React 绘制一个结合线状图和柱状图的图表,你可以使用 react-chartjs-2 库,它是基于 Chart.js 的 React 封装。以下是一个示例代码,展示如何实现这个需求: 1. 安装依赖 首先,你需要安装 react-chartjs-2 和 ch…

Python HTTP 请求工具类 HttpUtils:简化 HTTP 请求的高效工具

在现代的 Web 开发和 API 集成中,HTTP 请求是最常见的操作之一。无论是获取数据、提交表单,还是与 RESTful API 交互,我们都需要频繁地发送 HTTP 请求。为了简化这些操作,提升代码的可读性和可维护性,我们可以使用一个高效的工具类——HttpUtils。本文将详细介绍 HttpUtil…

游戏引擎学习第112天

黑板:优化 今天的内容是关于优化的,主要讨论了如何在开发中提高代码的效率,尤其是当游戏的帧率出现问题时。优化并不总是要将代码做到最快,而是要确保代码足够高效,以避免性能问题。优化的过程是一个反复迭代的过程&a…