不等式视角下的策略梯度算法
本文首发于:行者AI
强化学习(Reinforcement Learning,RL),也叫增强学习,是指一类从(与环境)交互中不断学习的问题以及解决这类问题的方法。强化学习问题可以描述为一个智能体从与环境的交互中不断学习以完成特定目标(比如取得最大奖励值)。 和深度学习类似,强化学习中的关键问题也是贡献度分配问题[1],每一个动作并不能直接得到监督信息,需要通过整个模型的最终监督信息(奖励)得到,并且有一定的延时性。
本文首先通过简介强化学习基于策略函数的学习方法引出策略梯度,接着通过一般化的公式推论得到策略梯度的最优表达式,最后在排序不等式的视角下解读策略梯度的最优表达式。主要概括为以下两个部分:
- 策略梯度的最优表达式推导
- 排序不等式下的策略梯度
1. 策略梯度
智能体的策略(Policy)就是智能体如何根据环境状态 ? 来决定下一步的动作 ?,通常可以分为确定性策略(Deterministic Policy)和随机性策略(Stochastic Policy)两种:
-
确定性策略是从状态空间到动作空间的映射函数:
π:S→A -
随机性策略表示在给定环境状态时,智能体选择某个动作的概率分布:
π(a∣s)≜\sum_{a \in \mathcal{A}} \pi(a \mid s)=1
通常情况下,强化学习一般使用随机性策略。随机性策略可以有很多优点:一是在学习时可以通过引入一定随机性更好地探索环境;二是随机性策略的动作具有多样性,这一点在多个智能体博弈时也非常重要。采用确定性策略的智能体总是对同样的环境做出相同的动作,会导致它的策略很容易被对手预测。
一般来讲,基于值函数的学习方法本质是一种确定性策略;而学习一个策略\pi_{\theta}(a \mid s)来最大化期望回报的方法本质是一种随机性策略。这种方法也称为策略搜索(Policy Search)。策略搜索本质是一个优化问题,可以分为基于梯度优化和无梯度优化。策略搜索和基于值函数的方法相比,策略搜索可以不需要值函数,直接优化策略。参数化的策略能够处理连续状态和动作,可以直接学出随机性策略。
策略梯度(Policy Gradient)就是一种基于梯度优化的强化学习方法。假设\pi_{\theta}(a \mid s)是一个关于\theta的连续可微函数,我们可以用梯度上升的方法来优化参数\theta使得目标函数\mathcal{J}(\theta)最大。
目标函数\mathcal{J}(\theta)关于策略参数\theta的导数为:
其中\frac{\partial}{\partial \theta} \log p_{\theta}(\tau)为函数\log p_{\theta}(\tau)关于\theta的偏导数。从最终的式子中可以看出,参数\theta优化的方向是使得总回报G(\tau)越大的轨迹\tau的概率p_{\theta}(\tau)也越大。
其中,\frac{\partial}{\partial \theta} \log p_{\theta}(\tau)可以进一步分解为:
可以看出,\frac{\partial}{\partial \theta} \log p_{\theta}(\tau)和状态转移概率无关,只和策略函数相关。
因此,策略梯度\frac{\partial \partial(\theta)}{\partial \theta}可以简写为:
其中,\tau为策略序列,简单理解为状态和动作的上下文序列;\tau满足参数\theta下的状态转移概率;G(\tau)是在策略\tau下的总回报。
2. 排序不等式下的策略梯度
排序不等式是数学上的一种不等式。它可以推导出很多有名的不等式,例如:算术几何平均不等式(简称算几不等式)、柯西不等式、切比雪夫总和不等式。排序不等式(sequence inequality,又称排序原理)是高中数学竞赛大纲、新课标普通高中课程标准试验教科书(人民教育出版社)数学(选修4-5第三讲第三节)要求的基本不等式。[2]
排序不等式内容为:排序不等式表述如下,设有两组数a 1, a 2, \ldots \cdots \cdot a_{n}和\mathrm{b}_{1}, \mathrm{b}_{2}, \ldots \ldots \mathrm{b}_{n},满足a_{1} \leq a_{2} \leq \ldots \ldots \leq a_{n},b_{1} \leq b_{2} \leq \ldots \ldots \leq b_{n},c_{1} \leq c_{2} \leq \ldots \ldots \leq c_{n}是\mathrm{b}_{1}, \mathrm{b}_{2}, \ldots \ldots \mathrm{b}_{n}的乱序排列,则有\left(a_{1} b_{n}+a_{2} b_{n-1}+\ldots \ldots+a_{n} b_{1} \leq a_{1} c_{1}+a_{2} c_{2}+\ldots \ldots+a_{n} c_{n} \leq a_{1} b_{1}+a_{2} b_{2}+\ldots \ldots+a_{n} b_{n}\right.,
当且仅当a_{1}=a_{2}=\ldots \ldots=a_{n}或b_{1}=b_{2}=\ldots \ldots=b_{n}时等号成立。
一般为了便于记忆,常记为:反序积和 ≤ 乱序积和 ≤ 顺序积和。(证明过程见参考[2])
因此,对于策略梯度\frac{\partial \partial(\theta)}{\partial \theta}:
函数\log p_{\theta}(\tau)关于\theta的偏导数\frac{\partial}{\partial \theta} \log p_{\theta}(\tau)是长度为len(\tau)(表示策略\tau的长度)的序列,同时G(\tau)也是同长度的序列。对于强化学习来讲,是要最大化策略梯度用以最大化回报。
那么对于\frac{\partial}{\partial \theta} \log p_{\theta}(\tau)和G(\tau)这两个序列的加权积和,何时才是最大的呢?根据排序不等式可得:当\frac{\partial}{\partial \theta} \log p_{\theta}(\tau)和G(\tau)同序时,策略梯度最大。 同序意味着:如果当前时刻策略网络\pi_{\theta}\left(a_{t} \mid s_{t}\right)的最大概率输出动作为a_{t},那么当前动作a_{t}同时能获得最大回报G(\tau[t])。这符合我们对于策略网络的期望,即我们希望策略网络输出的action每时刻都能使我们设置的reward最大。
3. 参考
PS:更多技术干货,快关注【公众号 | xingzhe_ai】,与行者一起讨论吧!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端