Actor-Critic的理解1——摘要和引言

文章目录

一、前言

仅供参考,未经实验验证。

二、Actor-Critic算法

论文标题: Actor-Critic Algorithms

作者: Vijay R. Konda 和 John N. Tsitsiklis

机构: 麻省理工学院(MIT)信息与决策系统实验室

论文地址https://proceedings.neurips.cc/paper_files/paper/1999/file/6449f44a102fde848669bdd9eb6b76fa-Paper.pdf

发表: NeurIPS 1999 (Advances in Neural Information Processing Systems 12)

这篇论文是强化学习领域的奠基性经典工作:


核心内容总结

这篇论文首次系统性地提出了 Actor-Critic(演员-评论家)算法框架 ,将强化学习中两类传统方法------值函数方法(Value-Based)策略梯度方法(Policy Gradient)------进行了有机融合。

1. 核心思想

Actor-Critic 架构包含两个协同工作的组件:

  • Actor(演员/策略网络) :直接参数化策略 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(a∣s),负责决策"做什么"
  • Critic(评论家/值函数网络) :估计值函数 V ( s ) V(s) V(s) 或 Q ( s , a ) Q(s,a) Q(s,a),负责评估"做得怎么样"

Critic 通过学习值函数,为 Actor 的策略梯度提供一个低方差的基准(baseline),从而解决纯策略梯度方法(如 REINFORCE)梯度估计方差过高的问题。

2. 主要贡献
  • 理论收敛性证明 :论文首次在随机逼近(Stochastic Approximation)框架下,证明了 Actor-Critic 算法的渐近收敛性。这是当时策略梯度类方法中最早的严格理论保证之一。
  • 双时间尺度(Two-Timescale)更新:提出 Actor 和 Critic 以不同学习率(步长)更新的机制------Critic 以较快速率收敛,Actor 以较慢速率更新,两者形成"领导者-追随者"的动态。
  • 方差缩减:利用 Critic 估计的优势函数(Advantage Function)替代原始回报,显著降低策略梯度估计的方差。
3. 算法形式

论文考虑了多种具体实现变体:

  • 基于 Q 函数的 Actor-Critic :Critic 估计 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)
  • 基于优势函数的 Actor-Critic :利用 A ( s , a ) = Q ( s , a ) − V ( s ) A(s,a) = Q(s,a) - V(s) A(s,a)=Q(s,a)−V(s) 作为更稳定的基准
  • 兼容函数逼近(Compatible Function Approximation):讨论了 Actor 和 Critic 使用兼容的参数化形式时的收敛性质
4. 历史影响

这篇论文是现代深度强化学习中几乎所有 Actor-Critic 变体的理论源头,包括:

  • A3C / A2C (Mnih et al., 2016)
  • PPO (Schulman et al., 2017)
  • SAC (Haarnoja et al., 2018)
  • DDPG / TD3 (Lillicrap et al., 2015; Fujimoto et al., 2018)
  • TRPO (Schulman et al., 2015)
  • 以及你之前关注的 Flow-GRPO 等最新方法

可以说,Konda & Tsitsiklis (1999) 定义了 Actor-Critic 这一范式,后续二十多年的工作主要在此基础上扩展了函数逼近(神经网络)、离策略学习、熵正则化等技术。

摘要

We propose and analyze a class of actor-critic algorithms for simulation-based optimization of a Markov decision process over a parameterized family of randomized stationary policies. These are two-time-scale algorithms in which the critic uses TD learning with a linear approximation architecture and the actor is updated in an approximate gradient direction based on information provided by the critic. We show that the features for the critic should span a subspace prescribed by the choice of parameterization of the actor. We conclude by discussing convergence properties and some open problems.

我们提出并分析一类用于模拟优化马尔可夫决策过程(MDP)的Actor-Critic算法,该过程基于参数化的随机平稳策略族。这些算法采用双时间尺度结构,其中Critic使用带有线性近似架构的时序差分(TD)学习,而Actor则根据Critic提供的信息,沿近似梯度方向进行更新。我们证明,Critic的特征应当张成由Actor参数化选择所规定的一个子空间。最后,我们讨论了收敛性质和一些开放问题。

问题1:解释一下

1. 整体目标是干什么?(第一句)

"We propose... optimization of a Markov decision process over a parameterized family of randomized stationary policies."

  • 马尔可夫决策过程(MDP):就是强化学习解决问题的标准数学框架(状态、动作、奖励、转移概率)。
  • 参数化的随机平稳策略 :我们假设最优策略不是确定性的,而是带有随机性(按概率选动作),并且策略的形态由一组参数(比如神经网络的权重)来决定。"平稳"指策略只依赖当前状态,不依赖历史。
  • 仿真优化 :环境太复杂,没法直接求数学公式,只能通过模拟/采样(让智能体与环境互动)来试错寻优。

2. 算法的双时间尺度结构(第二句)

"These are two-time-scale algorithms..."

  • 双时间尺度 :指Actor和Critic的更新速度不一样。通常,Critic(评论家)更新更快 (比如每走一步更新一次),用来快速估计当前策略的好坏;Actor(行动者)更新较慢(比如收集多条轨迹后再更新),用来提升策略。这种"快慢结合"能保证算法在数学上更容易收敛。
  • Critic的具体做法 :使用时序差分(TD)学习 ,并且为了处理大规模状态空间,采用线性近似架构(即用一组"特征"的线性组合来近似价值函数,而不是查表)。
  • Actor的具体做法 :沿着近似梯度方向更新参数。这个"梯度"不是精确算出来的,而是由Critic估计的价值所引导的(即策略梯度定理的近似实现)。

3. 全文最核心的理论发现(第三句)

"We show that the features for the critic should span a subspace prescribed by the choice of parameterization of the actor."

  • 这句话是整段的技术灵魂。Critic在做线性近似时,需要选取一组特征(Features)(比如用来描述状态的一些数值向量)。
  • 作者证明了一个兼容性(Compatibility)条件 :Critic选取的这些特征,不能随意乱选 ,它们必须能够张成(Span)一个特定的子空间
  • 这个子空间由什么决定?完全由Actor的参数化方式(即策略函数的数学形式)决定
  • 通俗理解:Critic是用来指导Actor改进的。如果Critic选择的特征空间与Actor的能力范围不匹配,那么Critic给出的梯度方向就是"偏的",会导致Actor学歪。必须让Critic的"观测视角"覆盖Actor的"变化方向",算法才有效。

4. 文章的结尾部分(第四句)

"We conclude by discussing convergence properties and some open problems."

  • 文章最后会分析算法的收敛性(比如是否能保证找到局部最优策略,步长如何设置才能收敛)。
  • 同时指出未解决的开放问题(比如当环境是非稳态的,或者采用非线性神经网络做近似时,该结论是否依然成立等),为后续研究留出空间。

一句话总结全文核心思想

本文提出了一种Actor-Critic算法,其中Critic用线性TD学习做价值评估,Actor用近似梯度做策略提升;关键贡献在于从数学上指明了Critic的特征设计必须严格匹配Actor的策略参数化结构,最后简单探讨了该算法的收敛保证与未来挑战。

1 引言

The vast majority of Reinforcement Learning (RL) 9 and Neuro-Dynamic Programming (NDP) 1 methods fall into one of the following two categories:

绝大多数强化学习(RL)9 和神经动力学规划(NDP)1 方法属于以下两类之一:

  • (a) Actor-only methods work with a parameterized family of policies. The gradient of the performance, with respect to the actor parameters, is directly estimated by simulation, and the parameters are updated in a direction of improvement 4, 5, 8, 13. A possible drawback of such methods is that the gradient estimators may have a large variance. Furthermore, as the policy changes, a new gradient is estimated independently of past estimates. Hence, there is no "learning," in the sense of accumulation and consolidation of older information.

    (a)仅行动者(Actor-only)方法适用于参数化的策略族。性能指标关于行动者参数的梯度通过仿真直接进行估计,并按照性能改善的方向来更新参数4, 5, 8, 13。这类方法的一个潜在缺点是梯度估计器可能具有较大的方差。此外,随着策略的改变,每次新梯度的估计都是独立于先前估计结果进行的。因此,从积累和巩固旧信息的意义上来说,这里并不存在真正的"学习"过程。

  • (b) Critic-only methods rely exclusively on value function approximation and aim at learning an approximate solution to the Bellman equation, which will then hopefully prescribe a near-optimal policy. Such methods are indirect in the sense that they do not try to optimize directly over a policy space. A method of this type may succeed in constructing a "good" approximation of the value function, yet lack reliable guarantees in terms of near-optimality of the resulting policy.

    (b)仅评论家(Critic-only)方法完全依赖于值函数近似,其目标是学习贝尔曼方程的近似解,并期望由此得出一个近似最优的策略。这类方法的间接性体现在,它们并不直接在策略空间上进行优化。这类方法或许能成功构造出值函数的"良好"近似,但在最终所得策略的近似最优性方面,却缺乏可靠的保障。

Actor-critic methods aim at combining the strong points of actor-only and critic-only methods. The critic uses an approximation architecture and simulation to learn a value function, which is then used to update the actor's policy parameters in a direction of performance improvement. Such methods, as long as they are gradient-based, may have desirable convergence properties, in contrast to critic-only methods for which convergence is guaranteed in very limited settings. They hold the promise of delivering faster convergence (due to variance reduction), when compared to actor-only methods. On the other hand, theoretical understanding of actor-critic methods has been limited to the case of lookup table representations of policies 6.

行动者-评论家(Actor-Critic)方法旨在结合仅行动者(Actor-only)和仅评论家(Critic-only)方法的优点。评论家利用近似架构和仿真来学习值函数,然后依据该值函数,在性能改善的方向上更新行动者的策略参数。这类方法,只要是基于梯度的,就可能具备理想的收敛性质,这与仅评论家方法形成对比------后者仅在非常有限的情形下才能保证收敛。与仅行动者方法相比,它们有望实现更快的收敛(得益于方差的降低)。另一方面,对行动者-评论家方法的理论理解,目前仍局限于策略采用查表表示的情形6

In this paper, we propose some actor-critic algorithms and provide an overview of a convergence proof. The algorithms are based on an important observation. Since the number of parameters that the actor has to update is relatively small (compared to the number of states), the critic need not attempt to compute or approximate the exact value function, which is a high-dimensional object. In fact, we show that the critic should ideally compute a certain "projection" of the value function onto a low-dimensional subspace spanned by a set of "basis functions," that are completely determined by the parameterization of the actor. Finally, as the analysis in 11 suggests for TD algorithms, our algorithms can be extended to the case of arbitrary state and action spaces as long as certain ergodicity assumptions are satisfied.

本文提出了一类行动者-评论家(Actor-Critic)算法,并概述了其收敛性证明。这些算法基于一个重要的观察:由于行动者需要更新的参数数量相对较少(与状态数相比),评论家无需尝试计算或逼近精确的值函数------后者是一个高维对象。事实上,我们证明,评论家理想情况下应当计算值函数在某个低维子空间上的"投影",该子空间由一组"基函数"张成,而这些基函数完全由行动者的参数化方式所决定。最后,正如文献11中对时序差分(TD)算法的分析所示,只要满足一定的遍历性假设,我们的算法可以推广到任意的状态空间和动作空间。

We close this section by noting that ideas similar to ours have been presented in the simultaneous and independent work of Sutton et al. 10.

本节最后要指出,Sutton 等人 10 在同期的独立研究中,也提出了与我们相近的思路。

问题1:解释一下

这段文字是一篇经典学术论文(很可能是Konda & Tsitsiklis 的 Actor-Critic 论文)的引言或摘要部分。它清晰地梳理了强化学习算法的演进逻辑,并亮出了本文的核心创新点。

为了让你透彻理解,我把这段内容拆解为**"背景痛点" "现有方案的挣扎""本文的创新解"**三个层次,并结合你之前问到的"特征匹配"问题,把逻辑串起来:


第一层:背景------两类传统方法都有"硬伤"(对应 a 和 b)

文章开头把强化学习方法分为两类,并指出它们各自的致命缺点:

  • Actor-only(仅行动者):直接调策略参数。

    • 优点:直接,要的就是策略。
    • 痛点① 方差大:梯度靠仿真采样估算,随机性大,导致更新方向忽左忽右。
    • 痛点② 无记忆/无学习 :每次策略变了,梯度就重新算,完全不利用之前算过的梯度信息。所以它不算是真正的"积累经验",只是"重复采样计算"。
  • Critic-only(仅评论家):只死磕值函数(V或Q),期望算准了贝尔曼方程,自然能得到好策略。

    • 优点:善于利用历史数据(TD学习有记忆)。
    • 痛点③ 间接且无保障:即使你把值函数算得很准,由此"贪心"推出的策略可能依然很差(贝尔曼误差小 ≠ 策略最优)。而且这类算法在数学上很难保证收敛,仅限于极特殊情况。

第二层:现有的 Actor-Critic 想"杂交",但有局限(对应过渡段)

为了取长补短,大家想到用 Actor-Critic

  • Critic 负责评估当前策略(降低方差,利用历史数据)。
  • Actor 根据 Critic 的评分去改进策略(直接优化)。
  • 优点:相比 Actor-only,方差降低,收敛更快;相比 Critic-only,只要基于梯度,就有更好的收敛性保证。
  • 痛点④ 理论跟不上实践 :现有的理论证明只限于查表(Lookup table)这种简单情况。一旦涉及大规模状态下的函数近似(线性/非线性),数学上很难证明它能收敛。

第三层:本文的核心突破------如何解决"函数近似下的收敛难题"(对应 In this paper)

这是整段文章的灵魂,也是你之前问题的终极答案。

1. 一个关键观察(出发点)

"Actor 需要更新的参数数量相对较少(与状态数相比)。"

  • 意思是在连续控制或大规模任务中,状态空间可能有几百万个,但策略网络(Actor)的权重参数往往只有几百几千个。
  • 既然 Actor 只在一个低维参数空间里游走,Critic 凭什么要去计算那个高维的、精确的、巨大的值函数(V或Q)?那太浪费且容易过拟合了。

2. 核心结论(回应你之前"特征必须张成子空间"的问题)

"Critic 理想情况下应当计算值函数在某个低维子空间上的'投影',该子空间由一组'基函数'张成,而这些基函数完全由行动者的参数化方式所决定。"

  • 通俗解释 :Critic 不需要是一个全能的"上帝",不需要精确算出值函数是多少。它只需要算出值函数在特定方向上的分量。
  • 这个"特定方向"是什么?就是 Actor 参数发生变化时,策略改变的方向(即 Score function 张成的空间)
  • 为什么必须这么做? 因为 Critic 计算投影时的残差(误差),天然垂直于这个低维子空间(线性代数投影性质)。而 Actor 的更新恰好也在这个子空间内移动。因此,Critic 的近似误差完全不影响 Actor 的梯度方向(无偏性得到保证)。这就是你之前问的"为什么特征必须严格匹配"------不匹配,Critic 的误差就会污染 Actor 的更新,导致算法不收敛。

3. 推广性

"只要满足遍历性(Ergodicity),可推广到任意状态和动作空间。"

  • 这个条件在工程上通常意味着:只要智能体在环境中探索得足够充分,所有状态都能被访问到,这个收敛证明就能成立。

4. 谦逊的结尾(学术礼仪)

"Sutton 等人同期独立提出了类似想法。"

  • 表明这不是唯一发现,但强调是"独立"提出,以示尊重和学术严谨性。

把全文串成一条逻辑链(总结)

  1. 旧问题:Actor-only 方差大没记忆,Critic-only 算得准但策略烂且不收敛。
  2. 旧方案(AC):结合二者,但理论只限于查表,没法应用于带近似的复杂环境。
  3. 本文新方案 :不让 Critic 瞎算高维值函数,而是强制要求 Critic 的特征空间与 Actor 的梯度空间完全一致 (即投影到低维子空间)。这样一来:
    • Critic 维度低、好训练(只学几个基函数的权重)。
    • 保证了 Critic 的误差不会误导 Actor(无偏梯度)。
    • 首次在大规模函数近似场景下,给出了收敛性的理论概览。

一句话记住全文 :要让 AC 算法在大规模问题上稳如泰山,Critic 的设计必须"看人下菜碟"------长什么样(特征)完全取决于 Actor 怎么动(参数化),这样才能把高维值函数缩成低维投影,保证数学上的收敛。

问题2:通俗解释

你是一个外卖骑手,目标是学出一条最快的送餐路线。

  • 骑手(Actor) :负责在每个路口决定左转还是右转。他脑子里有若干个"旋钮"(参数 θ \theta θ),通过拧这些旋钮来改变自己的转弯偏好。
  • 导航员(Critic):负责给每个路口、每个可能的转弯动作打分(Q值),告诉骑手"这个转弯值多少分"。

关键约束

导航员眼睛看到的和骑手完全一样------堵车、红绿灯、坡度,一个不落。但是,导航员处理这些信息的方式被严格限制:它的打分算法必须长得和骑手"拧旋钮对转弯概率的影响"一模一样

这样做的好处是:无论导航员打分准不准,它的打分误差都不会把骑手的旋钮往错误的方向带(数学上叫"梯度无偏")。导航员只用一个低维的、跟骑手旋钮结构绑定的小本子来记录经验,而不是去画一张全市的超级大地图。这样既学得快,又不会指错路。

问题3:价值函数的设计维度

价值函数的设计维度是不是只考虑影响动作的因素,而不用考虑所有环境因素?

不是"不看某些因素",而是"用一套低维的数学基底去表达所有看到的信息"。

  • Critic 的输入 依然是完整的:状态 s s s 里有什么它就接收什么(位置、堵车、坡度等)。
  • 但 Critic 的内部表达被限制在一个很小的线性空间里,这个空间的"基向量"数量等于或略多于 Actor 参数的数量。
  • 这些基向量不是随便选的,它们就是 "动作概率对 Actor 参数的导数"(得分函数)在当前状态-动作下的值。

这意味着:Critic 把所有复杂的输入,投影到"对 Actor 参数敏感"那几个方向上。那些对动作选择毫无影响的环境因素,在这些基上的投影几乎为零,自动就被忽略了。所以,"降维"降的是表达空间的维度,不是输入信息的维度。

问题4:价值函数的降维是怎么做到的呢

这种简化具体是怎么实现的?如果堵塞比坡度重要得多,算法怎么自动抓住它?

1. Critic 的结构

Critic 是一个线性函数逼近器:

Q ( s , a ) = w 1 ψ 1 ( s , a ) + w 2 ψ 2 ( s , a ) + ⋯ + w n ψ n ( s , a ) Q(s,a) = w_1 \psi_1(s,a) + w_2 \psi_2(s,a) + \dots + w_n \psi_n(s,a) Q(s,a)=w1ψ1(s,a)+w2ψ2(s,a)+⋯+wnψn(s,a)

其中 w 1 ... w n w_1\dots w_n w1...wn 是 Critic 要学习的权重,有多少个 Actor 参数,就有多少个 w w w (最少情况)。

ψ 1 ... ψ n \psi_1\dots\psi_n ψ1...ψn 就是特征函数,它们被强制设定为 Actor 的得分函数分量

ψ i ( s , a ) = ∂ log ⁡ π θ ( a ∣ s ) ∂ θ i \psi_i(s,a) = \frac{\partial \log \pi_\theta(a|s)}{\partial \theta_i} ψi(s,a)=∂θi∂logπθ(a∣s)

所以 Critic 的输入是 ( s , a ) (s,a) (s,a),它自己会计算这个 ψ \psi ψ 向量。

2. 堵塞为什么会被自动抓住?

在严重堵车的路口,骑手对"左转"非常敏感:你稍微拧一下旋钮,左转概率就剧烈变化。因此,那个得分函数 ψ \psi ψ 的某些分量会变得非常大

学习时,Critic 用自己的权重 w w w 去拟合真实的 Q 值。如果因为堵车导致左转的真实价值极低,算法会通过 TD 误差把对应的 w w w 分量大幅调低(甚至变成负数)。由于那个状态下的 ψ \psi ψ 值很大, w w w 的微小调整就能让 Q = w T ψ Q = w^T \psi Q=wTψ 剧烈下降,从而给 Actor 一个强烈的"别左转"信号。

坡度 如果对动作概率影响很小,它的 ψ \psi ψ 分量就很小, w w w 的调整对它生成的 Q 值几乎没影响。堵塞不是被"人为设定权重大",而是通过得分函数的大数值自动放大了 Critic 对该因素的表达力度。

Critic 的权重向量 w w w 的维度等于特征数量(也就是 Actor 参数数量,在最小兼容设置下)。每个权重分量是可以独立调整的。

所以,算法完全可以做到:把跟堵车强相关的那个 ψ i \psi_i ψi 对应的权重 w i w_i wi 调得很负,而把跟坡度相关的另一个权重 w j w_j wj 保持原样。不存在"整体杠杆"的无奈。

唯一需要注意的是:这些 ψ i \psi_i ψi 不是"堵塞指标",而是"对参数 θ i \theta_i θi 的敏感度"。堵塞会同时影响多个 ψ i \psi_i ψi ,但那些受影响大的 ψ \psi ψ 分量,其对应的权重就会被 TD 误差更新得更剧烈。结果就是,Critic 学会了在堵塞状态下输出低分,在通畅状态下输出高分,完全靠对权重向量的逐分量学习,不需要任何人预先指定堵塞的权重。

问题5:Critic 是不是神经网络?

听起来像是Critic是个神经网络,它的每个输入权重对应一个影响因素,然后神经网络最后会输出动作概率,神经网络要学习的是,如何设置权重才能使得输出的动作概率跟奖励是一致的方向

你的猜测:Critic 像个神经网络,输入是各种因素,输出动作概率,学习让概率对齐奖励。

正确纠正(三个角色澄清)

  1. 输出动作概率的是 Actor,不是 Critic。 Critic 只输出一个数值------Q 值(或 V 值),是一个打分器。
  2. Critic 不是通用神经网络。 在本文的设定下,它是线性函数逼近器,且基函数被锁死为 Actor 的得分函数。不是随便哪一层权重都独立。
  3. Critic 的学习目标是让 Q 值逼近真实回报,而不是直接让概率对齐奖励。让概率对齐奖励是 Actor 的事,Actor 用 Critic 给出的 Q 值来更新自己的参数,从而间接把概率推向高回报方向。

所以正确的流程是:

  • Actor 输出概率 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(a∣s)。
  • Critic 用状态 s s s 和动作 a a a 计算特征 ψ θ ( s , a ) \psi_\theta(s,a) ψθ(s,a),然后用学好的权重 w w w 打出分数 Q ( s , a ) = w T ψ θ ( s , a ) Q(s,a) = w^T \psi_\theta(s,a) Q(s,a)=wTψθ(s,a)。
  • Actor 更新参数: θ ← θ + β   Q ( s , a )   ψ θ ( s , a ) \theta \leftarrow \theta + \beta\, Q(s,a)\, \psi_\theta(s,a) θ←θ+βQ(s,a)ψθ(s,a)(在代价最小化时可能是负号)。
  • 如果 Critic 打分准确,Actor 就会朝着"高分动作"方向调整概率。

问题6:Actor 的"概率对参数的导数"怎么理解?

它就是一个灵敏度向量

如果 Actor 有 n n n 个旋钮 θ 1 , ... , θ n \theta_1,\dots,\theta_n θ1,...,θn,在某个状态 s s s 下选择动作 a a a,我们就计算:

ψ i ( s , a ) = ∂ log ⁡ π θ ( a ∣ s ) ∂ θ i \psi_i(s,a) = \frac{\partial \log \pi_\theta(a|s)}{\partial \theta_i} ψi(s,a)=∂θi∂logπθ(a∣s)

这告诉我们:把旋钮 θ i \theta_i θi 轻轻拧一下,选 a a a 的对数概率会变多少

整个向量 ψ \psi ψ 就是"所有旋钮同时拧"的效果方向。

为什么用它当 Critic 的特征?

因为 Actor 自己的更新公式里就用它:

Δ θ ∝ Q ( s , a ) ⋅ ψ ( s , a ) \Delta\theta \propto Q(s,a) \cdot \psi(s,a) Δθ∝Q(s,a)⋅ψ(s,a)

如果 Critic 也用 ψ \psi ψ 作为基函数,那么 Critic 学出来的 w w w 就直接扮演 Q Q Q 的角色。整个系统的数学保证是:即使 Critic 学得不完美,更新方向也是无偏的(兼容函数逼近定理)。

问题7:完整故事

从开始到结束,一步一步发生什么?Critic 怎么知道敏感性?调整频率如何?

初始 :Actor 有参数 θ \theta θ(例如 2 个旋钮),Critic 有权重 w w w(也是 2 维,随机初始化),平均代价估计 λ = 0 \lambda=0 λ=0,资格迹 z = 0 z=0 z=0。

每一步的循环

  1. 观察状态 :环境给出当前状态 s s s(包含堵车、红绿灯等所有信息)。
  2. Actor 决策 :Actor 用自己的策略 π θ \pi_\theta πθ 计算各动作概率,采样一个动作 a a a(如左转)。同时,Actor 计算得分函数 ψ = ∇ θ log ⁡ π θ ( a ∣ s ) \psi = \nabla_\theta \log \pi_\theta(a|s) ψ=∇θlogπθ(a∣s)(一个 2 维向量,各分量可能就是 0.8, 3.5 这种)。
  3. Critic 打分 :Critic 接过同一个 ( s , a ) (s,a) (s,a),用和 Actor 一模一样的 ψ \psi ψ 函数 计算出特征向量(与步骤 2 的 ψ \psi ψ 完全相同),然后用当前的权重 w w w 算出 Q 值: Q = w T ψ Q = w^T \psi Q=wTψ。
  4. 执行动作,环境反馈 :骑手左转,环境给出单步代价 g g g(比如高延迟惩罚),并转移到新状态 s ′ s' s′。
  5. 下一动作采样 :Actor 根据 s ′ s' s′ 再采样一个 a ′ a' a′(用于下一阶段的 TD 目标),并计算 ψ ′ = ∇ θ log ⁡ π θ ( a ′ ∣ s ′ ) \psi' = \nabla_\theta \log \pi_\theta(a'|s') ψ′=∇θlogπθ(a′∣s′)。
  6. 计算 TD 误差
    δ = g − λ + w T ψ ′ − w T ψ \delta = g - \lambda + w^T \psi' - w^T \psi δ=g−λ+wTψ′−wTψ
  7. Critic 更新
    • 更新平均代价估计: λ ← λ + γ ⋅ ( g − λ ) \lambda \leftarrow \lambda + \gamma \cdot (g - \lambda) λ←λ+γ⋅(g−λ)
    • 更新资格迹(根据 TD( α \alpha α) 方式,例如 z ← α z + ψ ′ z \leftarrow \alpha z + \psi' z←αz+ψ′)
    • 更新权重: w ← w + γ ⋅ δ ⋅ z w \leftarrow w + \gamma \cdot \delta \cdot z w←w+γ⋅δ⋅z
  8. Actor 更新
    θ ← θ − β ⋅ Γ ( w ) ⋅ ( w T ψ ′ ) ⋅ ψ ′ \theta \leftarrow \theta - \beta \cdot \Gamma(w) \cdot (w^T \psi') \cdot \psi' θ←θ−β⋅Γ(w)⋅(wTψ′)⋅ψ′
    (注意这里用的是 ψ ′ \psi' ψ′,这是论文原文的算法细节;用 Critic 对下一状态-动作的打分乘以 ψ ′ \psi' ψ′ 作为梯度方向。)
  9. 进入下一步 : s ← s ′ , a ← a ′ , ψ ← ψ ′ s \leftarrow s', a \leftarrow a', \psi \leftarrow \psi' s←s′,a←a′,ψ←ψ′,重复。

关键回答你的疑问

  • Critic 怎么知道敏感性?

    它不需要"经历后才知道"。 ψ \psi ψ 向量是 Actor 在每一步当场根据当前状态和动作算出来 的,Critic 直接复用同一个 ψ \psi ψ。所以 Critic 实时地、每步都在获得这个敏感性信息,但它自身也接收状态 s s s,只是通过 ψ ( s , a ) \psi(s,a) ψ(s,a) 函数来处理。

  • 调整频率每走一步就调一次。 Critic 的权重和 Actor 的参数都在线更新,但 Actor 的步长 β \beta β 比 Critic 的步长 γ \gamma γ 小得多(慢时间尺度),保证 Critic 的学习相对稳定。

  • 堵塞为什么被突出?

    因为堵塞状态下,左转动作的 ψ \psi ψ 某些分量极大。当 TD 误差为负(真实代价高), w w w 中对应分量会被调低, Q Q Q 值骤降。Actor 更新时又乘以同样的 ψ ′ \psi' ψ′,导致该状态-动作对的概率被大幅压低。整个过程自动完成,不需要任何人手动标记"堵塞重要"。

问题8:完整故事(通俗版)

我们这次把公式和比喻严格对应起来


公式对照表(用你的比喻重新命名)

数学符号 比喻中的名字 说明
θ \theta θ 骑手脑中的旋钮位置 一个向量,比如有两个旋钮 ( θ 1 , θ 2 ) (\theta_1, \theta_2) (θ1,θ2)
s s s 路口长什么样 环境给出的状态,包含堵车、红绿灯等所有原始信息
a a a 动作 比如左转、右转
π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ(a∣s) 骑手在路口 s s s 选 a a a 的概率 Actor的策略,由旋钮位置 θ \theta θ 决定
ψ θ ( s , a ) \psi_\theta(s,a) ψθ(s,a) 敏感度 得分函数, ψ θ ( s , a ) = ∇ θ log ⁡ π θ ( a ∣ s ) \psi_\theta(s,a) = \nabla_\theta \log \pi_\theta(a \mid s) ψθ(s,a)=∇θlogπθ(a∣s)。一个向量,每个分量对应一个旋钮的敏感度
w w w(或用 r r r) 导航员的记账本权重 与 θ \theta θ 同维度,导航员要学习的参数
Q ( s , a ) Q(s,a) Q(s,a) 导航员打的分数 Q ( s , a ) = w ⊤ ψ θ ( s , a ) Q(s,a) = w^\top \psi_\theta(s,a) Q(s,a)=w⊤ψθ(s,a)
g g g 真实的单步代价 环境反馈,比如多花的分钟数,越小越好(代价)
λ \lambda λ 导航员估计的平均代价 平均每步大概花多少代价
δ \delta δ 预测误差(TD误差) δ = g − λ + Q ( s ′ , a ′ ) − Q ( s , a ) \delta = g - \lambda + Q(s',a') - Q(s,a) δ=g−λ+Q(s′,a′)−Q(s,a)
z z z 功劳簿(资格迹) 累积的敏感度历史,用于分配功劳
γ \gamma γ 导航员的学习步长 调记账本的力度,较大
β \beta β 骑手的学习步长 拧旋钮的力度,较小
Γ ( w ) \Gamma(w) Γ(w) 刹车(归一化因子) 防止记账本数字太大导致拧过头

逐步骤对照公式的故事

第1步:看到路口 s s s

骑手和导航员同时收到环境的状态 s s s。这个 s s s 里包含了堵车信息,但此时它只是一堆数字。

第2步:骑手算"概率"和"敏感度"

骑手根据自己的旋钮位置 θ \theta θ,计算出选择动作 a a a 的概率 π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ(a∣s),并按此概率采样一个动作,比如 a = 右转 a = \text{右转} a=右转。

同时 ,骑手计算这个动作在当前状态下的敏感度向量

ψ θ ( s , a ) = ∇ θ log ⁡ π θ ( a ∣ s ) \psi_\theta(s,a) = \nabla_\theta \log \pi_\theta(a \mid s) ψθ(s,a)=∇θlogπθ(a∣s)

这个向量里每一个分量都在回答:"如果我把第 i i i 个旋钮 θ i \theta_i θi 稍微拧一下,选 a a a 的对数概率会变多少?"

注意 :这个 ψ \psi ψ 是骑手当场用同一个 θ \theta θ 和 s , a s,a s,a 算出来的,它就是 Critic 的特征向量。

第3步:导航员打分

导航员拿出自己的记账本 w w w,和骑手刚给他的敏感度 ψ ( s , a ) \psi(s,a) ψ(s,a) 做一个内积:

Q ( s , a ) = w ⊤ ψ ( s , a ) = ∑ i w i ⋅ ψ i ( s , a ) Q(s,a) = w^\top \psi(s,a) = \sum_i w_i \cdot \psi_i(s,a) Q(s,a)=w⊤ψ(s,a)=i∑wi⋅ψi(s,a)

这就是导航员对"在路口 s s s 选动作 a a a"的预测评分。

第4步:执行动作,环境反馈

骑手执行 a a a,环境给出单步代价 g g g(越小越好),并进入新路口 s ′ s' s′。

第5步:对新路口采样新动作

骑手在 s ′ s' s′ 处再根据当前 θ \theta θ 采样一个新动作 a ′ a' a′,并算出新的敏感度 ψ ( s ′ , a ′ ) \psi(s',a') ψ(s′,a′)。导航员对新动作打分:

Q ( s ′ , a ′ ) = w ⊤ ψ ( s ′ , a ′ ) Q(s',a') = w^\top \psi(s',a') Q(s′,a′)=w⊤ψ(s′,a′)

第6步:导航员算预测误差

δ = g − λ + Q ( s ′ , a ′ ) − Q ( s , a ) \delta = g - \lambda + Q(s',a') - Q(s,a) δ=g−λ+Q(s′,a′)−Q(s,a)

  • g g g:刚经历的即时代价
  • − λ -\lambda −λ:减去平均代价,看看是否比平均更差
    • Q ( s ′ , a ′ ) +Q(s',a') +Q(s′,a′):加上未来预期的代价(因为这是代价,所以用加号)
  • − Q ( s , a ) -Q(s,a) −Q(s,a):减去之前自己的预测

如果 δ \delta δ 是负数,说明实际情况比导航员预测的更糟糕(代价更大)。

第7步:导航员更新记账本

先更新平均代价估计:

λ ← λ + γ ( g − λ ) \lambda \leftarrow \lambda + \gamma (g - \lambda) λ←λ+γ(g−λ)

然后更新资格迹(以 TD( α \alpha α) 为例):

z ← α z + ψ ( s ′ , a ′ ) z \leftarrow \alpha z + \psi(s',a') z←αz+ψ(s′,a′)

最后用预测误差调整权重:

w ← w + γ ⋅ δ ⋅ z w \leftarrow w + \gamma \cdot \delta \cdot z w←w+γ⋅δ⋅z

  • 如果 δ \delta δ 很负,且 z z z 的某个分量很大,那个 w i w_i wi 就会被大幅调低。

第8步:骑手拧旋钮

骑手用导航员对新动作的打分,乘以新动作的敏感度,来拧自己的旋钮:

θ ← θ − β ⋅ Γ ( w ) ⋅ Q ( s ′ , a ′ ) ⋅ ψ ( s ′ , a ′ ) \theta \leftarrow \theta - \beta \cdot \Gamma(w) \cdot Q(s',a') \cdot \psi(s',a') θ←θ−β⋅Γ(w)⋅Q(s′,a′)⋅ψ(s′,a′)

  • 如果 Q ( s ′ , a ′ ) Q(s',a') Q(s′,a′) 是正的(在代价设定下代表坏),骑手就会把旋钮往降低这个动作概率的方向拧(减号)。
  • ψ \psi ψ 越大,拧的幅度越大。
  • Γ ( w ) \Gamma(w) Γ(w) 是刹车,防止拧过头。