Policy-based Reinforcement learning
强化训练
这一章将介绍一种策略框架下的强化学习
一种基于策略的强化学习方法
强化学习作为一种先进的机器学习技术,在人工智能领域发挥着重要作用。本篇综述系统阐述了基于策略的强化学习方法及其在复杂智能体行为模拟中的应用。
其中,第1节重点分析了策略函数的设计与实现,探讨了如何通过优化策略参数来提升模型性能。
第2节深入讨论了状态价值函数的作用机制,明确了其在评估当前状态下累积收益方面的关键地位。
第3节详细阐述了基于策略的强化学习体系构建过程。其中,在3.1小节中,我们重点介绍了策略优化的核心理念;而在3.2小节里,则系统分析了计算策略梯度的具体方法。
四、归纳与回顾
该资源为一项重要的基础性支持项目,旨在通过系统性的研究推动相关技术的发展;本项目的主要目标是探索...
简单来说,这是我做的一个学习笔记,课程链接在这里。
最容易理解的强化学习课程
公众号:AI相关内容

一、政策函数
为了深入探讨这一核心概念,我们将系统性地分析Action-Value Functions:

我们将其表示为π(a|s),该函数能够自动生成对agent行为的指导。策略函数接收当前系统的状态信息s作为输入,并将之转化为对应的动作空间中的一个概率分布。通过对每个可能的动作a赋些建立相应的概率权重,这些权重被用来生成一个符合策略的行动选择。这样,即使存在多个可能的动作选项,系统也会根据预先设定的概率分布进行随机抽样以确定最终采取哪一个动作。由于各个动作对应的概率权重不同,在多次运行中,高概率值的动作将更频繁地被选中作为执行目标。
一旦拥有一个优秀策略函数π,就能通过该π实现agent的自动控制;如何获取或建立这一策略函数呢?
在这种情况下,如果一个游戏仅有5种基本动作和10个可能的状态,这种情况下问题就变得简单明了。我们可以构建一个5×10的表格,在这个表格中每个单元格都对应着特定的概率数值。通过实际游戏体验和计算,我们能够得出这些概率数值的具体数值。然而像《超级玛丽》这样的复杂游戏拥有无限的状态数量,这使得为每一个状态和每一个动作预先设定概率变得不可能。因此,要让智能体(agent)能够自动进行《超级玛丽》之类的游戏,就需要建立一个动态的、适应性强的策略模型而不是依赖于预设的概率表格。
因此我获得函数近似学会一个函数以模拟策略函数采用多种方法进行函数近似其中最为常用的方式包括使用线性模型以及神经网络等技术若选用神经网络则可将其定义为Policy network并表示为π(a|s;θ)其中θ代表神经网络的参数初始值待初始化后通过训练过程不断优化这些参数以提升策略效果在具体场景如Super玛丽问题中可以将这一过程应用到神经网络设计当中

考虑到该策略函数π被定义为一个概率密度函数,因此,π必须满足以下条件:为了确保其有效性,该函数必须满足归一化条件。

这是什么意思呢?具体含义是对于任意动作a,π函数的所有输出之和必须等于1。这也是为什么要在输出层应用softmax激活函数的原因,因为softmax不仅能确保所有输出均为正值,而且它们的总和精确为1。
二、状态值函数
首先,我们探讨了状态价值函数(state value function)并对其进行了函数逼近处理。在回顾DR的过程中,我们深入分析了其核心机制及其在强化学习中的应用前景。

折扣回报 U_t 的定义自时间步t起累积计算未来所有奖励的加权总和。在当前时刻t之后的奖励尚未被观察到,因此我们用大写字母表示各奖励变量。每个奖励的不确定性源于上一个时间步的动作与状态,其中动作的不确定性由策略函数\pi(.)决定;而状态函数的分布则基于状态转移方程p(.)。由于折扣回报 U_t 是各时间步奖励之和,其分布依赖于后续所有动作与状态的变化。

动作价值函数Qπ等于Ut的条件期望。这个期望将t+1时刻之后的状态和动作全部排除在外。仅取决于当前状态s_t和动作a_t。对不同的策略π,相应的Q_π也会不同。Q_π衡量了在状态s_t情况下采取动作a_t的效果和质量。
状态价值函数Vπ是衡量策略π在状态s下累积奖励期望的指标。为了获得状态价值函数Vπ,需要从Qπ中消除动作变量A的概率积分影响。假设动作空间中的每个动作A都被视为一个随机变量,并遵循策略π所定义的先验分布,通过计算其概率积分即可消去对动作的选择依赖。基于策略π的评估标准,Vπ量化了状态s的优势程度,具体表现为在该状态下采取最优策略所能获得的最大期望累积奖励值。值得注意的是,当给定不同的策略π时,Vπ会随之发生变化,并且其数值大小直接反映了相应策略下状态s的重要性和潜在收益水平。
当A为离散变量时,Qπ的期望可以按照以下公式进行展开:

对于每一个动作a,对概率密度函数与Qπ的内积进行累加运算,则A值将会被消掉。若a为一个连续型变量,则需改用积分方式取代离散求和的过程。
三、基于策略的强化学习:全面解析理论与应用
下面我们讲ploicy-based reinforcement learning(策略学习)
刚才我们用神经网络近似了策略函数π,现在,我们用神经网络来近似Vπ:
我们知道π的近似函数可以写成:

具体来说,我们在Vπ中将变量π替换成一个神经网络结构,这使得Vπ转化为基于输入状态St和参数θ的函数表达式V(St;θ),其中θ代表该神经网络所包含的权重参数。
3.1 策略学习的核心理念
在最近的分析中,我们采用了策略网络模型作为对策略函数进行近似的手段。这使得状态价值函数从而能够表示为:

V可以衡量状态s和策略网络的性能指标,给定状态s时,策略网络性能越优,则对应的v值越高;为了使该值持续提升,请优化模型参数θ以增强其表现。
通过这一思路,我们可以将目标函数设定为V(s;θ)的期望值,并用符号J(θ)表示;在这里,我们假设s是一个随机变量,并利用期望来消除其对问题的影响。这样一来,问题就仅与策略参数θ相关。而目标函数J(θ)则衡量了整个策略网络的表现,当策略网络越优时,J(θ)的值也越大。因此,政策基于学习的目标是通过不断更新参数θ来提升整体策略的效果。
该方法基于策略梯度算法(policy gradient ascent),以玩特定游戏为目标,每个动作后会获取到当前的游戏状态s。其中s是依据相应概率分布的采样子得出的状态值。θ参数采用以下方程进行更新:

我们采用梯度上升算法来更新θ参数,在这个过程中,β被定义为学习率。需要注意的是,尽管V(s;θ)对θ的偏导数看似是梯度,但真正的策略梯度却是J(θ)关于θ的真实梯度。在这里,V(s;θ)对θ的计算结果只是一个随机梯度,其不确定因素源于状态s的选择。那么为什么要选择梯度上升呢?这是因为我们需要使J(θ)持续增长,并且在实际应用中,我们通常取J(θ)/dθ的倒数作为策略梯度来更新参数。特别地,在本模型中,V(s;θ)对θ的一阶导数被定义为策略梯度,即policy gradient。

在策略优化过程中,系统性地分析并计算策略梯度的具体实现路径,通常需要通过逐步推导和深入探讨其数学表达式,以确保算法的有效性和稳定性。
在本次讲解中,我们将探讨如何实现policy gradient。由于:

因此,对V(s;θ)而言,其关于θ的变化率为:

我们将Qπ视为一个常量,并误以为它与θ无关。然而这一观点并不正确,因为Qπ实际上与π存在关联,而θ作为π的参数,则直接与其相关联。因此它们之间存在一定的关联性,这种推论虽然不够严谨但确有助于我们较为轻松地理解和掌握其中的核心逻辑。
最终我们能够得到下列公式:

可能会有好奇的是第二行公式如何得出的?通过从后往前推导,则可得到。

我们已经得出了策略梯度的两个表示方式,其等价性已经被证实。

有了上述两个公式,我们就可以基于这些数学表达式来实现对策略梯度的计算。

当动作序列是分立的行为时,我们可用第一个公式来计算:...。

具体是怎么计算策略梯度呢?
将π(a|s;θ)关于θ的倒数与Qπ进行乘积运算后所得结果定义为函数f(a,θ),即对每一个动作a而言,我们只需计算相应的函数值即可完成任务。

基于下面所示的公式,针对离散动作空间中的策略梯度计算,我们可以通过逐一计算每个动作a对应的函数值f(a,θ),然后将这些数值累加求得总和即可。然而,这一方法并不适用于连续动作场景。对于连续动作系统,则可以采用如下所述的第二种公式进行处理:...

在其中,我们可以观察到对于随机变量A的期望值,由于它是连续型随机变量,计算其期望时需要使用定积分的方法。然而,这样的积分难以直接求解,原因在于我们所使用的π函数本质上是一个高度复杂的神经网络模型,因此无法通过传统的数学解析方法来计算其具体数值。
这里就需要做蒙特卡洛近似,将其近似算出来:




我们已通过理论推导出策略梯度方法,并掌握了如何运用策略梯度来训练策略网络。接下来我们将对上述内容进行总结。

-
在时间步长t时观察到状态变量s_t的值。
-
通过蒙特卡洛近似策略梯度方法从概率密度函数π中随机采样得到一个动作a_t。例如,假设该动作为向左的动作。
-
计算对应的价值函数Q_π(s,t)并将其评估结果记录为q_t。
-
对策略网络参数θ进行梯度计算以获取log(π(a|s;θ))相对于θ的导数值。该导数结果表现为一个与θ具有相同维度性的向量、矩阵或张量。
-
通过蒙特卡洛方法估计得到近似的策略梯度值。
-
最终,利用计算出的近似策略梯度对网络参数θ进行优化更新。

四、总结
期待与大家一起进步!通过留言或私聊,分享你的见解吧!让我们共同学习、共同成长!希望大家都能够关注我们的公众号《AI那些事》,您的支持与鼓励是我们最大的动力!

