1 actor_loss 定义
在强化学习中,演员(Actor)损失(actor_loss)衡量策略的改进方向,即如何更新策略以更好地选择动作。对于常见的策略梯度方法,actor_loss 的定义通常与优势函数(Advantage Function)相关,以帮助引导演员选择更好的动作。
下面是几种常见的 actor_loss 定义:
-
基于策略梯度的 Actor Loss: 在策略梯度方法(如 REINFORCE)中,actor_loss 通常定义为策略概率的负对数与优势函数的乘积的期望值,表达式如下:
L actor = − E τ [ log π θ ( a t ∣ s t ) A t ] L_{\text{actor}} = -\mathbb{E}_{\tau} \left[ \log \pi_{\theta}(a_t | s_t) A_t \right] Lactor=−Eτ[logπθ(at∣st)At]
其中:
- π θ ( a t ∣ s t ) \pi_{\theta}(a_t | s_t) πθ(at∣st)是策略在状态 s t s_t st 选择动作 a t a_t at 的概率。
- A t A_t At 是优势函数(Advantage Function),表示在当前策略下,动作 a t a_t at 相对平均表现的优劣。
- 这个损失函数的目标是通过最大化优势 A t A_t At来提高优质动作的选择概率。
-
PPO(Proximal Policy Optimization)中的 Actor Loss: 在 PPO 中,为了限制策略更新的幅度,actor_loss 通常定义为“剪切”策略更新的目标函数,表达式如下:
L actor = − E τ [ min ( r t ( θ ) A t , clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A t ) ] L_{\text{actor}} = -\mathbb{E}_{\tau} \left[ \min(r_t(\theta) A_t, \text{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon) A_t) \right] Lactor=−Eτ[min(rt(θ)At,clip(rt(θ),1−ϵ,1+ϵ)At)]
其中:
- ( r t ( θ ) = π θ ( a t ∣ s t ) π θ old ( a t ∣ s t ) ) (r_t(\theta) = \frac{\pi_{\theta}(a_t | s_t)}{\pi_{\theta_{\text{old}}}(a_t | s_t)}) (rt(θ)=πθold(at∣st)πθ(at∣st)) 表示新旧策略概率的比值。
- ( ϵ ) (\epsilon) (ϵ) 是一个小的常数,用于限制更新幅度,防止策略发生过大的改变。
-
AC(Actor-Critic)方法中的 Actor Loss: 在 AC(Actor-Critic)方法中,actor_loss 通常基于状态价值函数 ( V ( s ) ) (V(s)) (V(s)) 计算,形式如下:
L actor = − E τ [ log π θ ( a t ∣ s t ) ( R t − V ( s t ) ) ] L_{\text{actor}} = -\mathbb{E}_{\tau} \left[ \log \pi_{\theta}(a_t | s_t) (R_t - V(s_t)) \right] Lactor=−Eτ[logπθ(at∣st)(Rt−V(st))]
其中 R t − V ( s t ) R_t - V(s_t) Rt−V(st) 表示 TD(Temporal Difference)误差,也可以作为优势函数的近似值,用来指导策略改进。
总结来说,actor_loss 的目标是通过最大化优势(Advantage)来提高策略在环境中的表现,通常通过最小化负的策略梯度来实现。不同算法对 actor_loss 的定义可能略有不同,但核心思想都是通过优势函数来衡量动作的质量,并更新策略以提升选取好动作的概率。
2 AC(Actor-Critic)
AC(Actor-Critic)方法中的 Actor Loss:
AC(Actor-Critic)方法是一种结合了策略学习和价值学习的强化学习算法。它通过演员(Actor)和评论员(Critic)之间的协作来实现策略的改进。下面是对 AC 方法中 Actor Loss 的详细讲解。
1. Actor-Critic 框架概述
- Actor(演员):负责学习策略(Policy) π θ ( s ) \pi_\theta(s) πθ(s),即给定当前的状态 (s),输出每个可能动作的概率分布。演员的目标是基于学习到的策略直接与环境交互,选择动作。
- Critic(评论员):负责评估当前策略的表现。具体来说,它估计每个状态或状态-动作对的价值Value,通常用状态价值函数 V ( s ) V(s) V(s)或动作价值函数 Q ( s , a ) Q(s, a) Q(s,a)表示。Critic 主要用于指导 Actor 改进其策略。
Actor 和 Critic 的结合,使得 AC 方法既能获得策略的导数方向(由 Actor 获得),也能通过 Critic 提供的价值函数评估策略的好坏,帮助策略朝更好的方向改进。
2. Actor Loss 的定义
在 Actor-Critic 方法中,演员(Actor)的目标是学习一个策略,使得它在给定状态下能够选择最优的动作。Actor Loss 定义如下:
L actor = − E τ [ log π θ ( a t ∣ s t ) ( R t − V ( s t ) ) ] L_{\text{actor}} = -\mathbb{E}_{\tau} \left[ \log \pi_{\theta}(a_t | s_t) (R_t - V(s_t)) \right] Lactor=−Eτ[logπθ(at∣st)(Rt−V(st))]
为了更好地理解 Actor Loss 的作用,下面对公式中的每一部分进行详细说明:
-
( π θ ( a t ∣ s t ) ) (\pi_{\theta}(a_t | s_t)) (πθ(at∣st)):
- ( π θ ) (\pi_{\theta}) (πθ) 是演员的策略,它以参数 θ \theta θ 为基础,表示在给定状态 ( s t ) (s_t) (st)下选择动作 ( a t ) (a_t) (at) 的概率。
- 演员的任务是通过策略梯度提升“好”动作的选择概率。
-
( log π θ ( a t ∣ s t ) ) (\log \pi_{\theta}(a_t | s_t)) (logπθ(at∣st)):
- 取对数的目的是为了便于计算梯度(概率乘积转化为对数求和,便于优化)。
- 通过对数形式,损失函数能更好地应用链式法则进行反向传播,从而更新参数 ( θ ) (\theta) (θ)。
-
优势函数 ( A t = R t − V ( s t ) ) (A_t = R_t - V(s_t)) (At=Rt−V(st)):
- ( R t ) (R_t) (Rt) 是实际的累积回报,通常表示从时间步 ( t ) (t) (t) 开始的累计折扣奖励。
- ( V ( s t ) ) (V(s_t)) (V(st)) 是评论员(Critic)估计的状态 ( s t ) (s_t) (st)的价值。
-
(
A
t
=
R
t
−
V
(
s
t
)
)
(A_t = R_t - V(s_t))
(At=Rt−V(st)) 表示动作
(
a
t
)
(a_t)
(at) 的优势(Advantage)。它衡量的是在状态
(
s
t
)
(s_t)
(st) 选择动作
(
a
t
)
(a_t)
(at)的表现相比于平均策略表现的好坏。
- 如果 A t > 0 A_t > 0 At>0,表示动作 a t a_t at 的表现好于平均水平,此时演员应该增加选择该动作的概率。
- 如果 A t < 0 A_t < 0 At<0,表示动作 a t a_t at 的表现差于平均水平,此时演员应该减少选择该动作的概率。
-
负号的作用:
- Actor Loss 中包含一个负号,目的是将优化目标转换为最小化问题。
- 在深度学习中,常用梯度下降法来最小化损失函数。通过添加负号,损失函数的最小化相当于增加优势函数为正的动作的概率,减少优势函数为负的动作的概率,从而优化策略。
3. Actor Loss 的意义
-
最小化损失以改进策略:
- Actor Loss 的核心目标是通过最小化损失来更新策略参数 ( θ ) (\theta) (θ),使得优势(Advantage)较大的动作被选择的概率更大,优势较小的动作被选择的概率减少。
- 损失函数中包含了优势函数 ( A t ) (A_t) (At),这意味着更新策略时考虑了动作的好坏,优先增加表现好的动作的选择概率。
-
指导策略改进:
- Critic 提供的状态价值函数 ( V ( s t ) ) (V(s_t)) (V(st)) 作为 Actor 的参考,帮助 Actor 确定当前动作是否优于平均水平。
- Actor 借助 Critic 的反馈信息来更新自身的策略,从而在与环境的交互中不断提升自身的表现。
4. Actor-Critic 的更新流程
- 环境交互:在当前状态 ( s t ) (s_t) (st) 下,Actor 使用策略 ( π θ ( a t ∣ s t ) ) (\pi_{\theta}(a_t | s_t)) (πθ(at∣st)) 选择动作 ( a t ) (a_t) (at) 并与环境交互。
- 获得奖励:从环境获得即时奖励 ( r t ) (r_t) (rt) 和下一状态 ( s t + 1 ) (s_{t+1}) (st+1)。
- Critic 估值:Critic 使用状态价值函数 ( V ( s t ) ) (V(s_t)) (V(st)) 对当前状态进行评估,并计算 TD 误差: [ δ t = r t + γ V ( s t + 1 ) − V ( s t ) ] [ \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t) ] [δt=rt+γV(st+1)−V(st)] 其中 ( γ ) (\gamma) (γ) 是折扣因子,表示未来奖励的重要性。
- 更新 Critic:使用 TD 误差 ( δ t ) (\delta_t) (δt) 更新 Critic 的参数。
- 更新 Actor:根据优势函数 ( A t = δ t ) (A_t = \delta_t) (At=δt) 更新 Actor 的策略参数,以最小化 Actor Loss。
5. 总结
AC(Actor-Critic)方法中的 Actor Loss 通过结合 Critic 的评估,指导 Actor 改进策略。损失函数的核心思想是通过优势函数衡量动作的质量,以增加优质动作的选择概率并减少劣质动作的选择概率。这样,Actor-Critic 方法能够高效地对策略进行优化,使得智能体在与环境的长期交互中表现得越来越好。
3 轨迹(trajectory)
( τ ) (\tau) (τ)的定义
在强化学习中,符号 τ \tau τ 通常用来表示整个轨迹(trajectory),也叫做路径或情节(episode)。它包含了智能体从起始状态到终止状态的所有状态、动作以及奖励序列。因此, τ \tau τ 的作用是表示强化学习过程中智能体与环境交互的完整记录,用于计算预期的损失。
( τ ) (\tau) (τ) 通常定义为状态-动作序列,描述从起点到终点的整个轨迹。一般形式为:
τ = ( s 0 , a 0 , r 0 , s 1 , a 1 , r 1 , … , s T ) \tau = (s_0, a_0, r_0, s_1, a_1, r_1, \dots, s_T) τ=(s0,a0,r0,s1,a1,r1,…,sT)
其中:
- ( s t ) (s_t) (st):表示在时间步 ( t ) (t) (t)时的状态。
- ( a t ) (a_t) (at):表示在状态 ( s t ) (s_t) (st) 时采取的动作。
- ( r t ) (r_t) (rt):表示在时间步 ( t ) (t) (t) 时从环境中获得的即时奖励。
- ( T ) (T) (T):表示轨迹的结束时间步,通常是一个终止状态或者达到了某个最大步数。
在 Actor-Critic 方法的 Actor Loss 公式中, ( τ ) (\tau) (τ) 代表了智能体在与环境交互时可能经历的所有轨迹。具体来说,损失函数中的 ( E τ ) (\mathbb{E}_{\tau}) (Eτ) 表示对轨迹 ( τ ) (\tau) (τ) 的期望值,也就是在不同的状态和动作序列下,取它们的平均。
( τ ) (\tau) (τ) 的作用
在 Actor Loss 的公式中:
L actor = − E τ [ log π θ ( a t ∣ s t ) ( R t − V ( s t ) ) ] L_{\text{actor}} = -\mathbb{E}_{\tau} \left[ \log \pi_{\theta}(a_t | s_t) (R_t - V(s_t)) \right] Lactor=−Eτ[logπθ(at∣st)(Rt−V(st))]
( τ ) (\tau) (τ)的作用可以理解为用来表示整个轨迹的期望。这里的期望指的是智能体在不同的轨迹下计算损失的平均效果。由于强化学习中的环境具有不确定性,智能体从状态 ( s t ) (s_t) (st) 开始所经历的轨迹并不唯一,因此通过对所有可能轨迹 ( τ ) (\tau) (τ) 的期望来计算损失,以确保策略的更新是对不同可能情况的整体表现进行改进。
具体来说, ( E τ ) (\mathbb{E}_{\tau}) (Eτ) 表示对轨迹的采样(即智能体在环境中探索得到的多个轨迹)进行求和,并求平均,以获得 Actor Loss 的期望值。这意味着损失函数并不只针对某个特定轨迹,而是希望考虑到多种不同的轨迹,以便对策略进行更加鲁棒的优化。
轨迹期望的计算
在实际操作中, ( E τ ) (\mathbb{E}_{\tau}) (Eτ) 一般是通过采样来近似计算的。智能体通过与环境多次交互,生成一批不同的轨迹,然后在这些采样轨迹上对损失函数进行估计。可以总结如下:
- 采样轨迹:在当前策略 ( π θ ) (\pi_\theta) (πθ) 下,与环境进行多次交互,采集一批完整的轨迹 ( τ 1 , τ 2 , … , τ n ) (\tau_1, \tau_2, \dots, \tau_n) (τ1,τ2,…,τn)。
- 计算损失:对于每条轨迹,计算相应的损失值,然后对所有轨迹的损失进行平均,从而得到整体损失的估计。
- 更新策略:根据平均损失对策略参数 ( θ ) (\theta) (θ) 进行更新。
因此, ( τ ) (\tau) (τ)在这个公式中的主要作用是概括表示所有可能的轨迹,并且通过对轨迹的期望来计算损失,以使得策略改进不仅对某一特定状态有效,而是对整体表现进行提升。
总结
- ( τ ) (\tau) (τ) 表示智能体与环境交互的完整轨迹,包括所有状态、动作、奖励的序列。
- 在 Actor Loss 中, ( τ ) (\tau) (τ) 用于表示对整个轨迹的期望,以确保策略改进是针对不同轨迹的平均效果。
- 在实际中,这个期望值通过对多个采样轨迹进行平均来近似计算。
这种方式使得 Actor-Critic 算法可以综合考虑多种情况,使得策略的改进在各种环境状态下都更加稳定和鲁棒。