目标导向的强化学习
对于一个使用场景:策略 π \pi π 操控机械臂抓取桌上的物体,每次任务中物体的位置可能不一样,即需要完成一系列相似但不相同的任务。在使用传统的强化学习算法时,采用单一策略只能抓取同一个位置的物体,对于不同的目标位置,需要训练多个策略,即同一个策略无法完成不同的目标。
目标导向的强化学习的数学基础是目标条件化的 MDP,其元组定义为 ( S , A , G , P , R , γ ) (S,A,G,P,R,\gamma) ( S , A , G , P , R , γ ) ,相比于 MDP 多了一项目标集合 G G G ,通常为状态空间的子集。
HER
HER 算法即事后经验回放策略。目标导向的强化学习的奖励往往是比较稀疏的,由于智能体在训练初期难以完成目标而只能得到 -1 的奖励,从而使整个算法的训练速度较慢。HER 算法能有效地利用这些失败地经验。
假设现在使用策略 π \pi π 在环境中以 g g g 为目标进行探索,得到轨迹 s 1 , ⋯ , s T s_1,\cdots,s_T s 1 , ⋯ , s T ,并且 g ≠ s 1 , ⋯ , s T g\not=s_1,\cdots,s_T g = s 1 , ⋯ , s T ,这就意味着整条路径上得到的奖励都是 -1,这对训练起到的帮助很小。所以在 HER 中设定一个新的目标 g ′ g^\prime g ′ 来重新审视这条轨迹,也就是虽然没有达到目标 g g g ,但是在探索过程中,完成了 s 1 , ⋯ , s T s_1,\cdots,s_T s 1 , ⋯ , s T 等这些目标。HER 算法流程如下
初始化策略算法,初始化经验回放池
每轮循环
采样初始状态,设定目标 g g g
用行为策略交互得到完整轨迹,将其以 ( s , a , r , s ′ , g ) (s,a,r,s^\prime,g) ( s , a , r , s ′ , g ) 的形式存入经验回放池中
从经验回放池中采样 N N N 个 ( s , a , r , s ′ , g ) (s,a,r,s^\prime,g) ( s , a , r , s ′ , g ) 元组,对这些元组,选择一个状态 s ′ ′ s^{\prime\prime} s ′ ′ ,将其映射为新的目标 g ′ = ϕ ( s ′ ′ ) g^\prime=\phi(s^{\prime\prime}) g ′ = ϕ ( s ′ ′ ) 并计算新的奖励值 r ′ r^\prime r ′ ,之后用新的数据 ( s , a , r ′ , s ′ , g ′ ) (s,a,r^\prime,s^\prime,g^\prime) ( s , a , r ′ , s ′ , g ′ ) 替换原先的元组
使用这些新的元组对策略 π \pi π 进行训练
GCSL
GCSL 即目标条件监督学习,专为稀疏奖励下的目标导向任务设计,核心时用迭代的监督学习替代传统的 RL 的值函数估计。目标到达任务是强化学习的经典场景,核心痛点为奖励极度稀疏,只有最终到达目标时才有正奖励,而传统的 RL 算法在这种场景下就很容易陷入局部最优,样本效率低下。
GCSL 的核心思想就是:对于任意一条轨迹,无论是否完成目标,都是到达该轨迹最终访问状态的成功示范。对于任意一条交互的轨迹 τ = ( s 0 , a 0 , ⋯ , s T , a T ) \tau=(s_0,a_0,\cdots,s_T,a_T) τ = ( s 0 , a 0 , ⋯ , s T , a T ) ,取其中任意两个时刻 t 1 < t 2 t_1<t_2 t 1 < t 2 :
智能体在状态 s t 1 s_{t_1} s t 1 执行动作 a t 1 a_{t_1} a t 1 之后,经过 h = t 2 − t 1 h=t_2-t_1 h = t 2 − t 1 步之后,最终到达了状态 s t 2 s_{t_2} s t 2
因此可以事后重标记,将状态 s t 2 s_{t_2} s t 2 设定为目标 g g g ,将 ( s t 1 , a t 1 , h = t 2 − t 1 ) (s_{t_1},a_{t_1},h=t_2-t_1) ( s t 1 , a t 1 , h = t 2 − t 1 ) 视作从 s t 1 s_{t_1} s t 1 出发,经历 h h h 步之后到达 g g g 的最优样本
一条长度为 T T T 的轨迹,可以生成很多有效训练的样本,极大提升了数据利用率
在 GCSL 中设定的原始目标时最大化策略 π \pi π 在目标分布 p ( g ) p(g) p ( g ) (即任务中需要到达的目标的概率分布)下的到达成功率
J ( π ) = E g ∼ p ( g ) , τ ∼ π ( τ ∣ g ) [ 1 [ G ( τ ) = g ] ] J(\pi)=E_{g\sim p(g),\tau\sim\pi(\tau\vert g)}\Big[1\big[\mathcal{G}(\tau)=g\big]\Big]
J ( π ) = E g ∼ p ( g ) , τ ∼ π ( τ ∣ g ) [ 1 [ G ( τ ) = g ] ]
在 GCSL 中不直接优化该目标,而是优化其可导的下界:最大化重采样标记样本下动作的对数似然,即行为克隆的最大似然估计目标
J ( π ) = E τ ∼ π ( τ ) [ ∑ t = 0 T log π ( a t ∣ s t , g = G ( τ ) , h = T − t ) ] J(\pi)=E_{\tau\sim\pi(\tau)}\Big[\sum_{t=0}^T\log\pi(a_t\vert s_t,g=\mathcal{G}(\tau),h=T-t)\Big]
J ( π ) = E τ ∼ π ( τ ) [ t = 0 ∑ T log π ( a t ∣ s t , g = G ( τ ) , h = T − t ) ]
在实际中,会对轨迹中所有的 t 1 < t 2 t_1<t_2 t 1 < t 2 的组合都进行重标记,此时目标可以扩展为
J ( π ) = E τ ∼ π ( τ ) E t 1 < t 2 [ log π ( a t 1 ∣ s t 1 , g = s t 2 , h = t 2 − t 1 ) ] J(\pi)=E_{\tau\sim\pi(\tau)}E_{t_1<t_2}\Big[\log\pi(a_{t_1}\vert s_{t_1},g=s_{t_2},h=t_2-t_1)\Big]
J ( π ) = E τ ∼ π ( τ ) E t 1 < t 2 [ log π ( a t 1 ∣ s t 1 , g = s t 2 , h = t 2 − t 1 ) ]
实际使用中最小化上述目标的负数
对离散动作空间:采用交叉熵损失 L ( θ ) = − E ( s , a , g , h ) ∼ D [ log π θ ( a ∣ s , g , h ) ] L(\theta)=-E_{(s,a,g,h)\sim D}[\log\pi_\theta(a\vert s,g,h)] L ( θ ) = − E ( s , a , g , h ) ∼ D [ log π θ ( a ∣ s , g , h ) ]
对连续动作空间:通常采用高斯分布的负对数似然,策略网络输出高斯分布的均值和方差 L ( θ ) = − E ( s , a , g , h ) ∼ D [ log N ( a ∣ μ θ ( s , g , h ) , σ θ 2 ( s , g , h ) ) ] L(\theta)=-E_{(s,a,g,h)\sim D}[\log\mathcal{N}(a\vert\mu_\theta(s,g,h),\sigma_\theta^2(s,g,h))] L ( θ ) = − E ( s , a , g , h ) ∼ D [ log N ( a ∣ μ θ ( s , g , h ) , σ θ 2 ( s , g , h ) ) ]
GCSL 的核心理论保证是:优化 GCSL 目标等价于优化原始目标到达任务的下界
GCSL 的完整流程如下
初始化策略网络 π θ ( a ∣ s , g , h ) \pi_\theta(a\vert s,g,h) π θ ( a ∣ s , g , h )
初始化经验回放池 D D D ,其中存入完整轨迹
用随机策略采样 N N N 条初始轨迹,存入 D D D 中,作为初始化的经验回放池
循环迭代 K K K 轮
采样目标 g ∼ p ( g ) g\sim p(g) g ∼ p ( g ) ,用当前策略 π k \pi_k π k 在环境中执行 T T T 步,采样轨迹 τ = ( s 0 , a 0 , ⋯ , s T , a T ) \tau=(s_0,a_0,\cdots,s_T,a_T) τ = ( s 0 , a 0 , ⋯ , s T , a T )
将轨迹存放入经验回放池 D D D 中
循环执行 M M M 次梯度更新
从 D D D 中随机采样一条轨迹
随机采样两个时刻 t 1 < t 2 t_1<t_2 t 1 < t 2 ,计算剩余步长 h = t 2 − t 1 h=t_2-t_1 h = t 2 − t 1
构造训练样本 s = s t 1 , a = a t 1 , g = s t 2 , h = h s=s_{t_1},a=a_{t_1},g=s_{t_2},h=h s = s t 1 , a = a t 1 , g = s t 2 , h = h
最小化负对数似然损失,更新策略网络的参数 θ \theta θ
C-Learning
C-Learning(Recursive Classification-based Reinforcement Learning)是目标导向强化学习领域的经典算法,其核心创新是将目标达成的价值估计问题转化为状态-目标对的二分类问题,通过递归分类的方式解决长程稀疏奖励任务。
C-Learning 的核心就是智能体是否能在有限步数内从当前状态 s s s 到达目标状态 g g g ,本质是一个二分类的问题,不再直接学习目标条件的 Q ( s , a , g ) Q(s,a,g) Q ( s , a , g ) ,而是学习一个可达性分类器 C ( s , g , k ) C(s,g,k) C ( s , g , k ) ,表示从状态 s s s 出发,在 k k k 步内到达目标 g g g 的概率
C-Learning 通过递归方式定义多步可达性,这是它能处理长程任务的关键
基础情况 k = 1 k=1 k = 1 时:若当前转到已经是目标 g g g 时或一步可达时,则 C ( s , g , 1 ) = 1 C(s,g,1)=1 C ( s , g , 1 ) = 1
递归情况 k > 1 k>1 k > 1 时:从 s s s 出发执行任意动作到达 s ′ s^\prime s ′ ,若存在某个 s ′ s^\prime s ′ 能在 k − 1 k-1 k − 1 步内到达 g g g ,则 s s s 能在 k k k 步内到达 g g g 。对应的公式表达为 C ( s , g , k ) = max a E s ′ ∼ P ( s ′ ∣ s , a ) [ C ( s ′ , g , k − 1 ) ] C(s,g,k)=\underset{a}{\max}E_{s^\prime\sim P(s^\prime\vert s,a)}[C(s^\prime,g,k-1)] C ( s , g , k ) = a max E s ′ ∼ P ( s ′ ∣ s , a ) [ C ( s ′ , g , k − 1 ) ]
C-Learning 的网络结构是一个端到端的分类器
输入当前状态 s s s +目标状态 g g g +步数预算 k k k
输出可达性概率 C ( s , g , k ) C(s,g,k) C ( s , g , k )
通常使用 CNN 处理图像或使用 MLP 提取特征,然后拼接状态、目标和步数的嵌入,最后通过 Sigmoid 层输出概率。网络的训练流程如下
样本构造
正样本(可达,标签为 1)
取一条成功到达目标的轨迹 ( s 0 , s 1 , ⋯ , s T = g ) (s_0,s_1,\cdots,s_T=g) ( s 0 , s 1 , ⋯ , s T = g )
对轨迹中的每一个状态 s t s_t s t 构造样本 ( s t , g , T − t ) (s_t,g,T-t) ( s t , g , T − t ) ,标签为 1
负样本(不可达,标签为 0)
取一条未到达目标的失败轨迹,或随机采样无关的状态目标对
构造样本 ( s , g , k ) (s,g,k) ( s , g , k ) ,标签为 0
自举样本
对任意状态 s s s ,采样动作 a a a 得到 s ′ s^\prime s ′ ,构造样本 ( s , g , k ) (s,g,k) ( s , g , k ) ,其标签为 max a C ( s ′ , g , k − 1 ) \underset{a}{\max}C(s^\prime,g,k-1) a max C ( s ′ , g , k − 1 ) ,即用当前分类器的输出作为标签
分类器更新
使用标准的二分类交叉熵损失训练分类器 L = − [ y log C ( s , g , k ) + ( 1 − y ) log ( 1 − C ( s , g , k ) ) ] L=-[y\log C(s,g,k)+(1-y)\log(1-C(s,g,k))] L = − [ y log C ( s , g , k ) + ( 1 − y ) log ( 1 − C ( s , g , k ) ) ]
CRL
CRL 即 Contrastive Reinforcement Learning,是原生融合对比表示学习与目标条件强化学习(GCRL)的端到端算法,针对轨迹数据的对比学习目标,其最优解等价于 GCRL 的目标条件 Q 函数
定义 CGRL 的基础要素:状态空间 S S S ,动作 a t a_t a t ,初始状态分布 p 0 ( s ) p_0(s) p 0 ( s ) ,环境动力学 p ( s t + 1 ∣ s t , a t ) p(s_{t+1}\vert s_t,a_t) p ( s t + 1 ∣ s t , a t ) ,目标分布 p g ( g ) p_g(g) p g ( g ) ,每个目标对应的奖励函数定义如下
r g ( s , a ) = ( 1 − γ ) p ( s t + 1 = g ∣ s t , a t ) r_g(s,a)=(1-\gamma)p(s_{t+1}=g\vert s_t,a_t)
r g ( s , a ) = ( 1 − γ ) p ( s t + 1 = g ∣ s t , a t )
即当前状态动作对下,下一步到达目标 s g s_g s g 的概率,乘以折扣因子。而初始状态的奖励需要额外包含初始状态
r g ( s , a ) = ( 1 − γ ) ( p ( s 1 = g ∣ s 0 , a 0 ) + p 0 ( s 0 = g ) ) r_g(s,a)=(1-\gamma)(p(s_1=g\vert s_0,a_0)+p_0(s_0=g))
r g ( s , a ) = ( 1 − γ ) ( p ( s 1 = g ∣ s 0 , a 0 ) + p 0 ( s 0 = g ) )
策略优化的核心目标是最大化累积折扣奖励
max π E p g ( g ) , π ( τ ∣ g ) [ ∑ t = 0 ∞ γ t r g ( s t , a t ) ] \underset{\pi}{\max}E_{p_g(g),\pi(\tau\vert g)}\Big[\sum_{t=0}^\infty\gamma^tr_g(s_t,a_t)\Big]
π max E p g ( g ) , π ( τ ∣ g ) [ t = 0 ∑ ∞ γ t r g ( s t , a t ) ]
定义目标条件的 Q 函数为
Q g π ( s , a ) = E π ( τ ∣ g ) [ ∑ t ′ = t ∞ γ t ′ − t r g ( s t ′ , a t ′ ) ∣ s t = s , a t = a ] Q_{g}^\pi(s,a)=E_{\pi(\tau\vert g)}\Big[\sum_{t^\prime=t}^\infty\gamma^{t^\prime-t}r_g(s_{t^\prime},a_{t^\prime})\vert s_t=s,a_t=a\Big]
Q g π ( s , a ) = E π ( τ ∣ g ) [ t ′ = t ∑ ∞ γ t ′ − t r g ( s t ′ , a t ′ ) ∣ s t = s , a t = a ]
Q 函数在衡量当前状态 s s s ,执行动作 a a a ,目标为 g g g 时,遵循策略 π \pi π 能获得的累积折扣奖励的期望,这个值量化了从 ( s , a ) (s,a) ( s , a ) 出发,利用策略 π \pi π 最终到达目标 g g g 的长期收益。
定义折扣状态占用度量
p π ( ⋅ ∣ ⋅ , g ) ( s t + = s ) = ( 1 − γ ) ∑ t = 0 ∞ γ t p t π ( ⋅ ∣ ⋅ , g ) ( s t = s ) p^{\pi(\cdot\vert\cdot,g)}(s_{t+}=s)=(1-\gamma)\sum_{t=0}^\infty\gamma^tp_t^{\pi(\cdot\vert\cdot,g)}(s_t=s)
p π ( ⋅ ∣ ⋅ , g ) ( s t + = s ) = ( 1 − γ ) t = 0 ∑ ∞ γ t p t π ( ⋅ ∣ ⋅ , g ) ( s t = s )
其中的 p t π ( s ) p_t^\pi(s) p t π ( s ) 表示策略 π \pi π 在 t t t 步访问状态 s s s 的概率,该度量对所有时间步的访问概率做折扣加权,后通过 ( 1 − γ ) (1-\gamma) ( 1 − γ ) 归一化。其中的 s t + s_{t+} s t + 表示从该折扣占用度量中采样的未来状态,是全文对比学习正例对的核心来源。对比学习的核心逻辑在于,让正例对的表示相似度更高,负例对的表示相似度更低。相似度函数定义如下
f ( u , v ) = ϕ ( u ) T ψ ( v ) f(u,v)=\phi(u)^T\psi(v)
f ( u , v ) = ϕ ( u ) T ψ ( v )
其中 ϕ \phi ϕ 和 ψ \psi ψ 是编码器,输出的表示做内积,作为两个输入的相似度打分,这个内积是 Q 函数的单调变换。据此定义 NCE 优化目标
max f ( u , v ) E ( u , v + ) ∼ p ( u , v ) , v − ∼ p ( u ) [ log S i g m o i d ( f ( u , v + ) ) + log ( 1 − S i g m o i d ( f ( u , v − ) ) ] \underset{f(u,v)}{\max}E_{(u,v^+)\sim p(u,v),v^-\sim p(u)}\Big[\log\mathrm{Sigmoid}(f(u,v^+))+\log(1-\mathrm{Sigmoid}(f(u,v^-))\Big]
f ( u , v ) max E ( u , v + ) ∼ p ( u , v ) , v − ∼ p ( u ) [ log S i g m o i d ( f ( u , v + ) ) + log ( 1 − S i g m o i d ( f ( u , v − ) ) ]
这是一个二分类交叉熵优化目标,目标是让模型区分正例对和负例对:正例对的相似度打分尽可能接近 1,负例对的打分尽可能接近 0。是 CRL 算法 Critic 损失的核心原型。其中 u u u 为锚点样本,从回放池轨迹中采样的状态动作对 ( s , a ) (s,a) ( s , a ) ,正例 v + v^+ v + 是从 ( s , a ) (s,a) ( s , a ) 对应的折扣状态占用度量 p π ( s t + ∣ s , a ) p^\pi(s_{t+}\vert s,a) p π ( s t + ∣ s , a ) 中采样的未来状态 s f + s_f^+ s f + ,负例 v − v^- v − 是从全局折扣状态边缘分布 p ( s t + ) p(s_{t+}) p ( s t + ) 的随机未来状态 s f − s_f^- s f − ,是与当前 ( s , a ) (s,a) ( s , a ) 无关的随机状态
以 g g g 为目标的 Q 函数,完全等价于在当前状态 s s s 执行动作 a a a 后,折扣未来状态中出现目标 g g g 的条件概率
Q g π ( s , a ) = p π ( ⋅ ∣ ⋅ , g ) ( s t + = g ∣ s , a ) Q_g^\pi(s,a)=p^{\pi(\cdot\vert\cdot,g)}(s_{t+}=g\vert s,a)
Q g π ( s , a ) = p π ( ⋅ ∣ ⋅ , g ) ( s t + = g ∣ s , a )
目标条件 Q 函数,完全等价于在当前状态动作对 ( s , a ) (s,a) ( s , a ) 下,折扣状态占用度量中目标状态 g g g 出现的条件概率。在 RL 场景下的对比学习目标
max f E ( s , a ) , s f + ∼ p ( s t + ∣ s , a ) , s f − ∼ p ( s f ) [ log S i g m o i d ( f ( s , a , s f + ) ) + log ( 1 − S i g m o i d ( f ( s , a , s f − ) ) ] \underset{f}{\max}E_{(s,a),s_f^+\sim p(s_{t+}\vert s,a),s_f^-\sim p(s_f)}\Big[\log\mathrm{Sigmoid}(f(s,a,s_f^+))+\log(1-\mathrm{Sigmoid}(f(s,a,s_f^-))\Big]
f max E ( s , a ) , s f + ∼ p ( s t + ∣ s , a ) , s f − ∼ p ( s f ) [ log S i g m o i d ( f ( s , a , s f + ) ) + log ( 1 − S i g m o i d ( f ( s , a , s f − ) ) ]
将通用对比目标替换为 RL 中的 ( s , a ) (s,a) ( s , a ) 与未来状态的正负例对,目标是让模型区分当前 ( s , a ) (s,a) ( s , a ) 能到达的未来状态和随机无关状态。优化上述公式可以得到贝叶斯最优 Critic 函数,如下
f ⋆ ( s , a , g ) = log ( p π ( s t + = g ∣ s , a ) p ( g ) ) f^\star(s,a,g)=\log\Big(\frac{p^\pi(s_{t+}=g\vert s,a)}{p(g)}\Big)
f ⋆ ( s , a , g ) = log ( p ( g ) p π ( s t + = g ∣ s , a ) )
结合上述的目标 Q 函数的等价性,可以直接推导得到
exp ( f ⋆ ( s , a , s f ) ) = Q s f π ( s , a ) p ( s f ) \exp(f^\star(s,a,s_f))=\frac{Q_{s_f}^\pi(s,a)}{p(s_f)}
exp ( f ⋆ ( s , a , s f ) ) = p ( s f ) Q s f π ( s , a )
其中的 1 p ( s f ) \frac{1}{p(s_f)} p ( s f ) 1 是与动作 a a a 完全无关的常数。则最优动作满足
arg max a Q g π ( s , a ) = arg max a f ⋆ ( s , a , g ) \underset{a}{\argmax}Q_{g}^\pi(s,a)=\underset{a}{\argmax}f^\star(s,a,g)
a a r g m a x Q g π ( s , a ) = a a r g m a x f ⋆ ( s , a , g )
所以只需要最大化 Critic 的相似度打分 f ( s , a , g ) f(s,a,g) f ( s , a , g ) ,就能得到最优动作,完全不需要估计难以计算的配分函数 p ( g ) p(g) p ( g ) 。基于这些公式,策略优化的目标可以简化,得到 CRL 的 Actor 优化目标
max π ( a ∣ s , g ) E π ( a ∣ s , g ) p ( s ) p ( g ) [ f ( s , a , s f = g ) ] \underset{\pi(a\vert s,g)}{\max}E_{\pi(a\vert s,g)p(s)p(g)}\Big[f(s,a,s_f=g)\Big]
π ( a ∣ s , g ) max E π ( a ∣ s , g ) p ( s ) p ( g ) [ f ( s , a , s f = g ) ]
CRL 中采样双编码器内积的参数化形式 f ( s , a , g ) = ϕ ( s , a ) T ψ ( g ) f(s,a,g)=\phi(s,a)^T\psi(g) f ( s , a , g ) = ϕ ( s , a ) T ψ ( g ) ,计算效率高。最小化负的相似度打分即为 Actor 的损失
L a c t o r = − E [ f ( s , a , g ) ] L_{actor}=-E[f(s,a,g)]
L a c t o r = − E [ f ( s , a , g ) ]
定义 Critic 损失函数
L c r i t i c = − E [ log S i g m o i d ( f ( s , a , s f + ) ) + log ( 1 − S i g m o i d ( f ( s , a , s f − ) ) ] L_{critic}=-E\Big[\log\mathrm{Sigmoid}(f(s,a,s_f^+))+\log(1-\mathrm{Sigmoid}(f(s,a,s_f^-))\Big]
L c r i t i c = − E [ log S i g m o i d ( f ( s , a , s f + ) ) + log ( 1 − S i g m o i d ( f ( s , a , s f − ) ) ]
CRL 的流程如下
初始化
状态动作编码器 ϕ \phi ϕ
目标状态编码器 ψ \psi ψ
目标条件策略网络 Q Q Q
初始化经验回放池
利用随机策略越环境交互,收集 N N N 条轨迹,存入经验回放池中
循环执行 T T T 步
用当前策略 π \pi π ,以 g ∼ p ( g ) g\sim p(g) g ∼ p ( g ) 为目标,与环境交互,收集一整条轨迹,存入经验回放池中
进行 K K K 次梯度更新
从经验回放池中采样 B B B 条轨迹片段,每个片段包含 ( s , a ) (s,a) ( s , a ) 序列的轨迹
从几何分布 t o f f s e t ∼ G E O M ( 1 − γ ) t_{offset}\sim GEOM(1-\gamma) t o f f s e t ∼ G E O M ( 1 − γ ) 采样时间偏移,取轨迹 τ t : \tau_{t:} τ t : 中的第 t o f f s e t t_{offset} t o f f s e t 步的状态作为 s f s_f s f
计算 Critic 损失 L c r i t i c L_{critic} L c r i t i c ,梯度下降更新编码器
从经验回放池采样 B B B 个状态和 B B B 个随机目标
计算 actor 损失 L a c t o r L_{actor} L a c t o r ,梯度下降更新策略网络
ECRL
ECRL 即 Equivariant Contrastive Reinforcement Learning(等变对比强化学习),是 CRL 的几何等变扩展版本。传统 CRL 完全忽略任务中的固有旋转对称性,需要从海量交互数据中学习对称规律,导致样本效率极低。针对传统 CRL 在机器人操作任务中样本效率低、空间泛化能力弱的核心痛点,通过引入环境天然的几何对称性先验,大幅提升了目标导向策略的学习效率与泛化性能
对称群与群表示
用连续群 S O ( 2 ) SO(2) S O ( 2 ) 和其离散子群 C n C_n C n 刻画对称性。S O ( 2 ) SO(2) S O ( 2 ) 群是所有二维平面旋转构成的特殊正交群,定义为
S O ( 2 ) = { R o t θ ∣ 0 ≤ θ < 2 π } SO(2)=\{Rot_\theta\vert 0\leq\theta<2\pi\}
S O ( 2 ) = { R o t θ ∣ 0 ≤ θ < 2 π }
其中 R o t θ Rot_\theta R o t θ 表示绕原点旋转 θ \theta θ 角度的变换。C n C_n C n 循环群:为 S O ( 2 ) SO(2) S O ( 2 ) 的离散子群,包含 n n n 个等分平面的旋转,旋转角度为 w π i n \frac{w\pi i}{n} n w π i ,定义为
C n = { R o t θ ∣ θ = 2 π i n , i ∈ { 0 , 1 , ⋯ , n − 1 } } C_n=\{ Rot_\theta\vert\theta=\frac{2\pi i}{n},i\in\{0,1,\cdots,n-1\}\}
C n = { R o t θ ∣ θ = n 2 π i , i ∈ { 0 , 1 , ⋯ , n − 1 } }
群表示 ρ : G → G L ( d ) \rho:G\rightarrow GL(d) ρ : G → G L ( d ) 是将每个群元素映射为一个 d d d 维可逆矩阵,刻画信号在群变换下的变换规律,在论文中有三种基础表示
平凡表示 ρ 0 \rho_0 ρ 0 :作用于实数域 R R R ,对任意群元素 g ∈ C n g\in C_n g ∈ C n 和标量 x ∈ R x\in R x ∈ R 满足 ρ 0 ( g ) x = x \rho_0(g)x=x ρ 0 ( g ) x = x
物理意义就是无论怎么旋转,输出值完全不变,也就是旋转不变量
标准表示 ρ 1 \rho_1 ρ 1 :作用于二维平面 R 2 R^2 R 2 ,对任意群元素 g ∈ C n g\in C_n g ∈ C n 和二维向量 v ∈ R 2 v\in R^2 v ∈ R 2 ,满足 ρ 1 ( g ) v = [ cos θ − sin θ sin θ cos θ ] v \rho_1(g)v=\begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{bmatrix}v ρ 1 ( g ) v = [ cos θ sin θ − sin θ cos θ ] v
输入坐标旋转 θ \theta θ ,输出向量也同步旋转 θ \theta θ
正则表示 ρ r e g \rho_{reg} ρ r e g :用于 N N N 维向量 R N R^N R N ,对旋转 R o t 2 π i n Rot_{\frac{2\pi i}{n}} R o t n 2 π i 满足 P r e g ( R o t 2 π i n ) ( x 0 , ⋯ , x N − 1 ) = ( x N − i , ⋯ , x N − 1 , x 0 , ⋯ , x N − i − 1 ) P_{reg}(Rot_{\frac{2\pi i}{n}})(x_0,\cdots,x_{N-1})=(x_{N-i},\cdots,x_{N-1},x_0,\cdots,x_{N-i-1}) P r e g ( R o t n 2 π i ) ( x 0 , ⋯ , x N − 1 ) = ( x N − i , ⋯ , x N − 1 , x 0 , ⋯ , x N − i − 1 )
输入旋转对应角度,输出向量做出对齐的循环置换
正则表示的变换矩阵为正交矩阵,正交变换不改变向量内积和 L 2 L_2 L 2 范数,这就是实现旋转不变 Critic 的核心原理
群的等变性与不变性
不变性:函数 f f f 对群 G G G 不变,即当对任意的 g ∈ G g\in G g ∈ G 满足 f ( g x ) = f ( x ) f(gx)=f(x) f ( g x ) = f ( x )
等变性:函数 f f f 对群 G G G 等变,即当对任意的 g ∈ G g\in G g ∈ G 满足 f ( g x ) = g f ( x ) f(gx)=gf(x) f ( g x ) = g f ( x )
群不变 MDP
ECRL 中,将目标条件 MDP 与群不变 MDP 统一,定义了 GCGI-MDP,元组为
M = ( S , A , p ( s 0 ) , p ( g ) , p ( s t + 1 ∣ s t , a t ) , r g ( s t , a t ) , G ) M=(S,A,p(s_0),p(g),p(s_{t+1}\vert s_t,a_t),r_g(s_t,a_t),G)
M = ( S , A , p ( s 0 ) , p ( g ) , p ( s t + 1 ∣ s t , a t ) , r g ( s t , a t ) , G )
其中 p ( s 0 ) p(s_0) p ( s 0 ) 是初始状态的概率分布, p ( g ) p(g) p ( g ) 是目标状态 g g g 的概率分布, p ( s t + 1 ∣ s t , a t ) p(s_{t+1}\vert s_t,a_t) p ( s t + 1 ∣ s t , a t ) 是转移动态, G G G 为对称群,表示任务的对称性。对于标准的 MDP 即 M = ( S , A , R , T , γ ) M=(S,A,R,T,\gamma) M = ( S , A , R , T , γ ) ,若其为 G G G 不变 MDP,则需要满足下面的核心条件
转移动力学不变 ∀ g ∈ G , p ( s t + 1 ∣ s t , a ) = p ( g s t + 1 ∣ g s t , g a ) \forall g\in G,p(s_{t+1}\vert s_t,a)=p(gs_{t+1}\vert gs_t,ga) ∀ g ∈ G , p ( s t + 1 ∣ s t , a ) = p ( g s t + 1 ∣ g s t , g a ) ,状态动作同步做群变换,下一个状态的分布也做相同变换,转移概率不变
奖励函数不变 ∀ g ∈ G , r ( s t , a ) = r ( g s t , g a ) \forall g\in G,r(s_t,a)=r(gs_t,ga) ∀ g ∈ G , r ( s t , a ) = r ( g s t , g a ) ,状态动作同步做群变换,即时奖励不变
在 G 不变 MDP 中,最优 Q 函数 Q ⋆ Q^\star Q ⋆ 是群不变的,最优策略 π ⋆ \pi^\star π ⋆ 是群等变的,即
Q ⋆ ( g s , g a ) = Q ⋆ ( s , a ) π ⋆ ( g s ) = g π ⋆ ( s ) Q^\star(gs,ga)=Q^\star(s,a)\\\pi^\star(gs)=g\pi^\star(s)
Q ⋆ ( g s , g a ) = Q ⋆ ( s , a ) π ⋆ ( g s ) = g π ⋆ ( s )
Critic 负责参数化 Q 函数 Q ( s , a , g ) = f ( s , a , g ) Q(s,a,g)=f(s,a,g) Q ( s , a , g ) = f ( s , a , g ) ,ECRL 通过等变编码器设计来保证其旋转不变性:状态动作编码器 ϕ \phi ϕ 和目标编码器 ψ \psi ψ 均采用 C n C_n C n 等变网络,输出为 k k k 个堆叠的 C n C_n C n 正则表示向量。当输入的 ( s , a ) (s,a) ( s , a ) 和 g g g 同步旋转时,两个编码器的输出会发生完全对齐的循环置换。Critic 的优化目标,通过二元 NCE 对比损失优化
max f E ( s , a ) , s f + ∼ p ( s t + ∣ s , a ) , s f − ∼ p ( s f ) [ log S i g m o i d ( f ( s , a , s f + ) ) + log ( 1 − S i g m o i d ( f ( s , a , s f − ) ) ] \underset{f}{\max}E_{(s,a),s_f^+\sim p(s_{t+}\vert s,a),s_f^-\sim p(s_f)}\Big[\log\mathrm{Sigmoid}(f(s,a,s_f^+))+\log(1-\mathrm{Sigmoid}(f(s,a,s_f^-))\Big]
f max E ( s , a ) , s f + ∼ p ( s t + ∣ s , a ) , s f − ∼ p ( s f ) [ log S i g m o i d ( f ( s , a , s f + ) ) + log ( 1 − S i g m o i d ( f ( s , a , s f − ) ) ]
Actor 负责参数化策略 π ( a ∣ s , g ) \pi(a\vert s,g) π ( a ∣ s , g ) ,ECRL 通过混合表示输入保证其旋转等变性:将状态 s s s 和目标 g g g 拆分为两类分量,即不变分量用平凡表示 ρ 0 \rho_0 ρ 0 ,旋转后数值不变,等变分量用标准表示 ρ 1 \rho_1 ρ 1 ,旋转后同步做坐标变换。Actor 优化目标,在在线 RL 场景中沿用 SAC 框架,最大化 Q 值同时加入熵正则项
max π ( a ∣ s , g ) E π ( a ∣ s , g ) p ( s ) p ( g ) [ f ( s , a , s f = g ) + α H ( π ( ⋅ ∣ s , g ) ) ] \underset{\pi(a\vert s,g)}{\max}E_{\pi(a\vert s,g)p(s)p(g)}\Big[f(s,a,s_f=g)+\alpha\mathcal{H}\big(\pi(\cdot\vert s,g)\big)\Big]
π ( a ∣ s , g ) max E π ( a ∣ s , g ) p ( s ) p ( g ) [ f ( s , a , s f = g ) + α H ( π ( ⋅ ∣ s , g ) ) ]
其中 α \alpha α 为温度系数,其中的熵函数定义为 H ( x ) = E x ∼ p [ − log p ( x ) ] \mathcal{H}(x)=E_{x\sim p}[-\log p(x)] H ( x ) = E x ∼ p [ − log p ( x ) ]
在离线 RL 场景中,针对静态数据集,加入目标条件行为克隆损失,避免分布偏移
max π ( a ∣ s , g ) E π ( a ∣ s , g ) p ( s ) p ( g ) [ λ f ( s , a , s f = g ) + log π ( a o r g ∣ s , g ) ] \underset{\pi(a\vert s,g)}{\max}E_{\pi(a\vert s,g)p(s)p(g)}\Big[\lambda f(s,a,s_f=g)+\log\pi(a_{org}\vert s,g)\Big]
π ( a ∣ s , g ) max E π ( a ∣ s , g ) p ( s ) p ( g ) [ λ f ( s , a , s f = g ) + log π ( a o r g ∣ s , g ) ]
其中 λ \lambda λ 为权重系数, a o r g a_{org} a o r g 是离线数据集中的原始动作。
MQE
MQE 算法即 Multistep Quasimetric Estimation,核心解决了在长时域 GCRL 的痛点:单步时序差分方法的误差累积与时域泛化失效,蒙特卡洛方法的理论最优性缺失。将多步回报与拟度量学习有效融合,实现了端到端的长时域推理与组合泛化
MQE 基于到达目标的折扣似然定义目标条件 Q 函数和值函数,对应公式为
Q g π ( s , a ) = E ( s t , a t ) ∼ π [ ∑ t = 0 ∞ γ t P ( s t = g ∣ s 0 = s , a 0 = a ) ] V g π ( s ) = E s t ∼ π [ ∑ t = 0 ∞ γ t P ( s t = g ∣ s 0 = s ) ] Q_g^\pi(s,a)=E_{(s_t,a_t)\sim\pi}\Big[\sum_{t=0}^\infty\gamma^tP(s_t=g\vert s_0=s,a_0=a)\Big]\\V_g^\pi(s)=E_{s_t\sim\pi}\Big[\sum_{t=0}^\infty\gamma^tP(s_t=g\vert s_0=s)\Big]
Q g π ( s , a ) = E ( s t , a t ) ∼ π [ t = 0 ∑ ∞ γ t P ( s t = g ∣ s 0 = s , a 0 = a ) ] V g π ( s ) = E s t ∼ π [ t = 0 ∑ ∞ γ t P ( s t = g ∣ s 0 = s ) ]
Q 函数表示从状态 s s s 出发,执行动作 a a a 之后遵循策略 π \pi π ,在未来所有时刻到达目标 g g g 的折扣率之和;V 函数是 Q 函数关于动作的期望,表示从状态 s s s 出发遵循策略 π \pi π 到达目标的折扣概率之和。该定义无需人工设计奖励函数,适配目标到达任务,值函数的大小直接对应智能体到达目标的能力。最优 Q 函数定义为,即所有可能策略中能达到的最大 Q 值,对应最优策略
Q g ⋆ ( s , a ) = max π ∈ Π Q g π ( s , a ) Q_g^\star(s,a)=\underset{\pi\in\Pi}{\max}Q_g^\pi(s,a)
Q g ⋆ ( s , a ) = π ∈ Π max Q g π ( s , a )
MC 类 GCRL 方法的核心是利用轨迹中的未来状态作为训练目标,MQE 中采用几何分布来采样未来目标,对应公式为
s t + = s t + K , K ∼ G e o m ( 1 − γ ) s_t^+=s_{t+K},K\sim Geom(1-\gamma)
s t + = s t + K , K ∼ G e o m ( 1 − γ )
其中 G e o m ( 1 − γ ) Geom(1-\gamma) G e o m ( 1 − γ ) 表示首次成功前的失败次数,无记忆性,采样得到的步数的期望为 γ 1 − γ \frac{\gamma}{1-\gamma} 1 − γ γ ,与折扣因子相关。步数越远的未来状态对值函数的贡献越小。
MQE 的整个框架都建立在目标条件价值函数与拟度量距离的映射关系上,拟度量是满足下面三个性质的距离函数 d d d ,是 MQE 的核心建模工具
非负性 d ( x , y ) ≥ 0 d(x,y)\geq0 d ( x , y ) ≥ 0
同一性 d ( x , x ) = 0 d(x,x)=0 d ( x , x ) = 0
三角不等式 d ( x , z ) ≤ d ( x , y ) + d ( y , z ) d(x,z)\leq d(x,y)+d(y,z) d ( x , z ) ≤ d ( x , y ) + d ( y , z )
MQE 使用度量残差网络 MRN 实现拟度量,该架构是通用的拟度量近似器,保证输出的距离严格满足拟度量的三大性质
d M R N ( x , y ) = 1 N ∑ k = 1 N max m = 1 , ⋯ , M max ( 0 , x k M + m − y k M + m ) + ∥ x k M + m − y k M + m ∥ 2 d_{MRN}(x,y)=\frac{1}{N}\sum_{k=1}^N\underset{m=1,\cdots,M}{\max}\max(0,x_{kM+m}-y_{kM+m})+\Vert x_{kM+m}-y_{kM+m}\Vert_2
d M R N ( x , y ) = N 1 k = 1 ∑ N m = 1 , ⋯ , M max max ( 0 , x k M + m − y k M + m ) + ∥ x k M + m − y k M + m ∥ 2
将上述公式拆解为两个部分
非对称项 max m = 1 , ⋯ , M max ( 0 , x k M + m − y k M + m ) \underset{m=1,\cdots,M}{\max}\max(0,x_{kM+m}-y_{kM+m}) m = 1 , ⋯ , M max max ( 0 , x k M + m − y k M + m ) ,捕捉距离的非对称性,仅当 x x x 的维度值大于 y y y 时才会产生非零值,保证了 d ( x , y ) ≠ d ( y , x ) d(x,y)\not=d(y,x) d ( x , y ) = d ( y , x ) ,适配时序距离的单向性
对称项 ∥ x k M + m − y k M + m ∥ 2 \Vert x_{kM+m}-y_{kM+m}\Vert_2 ∥ x k M + m − y k M + m ∥ 2 ,提供基础的欧式距离度量,保证距离的平滑性与非负性
MQE 的核心点是建立目标条件价值函数与拟度量距离的指数映射关系,将价值最大化问题完全转化为距离最小化问题,即
Q g ( s , a ) = V g ( g ) e − d ( ( s , a ) , g ) V g ( s ) = V g ( g ) e − d ( s , g ) Q_g(s,a)=V_g(g)e^{-d((s,a),g)}\\V_g(s)=V_g(g)e^{-d(s,g)}
Q g ( s , a ) = V g ( g ) e − d ( ( s , a ) , g ) V g ( s ) = V g ( g ) e − d ( s , g )
其中 V g ( g ) V_g(g) V g ( g ) 是目标状态 g g g 对应的价值,是一个正常数,而且拟度量距离越小,对应的 Q/V 值越大,智能体到达目标的概率越高。在此基础上定义了可学习的距离函数
d ( ( s , a ) , g ) = d M R N ( ϕ ( s , a ) , ψ ( g ) ) d ( s , g ) = d M R N ( ψ ( s ) , ψ ( g ) ) d((s,a),g)=d_{MRN}(\phi(s,a),\psi(g))\\d(s,g)=d_{MRN}(\psi(s),\psi(g))
d ( ( s , a ) , g ) = d M R N ( ϕ ( s , a ) , ψ ( g ) ) d ( s , g ) = d M R N ( ψ ( s ) , ψ ( g ) )
其中 ψ ( s ) \psi(s) ψ ( s ) 是可学习的状态编码器,输出状态的表征, ϕ ( s ) \phi(s) ϕ ( s ) 是可学习的状态动作对编码器,输出状态动作对的表征。
在 MQE 中,将传统的单步 TD 更新扩展为多步路点更新,解决长时域误差累积问题。传统的 RL 中,单步的 Bellman 更新为 Q ( s , a ) = γ E [ V ( s ′ ) ] Q(s,a)=\gamma E[V(s^\prime)] Q ( s , a ) = γ E [ V ( s ′ ) ] ,带入上述的公式,可以得到单步更新的距离形式
e − d ( ( s , a ) , g ) ← E { s ′ ∼ P ( s ′ ∣ s , a ) } ∼ D [ γ e − d ( s ′ , g ) ] e^{-d((s,a),g)}\leftarrow E_{\{s^\prime\sim P(s^\prime\vert s,a)\}\sim D}[\gamma e^{-d(s^\prime,g)}]
e − d ( ( s , a ) , g ) ← E { s ′ ∼ P ( s ′ ∣ s , a ) } ∼ D [ γ e − d ( s ′ , g ) ]
它仅依赖于单步后的状态 s ′ s^\prime s ′ ,在长时域任务中会出现 bootstrapping 误差的逐层累积,最终价值估计会严重偏离最优解。将上述单步更新的不变性扩展到当前状态与目标之间的任意路点,将单步优化转为多步优化,MQE 设计了伯努利+几何分布 的路点采样策略,兼顾局部一致性与全局价值传播,公式为
s t ω ← s t + k ′ f o r { k ′ ∼ min ( G e o m ( 1 − λ ) . K ) w i t h p r o b a b i l i t y 1 − p k ′ = 1 w i t h p r o b a b i l i t y p s_t^\omega\leftarrow s_{t+k^\prime}\ for\ \left\{\begin{aligned}&k^\prime\sim \min(Geom(1-\lambda).K)&&with\ probability\ 1-p\\&k^{\prime }=1 &&with\ probability\ p\end{aligned}\right.
s t ω ← s t + k ′ f o r { k ′ ∼ min ( G e o m ( 1 − λ ) . K ) k ′ = 1 w i t h p r o b a b i l i t y 1 − p w i t h p r o b a b i l i t y p
其中 s t ω s_t^\omega s t ω 为采样得到的路点状态,即当前状态 s t s_t s t 之后第 k ′ k^\prime k ′ 步的状态, p p p 为采样点步路点 ( k ′ = 1 ) (k^\prime=1) ( k ′ = 1 ) 的概率,对应传统单步 TD 的更新, 1 − p 1-p 1 − p 用几何分布采样多步路点的概率, λ \lambda λ 为几何分布的参数,控制路点的平均距离, K K K 为轨迹的最大长度,对几何分布采样的步数做截断,防止超出轨迹范围。
上述公式以概率 p p p 采样单步路点,保证了局部 Bellman 一致性,保留 TD 方法的最优性的保证,以概率 1 − p 1-p 1 − p 采样多步路点,实现长距离的价值快速传播,避免单步 TD 的误差累积,适配长时域任务。
将上述的单步更新扩展为多步更新
e − d ( ( s , a ) , g ) ← E { ( s t , a t ) , s t ω } ∼ D [ γ k ′ e − d ( s t ω , g ) ] e^{-d((s,a),g)}\leftarrow E_{\{(s_t,a_t),s_t^\omega\}\sim D}[\gamma^{k^\prime} e^{-d(s^\omega_t,g)}]
e − d ( ( s , a ) , g ) ← E { ( s t , a t ) , s t ω } ∼ D [ γ k ′ e − d ( s t ω , g ) ]
公式中的单步后的状态 s ′ s^\prime s ′ 替换为了路点 s t ω s_t^\omega s t ω ,单步折扣替换为 k ′ k^\prime k ′ 步对应的折扣。它实现了任意补偿的价值传播。
为避免距离收敛时梯度消失的问题,采用基于 LINEX 损失的 Bregman 散度作为损失的核心,公式为
D T ( d , d ′ ) = exp ( d − d ′ ) − d ′ D_T(d,d^\prime)=\exp(d-d^\prime)-d^\prime
D T ( d , d ′ ) = exp ( d − d ′ ) − d ′
基于该损失,可以明确定义出 L τ β L_{\tau_\beta} L τ β 和 L τ L_\tau L τ 这两个用于更新 τ \tau τ 和 τ β \tau_\beta τ β 的参数
L τ β ( ϕ , ψ ∣ { s i , a i , s i w , g i , k i ′ } i = 1 N ) = ∑ i = 1 N ∑ j = 1 N D T ( d ( ( s i , a i ) , g j ) , d ( s i w , g j ) ) − k i ′ log γ ) L_{\tau_\beta}(\phi,\psi\vert\{s_i,a_i,s_i^w,g_i,k_i^\prime\}_{i=1}^N)=\sum_{i=1}^N\sum_{j=1}^ND_T(d((s_i,a_i),g_j),d(s_i^w,g_j))-k_i^\prime\log\gamma)
L τ β ( ϕ , ψ ∣ { s i , a i , s i w , g i , k i ′ } i = 1 N ) = i = 1 ∑ N j = 1 ∑ N D T ( d ( ( s i , a i ) , g j ) , d ( s i w , g j ) ) − k i ′ log γ )
双重求和用于计算批次中每个样本与所有目标的成对距离,大幅提升离线数据的样本效率。其中的 − k i ′ log γ -k_i^\prime\log\gamma − k i ′ log γ 时数学上的等价变换,将 γ k ′ \gamma^{k^\prime} γ k ′ 融入到损失函数中,即 e − d ′ γ k ′ = e − d ′ + k ′ log γ = e − ( d ′ − k ′ log γ ) e^{-d^\prime}\gamma^{k^\prime}=e^{-d^\prime+k^\prime\log\gamma}=e^{-(d^\prime-k^\prime\log\gamma)} e − d ′ γ k ′ = e − d ′ + k ′ l o g γ = e − ( d ′ − k ′ l o g γ ) 。最小化该损失,让路点到目标的距离满足多步 Bellman 一致性,实现价值快速传播
在 Bellman 最优方程中,最优值函数是最优 Q 函数关于动作的最大值,即
V g ⋆ ( s ) = max a ∈ A Q g ⋆ ( s , a ) V_g^\star(s)=\underset{a\in A}{\max}Q^\star_g(s,a)
V g ⋆ ( s ) = a ∈ A max Q g ⋆ ( s , a )
将上述公式带入目标条件价值函数与拟度量距离的指数映射关系中,可以得到
e − d ( s , g ) = max a ∈ A e − d ( ( s , a ) , g ) ⇓ d ( s , g ) = min a ∈ A d ( ( s , a ) , g ) e^{-d(s,g)}=\underset{a\in A}{\max}e^{-d((s,a),g)}\\\Downarrow\\d(s,g)=\underset{a\in A}{\min}d((s,a),g)
e − d ( s , g ) = a ∈ A max e − d ( ( s , a ) , g ) ⇓ d ( s , g ) = a ∈ A min d ( ( s , a ) , g )
它的意义就是:最优动作对应的状态动作对到目标的距离,等于状态本身到目标的距离,可以推导出对最优表征必须满足动作不变性,即状态表征 ψ ( s ) \psi(s) ψ ( s ) 与状态动作对表征 ϕ ( s , a ) \phi(s,a) ϕ ( s , a ) 之间的拟度量距离为 0
d ( ψ ( s ) , ϕ ( s , a ) ) ← 0 d(\psi(s),\phi(s,a))\leftarrow0
d ( ψ ( s ) , ϕ ( s , a ) ) ← 0
MQE 设计了平滑的动作不变性损失函数,如下
L I ( ϕ , ψ ∣ { s i , a i } i N ) = ∑ i , j = 1 N ( e − d ( ψ ( s i ) , ϕ ( s i , a j ) ) − 1 ) 2 L_I(\phi,\psi\vert\{s_i,a_i\}_i^N)=\sum_{i,j=1}^N(e^{-d(\psi(s_i),\phi(s_i,a_j))}-1)^2
L I ( ϕ , ψ ∣ { s i , a i } i N ) = i , j = 1 ∑ N ( e − d ( ψ ( s i ) , ϕ ( s i , a j ) ) − 1 ) 2
MQE 采用行为正则化的深度确定性策略提取最终的目标条件策略,解决离线 RL 的分布偏移问题
L μ ( π ∣ { s i , a i , g i } i = 1 N ) = E [ ∑ i , j = 1 N d ( ( s i , π ( s i , g j ) ) , g j ) − α log π ( a i ∣ s i , g i ) ] L_\mu(\pi\vert\{s_i,a_i,g_i\}_{i=1}^N)=E\Big[\sum_{i,j=1}^Nd((s_i,\pi(s_i,g_j)),g_j)-\alpha\log\pi(a_i\vert s_i,g_i)\Big]
L μ ( π ∣ { s i , a i , g i } i = 1 N ) = E [ i , j = 1 ∑ N d ( ( s i , π ( s i , g j ) ) , g j ) − α log π ( a i ∣ s i , g i ) ]
损失函数分为策略优化项和行为克隆正则项。MQE 算法的流程如下
初始化离线数据集 D D D ,采样批次大小 B B B ,路点采样概率 p p p ,训练迭代次数 T T T ,初始化拟度量网络参数,初始化目标条件策略 π μ \pi_\mu π μ
循环迭代 T T T 次
从数据集中采样批次样本 { s i , a i , s i ′ , s w i , g i , k i ′ } i = 1 B \{s_i,a_i,s_i^\prime,sw_i,g_i,k_i^\prime\}_{i=1}^B { s i , a i , s i ′ , s w i , g i , k i ′ } i = 1 B ,路点按照上述的采样方法采样
计算多步备份损失 L τ β L_{\tau_\beta} L τ β ,更新拟度量网络参数 ϕ \phi ϕ 和 ψ \psi ψ
计算动作不变性损失 L I L_{I} L I ,更新拟度量网络参数 ϕ \phi ϕ 和 ψ \psi ψ
计算策略提取损失 L μ L_\mu L μ ,更新目标条件策略 π m u \pi_mu π m u
多智能体强化学习
多智能体强化学习 MARL 是研究多个智能体在共享环境中通过交互学习最优策略,以实现合作、竞争或混合目标的强化学习方法。多智能体强化学习要比单智能体更加困难。
由于多个智能体都在不断学习并且更新自身策略,所以在每个智能体的视角下,环境是非稳态的,即对每一个智能体而言即使在相同状态下采取相同的动作,得到的状态转移和奖励信号的分布也可能在不断改变。而多个智能体的训练可能是多目标的,不同智能体需要最大化自己的利益。训练评估的复杂度会增加,可能需要大规模分布式训练来提高效率。
单智能体 RL 的数学基础是 MDP,而 MARL 的核心理论框架是随机博弈,又称为马尔可夫博弈,是 MDP 在多智能体场景下的泛化,将一个多智能体环境用 ( N , S , A , R , P ) (N,S,A,R,P) ( N , S , A , R , P ) 表示,其中 N N N 为智能体集合集合, S S S 为全局状态空间, A A A 为每个智能体的动作空间的联合动作空间, P P P 为状态转移函数, R R R 为所有智能体奖励函数的集合。
MARL 按照训练与执行的架构分类
集中式训练集中式执行 CTCE:将所有智能体视为一个集成智能体,中心节点同一训练,统一输出联合动作。实现简单,但是联合动作空间随着智能体数量指数爆炸,扩展性差,仅使用极小规模场景
分散式训练分散式执行 DTDE:每个智能体完全独立训练,独立决策,仅基于自身局部观测和回报。完全分布式、扩展性拉满,但是无法解决环境非平稳性问题,训练容易震荡不收敛
集中式训练分散式执行 CTDE:是当前 MARL 的主流形式,训练时利用全局信息优化策略,保证训练收敛性;执行时每个智能体仅用自身局部观测做决策,满足分布式落地需求。平衡收敛性、扩展性和实用性
IDQN
对于包含 N N N 个智能体的场景,IDQN 算法为每个智能体维护一套完全独立的训练体系。
每个智能体的 Q 网络为 Q i ( o i , a i ) Q_i(o_i,a_i) Q i ( o i , a i ) ,输入仅为自身的局部观测 o i o_i o i ,输出为自身所有可选动作的 Q 值,完全不接收其他智能体的任何消息。TD 目标值仅基于自身的即时回报 r i r_i r i 和局部观测转移计算,完全忽略其他智能体的动作与回报,与 DQN 中的目标值计算方法一致。每个智能体独立计算自身的 MSE 损失,独立执行梯度下降法更新参数。另外每个智能体拥有独立的经验回放池 D D D ,独立的主网络与目标网络,训练全程无需与其他智能体共享数据和参数。
初始化 N N N 个智能体,每个智能体中包含一个 Q 网络和目标 Q 网络。为每个智能体初始化经验回放池 D i D_i D i
对于每个时间步 t t t
每个智能体采用 ϵ \epsilon ϵ 贪婪策略选择动作
执行所有智能体的联合动作 ( a 1 t , ⋯ , a N t ) (a_1^t,\cdots,a_N^t) ( a 1 t , ⋯ , a N t ) ,环境返回每个智能体的即时回报 r i t r_i^t r i t ,下一时刻的局部观测 o i t + 1 o_i^{t+1} o i t + 1
将每个智能体的四元组 ( o i t , a i t , r i t , o i t + 1 ) (o_i^t,a_i^t,r_i^t,o_i^{t+1}) ( o i t , a i t , r i t , o i t + 1 ) 存入经验回放池中
每个智能体都从经验回放池中采样,基于样本计算损失函数,最小化损失函数更新主网络参数
每运行 T T T 个时间步,每个智能体更新目标 Q 网络
IPPO
IPPO(Independent Proximal Policy Optimization)是一种用于协作多智能体强化学习的分布式策略梯度方法,每个智能体独立运行 PPO 算法,实现去中心化执行。
IPPO 的核心是用 PPO 为每个智能体学习去中心化策略,每个智能体独立完成策略裁剪更新,仅基于自身局部观测学习局部价值函数。在训练阶段,智能体可访问全局环境状态、共享彼此的策略与经验,利用中心化信息简化学习问题;在执行阶段,每个智能体仅能使用自身局部观测-动作历史做决策,保证策略的去中心化落地能力。
在 IPPO 中,所有智能体共享同一套 Actor 和 Critic 参数,训练过程中,所有的智能体的轨迹数据都用于更新这一套共享参数;在执行时,所有智能体都用这一套共享网络基于自身局部观测做决策。IPPO 的训练流程如下
初始化共享的 Actor 和 Critic 网络,初始化所有的智能体
对于每轮训练中
所有智能体在环境交互中,分别获得各自的一条轨迹数据
对每个智能体,都基于当前的价值函数使用 GAE 计算优势函数的估计
每个智能体通过最大化其 PPO-截断 的目标来更新共享的 Actor 网络
每个智能体通过均方误差损失函数优化共享的 Critic 网络
VDN
VDN 即价值分解网络,它的核心思想是将多个智能体的联合 Q 值函数分解为每个智能体的局部 Q 值之和,在这种结构之下,每个智能体都学习局部的 Q 值函数,通过简单求和操作得到全局的联合 Q 值,这种分解形式使得每个智能体可以独立执行决策,同时在集中训练阶段依然能够学到全局最优策略。
VDN 的核心设计在于价值分解网络。在传统的 RL 中,每个智能体都由独立的 Q 网络,输入局部历史,输出局部 Q 值,用各自的全局奖励更新,无信息交互。而在 VDN 中,每个智能体都有独立的局部价值网络,输入局部历史,输出局部 Q ~ \tilde{Q} Q ~ 值,所有局部的 Q ~ \tilde{Q} Q ~ 值求和得到全局联合 Q 函数,用全局奖励计算 TD 误差,之后通过求和层反向传播梯度,更新每个局部网络的参数。在 VDN 中提出全局联合 Q 函数的加法分解假设,公式如下
Q ( ( h 1 , h 2 , ⋯ , h d ) , ( a 1 , a 2 , ⋯ , a d ) ) ≈ ∑ i = 1 d Q ~ i ( h i , a i ) Q((h^1,h^2,\cdots,h^d),(a^1,a^2,\cdots,a^d))\approx\sum_{i=1}^d\tilde{Q}_i(h^i,a^i)
Q ( ( h 1 , h 2 , ⋯ , h d ) , ( a 1 , a 2 , ⋯ , a d ) ) ≈ i = 1 ∑ d Q ~ i ( h i , a i )
公式左侧即 Q ( h ˉ , a ˉ ) Q(\bar{h},\bar{a}) Q ( h ˉ , a ˉ ) 为全局联合动作价值函数,输入为所有智能体的联合历史和联合动作,输出团队的全局 Q 值。右侧 ∑ i = 1 d Q ~ i ( h i , a i ) \sum_{i=1}^d\tilde{Q}_i(h^i,a^i) ∑ i = 1 d Q ~ i ( h i , a i ) 为所有智能体局部价值函数的总和,而每个局部价值函数都依赖于该智能体自己的局部历史 h i h^i h i 和局部动作 a i a^i a i ,无任何全局信息或其他智能体的信息输入。
VDN 的参数更新完全遵循 Q 函数的 TD 更新规则,仅需要做极小的修改,如下
用所有局部 Q ~ i \tilde{Q}_i Q ~ i 求和得到全局 Q t = ∑ i = 1 d Q ~ i ( h i , d i ) Q_t=\sum_{i=1}^d\tilde{Q}_i(h^i,d^i) Q t = ∑ i = 1 d Q ~ i ( h i , d i )
用全局联合奖励 r t r_t r t 计算 TD 目标 y t = r t + γ max a ~ ′ Q t ( h ~ ′ , a ~ ′ ) y_t=r_t+\gamma\underset{\tilde{a}^\prime}{\max}Q_t(\tilde{h}^\prime,\tilde{a}^\prime) y t = r t + γ a ~ ′ max Q t ( h ~ ′ , a ~ ′ )
计算 TD 损失 L ( θ ) = E [ ( y t − Q t ) 2 ] L(\theta)=E[(y_t-Q_t)^2] L ( θ ) = E [ ( y t − Q t ) 2 ]
反向传播更新参数
QMIX
QMIX 即 Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning(面向深度多智能体强化学习的单调价值函数分解方法),QMIX 的核心就是在保证集中训练的全局最优策略与分散执行的个体贪心策略完全一致的前提下,极大提升价值函数的表达能力,同时充分利用集中训练的全局状态信息。
上述的 VDN 算法中,将 Q t Q_t Q t 分解为各个智能体的 Q i Q_i Q i 的线性加和,实现了 CTDE,但是仅能表示线性加和的价值函数,表达能力受限,无法建模智能体间复杂的非线性协作;另外完全无法利用集中训练时的全局状态信息,浪费训练中的关键先验。QMIX 的核心是放宽 VDN 的加性分解约束,仅保留单调性约束,在保留 argmax 一致性的前提之下,极大提升价值函数的表达能力。在 VDN 中的加性分解时单调性约束的特例 ∂ Q t ∂ Q i = 1 \frac{\partial Q_t}{\partial Q_i}=1 ∂ Q i ∂ Q t = 1 ,而 QMIX 允许任意非线性的单调组合,只需要满足 ∂ Q t ∂ Q a ≥ 0 \frac{\partial Q_t}{\partial Q_a}\geq0 ∂ Q a ∂ Q t ≥ 0 (单调性约束),即可满足
arg max u Q t ( τ , u ) = [ arg max u 1 Q 1 ( τ 1 , u 1 ) ⋮ arg max u n Q n ( τ n , u n ) ] \underset{u}{\argmax}Q_t(\tau,u)=\begin{bmatrix}\underset{u^1}{\argmax}Q_1(\tau^1,u^1)\\\vdots\\\underset{u^n}{\argmax}Q_n(\tau^n,u^n)\end{bmatrix}
u a r g m a x Q t ( τ , u ) = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ u 1 a r g m a x Q 1 ( τ 1 , u 1 ) ⋮ u n a r g m a x Q n ( τ n , u n ) ⎦ ⎥ ⎥ ⎥ ⎥ ⎤
对全局联合动作空间求 Q t Q_t Q t 的最大值,得到最优联合动作,与每个智能体分别对自身 Q i Q_i Q i 求最大值得到的动作组合完全等价。只有满足这个等式,分散执行时,每个智能体仅基于本地观测做贪心动作选择,就能得到全局最优的协作效果,这就是 CTDE 范式的核心目标,彻底解决了集中式方法的可扩展性问题。
为了满足单调性约束,同时充分利用全局状态信息,QMIX 设计了端到端的三模块网络架构
Agent Network:是每个智能体的本地拟合模块。输入当前时刻的局部观测 o t i o_t^i o t i 和上一时刻执行的动作 u t − 1 i u_{t-1}^i u t − 1 i 与智能体 ID 的 one-hot 码,输出所有可选动作对应的个体价值 Q i ( τ i , u i ) Q_i(\tau^i,u^i) Q i ( τ i , u i )
Mixing Network:混合网络是实现单调性约束的核心。将所有智能体输出的个体 Q i Q_i Q i 进行非线性组合,输出全局联合价值 Q t Q_t Q t ,从结构上保证单调性约束
Hyper Network:是 QMIX 利用全局状态信息的核心设计,解决了引入全局状态不破坏单调性约束的问题。以集中训练时可获取的全局状态 s s s 作为输入,生成混合网络每一层的权重和偏置,让 Q t Q_t Q t 充分利用全局状态信息,同时不破坏单调性约束
QMIX 采用端到端的训练来最小化损失函数,损失函数与 DQN 一脉相承,仅将智能体 Q Q Q 替换为 Q t Q_t Q t ,公式如下
L ( θ ) = ∑ i = 1 [ ( y i t − Q t ( τ , u , s ) ) 2 ] L(\theta)=\sum_{i=1}\Big[\big(y_i^t-Q_t(\tau,u,s)\big)^2\Big]
L ( θ ) = i = 1 ∑ [ ( y i t − Q t ( τ , u , s ) ) 2 ]
其中 TD 目标值的定义与 DQN 完全一致
y t = r + γ max u ′ Q t ′ ( τ ′ , u ′ , s ′ ) y^t=r+\gamma\underset{u^\prime}{\max}Q_t^\prime(\tau^\prime,u^\prime,s^\prime)
y t = r + γ u ′ max Q t ′ ( τ ′ , u ′ , s ′ )
QMIX 继承了 DQN 的训练框架,采用端到端的更新方式。
MADDPG
MADDPG 即多智能体的 DDPG,在 MADDPG 中,每个智能体都有一个 Actor 网络且完全独立,而所有智能体共享一个中心化的 Critic 网络,该 Critic 在训练的过程中同时对每个智能体的 Actor 做出指导。
在 CTDE 算法的应用场景可以被建模为部分可观测马尔可夫博弈,部分观测马尔可夫博弈是单智能体 MDP 在多智能体场景下的标准扩展,对于包含 N N N 个智能体的马尔可夫博弈,核心要素包含
全局状态集合 S S S :所有智能体所有可能的状态空间,是全局信息
每个智能体 i i i 的动作集合 A i A_i A i
局部观测集合 O i O_i O i
每个智能体的策略 π θ i : O i × A i → [ 0 , 1 ] \pi_{\theta_i}:O_i\times A_i\rightarrow[0,1] π θ i : O i × A i → [ 0 , 1 ] ,表示智能体在每个观测下采取动作的概率
环境的状态转移函数 P : S × A 1 × ⋯ × A N → ω ( s ) P:S\times A_1\times\cdots\times A_N\rightarrow \omega(s) P : S × A 1 × ⋯ × A N → ω ( s ) ,输入全局状态与所有智能体的联合动作,输出下一时刻全局状态
每个智能体的奖励函数 r i : S × A i → R r_i:S\times A_i\rightarrow R r i : S × A i → R ,每个智能体的即时奖励
每个智能体从全局状态得到部分的观测信息 o i : S → O i o_i:S\rightarrow O_i o i : S → O i
初始状态分布 ρ : S → [ 0 , 1 ] \rho:S\rightarrow[0,1] ρ : S → [ 0 , 1 ]
每个智能体的目标都是最大化其期望累积奖励 R i = ∑ t = 0 T γ t r i t R_i=\sum_{t=0}^T\gamma^tr_i^t R i = ∑ t = 0 T γ t r i t
MADDPG 算法基于中心化训练+去中心化执行,每个智能体使用 AC 的方法训练,不同于传统的单智能体的情况,MADDPG 中每个智能体的 Critic 部分都能获得其他智能体的策略信息。对于 N N N 个智能体,策略参数集合 θ = { θ 1 , ⋯ , θ N } \theta=\{\theta_1,\cdots,\theta_N\} θ = { θ 1 , ⋯ , θ N } ,策略集合 π = { π 1 , ⋯ , π N } \pi=\{\pi_1,\cdots,\pi_N\} π = { π 1 , ⋯ , π N } ,智能体 i i i 的期望回报目标为 J ( θ i ) = E [ R i ] J(\theta_i)=E[R_i] J ( θ i ) = E [ R i ] ,其策略梯度公式为
∇ θ i J ( θ i ) = E s ∼ p π , a i ∼ π i [ ∇ θ i log π i ( a i ∣ o i ) Q i π ( x , a 1 , ⋯ , a N ) ] \nabla_{\theta_i}J(\theta_i)=E_{s\sim p^\pi,a_i\sim\pi_i}[\nabla_{\theta_i}\log\pi_i(a_i\vert o_i)Q_i^\pi(x,a_1,\cdots,a_N)]
∇ θ i J ( θ i ) = E s ∼ p π , a i ∼ π i [ ∇ θ i log π i ( a i ∣ o i ) Q i π ( x , a 1 , ⋯ , a N ) ]
其中 Q i π ( x , a 1 , ⋯ , a N ) Q_i^\pi(x,a_1,\cdots,a_N) Q i π ( x , a 1 , ⋯ , a N ) 是一个中心化的动作价值函数,其中的输入 x = ( o 1 , ⋯ , o N ) x=(o_1,\cdots,o_N) x = ( o 1 , ⋯ , o N ) 为全局信息,包含所有智能体的联合动作。其中的 π i ( a i , o i ) \pi_i(a_i,o_i) π i ( a i , o i ) 是一个去中心化的 Actor 函数,策略网络仅输入智能体自身的局部观测,输出智能体的动作分布。,在训练时,由中心化的 Critic 提供梯度指导,解决传统 PG 的方差爆炸问题。当 Critic 输入所有智能体的联合动作之后,环境的转移概率满足
P ( s ′ ∣ s , a 1 , ⋯ , a N , π 1 , ⋯ , π N ) = P ( s ′ ∣ s , a 1 , ⋯ , a N ) = P ( s ′ ∣ s , a 1 , ⋯ , a N , π 1 ′ , ⋯ , π N ′ ) P(s^\prime\vert s,a_1,\cdots,a_N,\pi_1,\cdots,\pi_N)=P(s^\prime\vert s,a_1,\cdots,a_N)=P(s^\prime\vert s,a_1,\cdots,a_N,\pi_1^\prime,\cdots,\pi_N^\prime)
P ( s ′ ∣ s , a 1 , ⋯ , a N , π 1 , ⋯ , π N ) = P ( s ′ ∣ s , a 1 , ⋯ , a N ) = P ( s ′ ∣ s , a 1 , ⋯ , a N , π 1 ′ , ⋯ , π N ′ )
无论智能体的策略如何更新,给定全局状态和所有智能体的联合动作,环境的转移概率都是固定的,环境从单智能体视角变为平稳,彻底解决了非平稳性问题,同时让经验回放池可以正常使用。对于 N N N 个连续动作空间的确定性策略 μ θ i \mu_{\theta_i} μ θ i ,智能体 i i i 的目标函数梯度可以写作
∇ θ i J ( μ i ) E x , a ∼ D [ ∇ θ i μ i ( a i ∣ o i ) ∇ a i Q i μ ( x , a 1 , ⋯ , a N ) ∣ a i = μ i ( o i ) ] \nabla_{\theta_i}J(\mu_i)E_{x,a\sim D}\Big[\nabla_{\theta_i}\mu_i(a_i\vert o_i)\nabla_{a_i}Q_i^\mu(x,a_1,\cdots,a_N)\vert_{a_i=\mu_i(o_i)}\Big]
∇ θ i J ( μ i ) E x , a ∼ D [ ∇ θ i μ i ( a i ∣ o i ) ∇ a i Q i μ ( x , a 1 , ⋯ , a N ) ∣ a i = μ i ( o i ) ]
其中 D D D 为经验回收池,存储元组 ( x , a 1 , ⋯ , a N , r 1 , ⋯ , r N , x ′ ) (x,a_1,\cdots,a_N,r_1,\cdots,r_N,x^\prime) ( x , a 1 , ⋯ , a N , r 1 , ⋯ , r N , x ′ ) 。在 MADDPG 中,中心化 Critic 网络通过最小化 TD 误差的均方损失更新,损失函数如下
L ( θ i ) = E x , a , r , x ′ [ ( Q i μ ( x , a 1 , ⋯ , a N ) − y ) 2 ] y = r i + γ Q i μ ′ ( x ′ , a 1 ′ , ⋯ , a N ′ ) ∣ a j ′ = μ j ′ ( o j ) L(\theta_i)=E_{x,a,r,x^\prime}\Big[\big(Q_i^\mu(x,a_1,\cdots,a_N)-y\big)^2\Big]\\y=r_i+\gamma Q_i^{\mu^\prime}(x^\prime,a_1^\prime,\cdots,a_N^\prime)\vert_{a_j^\prime=\mu_j^\prime(o_j)}
L ( θ i ) = E x , a , r , x ′ [ ( Q i μ ( x , a 1 , ⋯ , a N ) − y ) 2 ] y = r i + γ Q i μ ′ ( x ′ , a 1 ′ , ⋯ , a N ′ ) ∣ a j ′ = μ j ′ ( o j )
其中 μ ′ = { μ θ 1 ′ , ⋯ , μ θ N ′ } \mu^\prime=\{\mu_{\theta_1^\prime},\cdots,\mu_{\theta_N^\prime}\} μ ′ = { μ θ 1 ′ , ⋯ , μ θ N ′ } 是所有智能体的 Actor 网络,采用软更新的方式更新参数,保证训练稳定性。其中的 a j ′ = μ j ′ ( o j ) a_j^\prime=\mu_j^\prime(o_j) a j ′ = μ j ′ ( o j ) 是下一时刻的动作,由每个智能体 j j j 的目标 Actor 网络,根据下一时刻的局部观测 o j o_j o j 输出。
对每个智能体 i i i ,为其他每个智能体 j j j 维护一个近似策略 μ ^ ϕ i j \hat{\mu}_{\phi_i^j} μ ^ ϕ i j ,其中 ϕ i j \phi_i^j ϕ i j 为近似策略的参数。近似策略通过最大化智能体 j j j 动作的对数概率,加上熵正则化项学习,损失函数公式为
L ( ϕ i j ) = − E o j , a j [ log μ ^ i j ( a j ∣ o j ) + λ H ( μ ^ i j ) ] L(\phi_i^j)=-E_{o_j,a_j}\Big[\log\hat{\mu}_i^j(a_j\vert o_j)+\lambda H(\hat{\mu}_i^j)\Big]
L ( ϕ i j ) = − E o j , a j [ log μ ^ i j ( a j ∣ o j ) + λ H ( μ ^ i j ) ]
其中的 H ( μ ^ i j ) H(\hat{\mu}_i^j) H ( μ ^ i j ) 为近似策略的熵正则项,防止策略过度确定性,提升探索能力, λ \lambda λ 为熵正则系数。损失函数就是带最大熵正则的最大似然估计,让近似策略既能精准拟合智能体 j j j 的真实动作,又保持一定的探索性
MADDPG 的流程如下
初始化每个智能体的 Actor 网络,初始化每个智能体的 Critic 网络
对于每次迭代
初始化一个环境,获取所有智能体的初始观测 s s s
对于每个时间步
所有智能体都使用自己的 Actor 网络策略选择一个动作 a i a_i a i
执行动作 a = ( a 1 , ⋯ , a N ) a=(a_1,\cdots,a_N) a = ( a 1 , ⋯ , a N ) ,获得奖励 r r r 和新的观测 s ′ s^\prime s ′
将 ( s , a , r , s ′ ) (s,a,r,s^\prime) ( s , a , r , s ′ ) 存放到经验回收池 D D D 中
从 D 中随机采样一批数据
对于每个智能体,中心化训练 Critic 网络,训练自身的 Actor 网络
每过一定时间步,更新每个智能体的目标 Actor 网络和目标 Critic 网络
MAPPO
MAPPO 即 Multi-Agent PPO,是在多智能体协作环境中对 PPO 的集中式价值函数扩展版本。MAPPO 完全继承了 PPO 的核心结构,对 CTDE 范式做了适配,学习两个独立的神经网络
策略网络:只输入该智能体的局部观测,输出动作分布。每个智能体在执行时,仅使用其对应的策略网络来计算,保证去中心化操作
价值网络:仅在训练时使用,输入全局信息,实现集中式训练
MAPPO 的损失函数是 PPO 的损失函数针对多智能体场景做了适配
L ( θ ) = 1 B n ∑ i = 1 B ∑ k = 1 n min [ r θ , i ( k ) A i ( k ) , c l i p ( r θ , i ( k ) , 1 − ϵ , 1 + ϵ ) A i ( k ) ] + σ 1 B n ∑ i = 1 B ∑ k = 1 n S [ π θ ( o i ( k ) ) ] L(\theta)=\frac{1}{Bn}\sum_{i=1}^B\sum_{k=1}^n\min\Big[r_{\theta,i}^{(k)}A_i^{(k)},\mathrm{clip}(r_{\theta,i}^{(k)},1-\epsilon,1+\epsilon)A_i^{(k)}\Big]+\sigma\frac{1}{Bn}\sum_{i=1}^B\sum_{k=1}^nS\Big[\pi_\theta(o_i^{(k)})\Big]
L ( θ ) = B n 1 i = 1 ∑ B k = 1 ∑ n min [ r θ , i ( k ) A i ( k ) , c l i p ( r θ , i ( k ) , 1 − ϵ , 1 + ϵ ) A i ( k ) ] + σ B n 1 i = 1 ∑ B k = 1 ∑ n S [ π θ ( o i ( k ) ) ]
其中
B B B 为批次大小,即收集的轨迹样本数
n n n 为智能体数量
重要性采样比率 r θ , i ( k ) = π θ ( a i ( k ) ∣ o i ( k ) ) π θ o l d ( a i ( k ) ∣ o i ( k ) r_{\theta,i}^{(k)}=\frac{\pi_\theta(a_i^{(k)}\vert o_i^{(k)})}{\pi_{\theta_{old}}(a_i^{(k)}\vert o_i^{(k)}} r θ , i ( k ) = π θ o l d ( a i ( k ) ∣ o i ( k ) π θ ( a i ( k ) ∣ o i ( k ) ) ,即新策略 π θ \pi_\theta π θ 在观测 o i ( k ) o_i^{(k)} o i ( k ) 下采取动作 a i ( k ) a_i^{(k)} a i ( k ) 的概率与旧策略 π θ o l d \pi_{\theta_{old}} π θ o l d 对应的概率的比值,PPO 通过限制该比值的范围,避免策略更新步长过大,保证训练稳定
优势函数 A i ( k ) A_i^{(k)} A i ( k ) 使用 GAE 计算,基于全局价值函数 V ϕ V_\phi V ϕ 求解,用于衡量动作的相对优劣,用于策略更新
熵正则项 S ( π ) = − ∑ a π ( a ∣ o ) log π ( a ∣ o ) S(\pi)=-\sum_a\pi(a\vert o)\log\pi(a\vert o) S ( π ) = − ∑ a π ( a ∣ o ) log π ( a ∣ o ) ,估计策略探索,防止策略过早收敛到确定性策略,陷入局部最优
MAPPO 采用带裁剪的价值损失,适配多智能体场景之后的公式为
L ( ϕ ) = 1 B n ∑ i = 1 B ∑ k = 1 n max [ ( V ϕ ( s i ( k ) ) − R ^ i ) 2 , ( c l i p ( V ϕ ( s i ( k ) ) , V ϕ o l d ( s i ( k ) ) − ϵ , V ϕ o l d ( s i ( k ) ) + ϵ ) − R ^ i ) 2 ] L(\phi)=\frac{1}{Bn}\sum_{i=1}^B\sum_{k=1}^n\max\Big[\Big(V_\phi(s_i^{(k)})-\hat{R}_i\Big)^2,\Big(\mathrm{clip}(V_\phi(s_i^{(k)}),V_{\phi_{old}}(s_i^{(k)})-\epsilon,V_{\phi_{old}}(s_i^{(k)})+\epsilon)-\hat{R}_i\Big)^2\Big]
L ( ϕ ) = B n 1 i = 1 ∑ B k = 1 ∑ n max [ ( V ϕ ( s i ( k ) ) − R ^ i ) 2 , ( c l i p ( V ϕ ( s i ( k ) ) , V ϕ o l d ( s i ( k ) ) − ϵ , V ϕ o l d ( s i ( k ) ) + ϵ ) − R ^ i ) 2 ]
其中
V ϕ ( s i ( k ) ) V_\phi(s_i^{(k)}) V ϕ ( s i ( k ) ) 是当前价值网络对全局状态的价值预测
V ϕ o l d ( s i ( k ) ) V_{\phi_{old}}(s_i^{(k)}) V ϕ o l d ( s i ( k ) ) 更新前旧价值网络的预测值
R ^ i \hat{R}_i R ^ i 折扣回报,是价值网络拟合的目标
ϵ \epsilon ϵ 裁剪超参数,与策略损失中的 ϵ \epsilon ϵ 共用,限制价值网络的更新幅度
MAPPO 算法的训练流程如下
初始化每个智能体的 Actor 网络,初始化每个智能体的 Critic 网络
对于每次迭代
初始化一个环境,获取所有智能体的初始观测 s s s
对于每个时间步
所有智能体都使用自己的 Actor 网络策略选择一个动作 a i a_i a i
执行动作 a = ( a 1 , ⋯ , a N ) a=(a_1,\cdots,a_N) a = ( a 1 , ⋯ , a N ) ,获得奖励 r r r 和新的观测 s ′ s^\prime s ′
将 ( s , a , r , s ′ ) (s,a,r,s^\prime) ( s , a , r , s ′ ) 存放到经验回收池 D D D 中
从 D 中随机采样一批数据
对于每个智能体,计算 Actor 网络损失和 Critic 网络损失,最小化损失函数更新对应网络的参数
每过一定时间步,更新每个智能体的目标 Actor 网络和目标 Critic 网络
COMA
COMA 即反事实多智能体策略梯度法COMA(Counterfactual Multi-Agent Policy Gradient),旨在通过减少策略梯度的方差来提升去中心化智能体的学习效果。在多智能体强化学习场景中,每个智能体在某一时刻只掌握局部的信息,无法全局观测环境状态。为了促进合作,各个智能体的动作对全局奖励有不同的贡献,因此需要一种有效的方法来分配奖励
COMA 的核心是引入一个反事实基线,该基线模拟在固定其他智能体动作的前提下,某个智能体选择不同动作时对全局奖励的影响,从而更精确地衡量当前动作的贡献,减少策略梯度更新中的方差。基于反事实基线设计反事实优势函数
A i ( s , u ) = Q ( s , u ) − ∑ u i ′ π i ( u i ′ ∣ o i ) Q ( s , ( u − i , u i ′ ) ) A_i(s,u)=Q(s,u)-\sum_{u_i^\prime}\pi_i(u_i^\prime\vert o^i)Q(s,(u_{-i},u^\prime_i))
A i ( s , u ) = Q ( s , u ) − u i ′ ∑ π i ( u i ′ ∣ o i ) Q ( s , ( u − i , u i ′ ) )
其中 A i ( s , u ) A^i(s,u) A i ( s , u ) 是智能体 i i i 的反事实优势函数,衡量智能体 i i i 执行当前动作 u i u_i u i 时,相比固定其他所有智能体的动作 u − i u_{-i} u − i ,智能体 i i i 遵循自身策略随机动作的相对优势。其中的 Q ( s , u ) Q(s,u) Q ( s , u ) 是中心化 Critic 估计的全局状态 s s s 与联合动作 u u u 下的动作价值,即智能体 i i i 执行当前动作 u i u_i u i ,其他智能体执行 u − i u_{-i} u − i 的期望回报。其中的 ∑ u i ′ π i ( u i ′ ∣ o i ) Q ( s , ( u − i , u i ′ ) ) \sum_{u_i^\prime}\pi_i(u_i^\prime\vert o^i)Q(s,(u_{-i},u^\prime_i)) ∑ u i ′ π i ( u i ′ ∣ o i ) Q ( s , ( u − i , u i ′ ) ) 为反事实基线,即固定其他智能体的动作 u − i u_{-i} u − i 不变,让智能体 i i i 遵循自身策略 π i \pi_i π i 遍历所有可能的动作 u i ′ u_i^\prime u i ′ ,计算对应的 Q 值期望。
基于反事实优势函数,COMA 的最终策略梯度公式如下
g k = E π [ ∑ i ∇ θ k log π i ( u i ∣ o i ) A i ( s , u ) ] g_k=E_\pi\Big[\sum_i\nabla_{\theta_k}\log\pi_i(u_i\vert o_i)A_i(s,u)\Big]
g k = E π [ i ∑ ∇ θ k log π i ( u i ∣ o i ) A i ( s , u ) ]
Critic 的优化目标是最小化 TD 的均方误差
定义 n n n 步回报
G t ( n ) = ∑ l = 1 n γ l − 1 r t + l + γ n Q ′ ( s t + n , u t + n ) G_t^{(n)}=\sum_{l=1}^n\gamma^{l-1}r_{t+l}+\gamma^nQ^\prime(s_{t+n},u_{t+n})
G t ( n ) = l = 1 ∑ n γ l − 1 r t + l + γ n Q ′ ( s t + n , u t + n )
定义 TD 目标值
y ( λ ) = ( 1 − λ ) ∑ n = 1 ∞ λ n − 1 G t ( n ) y^{(\lambda)}=(1-\lambda)\sum_{n=1}^\infty\lambda^{n-1}G_t^{(n)}
y ( λ ) = ( 1 − λ ) n = 1 ∑ ∞ λ n − 1 G t ( n )
Critic 的损失函数
L ( θ c ) = E [ ( y ( λ ) − Q ( s t , u t ) ) 2 ] L(\theta_c)=E\big[(y^{(\lambda)}-Q(s_t,u_t))^2\big]
L ( θ c ) = E [ ( y ( λ ) − Q ( s t , u t ) ) 2 ]
COMA 算法的流程如下
初始化 Actor 网络参数 θ π \theta_\pi θ π ,初始化 Critic 网络参数 θ c \theta_c θ c ,初始化目标 Critic 网络参数 θ c ′ = θ c \theta_c^\prime=\theta_c θ c ′ = θ c ,初始化经验回放池
所有智能体基于当前策略与环境交互,采样完整轨迹,以元组 ( s , o i , u , r , s ′ ) (s,o_i,u,r,s^\prime) ( s , o i , u , r , s ′ ) 存入经验回放池
从经验回放池中采样小批量数据
计算 TD 目标值 y ( λ ) y^{(\lambda)} y ( λ ) ,计算损失函数,最小化损失函数更新 Critic 网络参数
对每个智能体 i i i ,通过 Critic 进行一次前向传播,得到其所有动作的 Q 值
计算反事实基线,计算反事实优势函数,后续计算 COMA 策略梯度 g g g ,通过梯度上升更新 Actor 参数
DGN
DGN 即 Deep Graph Convolutional Network(深度图卷积网络),核心提出了图卷积强化学习框架,专门解决动态多智能体环境下的合作学习难题。在 DGN 中,每个智能体被抽象为一个节点 i i i ,其邻居集合为 B i B_i B i ,可以根据距离或其他指标来确定邻居集且邻居集是根据环境状态变化的,每个节点可与其邻居节点进行通信。
DGN 由三大核心模块组成,所有智能体共享权重
观测编码器:低维输入使用 MLP,视觉输入使用 CNN,将局部观测 o i t o_i^t o i t 编码为特征向量 h i t h_i^t h i t
卷积层:整合智能体 i i i 与其邻居 B i B_i B i 的特征向量,生成隐特征 h i H h_i^H h i H ,堆叠卷积层可以逐步扩大智能体的感受野,自然扩展合作范围,且执行截断仅需和邻居通信,适配真实场景的有限通信约束
Q 网络:将所有前序卷积层的特征拼接后输入,输出不同动作的 Q 值,实现不同感受野不同合作范围的特征复用
在 DGN 中提出的图卷积,解决动态图的卷积适配与训练目标定义两个问题。由于智能体的数量、位置、邻居关系随时间快速变化,DGN 通过矩阵映射解决动态邻居的特征匹配问题
特征矩阵构建:将 t t t 时刻所有智能体的特征向量合并为特征矩阵 F t F_t F t ,尺寸为 N × L N\times L N × L ,其中的 N N N 为智能体的数量, L L L 为特征向量的长度
邻接矩阵构建:为每个智能体 i i i 构建邻接矩阵 C t i C_t^i C t i ,尺寸为 ( ∣ B i ∣ + 1 ) × N (\vert B_i\vert+1)\times N ( ∣ B i ∣ + 1 ) × N
其中第一行为智能体 i i i 自身索引的 one-hot 码
第 j j j 行是第 j − 1 j-1 j − 1 个邻居索引的 one-hot 码
局部特征提取:通过矩阵乘法 C t i × F t C_t^i\times F_t C t i × F t 精准提取智能体 i i i 的局部区域的特征向量,解决动态邻居索引匹配的问题
DGN 的核心训练损失函数基于 DQN 的实现,采用 TD 损失的架构,另外还采用经验回放机制训练。经验回放池中存放元组 ( O , A , O ′ , R , C ) (O,A,O^\prime,R,C) ( O , A , O ′ , R , C ) ,其中 O = { o 1 , ⋯ , o N } O=\{o_1,\cdots,o_N\} O = { o 1 , ⋯ , o N } 为智能体的局部观测集合, A = { a 1 , ⋯ , a N } A=\{a_1,\cdots,a_N\} A = { a 1 , ⋯ , a N } 为智能体的动作集合, O ′ O^\prime O ′ 为下一时刻的观测, R R R 为奖励集合, C C C 为所有智能体的邻接矩阵集合。从回放池中采样大小为 B B B 的小批量数据,最小化 TD 损失,如下
L ( θ ) = 1 B N ∑ B ∑ i = 1 N ( y i − Q ( O i , C , a i ; θ ) ) 2 L(\theta)=\frac{1}{BN}\sum^B\sum_{i=1}^N(y_i-Q(O_{i,C},a_i;\theta))^2
L ( θ ) = B N 1 ∑ B i = 1 ∑ N ( y i − Q ( O i , C , a i ; θ ) ) 2
其中的 O i , C O_{i,C} O i , C 是由邻接矩阵 C C C 决定的、智能体 i i i 感受野内的所有智能体观测集合。另外为了避免训练震荡,DGN 采用目标网络软更新机制,即
θ ′ = β θ + ( 1 − β ) θ ′ \theta^\prime=\beta\theta+(1-\beta)\theta^\prime
θ ′ = β θ + ( 1 − β ) θ ′
DGN 还对卷积核进行了创新,解决了传统卷积核输入顺序敏感、无法抽象智能体间关系的问题,采用多头点积注意力作为卷积核。DGN 基于多头注意力设计关系核,对智能体 i i i ,定义 B + i B_{+i} B + i 表示邻居集合 B i B_i B i 加上智能体 i i i 自身
对第 m m m 个注意力头,智能体 i i i 与 j ∈ B + i j\in B_{+i} j ∈ B + i 之间的关系权重计算公式为
α i j m = exp ( τ W Q m h i ( W K m h j ) T ) ∑ k ∈ B + i exp ( τ W Q m h i ( W K m h k ) T ) \alpha^m_{ij}=\frac{\exp(\tau W_Q^mh_i(W_K^mh_j)^T)}{\sum_{k\in B_{+i}}\exp(\tau W_Q^mh_i(W_K^mh_k)^T)}
α i j m = ∑ k ∈ B + i exp ( τ W Q m h i ( W K m h k ) T ) exp ( τ W Q m h i ( W K m h j ) T )
其中 α i j m \alpha_{ij}^m α i j m 为第 m m m 个注意力头下,智能体 i i i 对邻居 j j j 的注意力权重,权重越大表示 j j j 对 i i i 的合作决策越重要;其中 τ \tau τ 是缩放因子,避免点积过大导致 softmax 梯度消失,保证训练稳定性; W Q m W_Q^m W Q m 为第 m m m 个注意力头的 Query 投影矩阵,可学习参数,将智能体 i i i 的特征投影到查询子空间; W K m W_K^m W K m 为第 m m m 个注意力头的 Key 投影矩阵,可学习参数,将邻居 j j j 的特征投影到键子空间; h i h_i h i 表示智能体 i i i 的输入特征向量。对每个注意力头先按关系权重对值特征加权求和,再将所有注意力头的结果拼接,送入非线性层得到卷积层的最终输出
h i ′ = σ ( c o n c a t e n a t e ( ∑ j ∈ B + i α i j m W V m h j , ∀ m ∈ M ) ) h^\prime_i=\sigma\Big(\mathrm{concatenate}\Big(\sum_{j\in B_{+i}}\alpha_{ij}^mW_V^mh_j,\forall m\in M\Big)\Big)
h i ′ = σ ( c o n c a t e n a t e ( j ∈ B + i ∑ α i j m W V m h j , ∀ m ∈ M ) )
得到卷积层对智能体 i i i 输出的最终隐特征向量。其中的 σ ( ) \sigma() σ ( ) 为非线性激活函数;其中 W V m W_V^m W V m 是第 m m m 个注意力头的 Value 投影矩阵,可学习参数,将输入特征投影到值子空间; ∑ j ∈ B + i α i j m W V m h j \sum_{j\in B_{+i}}\alpha_{ij}^mW_V^mh_j ∑ j ∈ B + i α i j m W V m h j 是第 m 个注意力头的特征聚合结果,用关系权重对邻居的值特征加权求和;其中 c o n c a t e n a t e ( ) \mathrm{concatenate}() c o n c a t e n a t e ( ) 函数将 M 个注意力头的聚合结果在特征维度拼接,融合多子空间的关系表征
由于合作是长期持续的过程,即使周围智能体的状态特征发生变化,智能体的合作对象与合作方式在短期内也应保持稳定,关系核输出的、对邻居的注意力权重分布,在连续时间步也应具备一致性。所以在 DGN 中提出了时序关系正则化。定义符号 G m κ ( O i , C ; θ ) G_m^\kappa(O_{i,C};\theta) G m κ ( O i , C ; θ ) 表示参数为 θ \theta θ 的网络,对智能体 i i i ,在第 κ \kappa κ 层卷积层,第 m m m 个注意力头输出的关系表征,加入时序关系正则化之后的总损失函数为
L ( θ ) = 1 B N ∑ B ∑ i = 1 N ( ( y i − Q ( O i , C , a i ; θ ) ) 2 + λ 1 M ∑ m = 1 M D K L ( G m κ ( O i , C ; θ ) ∥ G m κ ( O i , C ′ ; θ ) ) ) L(\theta)=\frac{1}{BN}\sum^B\sum_{i=1}^N\Big((y_i-Q(O_{i,C},a_i;\theta))^2+\lambda\frac{1}{M}\sum_{m=1}^MD_{KL}\big(G_m^\kappa(O_{i,C};\theta)\Vert G_m^\kappa(O_{i,C}^\prime;\theta)\big)\Big)
L ( θ ) = B N 1 ∑ B i = 1 ∑ N ( ( y i − Q ( O i , C , a i ; θ ) ) 2 + λ M 1 m = 1 ∑ M D K L ( G m κ ( O i , C ; θ ) ∥ G m κ ( O i , C ′ ; θ ) ) )
D K L D_{KL} D K L 是 KL 散度,用于衡量两个分布的差异。则 DGN 算法的流程如下
初始化每个智能体的 Q 网络,同步初始化结构完全一致的目标 Q 网络
明确邻居判定规则,邻居集合随着智能体移动动态变化,仅邻居节点之间可进行信息交互
初始化经验回放池
在每个时间步中
环境向每个智能体 i i i 返回当前时间步 t t t 的局部观测 o i t o_i^t o i t ,仅包含智能体自身感知范围内的环境信息,无全局状态
将每个智能体的局部观测 o i t o_i^t o i t ,输入共享的编码器,输出固定维度的节点特征向量 h i t h_i^t h i t
按照预设的邻居规则,确定每个智能体当前步的邻居集合 B i B_i B i ,生成动态的图拓扑
把所有智能体的节点特征按索引拼接,生成全局特征矩阵 F t F_t F t ,为每个智能体 i i i 构建专属邻接矩阵 C t i C_t^i C t i ,通过矩阵乘法 C t i × F t C_t^i\times F_t C t i × F t 精准提取智能体 i i i 的局部区域的特征向量,解决动态邻居索引匹配的问题
逐层利用多头注意力关系核计算图卷积
借鉴 DenseNet 的设计,把编码器输出、所有卷积层的输出特征,在特征维度进行拼接,得到智能体 i i i 的最终聚合特征,实现不同感受野、不同合作范围的特征复用
拼接之后的聚合特征输入共享的 Q 网络,输出智能体 i i i 所有可选动作对应的 Q 值,利用 ϵ \epsilon ϵ 贪婪策略选择动作
所有智能体同时执行选中的动作,环境返回每个智能体的即时奖励 r t i r^i_t r t i 、下一时刻的局部观测 o t + 1 i o_{t+1}^i o t + 1 i ,以及回合是否终止的标志
把当前步的完整元组 ( O t , A t , O t + 1 , C t ) (O_t,A_t,O_{t+1},C_t) ( O t , A t , O t + 1 , C t ) 存入经验回放池
从经验回放池中,随机采集批次大小为 B B B 的样本
计算 TD 目标值,计算对应的 TD 均方误差损失,计算时序关系正则化损失,得到总的损失。反向传播梯度下降法更新参数
定时软更新目标网络参数 θ ′ = β θ + ( 1 − β ) θ ′ \theta^\prime=\beta\theta+(1-\beta)\theta^\prime θ ′ = β θ + ( 1 − β ) θ ′
分层强化学习
分层强化学习通过引入多层次结构来处理复杂的任务,核心思想就是将复杂的任务分解为若干子任务,每层策略专注于不同时间尺度的决策。
高层策略:负责全局规划,设定子目标或子任务
低层策略:负责执行具体动作,与环境交互以实现高层目标
Option Framework
Option Framework 是强化学习中的一种分层抽象方法,将动作抽象为 Option,其中的 Option 定义为闭环的、持续一段时间的动作策略,既可以是低层原始动作,也能是高层时序抽象动作。
定义 Option ω ∈ Ω \omega\in\Omega ω ∈ Ω 是一个三元组 ω = ( I ω , π ω , β ω ) \omega=(I_\omega,\pi_\omega,\beta_\omega) ω = ( I ω , π ω , β ω )
启动集 I ω ⊆ S I_\omega\subseteq S I ω ⊆ S ,即是状态集合 S S S 的子集,只有当智能体处于 s ∈ I ω s\in I_\omega s ∈ I ω 时才能选择该 Option
内部策略 π ω : S × A → [ 0 , 1 ] \pi_\omega:S\times A\rightarrow[0,1] π ω : S × A → [ 0 , 1 ] ,是条件概率分布,表示执行 Option ω \omega ω 时,状态 s s s 下选择原始动作 a a a 的概率
终止函数 β ω : S → [ 0 , 1 ] \beta_\omega:S\rightarrow[0,1] β ω : S → [ 0 , 1 ] ,表示进入状态 s s s 之后,Option ω \omega ω 终止的概率。
在底层 MDP 上定义一组 Option,构成一个 SMDP,SMDP 方法将 Option 视作不可部分割的黑盒单元,只关注 Option 的启动状态和终止状态,忽略选项执行的中间过程,仅在选项完整执行到终止后进行值更新。
定义 SMDP Q-Learning 更新规则如下
Q ( s , ω ) ← Q ( s , ω ) + α [ r + γ k max ω ′ ∈ Ω s ′ Q ( s ′ , ω ′ ) − Q ( s , ω ) ] Q(s,\omega)\leftarrow Q(s,\omega)+\alpha\big[r+\gamma^k\max_{\omega^\prime\in\Omega_{s^\prime}}Q(s^\prime,\omega^\prime)-Q(s,\omega)\big]
Q ( s , ω ) ← Q ( s , ω ) + α [ r + γ k ω ′ ∈ Ω s ′ max Q ( s ′ , ω ′ ) − Q ( s , ω ) ]
其中的 Ω s ′ \Omega_{s^\prime} Ω s ′ 是在状态 s ′ s^\prime s ′ 可执行的 Options 集合,其中的 k k k 是 Option ω \omega ω 从状态 s s s 启动到状态 s ′ s^\prime s ′ 终止所经过的原始时间步数量。这个更新仅在每个 Option 完整执行到终止后会触发一次更新。在与传统 Q-Learning 一致的收敛条件下,该更新规则下的 Q 值会收敛到最优的 Q 值,收敛后可以通过贪心策略 π ( s ) = arg max ω ∈ Ω s Q ( s , ω ) \pi(s)=\underset{\omega\in\Omega_s}{\argmax}Q(s,\omega) π ( s ) = ω ∈ Ω s a r g m a x Q ( s , ω ) 得到最优策略
选项中断
由于 SMDP 方法只能将 Option 视作不可分割的黑盒,要求选项必须执行到终止时才能进行决策与更新,无法应对环境变化、状态信息更新带来的策略调整需求。所以结合底层 MDP 和上层 SMDP 的双重视角,修改 Option 的内部结构,实现选项的动态中断,从而获得比 SMDP 规划更优的性能。
当正在执行 Option ω \omega ω 时,当前处于历史 h h h 时,面临两个互斥的选择
继续执行当前 Option:获得的期望价值为 Q μ ( h , ω ) Q^\mu(h,\omega) Q μ ( h , ω )
立刻中断当前 Option:终止 ω \omega ω ,回到策略 μ \mu μ 重新选择最优 Option,获得期望价值为 V μ ( s ) = ∑ ω ∈ Ω s μ ( s , ω ) Q μ ( s , ω ) V^\mu(s)=\sum_{\omega\in\Omega_s}\mu(s,\omega)Q^\mu(s,\omega) V μ ( s ) = ∑ ω ∈ Ω s μ ( s , ω ) Q μ ( s , ω )
中断的判断很简单,当 V μ ( s ) > Q μ ( s ) V^\mu(s)>Q^\mu(s) V μ ( s ) > Q μ ( s ) 时就立即中断当前 Option。中断是修改 Option 的终止函数,给选 Option 加一个价值不足就终止的规则,同时不改变 Option 的启动集 I I I 和内部策略 π \pi π 。对原始 Option 集 Ω \Omega Ω 中的每一个选项 ω = ( I , π , β ) \omega=(I,\pi,\beta) ω = ( I , π , β ) ,定义一个一一对应的新选项 ω ′ = ( I , π , β ′ ) \omega^\prime=(I,\pi,\beta^\prime) ω ′ = ( I , π , β ′ ) 。其中 β ′ \beta^\prime β ′ 是终止函数,与原始的 β \beta β 几乎完全一致,但是在 β ′ \beta^\prime β ′ 中,对于任何历史 h h h ,如果满足 Q μ ( h , ω ) < V μ ( s ) Q^\mu(h,\omega)<V^\mu(s) Q μ ( h , ω ) < V μ ( s ) 则可以将 β ′ ( h ) \beta^\prime(h) β ′ ( h ) 设置为 1。将所有被修改了终止条件的历史 h h h 称之为中断历史,记作集合 Γ = { h ∈ Ω ∣ β ( h ) ≠ β ′ ( h ) } \Gamma=\{h\in\Omega\vert\beta(h)\not=\beta^\prime(h)\} Γ = { h ∈ Ω ∣ β ( h ) = β ′ ( h ) } 。
定义中断策略 μ ′ \mu^\prime μ ′ ,与原始策略 μ \mu μ 的选择 Option 的逻辑完全一致,只是选择的是带中断的新选项 ω ′ \omega^\prime ω ′ ,而非原始选项。即对所有状态 s ∈ S s\in S s ∈ S 和所有新选项 ω ′ ∈ Ω ′ \omega^\prime\in\Omega^\prime ω ′ ∈ Ω ′ ,有 μ ′ ( s , ω ′ ) = μ ( s , ω ) \mu^\prime(s,\omega^\prime)=\mu(s,\omega) μ ′ ( s , ω ′ ) = μ ( s , ω ) 。实际上就是选择的每个选项多了一个中途价值不够就立即停止的终止规则。
选项内模型学习
Option Framework 提出基于单步时序差分的选项内模型学习方法,实现离策略、高样本效率的选项模型估计。选项的 SMDP 模型包含两个核心部分
r s ω r_s^\omega r s ω 表示在状态 s s s 下发起 Option ω \omega ω ,执行到终止的期望累积折扣奖励
p s → s ′ ω p_{s\rightarrow s^\prime}^\omega p s → s ′ ω 表示在状态 s s s 下发起 Option ω \omega ω ,执行到终止时落到状态 s ′ s^\prime s ′ 的折扣转移概率
与 SMDP 值函数学习一致,仅在选项完整执行到终止后,才对模型进行更新,忽略中间执行过程,更新公式如下
r ^ s ω = r ^ s ω + α ( r − r ^ s ω ) p ^ s → x ω = p ^ s → x ω + α ( γ k δ s ′ x − p ^ s → x ω ) \hat{r}_s^\omega=\hat{r}_s^\omega+\alpha(r-\hat{r}_s^\omega)\\\hat{p}_{s\rightarrow x}^\omega=\hat{p}_{s\rightarrow x}^\omega+\alpha(\gamma^k\delta_{s^\prime x}-\hat{p}_{s\rightarrow x}^\omega)
r ^ s ω = r ^ s ω + α ( r − r ^ s ω ) p ^ s → x ω = p ^ s → x ω + α ( γ k δ s ′ x − p ^ s → x ω )
其中 r ^ s ω \hat{r}_s^\omega r ^ s ω 和 p ^ s → x ω \hat{p}_{s\rightarrow x}^\omega p ^ s → x ω 为 r s ω {r}_s^\omega r s ω 和 p s → x ω {p}_{s\rightarrow x}^\omega p s → x ω 的估计值,其中的 x x x 为目标状态;其中 δ s ′ x \delta_{s^\prime x} δ s ′ x 是克罗内克函数,当且仅当 s ′ = x s^\prime=x s ′ = x 时取值为 1。到那时它必须等到 Option 执行完毕才能更新,样本利用率极低,对于长时长 Option,学习效率会下降,且无法利用非完整执行的轨迹数据,不支持离策略学习。
利用 Option 的马尔可夫性,可将 Option 的整体模型分解为单步递归形式,得到模型的 Bellman 一致性方程
奖励模型的 Bellman 方程
r s ω = ∑ a ∈ A s π ( s , a ) E [ r + γ ( 1 − β ( s ′ ) ) r s ′ ω ] r_s^\omega=\sum_{a\in A_s}\pi(s,a)E\big[r+\gamma(1-\beta(s^\prime))r_{s^\prime}^\omega\big]
r s ω = a ∈ A s ∑ π ( s , a ) E [ r + γ ( 1 − β ( s ′ ) ) r s ′ ω ]
在状态 s s s 下发起 Option ω \omega ω ,执行到终止的期望累积折扣奖励分解为即时奖励和下一步不终止的后续奖励。执行动作 a a a 后到达状态 s ′ s^\prime s ′ ,有 β ( s ′ ) \beta(s^\prime) β ( s ′ ) 的概率选项终止,无后续奖励;有 1 − β ( s ′ ) 1-\beta(s^\prime) 1 − β ( s ′ ) 的概率选项继续,后续期望奖励为 r s ′ ω r_{s^\prime}^\omega r s ′ ω 。实现了长周期选项模型的单步分解
状态转移模型的 Bellman 方程
p s → x ω = ∑ π ( s , a ) γ E [ ( 1 − β ( s ′ ) ) p s ′ → x ω + β ( s ′ ) δ s ′ x ] = ∑ π ( s , a ) γ ∑ s ′ p s → s ′ ω [ ( 1 − β ( s ′ ) ) p s ′ → x ω + β ( s ′ ) δ s ′ x ] p_{s\rightarrow x}^\omega=\sum\pi(s,a)\gamma E\big[(1-\beta(s^\prime))p_{s^\prime\rightarrow x}^\omega+\beta(s^\prime)\delta_{s^\prime x}\big]\\=\sum\pi(s,a)\gamma \sum_{s^\prime}p_{s\rightarrow s^\prime}^\omega\big[(1-\beta(s^\prime))p_{s^\prime\rightarrow x}^\omega+\beta(s^\prime)\delta_{s^\prime x}\big]
p s → x ω = ∑ π ( s , a ) γ E [ ( 1 − β ( s ′ ) ) p s ′ → x ω + β ( s ′ ) δ s ′ x ] = ∑ π ( s , a ) γ s ′ ∑ p s → s ′ ω [ ( 1 − β ( s ′ ) ) p s ′ → x ω + β ( s ′ ) δ s ′ x ]
在状态 s s s 下发起 Option ω \omega ω ,执行到终止时落到状态 s ′ s^\prime s ′ 的折扣转移概率,先按内部策略 π \pi π 对动作求和,再按 MDP 原始动作的转移概率 p s → s ′ ω p_{s\rightarrow s^\prime}^\omega p s → s ′ ω 对下一个状态 s ′ s^\prime s ′ 求和,到达状态 s ′ s^\prime s ′ 时,有 β ( s ′ ) \beta(s^\prime) β ( s ′ ) 的概率选项终止,但是仅当 s ′ = x s^\prime=x s ′ = x 时才对其有贡献;有 1 − β ( s ′ ) 1-\beta(s^\prime) 1 − β ( s ′ ) 的概率选项继续,此时转移到 x x x 的概率为 p s ′ → x ω p_{s^\prime\rightarrow x}^\omega p s ′ → x ω
基于上述 Bellman 方程,推导出单步时序差分更新规则:只要状态 s t s_t s t 下执行的动作 a t a_t a t 符合 Option ω \omega ω 的内部策略 π \pi π 即可在每一步执行后更新模型,无需等待选项终止。核心更新公式如下
r ^ s t ω = r ^ s t ω + α [ r t + 1 + γ ( 1 − β ( s t + 1 ) ) r ^ s t + 1 ω − r ^ s t ω ] p ^ s t → x ω = p ^ s t → x ω + α [ γ ( 1 − β ( s t + 1 ) ) p ^ s t + 1 → x ω + γ β ( s t + 1 ) δ s t + 1 x − p ^ s t → x ω ] \hat{r}_{s_{t}}^\omega=\hat{r}_{s_{t}}^\omega+\alpha\big[r_{t+1}+\gamma(1-\beta(s_{t+1}))\hat{r}_{s_{t+1}}^\omega-\hat{r}_{s_{t}}^\omega\big]\\\hat{p}_{s_t\rightarrow x}^\omega=\hat{p}_{s_t\rightarrow x}^\omega+\alpha\big[\gamma(1-\beta(s_{t+1}))\hat{p}_{s_{t+1}\rightarrow x}^\omega+\gamma\beta(s_{t+1})\delta_{s_{t+1}x}-\hat{p}_{s_t\rightarrow x}^\omega\big]
r ^ s t ω = r ^ s t ω + α [ r t + 1 + γ ( 1 − β ( s t + 1 ) ) r ^ s t + 1 ω − r ^ s t ω ] p ^ s t → x ω = p ^ s t → x ω + α [ γ ( 1 − β ( s t + 1 ) ) p ^ s t + 1 → x ω + γ β ( s t + 1 ) δ s t + 1 x − p ^ s t → x ω ]
每执行一个单步动作后即可触发更新,无需等待 Option 运行到终止。更新的核心是 Bellman 方程对应的单步 TD 误差,目标值与 Bellman 方程的期望完全一致,保证更新的无偏性。
选项内值学习
Option Framework 将选项内学习的思想扩展到值函数估计,突破 SMDP 值学习的样本效率瓶颈,提出选项内 Q-Learning 算法。SMDP 值学习执行一个 k k k 步的选项,只能得到一个 Q 值更新样本,而根据马尔可夫 Option,可利用其马尔可夫性,在每一步执行中都更新 Q 值,同时支持离策略学习,大幅提升样本效率。首先定义 U 函数,统一描述选项在状态 s s s 下终止或继续两种情况下的价值,是选项内值学习的核心基础
U Ω ⋆ ( s , ω ) = ( 1 − β ( s ) ) Q Ω ⋆ ( s , ω ) + β ( s ) max ω ′ ∈ Ω Q Ω ⋆ ( s , ω ′ ) U_\Omega^\star(s,\omega)=(1-\beta(s))Q^\star_\Omega(s,\omega)+\beta(s)\max_{\omega^\prime\in\Omega}Q_\Omega^\star(s,\omega^\prime)
U Ω ⋆ ( s , ω ) = ( 1 − β ( s ) ) Q Ω ⋆ ( s , ω ) + β ( s ) ω ′ ∈ Ω max Q Ω ⋆ ( s , ω ′ )
其中的 U Ω ⋆ ( s , ω ) U_\Omega^\star(s,\omega) U Ω ⋆ ( s , ω ) 是最优 U 函数,代表到达状态 s s s 时,Option ω \omega ω 正在执行的状态-选项对的期望价值。价值分解为两种互斥的情况
1 − β ( s ) 1-\beta(s) 1 − β ( s ) 的概率 Option 在 s s s 状态时不终止,继续执行,此时价值等于在 s s s 发起 Option ω \omega ω 的价值 Q Ω ⋆ ( s , ω ) Q_\Omega^\star(s,\omega) Q Ω ⋆ ( s , ω )
β ( s ) \beta(s) β ( s ) 的概率 Option 在 s s s 状态时终止,智能体选择全局最优 Option 的价值 max ω ′ ∈ Ω Q Ω ⋆ ( s , ω ′ ) \max_{\omega^\prime\in\Omega}Q_\Omega^\star(s,\omega^\prime) max ω ′ ∈ Ω Q Ω ⋆ ( s , ω ′ )
基于上述的 U 函数,推导出马尔可夫选项的最优值函数 Bellman 方程,实现 Option 整体价值的单步分解
Q Ω ⋆ ( s , ω ) = ∑ a ∈ A s π ( s , a ) E [ r + γ U Ω ⋆ ( s ′ , ω ) ∣ s , a ] = ∑ a ∈ A s π ( s , a ) [ r s a + ∑ s ′ p s → s ′ a U Ω ⋆ ( s ′ , ω ) ] Q_\Omega^\star(s,\omega)=\sum_{a\in A_s}\pi(s,a)E\big[r+\gamma U_\Omega^\star(s^\prime, \omega)\vert s,a\big]\\=\sum_{a\in A_s}\pi(s,a)\Big[r_s^a+\sum_{s^\prime}p_{s\rightarrow s^\prime}^aU_\Omega^\star(s^\prime,\omega)\Big]
Q Ω ⋆ ( s , ω ) = a ∈ A s ∑ π ( s , a ) E [ r + γ U Ω ⋆ ( s ′ , ω ) ∣ s , a ] = a ∈ A s ∑ π ( s , a ) [ r s a + s ′ ∑ p s → s ′ a U Ω ⋆ ( s ′ , ω ) ]
基于上述 Bellman 方程,推导出离策略的单步 TD 更新规则,只要在状态 s t s_t s t 下执行的动作 a t a_t a t 符合 Option ω \omega ω 的内部策略,即可在每一步更新 Q ( s t , ω ) Q(s_t,\omega) Q ( s t , ω ) ,得到 U 函数的估计形式和 Q 值的更新规则
U ( s , ω ) = ( 1 − β ( s ) ) Q ( s , ω ) + β ( s ) max ω ′ ∈ Ω Q ( s , ω ′ ) Q ( s t , ω ) = Q ( s t , ω ) + α [ r t + 1 + γ U ( s t + 1 , ω ) − Q ( s t , ω ) ] U(s,\omega)=(1-\beta(s))Q(s,\omega)+\beta(s)\max_{\omega^\prime\in\Omega}Q(s,\omega^\prime)\\Q(s_t,\omega)=Q(s_t,\omega)+\alpha\big[r_{t+1}+\gamma U(s_{t+1},\omega)-Q(s_t,\omega)\big]
U ( s , ω ) = ( 1 − β ( s ) ) Q ( s , ω ) + β ( s ) ω ′ ∈ Ω max Q ( s , ω ′ ) Q ( s t , ω ) = Q ( s t , ω ) + α [ r t + 1 + γ U ( s t + 1 , ω ) − Q ( s t , ω ) ]
每次执行一个单步动作后触发。TD 误差目标值为 r t + 1 + γ U ( s t + 1 , ω ) r_{t+1}+\gamma U(s_{t+1},\omega) r t + 1 + γ U ( s t + 1 , ω ) ,是单步即时奖励加上下一步状态的 U 函数估计值
学习选项的子目标
Option Framework 中提出了基于子目标的 Option 学习方法,将每一个 Option 与一个明确的子目标绑定,通过离策略强化学习方法,独立学习每个 Option 的内部策略,让该策略最优地实现对应的子目标。给定子目标状态集合 G G G ,将选项的终止函数设计为到达 G G G 时 β = 1 \beta=1 β = 1 ,否则 β = 0 \beta=0 β = 0 ,将奖励函数设计为到达 G G G 时获得正奖励,否则为 0。策略学习使用离策略 Q-Learning 等方法,学习该子目标对应的最优策略,作为选项的内部策略 π \pi π 。Option 的发起集 I I I 即为所有能通过该策略到达子目标 G G G 的状态集合。
Option Framework 训练流程
选项集的构建与预训练:用于解决选项的来源问题,输出一套可用的选项集合 Ω \Omega Ω ,每个选项的三元组 ( I , π , β ) (I,\pi,\beta) ( I , π , β ) 完全确定
方法 1:人工先验定义 Option
定义子目标:根据任务先验,确定高层子目标
设计发起集 I I I :定义该选 Option 可启动的状态范围
设计内部策略 π \pi π :人工设计实现子目标的闭环策略
设计终止函数 β \beta β :定义 Option 的终止条件
输出固定的 Option 集 Ω \Omega Ω ,无需额外训练
方法 2:自动学习子目标驱动的 Option,通过强化学习自动学习选项的内部策略与发起集
定义子目标集合 G G G 与子目标奖励函数:给子目标状态分配终止价值 g ( s ) g(s) g ( s )
约束选项终止规则:选项仅在到达子目标集合 G G G 时终止
训练选项的内部策略 π \pi π :通过 Q-Learning 等方法,学习实现该子目标的最优策略
确定发起集 I I I :所有能通过该策略能到达子目标 G G G 的状态,构成选项的发起集
输出自动学习到的 Option 集 Ω \Omega Ω
在线执行与推理:基于训练好的 Option 集 Ω \Omega Ω 和高层策略 μ \mu μ ,在环境中实际执行,完成任务
标准的 SMDP 执行模式:遵循 SMDP 的黑盒假设
重置环境到初始状态,清除正在执行的 Option
在状态 s t s_t s t 下,若无当前正在执行的 Option,则用高层策略 μ \mu μ 选择一个可以发起的 Option ω \omega ω
用 Option ω \omega ω 的内部策略 π \pi π ,在状态 s t s_t s t 下选择原始动作 a t = π ( s t ) a_t=\pi(s_t) a t = π ( s t ) ,执行后得到即时奖励,环境转移到新状态
在新状态下,采样终止函数,若终止则结束当前 Option 的执行
循环上述步骤,直到到达终止环境
带中断的优化执行模式:基于中断定理,在标准执行流程中加入动态中断判断以提升执行性能
重置环境到初始状态,清除正在执行的 Option
在状态 s t s_t s t 下,若无当前正在执行的 Option,则用高层策略 μ \mu μ 选择一个可以发起的 Option ω \omega ω
用 Option ω \omega ω 的内部策略 π \pi π ,在状态 s t s_t s t 下选择原始动作 a t = π ( s t ) a_t=\pi(s_t) a t = π ( s t ) ,执行后得到即时奖励,环境转移到新状态
增加中断判断:计算继续执行当前选项的价值 Q ( s t + 1 , ω ) Q(s_{t+1},\omega) Q ( s t + 1 , ω ) ,计算中断后重新选选项的价值 V ( s t + 1 ) = max ω ′ ∈ Ω s t + 1 Q ( s t + 1 , ω ′ ) V(s_{t+1})=\max_{\omega^\prime\in\Omega_{s_{t+1}}}Q(s_{t+1},\omega^\prime) V ( s t + 1 ) = max ω ′ ∈ Ω s t + 1 Q ( s t + 1 , ω ′ ) ,若 V ( s t + 1 ) > Q ( s t + 1 ) V(s_{t+1})>Q(s_{t+1}) V ( s t + 1 ) > Q ( s t + 1 ) 则中断当前选项,重选选项
若未中断,则在新状态下,采样终止函数,若终止则结束当前 Option 的执行
循环上述步骤,直到到达终止环境
轮询执行模式:每一步都强制中断当前选项,重新选择当前状态下价值最高的选项
重置环境到初始状态,清除正在执行的 Option
在状态 s t s_t s t 下,若无当前正在执行的 Option,则用高层策略 μ \mu μ 选择一个可以发起的 Option ω \omega ω
用 Option ω \omega ω 的内部策略 π \pi π ,在状态 s t s_t s t 下选择原始动作 a t = π ( s t ) a_t=\pi(s_t) a t = π ( s t ) ,执行后得到即时奖励,环境转移到新状态
强制终止当前选项,重新选选项
循环上述步骤,直到到达终止环境
Option-Critic
Option-Critic 是分层强化学习中的里程碑式的算法架构,旨在通过自主发现和优化子策略来解决复杂任务。Option-Critic 是基于 Option 架构的学习。
Option 框架
Option 框架是强化学习时序抽象核心理论框架,是分层强化学习的奠基性工作。核心目标是将时间上扩展的动作序列形式化为一个可被智能体自主选择和执行的高阶动作,从而解决原始马尔可夫决策过程因为动作粒度太细而导致长程任务学习效率低下、探索困难等问题。
一个 Option ω ∈ Ω \omega\in\Omega ω ∈ Ω 是一个三元组 ω = ( I ω , π ω , β ω ) \omega=(I_\omega,\pi_\omega,\beta_\omega) ω = ( I ω , π ω , β ω ) 。其中启动集 I ω ⊆ S I_\omega\subseteq S I ω ⊆ S ,即是状态集合 S S S 的子集,只有当智能体处于 s ∈ I ω s\in I_\omega s ∈ I ω 时才能选择该 Option;其中内部策略 π ω : S × A → [ 0 , 1 ] \pi_\omega:S\times A\rightarrow[0,1] π ω : S × A → [ 0 , 1 ] ,是条件概率分布,表示执行 Option ω \omega ω 时,状态 s s s 下选择原始动作 a a a 的概率;终止函数 β ω : S → [ 0 , 1 ] \beta_\omega:S\rightarrow[0,1] β ω : S → [ 0 , 1 ] ,表示进入状态 s s s 之后,Option ω \omega ω 终止的概率。
Option 的调用-返回执行模型如下
智能体首先选择一个 Option ω ∈ Ω \omega\in\Omega ω ∈ Ω
遵循 Option ω \omega ω 的内部策略 π ω \pi_\omega π ω 执行原始动作,直到选项根据 β ω \beta_\omega β ω 触发被终止
选项终止之后,重复上述选项
引入 Option 之后,原始的 MDP 转化为半马尔可夫决策过程,对应定义 Option 层面的价值函数,如下
V Ω ( s ) = E [ ∑ k = 0 ∞ γ t k R k ∣ s 0 = s ] Q Ω ( s , ω ) = E [ ∑ t = 0 T ω − 1 γ t r t + 1 + γ T ω V Ω ( s T ω ) ∣ s 0 = s , ω 0 = ω ] V_\Omega(s)=E\Big[\sum_{k=0}^\infty\gamma^{t_k}R_k\Big\vert s_0=s\Big]\\Q_\Omega(s,\omega)=E\Big[\sum_{t=0}^{T_\omega-1}\gamma^tr_{t+1}+\gamma^{T_\omega}V_\Omega(s_{T_\omega})\Big\vert s_0=s,\omega_0=\omega\Big]
V Ω ( s ) = E [ k = 0 ∑ ∞ γ t k R k ∣ ∣ ∣ ∣ s 0 = s ] Q Ω ( s , ω ) = E [ t = 0 ∑ T ω − 1 γ t r t + 1 + γ T ω V Ω ( s T ω ) ∣ ∣ ∣ ∣ s 0 = s , ω 0 = ω ]
其中 V Ω ( s ) V_\Omega(s) V Ω ( s ) 为状态价值函数,定义为从状态 s s s 触发,遵循上述 Option 执行模型的策略,获得的期望折扣回报;其中 Q Ω ( s , ω ) Q_\Omega(s,\omega) Q Ω ( s , ω ) 为动作价值函数,定义为从状态 s s s 出发,先选择并执行 Option ω \omega ω ,之后遵循既定策略,获得的期望折扣回报。
Option 框架的价值函数满足扩展 Bellman 方程,是 Option 框架的学习和规划的核心公式
Q Ω ( s , ω ) = ∑ a π ω , θ ( a ∣ s ) Q U ( s , ω , a ) V Ω ( s ) = ∑ ω π Ω ( ω ∣ s ) Q Ω ( s , ω ) Q U ( s , ω , a ) = r ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) U ( ω , s ′ ) U ( ω , s ′ ) = ( 1 − β ω , ϑ ( s ′ ) ) Q Ω ( s ′ , ω ) + β ω , ϑ ( s ′ ) V Ω ( s ′ ) P ( s t + 1 , ω t + 1 ∣ s t , ω t ) = ∑ a π ω t , θ ( a ∣ s t ) P ( s t + 1 ∣ s t , a ) ( ( 1 − β ω t , ϑ ( s t + 1 ) ) 1 ω t = ω t + 1 + β ω t , ϑ ( s t + 1 ) π Ω ( ω t + 1 ∣ s t + 1 ) ) Q_\Omega(s,\omega)=\sum_a\pi_{\omega,\theta}(a\vert s)Q_U(s,\omega,a)\\V_\Omega(s)=\sum_{\omega}\pi_\Omega(\omega\vert s)Q_\Omega(s,\omega)\\Q_U(s,\omega,a)=r(s,a)+\gamma\sum_{s^\prime}P(s^\prime\vert s,a)U(\omega,s^\prime)\\U(\omega,s^\prime)=(1-\beta_{\omega,\thetasym}(s^\prime))Q_\Omega(s^\prime,\omega)+\beta_{\omega,\thetasym}(s^\prime)V_\Omega(s^\prime)\\P(s_{t+1},\omega_{t+1}\vert s_t,\omega_t)=\sum_a\pi_{\omega_t,\theta}(a\vert s_t)P(s_{t+1}\vert s_t,a)\Big(\big(1-\beta_{\omega_t,\thetasym}(s_{t+1})\big)1_{\omega_t=\omega_{t+1}}+\beta_{\omega_t,\thetasym}(s_{t+1})\pi_\Omega(\omega_{t+1}\vert s_{t+1})\Big)
Q Ω ( s , ω ) = a ∑ π ω , θ ( a ∣ s ) Q U ( s , ω , a ) V Ω ( s ) = ω ∑ π Ω ( ω ∣ s ) Q Ω ( s , ω ) Q U ( s , ω , a ) = r ( s , a ) + γ s ′ ∑ P ( s ′ ∣ s , a ) U ( ω , s ′ ) U ( ω , s ′ ) = ( 1 − β ω , ϑ ( s ′ ) ) Q Ω ( s ′ , ω ) + β ω , ϑ ( s ′ ) V Ω ( s ′ ) P ( s t + 1 , ω t + 1 ∣ s t , ω t ) = a ∑ π ω t , θ ( a ∣ s t ) P ( s t + 1 ∣ s t , a ) ( ( 1 − β ω t , ϑ ( s t + 1 ) ) 1 ω t = ω t + 1 + β ω t , ϑ ( s t + 1 ) π Ω ( ω t + 1 ∣ s t + 1 ) )
其中 Q U ( s , ω , a ) Q_U(s,\omega,a) Q U ( s , ω , a ) 为动作价值函数,定义为在状态 s s s 下执行 Option ω \omega ω 时,选择原始动作 a a a 能获得的期望折扣回报;其中 π ω , θ ( a ∣ s ) \pi_{\omega,\theta}(a\vert s) π ω , θ ( a ∣ s ) 是选项内策略;其中的 U ( ω , s ′ ) U(\omega,s^\prime) U ( ω , s ′ ) 时到达状态 s ′ s^\prime s ′ 时 Option ω \omega ω 的持续价值;其中 β ω , ϑ ( s ′ ) \beta_{\omega,\thetasym}(s^\prime) β ω , ϑ ( s ′ ) 是选项 ω \omega ω 在 s ′ s^\prime s ′ 终止的概率;其中 P ( s t + 1 , ω t + 1 ∣ s t , ω t ) P(s_{t+1},\omega_{t+1}\vert s_t,\omega_t) P ( s t + 1 , ω t + 1 ∣ s t , ω t ) 为增广状态空间的一步转移概率;其中的 1 ω t = ω t + 1 1_{\omega_t=\omega_{t+1}} 1 ω t = ω t + 1 是指示函数,仅当 ω t = ω t + 1 \omega_t=\omega_{t+1} ω t = ω t + 1 时取 1,否则取 0。另外 P ( s t + 1 , ω t + 1 ∣ s t , ω t ) P(s_{t+1},\omega_{t+1}\vert s_t,\omega_t) P ( s t + 1 , ω t + 1 ∣ s t , ω t ) 的第一项表示选项在 s t + 1 s_{t+1} s t + 1 时不终止,因此下一时刻的选项仍为当前的 ω t \omega_t ω t ,第二项表示选项在 s t + 1 s_{t+1} s t + 1 终止,因此下一时刻的选项由选项上的策略 π Ω \pi_\Omega π Ω 重新选择
Option-Critic
Option-Critic 中定义全局优化目标为最大化初始状态 s 0 s_0 s 0 和初始选项 ω 0 \omega_0 ω 0 下的期望折扣回报
ρ ( Ω , θ , ϑ , s 0 , ω 0 ) = E Ω , θ , ω [ ∑ t = 0 ∞ γ t r t + 1 ∣ s 0 , ω 0 ] \rho(\Omega,\theta,\thetasym,s_0,\omega_0)=E_{\Omega,\theta,\omega}\Big[\sum_{t=0}^\infty\gamma^tr_{t+1}\vert s_0,\omega_0\Big]
ρ ( Ω , θ , ϑ , s 0 , ω 0 ) = E Ω , θ , ω [ t = 0 ∑ ∞ γ t r t + 1 ∣ s 0 , ω 0 ]
其中 θ \theta θ 为内部策略参数, ϑ \thetasym ϑ 为终止函数参数, π Ω \pi_\Omega π Ω 选项上的策略。上述的期望折扣回报 ρ ( Ω , θ , ϑ , s 0 , ω 0 ) \rho(\Omega,\theta,\thetasym,s_0,\omega_0) ρ ( Ω , θ , ϑ , s 0 , ω 0 ) 实际上就对应着 Q Ω ( s , ω ) Q_\Omega(s,\omega) Q Ω ( s , ω ) 。后续需要求解该回报对 θ \theta θ 和 ϑ \thetasym ϑ 的梯度,实现端到端的优化。
先求解对 θ \theta θ 的梯度,如下
∂ Q Ω ( s , ω ) ∂ θ = ( ∑ a ∂ π ω , θ ( a ∣ s ) ∂ θ Q U ( s , ω , a ) ) + ∑ a π ω , θ ( a ∣ s ) ∑ s ′ γ P ( s ′ ∣ s , a ) ∂ U ( ω , s ′ ) ∂ θ \frac{\partial Q_\Omega(s,\omega)}{\partial\theta}=\Big(\sum_a\frac{\partial\pi_{\omega,\theta}(a\vert s)}{\partial\theta}Q_U(s,\omega,a)\Big)+\sum_a\pi_{\omega,\theta}(a\vert s)\sum_{s^\prime}\gamma P(s^\prime\vert s,a)\frac{\partial U(\omega,s^\prime)}{\partial\theta}
∂ θ ∂ Q Ω ( s , ω ) = ( a ∑ ∂ θ ∂ π ω , θ ( a ∣ s ) Q U ( s , ω , a ) ) + a ∑ π ω , θ ( a ∣ s ) s ′ ∑ γ P ( s ′ ∣ s , a ) ∂ θ ∂ U ( ω , s ′ )
结果分为两部分:第一项是对 π ω , θ \pi_{\omega,\theta} π ω , θ 求导,对应于内部策略变化对当前步价值的直接影响;第二项是对 U U U 求导,对应内部策略变化对未来状态价值的间接影响,需要递归展开。结合上述的 U ( ω , s ′ ) U(\omega,s^\prime) U ( ω , s ′ ) 的公式,给定一组马尔可夫选项,其随机内部策略关于参数 θ \theta θ 可微,则期望折扣回报关于 θ \theta θ ,初始条件为 ( s 0 , ω 0 ) (s_0,\omega_0) ( s 0 , ω 0 ) 的梯度为
∂ Q Ω ( s , ω ) ∂ θ = ∑ s , ω μ Ω ( s , ω ∣ s 0 , ω 0 ) ∑ a ∂ π ω , θ ( a ∣ s ) ∂ θ Q U ( s , ω , a ) \frac{\partial Q_\Omega(s,\omega)}{\partial\theta}=\sum_{s,\omega}\mu_\Omega(s,\omega\vert s_0,\omega_0)\sum_a\frac{\partial\pi_{\omega,\theta}(a\vert s)}{\partial \theta}Q_U(s,\omega,a)
∂ θ ∂ Q Ω ( s , ω ) = s , ω ∑ μ Ω ( s , ω ∣ s 0 , ω 0 ) a ∑ ∂ θ ∂ π ω , θ ( a ∣ s ) Q U ( s , ω , a )
其中的 μ Ω ( s , ω ∣ s 0 , ω 0 ) = ∑ t = 0 ∞ γ t P ( s t = s , ω t = ω ∣ s 0 , ω 0 ) \mu_\Omega(s,\omega\vert s_0,\omega_0)=\sum_{t=0}^\infty\gamma^tP(s_t=s,\omega_t=\omega\vert s_0,\omega_0) μ Ω ( s , ω ∣ s 0 , ω 0 ) = ∑ t = 0 ∞ γ t P ( s t = s , ω t = ω ∣ s 0 , ω 0 ) ,表示是从初始状态选项对出发,轨迹中所有状态选项对的折扣加权分布
求解对 ϑ \thetasym ϑ 的梯度
∂ Q Ω ( s , ω ) ∂ ϑ = ∑ a π ω , θ ( a ∣ s ) ∑ s ′ γ P ( s ′ ∣ s , a ) ∂ U ( ω , s ′ ) ∂ ϑ \frac{\partial Q_\Omega(s,\omega)}{\partial \thetasym}=\sum_a\pi_{\omega,\theta}(a\vert s)\sum_{s^\prime}\gamma P(s^\prime\vert s,a)\frac{\partial U(\omega,s^\prime)}{\partial\thetasym}
∂ ϑ ∂ Q Ω ( s , ω ) = a ∑ π ω , θ ( a ∣ s ) s ′ ∑ γ P ( s ′ ∣ s , a ) ∂ ϑ ∂ U ( ω , s ′ )
其中的核心是对 U U U 求偏导,带入上述的公式可以得到
∂ U ( ω , s ′ ) ∂ ϑ = − ∂ β ω , ϑ ( s ′ ) ∂ ϑ A Ω ( s ′ , ω ) + γ ∑ ω ′ ∑ s ′ ′ P ( s ′ ′ , ω ′ ∣ s ′ , ω ) ∂ U ( ω ′ , s ′ ′ ) ∂ ϑ \frac{\partial U(\omega,s^\prime)}{\partial \thetasym}=-\frac{\partial\beta_{\omega,\thetasym}(s^\prime)}{\partial\thetasym}A_\Omega(s^\prime,\omega)+\gamma\sum_{\omega^\prime}\sum_{s^{\prime\prime}}P(s^{\prime\prime},\omega^\prime\vert s^\prime,\omega)\frac{\partial U(\omega^\prime,s^{\prime\prime})}{\partial\thetasym}
∂ ϑ ∂ U ( ω , s ′ ) = − ∂ ϑ ∂ β ω , ϑ ( s ′ ) A Ω ( s ′ , ω ) + γ ω ′ ∑ s ′ ′ ∑ P ( s ′ ′ , ω ′ ∣ s ′ , ω ) ∂ ϑ ∂ U ( ω ′ , s ′ ′ )
这里引入了选项优势函数
A Ω ( s ′ , ω ) = Q Ω ( s ′ , ω ) − V Ω ( s ′ ) A_\Omega(s^\prime,\omega)=Q_\Omega(s^\prime,\omega)-V_\Omega(s^\prime)
A Ω ( s ′ , ω ) = Q Ω ( s ′ , ω ) − V Ω ( s ′ )
当 A Ω > 0 A_\Omega>0 A Ω > 0 ,即继续执行当前选项的价值高于终止后重选选项的期望价值,应该降低终止概率,继续执行;当 A Ω < 0 A_\Omega<0 A Ω < 0 ,即继续执行当前选项的价值低于终止后重选的期望价值,应该提升终止概率,停止执行。对于给定一组马尔可夫选项,其随机终止函数关于参数ϑ可微,那么期望折扣回报目标关于 ϑ \thetasym ϑ ,初始条件为 ( s 0 , ω 0 ) (s_0,\omega_0) ( s 0 , ω 0 ) 的梯度为
∂ Q Ω ( s , ω ) ∂ ϑ = − ∑ s ′ , ω μ Ω ( s ′ , ω ∣ s 1 , ω 0 ) ∂ β ω , ϑ ∂ ϑ A Ω ( s ′ , ω ) \frac{\partial Q_\Omega(s,\omega)}{\partial \thetasym}=-\sum_{s^\prime,\omega}\mu_\Omega(s^\prime,\omega\vert s_1,\omega_0)\frac{\partial\beta_{\omega,\thetasym}}{\partial\thetasym}A_\Omega(s^\prime,\omega)
∂ ϑ ∂ Q Ω ( s , ω ) = − s ′ , ω ∑ μ Ω ( s ′ , ω ∣ s 1 , ω 0 ) ∂ ϑ ∂ β ω , ϑ A Ω ( s ′ , ω )
其中 μ Ω ( s ′ , ω ∣ s 1 , ω 0 ) = ∑ t = 0 ∞ γ t P ( s t + 1 = s ′ , ω t = ω ∣ s 1 , ω 0 ) \mu_\Omega(s^\prime,\omega\vert s_1,\omega_0)=\sum_{t=0}^\infty\gamma^tP(s_{t+1}=s^\prime,\omega_t=\omega\vert s_1,\omega_0) μ Ω ( s ′ , ω ∣ s 1 , ω 0 ) = ∑ t = 0 ∞ γ t P ( s t + 1 = s ′ , ω t = ω ∣ s 1 , ω 0 ) 表示从初始条件 ( s 1 , ω 0 ) (s_1,\omega_0) ( s 1 , ω 0 ) 出发,轨迹中所有到达状态 s ′ s^\prime s ′ 且正在执行 ω \omega ω 的折扣加权分布
Option-Crtic 架构于 AC 算法架构对应,分为 Actor 和 Critic 两部分
Actor 部分:包含 2 个可学习的组件,是策略的执行主体
所有选项的内部策略 π ω , θ \pi_{\omega,\theta} π ω , θ :选项执行时,负责选择原始动作
所有选项的终止函数 β ω , ϑ \beta_{\omega,\thetasym} β ω , ϑ :进入新状态时,决定是否终止当前选项
Critic 部分:负责估计价值函数,为 Actor 的梯度更新提供评价信号,核心是估计 Q U Q_U Q U 和 A Ω A_\Omega A Ω ,也可以直接估计 Q Ω Q_\Omega Q Ω 和 V Ω V_\Omega V Ω ,再推导 Q U Q_U Q U 和 A Ω A_\Omega A Ω
Critic 部分的损失函数为 TD 误差的均方误差
L c r i t i c = 1 N ∑ i = 1 N ( g i − Q Ω ( s i , ω i ) ) 2 g i = r + γ ( ( 1 − β ω , ϑ ( s ′ ) ) Q Ω ( s ′ , ω ) + β ω , ϑ ( s ′ ) max ω ′ Q Ω ( s ′ , ω ′ ) ) L_{critic}=\frac{1}{N}\sum_{i=1}^N(g_i-Q_\Omega(s_i,\omega_i))^2\\g_i=r+\gamma\Big(\big(1-\beta_{\omega,\thetasym}(s^\prime)\big)Q_\Omega(s^\prime,\omega)+\beta_{\omega,\thetasym}(s^\prime)\max_{\omega^\prime}Q_\Omega(s^\prime,\omega^\prime)\Big)
L c r i t i c = N 1 i = 1 ∑ N ( g i − Q Ω ( s i , ω i ) ) 2 g i = r + γ ( ( 1 − β ω , ϑ ( s ′ ) ) Q Ω ( s ′ , ω ) + β ω , ϑ ( s ′ ) ω ′ max Q Ω ( s ′ , ω ′ ) )
Actor 的目标是最大化全局期望回报,内部策略 π ω , θ \pi_{\omega,\theta} π ω , θ 控制 Option 执行时的原始动作选择,优化目标是提升高价值动作的概率,内部策略 π ω , θ \pi_{\omega,\theta} π ω , θ 的损失函数如下
L c o r e = − log π ω , θ ( a ∣ s ) Q U ( s , ω , a ) L_{core}=-\log\pi_{\omega,\theta}(a\vert s)Q_U(s,\omega,a)
L c o r e = − log π ω , θ ( a ∣ s ) Q U ( s , ω , a )
无需直接学习 Q U Q_U Q U 网络,直接用当前步的 TD 目标 g i g_i g i 作为 Q U ( s , ω , a ) Q_U(s,\omega,a) Q U ( s , ω , a ) 的无偏估计来减少参数量。另外还可以用优势函数 Q U ( s , ω , a ) − V Ω ( s ) Q_U(s,\omega,a)-V_\Omega(s) Q U ( s , ω , a ) − V Ω ( s ) 替换 Q U Q_U Q U ,即
L c o r e = − log π ω , θ ( a ∣ s ) ( Q U ( s , ω , a ) − V Ω ( s ) ) L_{core}=-\log\pi_{\omega,\theta}(a\vert s)\big(Q_U(s,\omega,a)-V_\Omega(s)\big)
L c o r e = − log π ω , θ ( a ∣ s ) ( Q U ( s , ω , a ) − V Ω ( s ) )
为避免深度网络下内部策略快速退化为确定性策略,加入策略的信息熵正则化
L e n t = − β e n t H ( π ω , θ ( ⋅ ∣ s ) ) H ( π ω , θ ( ⋅ ∣ s ) ) = − ∑ a ∈ A π ω , θ ( a ∣ s ) log π ω , θ ( a ∣ s ) L_{ent}=-\beta_{ent}\mathcal{H}(\pi_{\omega,\theta}(\cdot\vert s))\\\mathcal{H}(\pi_{\omega,\theta}(\cdot\vert s))=-\sum_{a\in A}\pi_{\omega,\theta}(a\vert s)\log\pi_{\omega,\theta}(a\vert s)
L e n t = − β e n t H ( π ω , θ ( ⋅ ∣ s ) ) H ( π ω , θ ( ⋅ ∣ s ) ) = − a ∈ A ∑ π ω , θ ( a ∣ s ) log π ω , θ ( a ∣ s )
则得到最终的内部策略损失
L i n t r a = L c o r e + L e n t = − log π ω , θ ( a ∣ s ) Q U ( s , ω , a ) − β e n t H ( π ω , θ ( ⋅ ∣ s ) ) L_{intra}=L_{core}+L_{ent}=-\log\pi_{\omega,\theta}(a\vert s)Q_U(s,\omega,a)-\beta_{ent}\mathcal{H}(\pi_{\omega,\theta}(\cdot\vert s))
L i n t r a = L c o r e + L e n t = − log π ω , θ ( a ∣ s ) Q U ( s , ω , a ) − β e n t H ( π ω , θ ( ⋅ ∣ s ) )
终止函数的优化目标为学习何时终止当前 Option 能最大化全局回报,为了避免 Option 过度收缩,给优势函数加入偏移 ξ \xi ξ
A ~ Ω ( s ′ , ω ) = Q Ω ( s ′ , ω ) − V Ω ( s ′ ) + ξ \tilde{A}_\Omega(s^\prime,\omega)=Q_\Omega(s^\prime,\omega)-V_\Omega(s^\prime)+\xi
A ~ Ω ( s ′ , ω ) = Q Ω ( s ′ , ω ) − V Ω ( s ′ ) + ξ
定义终止函数的损失
L t e r m = β ω , ϑ ( s ′ ) A ~ Ω ( s ′ , ω ) L_{term}=\beta_{\omega,\thetasym}(s^\prime)\tilde{A}_\Omega(s^\prime,\omega)
L t e r m = β ω , ϑ ( s ′ ) A ~ Ω ( s ′ , ω )
在深度网络端到端的训练中,通常将三个损失加权求和
L t o t a l = L c r i t i c + λ i n t r a L i n t r a + λ t e r m L t e r m L_{total}=L_{critic}+\lambda_{intra}L_{intra}+\lambda_{term}L_{term}
L t o t a l = L c r i t i c + λ i n t r a L i n t r a + λ t e r m L t e r m
其中的 λ i n t r a \lambda_{intra} λ i n t r a 和 λ t e r m \lambda_{term} λ t e r m 为内部策略损失函数和终止函数损失的权重系数
针对离散状态的简单环境中,无需使用深度网络,直接使用梯度上升法更新表格
Q U ( s , ω , a ) = Q U ( s , ω , a ) + α ( g − Q U ( s , ω , a ) ) θ = θ + α θ ∂ log π ω , θ ( a ∣ s ) ∂ θ Q U ( s , ω , a ) ϑ = ϑ − α ϑ ∂ β ω , ϑ ( s ′ ) ∂ ϑ A ~ Ω ( s ′ , ω ) Q_U(s,\omega,a)=Q_U(s,\omega,a)+\alpha(g-Q_U(s,\omega,a))\\\theta=\theta+\alpha_\theta\frac{\partial\log\pi_{\omega,\theta}(a\vert s)}{\partial\theta}Q_U(s,\omega,a)\\\thetasym=\thetasym-\alpha_\thetasym\frac{\partial\beta_{\omega,\thetasym}(s^\prime)}{\partial\thetasym}\tilde{A}_\Omega(s^\prime,\omega)
Q U ( s , ω , a ) = Q U ( s , ω , a ) + α ( g − Q U ( s , ω , a ) ) θ = θ + α θ ∂ θ ∂ log π ω , θ ( a ∣ s ) Q U ( s , ω , a ) ϑ = ϑ − α ϑ ∂ ϑ ∂ β ω , ϑ ( s ′ ) A ~ Ω ( s ′ , ω )
其中的 α \alpha α 为学习率, g g g 为 TD 目标
MAXQ
MAXQ 算法主要思想就是将一个复杂的 MDP 分解为一系列嵌套的子 MDP,以便更容易解决问题。MAXQ 算法将任务 MDP 任务 M M M 分解为一系列子任务 ( M 0 , ⋯ , M n ) (M_0,\cdots,M_n) ( M 0 , ⋯ , M n ) ,另外 MAXQ 引入了一种分层的结构,将这一系列子任务构建为一个任务树,通过各个子任务的求解来解决整个任务,其中的 M 0 M_0 M 0 就是这个任务树的 root,即解决 M 0 M_0 M 0 就能解决整个原始 MDP 任务
MAXQ 中定义无参数子任务的三元组 M i = ( T i , A i , R ~ i ) M_i=(T_i,A_i,\tilde{R}_i) M i = ( T i , A i , R ~ i ) 。其中的 T i T_i T i 为终止谓词,将状态空间 S S S 划分为活跃状态集 S i S_i S i (子任务可执行的状态)和终止状态集 T i T_i T i (子任务执行完成的状态),子任务的策略仅在 s ∈ S i s\in S_i s ∈ S i 中执行;动作集 A i A_i A i 是子任务 M i M_i M i 可执行的动作集合,既可以是原始 MDP 的原子动作,也可以是其他的子任务;伪奖励函数 R ~ i \tilde{R}_i R ~ i 仅在子任务从活跃状态 s ∈ S i s\in S_i s ∈ S i 转移到终止状态 s ′ ∈ T i s^\prime\in T_i s ′ ∈ T i 时生效,定义了子任务不同终止状态的优劣,通常给目标终止状态赋值 0,而非目标终止状态奖励赋值。另外对于原始 MDP 中的每个原子动作都是一个原子子任务,始终可执行、执行后立即终止,伪奖励函数为 0
在 MAXQ 中定义了分层策略 π = { π 0 , ⋯ , π n } \pi=\{\pi_0,\cdots,\pi_n\} π = { π 0 , ⋯ , π n } ,为每个子任务 M i M_i M i 定义一个子策略 π i \pi_i π i 。子策略 π i \pi_i π i 输入当前状态,输出要执行的原子动作或子任务。采用栈结构的子程序调用返回机制,子任务被调用后持续执行到自身的终止状态后返回父任务
MAXQ 定义分层值函数 V π ( s , K ) V^\pi(s,K) V π ( s , K ) ,表示在状态 s s s ,调用栈内容为 K K K 时,遵循分层策略 π \pi π 的期望累积奖励。定义投影值函数 V π ( s ) V^\pi(s) V π ( s ) ,表示从根任务出发,调用栈为空时,在状态 s s s 遵循分层策略 π \pi π 的期望累积奖励,即 V π ( s ) = V π ( s , N U L L ) V^\pi(s)=V^\pi(s,NULL) V π ( s ) = V π ( s , N U L L )
给定子任务图和分层策略 π \pi π 之后,每个子任务定义一个 SMDP,其状态空间为 S i S_i S i ,动作空间为 A i A_i A i ,转移概率为 P i π ( s ′ , N ∣ s , a ) P_i^\pi(s^\prime,N\vert s,a) P i π ( s ′ , N ∣ s , a ) ,期望奖励函数为 R ˉ ( s , a ) = V π ( a , s ) \bar{R}(s,a)=V^\pi(a,s) R ˉ ( s , a ) = V π ( a , s ) ,即子任务 M i M_i M i 在状态 s s s 的投影值函数,若 a a a 为原子动作,则 V π ( a , s ) V^\pi(a,s) V π ( a , s ) 时执行动作 a a a 的期望即时奖励。
子任务 M i M_i M i 的投影值函数 V π ( i , s ) V^\pi(i,s) V π ( i , s ) ,是从状态 s s s 执行 M i M_i M i 直到终止的期望累积奖励,即
V π ( i , s ) = E { r t + γ r t + 1 + ⋯ ∣ s t = s , π } V^\pi(i,s)=E\{r_t+\gamma r_{t+1}+\cdots\vert s_t=s,\pi\}
V π ( i , s ) = E { r t + γ r t + 1 + ⋯ ∣ s t = s , π }
若 π i ( s ) \pi_i(s) π i ( s ) 选择的第一个动作是子任务 a a a ,执行 N N N 步之后终止于 s ′ s^\prime s ′ ,则上述式子可以写作
V π ( i , s ) = E { ∑ u = 0 N − 1 γ u t t + u + ∑ u = N ∞ γ u r t + u ∣ s t = s , π } V^\pi(i,s)=E\Big\{\sum_{u=0}^{N-1}\gamma^ut_{t+u}+\sum_{u=N}^\infty\gamma^ur_{t+u}\Big\vert s_t=s,\pi\Big\}
V π ( i , s ) = E { u = 0 ∑ N − 1 γ u t t + u + u = N ∑ ∞ γ u r t + u ∣ ∣ ∣ ∣ s t = s , π }
其中第一部分就是执行子任务 a a a 本身的折扣累积奖励,即 V π ( a , s ) V^\pi(a,s) V π ( a , s ) ;第二部分为子任务终止之后,完成父任务 M i M_i M i 的折扣累积奖励,即 γ N V π ( i , s ′ ) \gamma^NV^\pi(i,s^\prime) γ N V π ( i , s ′ ) 的期望。由此可以得到子任务 SMDP 的 Bellman 方程
V π ( i , s ) = V π ( π i ( s ) , s ) + ∑ s ′ , N P i π ( s ′ , N ∣ s , π i ( s ) ) γ N V π ( i , s ′ ) V^\pi(i,s)=V^\pi(\pi_i(s),s)+\sum_{s^\prime,N}P^\pi_i(s^\prime,N\vert s,\pi_i(s))\gamma^NV^\pi(i,s^\prime)
V π ( i , s ) = V π ( π i ( s ) , s ) + s ′ , N ∑ P i π ( s ′ , N ∣ s , π i ( s ) ) γ N V π ( i , s ′ )
为了将分解扩展到动作值函数,首先定义子任务的动作值函数 Q π ( i , s , a ) Q^\pi(i,s,a) Q π ( i , s , a ) ,即在子任务 M i M_i M i 的活跃状态 s s s ,执行动作 a a a ,之后遵循分层策略 π \pi π 直到 M i M_i M i 终止的期望累积奖励。其 Bellman 方程为
Q π ( i , s , a ) = V π ( a , s ) + ∑ s ′ , N P i π ( s ′ , N ∣ s , a ) γ N Q π ( i , s ′ , π ( s ′ ) ) Q^\pi(i,s,a)=V^\pi(a,s)+\sum_{s^\prime,N}P_i^\pi(s^\prime,N\vert s,a)\gamma^NQ^\pi(i,s^\prime,\pi(s^\prime))
Q π ( i , s , a ) = V π ( a , s ) + s ′ , N ∑ P i π ( s ′ , N ∣ s , a ) γ N Q π ( i , s ′ , π ( s ′ ) )
将上式的右侧第二项定义为完成函数,是 MAXQ 的核心创新
C π ( i , s , a ) = ∑ s ′ , N P i π ( s ′ , N ∣ s , a ) γ N Q π ( i , s ′ , π ( s ′ ) ) C^\pi(i,s,a)=\sum_{s^\prime,N}P_i^\pi(s^\prime,N\vert s,a)\gamma^NQ^\pi(i,s^\prime,\pi(s^\prime))
C π ( i , s , a ) = s ′ , N ∑ P i π ( s ′ , N ∣ s , a ) γ N Q π ( i , s ′ , π ( s ′ ) )
完成函数指的就是在状态 s s s 为子任务 M i M_i M i 调用子任务 M a M_a M a ,当 M a M_a M a 执行完成之后,继续完成 M i M_i M i 的期望折扣累积奖励,也就是完成子任务之后,后续还能得到多少奖励。则上述的动作值函数可以写作
Q π ( i , s , a ) = V π ( a , s ) + C π ( i , s , a ) Q^\pi(i,s,a)=V^\pi(a,s)+C^\pi(i,s,a)
Q π ( i , s , a ) = V π ( a , s ) + C π ( i , s , a )
即动作值函数是由执行动作 a a a 本身能获得的奖励 和执行完动作 a a a 之后完成父任务剩余部分的奖励。同时子任务的状态值函数定义为
V π ( i , s ) = { Q π ( i , s , π ( s ) ) 复合子任务 ∑ s ′ P ( s ′ ∣ s , i ) R ( s ′ ∣ s , i ) 原子动作 V^\pi(i,s)=\left\{\begin{aligned}&Q^\pi(i,s,\pi(s))&&\text{复合子任务}\\&\sum_{s^\prime}P(s^\prime\vert s,i)R(s^\prime\vert s,i)&&\text{原子动作}\end{aligned}\right.
V π ( i , s ) = ⎩ ⎪ ⎪ ⎨ ⎪ ⎪ ⎧ Q π ( i , s , π ( s ) ) s ′ ∑ P ( s ′ ∣ s , i ) R ( s ′ ∣ s , i ) 复合子任务 原子动作
复合子任务的值函数等于其策略选择的动作 Q 值;原子动作的值函数等于执行该动作的期望即时奖励。
对于任意状态 s s s ,根任务的值函数可以展开为从根节点到叶子原子动作的路径上,所有原子动作的 V 值于各层完成函数 C 值的加和
V π ( 0 , s ) = V π ( a m , s ) + C π ( a m − 1 , s , a m ) + ⋯ + C π ( 0 , s , a 1 ) V^\pi(0,s)=V^\pi(a_m,s)+C^\pi(a_{m-1},s,a_m)+\cdots+C^\pi(0,s,a_1)
V π ( 0 , s ) = V π ( a m , s ) + C π ( a m − 1 , s , a m ) + ⋯ + C π ( 0 , s , a 1 )
其中的 a 0 = 0 , a 1 , ⋯ , a m a_0=0,a_1,\cdots,a_m a 0 = 0 , a 1 , ⋯ , a m 是分层策略从根节点到原子叶子节点的路径。
对于给定 MAXQ 图和任意分层策略 π \pi π ,一定存在对应的完成函数 C π ( i , s , a ) C^\pi(i,s,a) C π ( i , s , a ) 和状态值函数 V π ( i , s ) V^\pi(i,s) V π ( i , s ) ,使得通过分解方程计算出的根任务值函数 V π ( 0 , s ) V^\pi(0,s) V π ( 0 , s ) ,等于遵循该分层策略从状态 s s s 出发的期望折扣累积奖励。
在 MAXQ 的论文中还提出了 MAXQ 的可视化表示,包含两类节点
MAX 节点:对应每个子任务或原子动作,复合 Max 节点计算子任务的 V 值。MAX 节点的值等于其所有子 Q 节点中的最大值
Q 节点:对应父任务可调用的每个自动做,存储该动作在父任务中的完成函数 C π ( i , s , a ) C^\pi(i,s,a) C π ( i , s , a ) 。Q 节点的值等于其所有子 MAX 节点的 V 值+自身存储的 C 值
MAXQ 采用递归最优策略,即对于 MAXQ 分解的每个子任务 M i M_i M i ,其策略 π i \pi_i π i 在该子任务对应的 SMDP 中是最优的,每个子任务的策略是层部最优、上下文无关的,仅优化自身子任务的奖励,不考虑父任务的上下文。论文中定义了两种算法 MAXQ-0 和 MAXQ-Q 的流程
GLIE 探索策略
GLIE 探索策略即 Greedy in the Limit with Infinite Exploration,指的是一类满足收敛性条件的探索策略的通用准则。一个 GLIE 探索策略是满足以下两个条件的任意策略
无限探索条件:在每一个被无限次访问的状态中,每一个可执行的动作都被无限次执行
极限下贪心条件:当时间步趋于无穷时,策略收敛到对当前价值函数贪心的策略
经典的 GLIE 策略实现方式
衰减 ϵ \epsilon ϵ 贪婪策略:探索率随着时间步 t t t 衰减,当 t → ∞ t\rightarrow\infty t → ∞ 时 ϵ → 0 \epsilon\rightarrow0 ϵ → 0
ϵ ( t ) = 1 t \epsilon(t)=\frac{1}{\sqrt{t}} ϵ ( t ) = t 1
ϵ ( t ) = c c + t \epsilon(t)=\frac{c}{c+t} ϵ ( t ) = c + t c
ϵ ( t ) = 1 log ( t + 1 ) \epsilon(t)=\frac{1}{\log(t+1)} ϵ ( t ) = l o g ( t + 1 ) 1
衰减温度的玻尔兹曼探索:根据动作的 Q 值计算选择概率,估值越高的动作被选中的概率越大
P ( a ∣ s ) = exp ( Q ( s , a ) / τ ( t ) ) ∑ b exp ( Q ( s , b ) / τ ( t ) ) P(a\vert s)=\frac{\exp(Q(s,a)/\tau(t))}{\sum_b\exp(Q(s,b)/\tau(t))} P ( a ∣ s ) = ∑ b e x p ( Q ( s , b ) / τ ( t ) ) e x p ( Q ( s , a ) / τ ( t ) )
其中的 τ ( t ) \tau(t) τ ( t ) 为温度系数,温度越高,探索越强;温度越低,动作越集中于高估值动作
温度系数 τ ( t ) \tau(t) τ ( t ) 随时间步 t t t 衰减,且满足 t → ∞ t\rightarrow\infty t → ∞ 时 τ ( t ) → 0 \tau(t)\rightarrow0 τ ( t ) → 0
温度系数常用形式 τ ( t ) = 1 log ( t + 1 ) \tau(t)=\frac{1}{\log(t+1)} τ ( t ) = l o g ( t + 1 ) 1
对于有序 GLIE 探索策略,相比于 GLIE 探索策略,添加了一项规则:对所有子任务中的所有动作,定义一个固定的全局序列,该序列在学习过程中保持不变,在贪婪探索时不再随机选择动作,而是按照预先定义的固定全序,在平局集合中选择排名最靠前的动作
MAXQ-0
MAXQ-0 是简化版的 MAXQ 学习算法,仅适用于伪奖励函数恒为 0 的场景。MAX-0 是递归执行的函数,核心流程如下
若当前为原子动作节点:执行动作,获得奖励,更新原子动作的 V 值,返回执行步数 1
若当前为复合子任务节点:循环直到子任务终止,按探索策略选择子动作,递归调用 MAXQ-0 执行子动作,获得执行步数 N 和终止状态 s ′ s^\prime s ′ ,更新当前节点对应动作的完成函数 C 值,累积步数并且更新当前状态
核心更新公式如下
原子动作 V 值更新 V t + 1 ( i , s ) = ( 1 − α t ( i ) ) V t ( i , s ) + α t ( i ) r t V_{t+1}(i,s)=(1-\alpha_t(i))V_t(i,s)+\alpha_t(i)r_t V t + 1 ( i , s ) = ( 1 − α t ( i ) ) V t ( i , s ) + α t ( i ) r t ,本质是对原子动作的期望即时奖励做随机逼近
完成 C 值函数更新 C t + 1 ( i , s , a ) = ( 1 − α t ( i ) ) C t ( i , s , a ) + α t ( i ) γ N V t ( i , s ′ ) C_{t+1}(i,s,a)=(1-\alpha_t(i))C_t(i,s,a)+\alpha_t(i)\gamma^NV_t(i,s^\prime) C t + 1 ( i , s , a ) = ( 1 − α t ( i ) ) C t ( i , s , a ) + α t ( i ) γ N V t ( i , s ′ ) ,其中的 N N N 为子动作 a a a 的执行步数, V t ( i , s ′ ) V_t(i,s^\prime) V t ( i , s ′ ) 是子动作终止之后,父任务 M i M_i M i 在状态 s ′ s^\prime s ′ 的贪心值
V t ( i , s ) = { max a Q π ( i , s , π ( s ) ) 复合子任务 V t ( i , s ) 原子动作 V_t(i,s)=\left\{\begin{aligned}&\max_aQ^\pi(i,s,\pi(s))&&\text{复合子任务}\\&V_t(i,s)&&\text{原子动作}\end{aligned}\right.
V t ( i , s ) = ⎩ ⎪ ⎨ ⎪ ⎧ a max Q π ( i , s , π ( s ) ) V t ( i , s ) 复合子任务 原子动作
MAXQ-0 的收敛性:对于回合制 proper MDP 或无限时域折扣 MDP,若满足以下条件
所有子任务的伪奖励函数恒为 0
每个节点的学习率 α t ( i ) \alpha_t(i) α t ( i ) 满足随机逼近收敛条件
每个节点采用有序 GLIE 探索策略
所有的 V 值和 C 值始终有界
则 MAXQ-0 算法收敛到唯一的递归最优策略 π r ⋆ \pi^\star_r π r ⋆
MAXQ-Q
MAXQ-Q 时 MAXQ-0 的通用版本,支持任意伪奖励函数。在训练时,若直接将伪奖励加入 C 值更新,会污染父任务需要的真实完成值,导致无法学习到原始 MDP 的递归最优策略。所以在 MAXQ-Q 中学习两个独立的完成函数
C ~ ( i , s , a ) \tilde{C}(i,s,a) C ~ ( i , s , a ) 内部优化完成函数,包含原始奖励和子任务的伪奖励,用于子任务内部学习局部最优策略
C ( i , s , a ) {C}(i,s,a) C ( i , s , a ) 真实完成函数,仅包含原始 MDP 的奖励,不包含伪奖励,用于父任务计算子任务的真实 V 值
MAXQ-Q 的核心是两个完成函数的并行更新,如下
C ~ t + 1 ( i , s , a ) = ( 1 − α t ( i ) ) C ~ t ( i , s , a ) + α t ( i ) γ N [ R ~ i ( s ′ ) + C ~ t ( i , s ′ , a ⋆ ) + V t ( a ⋆ , s ′ ) ] \tilde{C}_{t+1}(i,s,a)=(1-\alpha_t(i))\tilde{C}_t(i,s,a)+\alpha_t(i)\gamma^N\big[\tilde{R}_i(s^\prime)+\tilde{C}_t(i,s^\prime,a^\star)+V_t(a^\star,s^\prime)\big]
C ~ t + 1 ( i , s , a ) = ( 1 − α t ( i ) ) C ~ t ( i , s , a ) + α t ( i ) γ N [ R ~ i ( s ′ ) + C ~ t ( i , s ′ , a ⋆ ) + V t ( a ⋆ , s ′ ) ]
其中的 a ⋆ = arg max a ′ [ C ~ t ( i , s ′ , a ′ ) + V t ( a ′ , s ′ ) ] a^\star=\argmax_{a^\prime}\big[\tilde{C}_t(i,s^\prime,a^\prime)+V_t(a^\prime,s^\prime)\big] a ⋆ = a r g m a x a ′ [ C ~ t ( i , s ′ , a ′ ) + V t ( a ′ , s ′ ) ] 是子动作终止状态 s ′ s^\prime s ′ 下的贪心动作,其中 R ~ i ( s ′ ) \tilde{R}_i(s^\prime) R ~ i ( s ′ ) 是子任务的伪奖励
C t + 1 ( i , s , a ) = ( 1 − α t ( i ) ) C t ( i , s , a ) + α t ( i ) γ N [ C t ( i , s ′ , a ⋆ ) + V t ( a ⋆ , s ′ ) ] {C}_{t+1}(i,s,a)=(1-\alpha_t(i)){C}_t(i,s,a)+\alpha_t(i)\gamma^N\big[{C}_t(i,s^\prime,a^\star)+V_t(a^\star,s^\prime)\big]
C t + 1 ( i , s , a ) = ( 1 − α t ( i ) ) C t ( i , s , a ) + α t ( i ) γ N [ C t ( i , s ′ , a ⋆ ) + V t ( a ⋆ , s ′ ) ]
保证学习的是子任务实际执行的策略的真实值函数
FuN
FuN 算法即 FeUdel Networks,旨在通过分层结构来解决复杂的强化学习任务,通过将任务分解为高层目标和低层执行细节,提高了在复杂环境中的学习效率。
该算法将学习过程分为两个层次
Manager:负责设定高层次目标,通常在更高的抽象层次进行决策。Manager 在高维状态空间中学习如何为低层策略设定子目标
Manager 每个固定的时间步长生成一个新的子目标。这个子目标表示 Worker 接下来一段时间内需要到达的状态或方向
Worker:负责在具体的动作空间中实现 Manager 设定的子目标,执行实际的动作序列以完成高层指定的目标
Worker 从 Manager 接收到目标,直接与环境进行交互,通过动作空间中的操作逐步朝 Manager 设定的目标前进
整体前向传播流程
共享感知映射 z t = f p e r c e p t ( x t ) z_t=f^{percept}(x_t) z t = f p e r c e p t ( x t ) 。为 Manager 和 Worker 提供统一的环境感知特征,避免重复的特征学习
x t x_t x t 为 t t t 时刻环境的原始观测输入
f p e r c e p t f^{percept} f p e r c e p t 是共享感知模块,将原始观测映射为特征向量
z t z_t z t 是 t t t 时刻共享的中间特征表征
Manager 隐状态映射 s t = f M s p a c e ( z t ) s_t=f^{Mspace}(z_t) s t = f M s p a c e ( z t ) 。构建 Manager 进行状态建模与目标设置的专属隐空间,所有目标都在此定义
f M s p a c e f^{Mspace} f M s p a c e 是将共享特征映射到 Manager 专属的隐状态空间
s t s_t s t 是 Manager 的隐状态向量,是 Manager 设置目标的基础空间
Manager 目标生成 h t M , g ^ t = f M r n n ( s t , h t − 1 M ) , g t = g ^ t ∥ g ^ t ∥ h_t^M,\hat{g}_t=f^{Mrnn}(s_t,h_{t-1}^M),g_t=\frac{\hat{g}_t}{\Vert\hat{g}_t\Vert} h t M , g ^ t = f M r n n ( s t , h t − 1 M ) , g t = ∥ g ^ t ∥ g ^ t ,是 FuN 的核心公式之一,让目标成为纯方向,而非绝对位置。Worker 只需让隐状态向该方向移动,无需到达特定点,大幅提升了目标的泛化性
循环网络 f M r n n f^{Mrnn} f M r n n 输出原始目标: f M r n n f^{Mrnn} f M r n n 是 Manager 的循环网络,输出当前循环状态与原始目标向量
归一化为方向向量:将原始目标向量归一化
目标嵌入与时间池化 w t = ϕ ( ∑ i = t − c t g i ) w_t=\phi(\sum_{i=t-c}^tg_i) w t = ϕ ( ∑ i = t − c t g i ) ,让 Manager 的目标对 Worker 的影响平滑变化,从结构上保证 Manager 的目标永远会影响 Worker 的最终策略,将高维目标降维,降低后续与动作交互的计算复杂度
∑ i = t − c t g i \sum_{i=t-c}^tg_i ∑ i = t − c t g i 是对过去 c c c 步的目标向量求和,其中 c c c 是 Manager 的时间跨度
ϕ \phi ϕ 是无偏置的线性变化,将求和后的高维目标映射到低维嵌入空间
w t w_t w t 为目标嵌入向量
Worker 动作嵌入生成 h W , U t = f W r n n ( z t , h t − 1 W ) h^W,U_t=f^{Wrnn}(z_t,h_{t-1}^W) h W , U t = f W r n n ( z t , h t − 1 W ) ,Worker 为每个原始动作学习嵌入表示
f W r n n f^{Wrnn} f W r n n 是 Worker 的循环网络
U t U_t U t 是动作嵌入矩阵,每一行对应一个原始动作的 k k k 维嵌入向量
最终动作策略生成 π t = s o f t m a x ( U t w t ) \pi_t=softmax(U_tw_t) π t = s o f t m a x ( U t w t ) ,通过内积实现 Manager 目标对 Worker 动作的动态调制,即与目标越契合的动作,被选中的概率越高
U t w t U_tw_t U t w t 是动作嵌入向量与目标嵌入向量做内积
π t \pi_t π t 为最终策略,它输出选择每个动作的概率
FuN 中确定了 Manager 和 Worker 的解耦训练规则,核心是两者之间无梯度传播,分别通过独立的目标函数优化
Manager 的转移策略梯度更新,定义 Manager 网络参数 θ \theta θ 的梯度
∇ g t = A t M ∇ θ d c o s ( s t + c − s t , g t ( θ ) ) \nabla g_t=A_t^M\nabla_\theta d_{cos}(s_{t+c}-s_t,g_t(\theta))
∇ g t = A t M ∇ θ d c o s ( s t + c − s t , g t ( θ ) )
其中的 A t M = R t − V t M ( x t , θ ) A_t^M=R_t-V_t^M(x_t,\theta) A t M = R t − V t M ( x t , θ ) 是 Manager 的优势函数,其中 V t M V_t^M V t M 是 Manager 内部 Critic 估计的状态价值函数,优势函数衡量了当前目标设置相对于平均水平的优劣;其中的 R t = ∑ k = 0 ∞ γ k r t + k + 1 R_t=\sum_{k=0}^\infty\gamma^kr_{t+k+1} R t = ∑ k = 0 ∞ γ k r t + k + 1 是最大化折扣回报,为优化目标;其中 d c o s ( α , β ) = α T β ∣ α ∣ ∣ β ∣ d_{cos}(\alpha,\beta)=\frac{\alpha^T\beta}{\vert\alpha\vert\vert\beta\vert} d c o s ( α , β ) = ∣ α ∣ ∣ β ∣ α T β ,是余弦相似度,衡量两个向量的方向一致性;其中 s t + c − s t s_{t+c}-s_t s t + c − s t 是 t t t 时刻到 t + c t+c t + c 时刻,Manager 隐状态的位移向量,代表 c c c 步内 agent 在隐状态空间的实际移动方向。
Worker 使用标准 A3C 算法更新。定义 Worker 的内在奖励
r t I = 1 c ∑ i = 1 c d c o s ( s t − s t − i , g t − i ) r_t^I=\frac{1}{c}\sum_{i=1}^cd_{cos}(s_t-s_{t-i},g_{t-i})
r t I = c 1 i = 1 ∑ c d c o s ( s t − s t − i , g t − i )
其中 r t I r_t^I r t I 是 t t t 时刻 Worker 获得的内在奖励;其中 s t − s t − i s_t-s_{t-i} s t − s t − i 是从 t − i t-i t − i 时刻到 t t t 时刻,隐状态的实际位移向量;其中 g t − i g_{t-i} g t − i 是 t − i t-i t − i 时刻 Manager 设置的目标方向。
Woker 的总优化目标为环境外部回报+加权内在回报 R t + α R t I R_t+\alpha R_t^I R t + α R t I ,其中的 α \alpha α 为超参数。Worker 的策略梯度更新,定义 Woker 策略网络参数的梯度
∇ π t = A t D ∇ θ log π ( a t ∣ x t ; θ ) \nabla\pi_t=A_t^D\nabla_\theta\log\pi(a_t\vert x_t;\theta)
∇ π t = A t D ∇ θ log π ( a t ∣ x t ; θ )
其中的 A t D = R t + α R t I − V t D ( x t ; θ ) A_t^D=R_t+\alpha R_t^I-V_t^D(x_t;\theta) A t D = R t + α R t I − V t D ( x t ; θ ) 是 Worker 的优势函数;其中的 V t D V_t^D V t D 是 Worker 内部 Critic 估计的价值函数,同时建模了外部奖励与内在奖励的总价值;其中的 log π ( a t ∣ x t ; θ ) \log\pi(a_t\vert x_t;\theta) log π ( a t ∣ x t ; θ ) 是在 t t t 时刻选中动作 a t a_t a t 的对数概率
扩张 LSTM
FuN 中的 Manger 需要在地时间分辨率上运行,同时处理所有输入数据,还要保留长期记忆,避免长序列反向传播的梯度消失。为了解决这一问题,提出了扩张 LSTM。核心是将循环状态分为 r r r 组独立的子状态,每一步仅更新其中一组
对于扩张半径 r r r ,网络完整状态由 r r r 组子状态组成 h = { h ^ i } i = 1 r h=\{\hat{h}^i\}^r_{i=1} h = { h ^ i } i = 1 r ,则 t t t 时刻的更新方程为
h ^ t t % r , g t = L S T M ( s t , h ^ t − 1 t % r ; θ L S T M ) \hat{h}_t^{t\%r},g_t=LSTM(s_t,\hat{h}_{t-1}^{t\%r};\theta^{LSTM})
h ^ t t % r , g t = L S T M ( s t , h ^ t − 1 t % r ; θ L S T M )
其中的 t % r t\%r t % r 是取模运算, t t t 时刻仅更新对应索引的子状态组, θ L S T M \theta^{LSTM} θ L S T M 是 LSTM 参数,所有 r r r 组子状态共享同一套参数
HDQN
HDQN 即 Hierarchical Deep Q-Network,旨在通过将复杂任务分解为层次化的子任务来学习,结合了 DQN 和 HRL 的思想,能够有效解决长时间跨度和奖励稀疏的问题。HDQN 的核心思想是将任务分解为高层次任务和低层次任务,分别学习不同的策略。
meta-controller:负责获取当前状态 s t s_t s t ,然后从可能的子任务里选择一个子任务 g t ∈ G g_t\in G g t ∈ G ,交代给下一层级的控制器执行
controller:负责接收上一个层级的子任务 g t g_t g t ,以及当前的状态 s t s_t s t ,然后选择一个可能的行动 a t a_t a t 执行。
HDQN 是基于 DQN 框架,为控制器和元控制器分别设计了带条件的 Q 函数,对应 Bellman 最优方程。定义 controller 的最优动作价值函数 Q 1 ⋆ Q_1^\star Q 1 ⋆
Q 1 ⋆ ( s , a ; g ) = max π ( a ∣ s , g ) E [ ∑ t ′ = t ∞ γ t ′ − t r t ′ ∣ s t = s , a t = a , g t = g ] = max π ( a ∣ s , g ) E [ r t + γ max a t + 1 Q 1 ⋆ ( s t + 1 , a t + 1 ; g ) ∣ s t = s , a t = a , g t = g ] Q_1^\star(s,a;g)=\max_{\pi(a\vert s,g)}E\Big[\sum_{t^\prime=t}^\infty\gamma^{t^\prime-t}r_{t^\prime}\Big\vert s_t=s,a_t=a,g_t=g\Big]\\=\max_{\pi(a\vert s,g)}E\Big[r_t+\gamma\max_{a_{t+1}}Q_1^\star(s_{t+1},a_{t+1};g)\Big\vert s_t=s,a_t=a,g_t=g\Big]
Q 1 ⋆ ( s , a ; g ) = π ( a ∣ s , g ) max E [ t ′ = t ∑ ∞ γ t ′ − t r t ′ ∣ ∣ ∣ ∣ s t = s , a t = a , g t = g ] = π ( a ∣ s , g ) max E [ r t + γ a t + 1 max Q 1 ⋆ ( s t + 1 , a t + 1 ; g ) ∣ ∣ ∣ ∣ s t = s , a t = a , g t = g ]
Q 1 ⋆ Q_1^\star Q 1 ⋆ 是以目标 g g g 为条件的最优动作价值函数,表示在状态 s s s 下且当前目标为 g g g 时,执行动作 a a a 且遵循最优策略 π ( a ∣ s , g ) \pi(a\vert s,g) π ( a ∣ s , g ) 能获得的期望累积折扣内在奖励的最大值。其中的 π ( a ∣ s , g ) \pi(a\vert s,g) π ( a ∣ s , g ) 是控制器的动作策略,是基于状态 s s s 和目标 g g g 的动作条件概率分布。
定义 meta-controller 的最优目标价值函数 Q 2 ⋆ Q_2^\star Q 2 ⋆
Q 2 ⋆ ( s , g ) = max π ( g ∣ s ) E [ ∑ t ′ = t t + N f t ′ + γ max g ′ Q 2 ⋆ ( s t + N , g ′ ) ∣ s t = s , g t = g ] Q_2^\star(s,g)=\max_{\pi(g\vert s)}E\Big[\sum_{t^\prime=t}^{t+N}f_{t^\prime}+\gamma\max_{g^\prime}Q_2^\star(s_{t+N},g^\prime)\Big\vert s_t=s,g_t=g\Big]
Q 2 ⋆ ( s , g ) = π ( g ∣ s ) max E [ t ′ = t ∑ t + N f t ′ + γ g ′ max Q 2 ⋆ ( s t + N , g ′ ) ∣ ∣ ∣ ∣ s t = s , g t = g ]
Q 2 ⋆ Q_2^\star Q 2 ⋆ 表示在状态 s s s 下选择目标 g g g ,并遵循最优策略 π ( g ∣ s ) \pi(g\vert s) π ( g ∣ s ) ,获得的期望累积折扣外在奖励的最大值
在 HDQN 中还采用了经验回放池,为 controller 和 meta-controller 分别定义了回放池,两个回放池互相独立,避免训练的非平稳性
controller 回放池 D 1 D_1 D 1 ,存储单步转移样本 ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) ( s t , a t , r t , s t + 1 ) ,每个时间步都收集
meta-controller 回放池 D 2 D_2 D 2 ,存储周期转移样本 ( s t , a t , F t , s t + N ) (s_t,a_t,F_t,s_{t+N}) ( s t , a t , F t , s t + N ) ,仅当 controller 终止时收集
定义 controller 的损失函数 L 1 ( θ 1 , i ) L_1(\theta_{1,i}) L 1 ( θ 1 , i )
L 1 ( θ 1 , i ) = E ( s , a , g , r , s ′ ) ∼ D 1 [ ( y 1 , i − Q 1 ( s , a ; θ 1 , i , g ) ) 2 ] L_1(\theta_{1,i})=E_{(s,a,g,r,s^\prime)\sim D_1}\Big[\big(y_{1,i}-Q_1(s,a;\theta_{1,i},g))^2\Big]
L 1 ( θ 1 , i ) = E ( s , a , g , r , s ′ ) ∼ D 1 [ ( y 1 , i − Q 1 ( s , a ; θ 1 , i , g ) ) 2 ]
其中的 TD 目标为
y 1 , i = r + γ max a ′ Q 1 ( s ′ , a ′ ; θ 1 , i − 1 , g ) y_{1,i}=r+\gamma\max_{a^\prime}Q_1(s^\prime,a^\prime;\theta_{1,i-1},g)
y 1 , i = r + γ a ′ max Q 1 ( s ′ , a ′ ; θ 1 , i − 1 , g )
其中的 θ 1 , i \theta_{1,i} θ 1 , i 表示在第 i i i 轮迭代中,controller 网络的当前参数;其中的 y 1 , i y_{1,i} y 1 , i 表示在第 i i i 轮迭代中的 TD 目标,由即时内在奖励 r r r 和下一状态的最大 Q 值的折扣值组成,用固定的目标网络计算,避免自举导致的训练发散。之后计算其损失函数的梯度
∇ θ 1 , i L 1 ( θ 1 , i ) = E ( s , a , g , r , s ′ ) ∼ D 1 [ ( r + γ max a ′ Q 1 ( s ′ , a ′ ; θ 1 , i − 1 , g ) − Q 1 ( s , a ; θ 1 , i , g ) ) ∇ θ 1 , i Q 1 ( s , a ; θ 1 , i , g ) ] \nabla_{\theta_{1,i}}L_1(\theta_{1,i})=E_{(s,a,g,r,s^\prime)\sim D_1}\Big[\big(r+\gamma\max_{a^\prime}Q_1(s^\prime,a^\prime;\theta_{1,i-1},g)-Q_1(s,a;\theta_{1,i},g))\nabla_{\theta_{1,i}}Q_1(s,a;\theta_{1,i},g)\Big]
∇ θ 1 , i L 1 ( θ 1 , i ) = E ( s , a , g , r , s ′ ) ∼ D 1 [ ( r + γ a ′ max Q 1 ( s ′ , a ′ ; θ 1 , i − 1 , g ) − Q 1 ( s , a ; θ 1 , i , g ) ) ∇ θ 1 , i Q 1 ( s , a ; θ 1 , i , g ) ]
定义 meta-controller 的损失函数 L 2 ( θ 2 , i ) L_2(\theta_{2,i}) L 2 ( θ 2 , i )
L 2 ( θ 2 , i ) = E ( s , g , F , s ′ ) ∼ D 2 [ ( y 2 , i − Q 2 ( s , g ; θ 2 , i ) ) 2 ] L_2(\theta_{2,i})=E_{(s,g,F,s^\prime)\sim D_2}\Big[\big(y_{2,i}-Q_2(s,g;\theta_{2,i}))^2\Big]
L 2 ( θ 2 , i ) = E ( s , g , F , s ′ ) ∼ D 2 [ ( y 2 , i − Q 2 ( s , g ; θ 2 , i ) ) 2 ]
其中的 TD 目标为
y 2 , i = F + γ max g ′ Q 2 ( s ′ , g ′ ; θ 2 , i − 1 ) y_{2,i}=F+\gamma\max_{g^\prime}Q_2(s^\prime,g^\prime;\theta_{2,i-1})
y 2 , i = F + γ g ′ max Q 2 ( s ′ , g ′ ; θ 2 , i − 1 )
其中的 F F F 为当前目标执行周期内的累积外在奖励, s ′ = s t + N s^\prime=s_{t+N} s ′ = s t + N 为 controller 终止后的状态, θ 2 , i \theta_{2,i} θ 2 , i 表示在第 i i i 轮训练中 meta-controller 的参数。
HDQN 的训练流程如下
初始化经验回放池 D 1 , D 2 D_1,D_2 D 1 , D 2 ,初始化网络参数 θ 1 , θ 2 \theta_1,\theta_2 θ 1 , θ 2
对于每个循环中
利用 ϵ \epsilon ϵ 贪婪策略,基于 s , G , Q 2 s,G,Q_2 s , G , Q 2 选择初始目标 g g g
初始化累积外在奖励 F = 0 F=0 F = 0 ,保存初始状态 s 0 s_0 s 0
若当前状态非终止且目标未达成时,循环执行
用 ϵ \epsilon ϵ 贪婪策略,基于 { s , g } , A , Q 1 \{s,g\},A,Q_1 { s , g } , A , Q 1 选择动作 a a a
执行动作,获取下一状态 s ′ s^\prime s ′ 和外在奖励 f f f
内部 Critic 给出内在奖励 r ( s , a , s ′ ) r(s,a,s^\prime) r ( s , a , s ′ )
存储样本到 D 1 D_1 D 1 ,并且计算损失函数,利用梯度下降法更新 θ 1 \theta_1 θ 1
累积 F = F + f F=F+f F = F + f ,更新 s = s ′ s=s^\prime s = s ′
controller 循环结束之后,存储样本到 D 2 D_2 D 2 ,计算损失,梯度下降更新 θ 2 \theta_2 θ 2
循环执行到收敛
HAC
HAC 即 Hierarchical Actor-Critic,旨在通过高层-低层策略分解来高效解决长时间跨度、复杂的序列决策任务。采用两层 AC 架构,将任务拆分为不同时间尺度的子任务,从而降低学习难度并提升收敛速度
高层策略:在抽象状态空间中设定子目标,时间跨度较长
低层策略:在原始动作空间中执行高层设定的子目标,每步更新,利用内在奖励机制优化接近目标的能力
另外 HAC 中的每一层的训练都假设下层策略已经最优,从而减少层间的不稳定性
UMDP
HAC 的整个框架都建立在 UMDP 的基础上,UMDP 是带目标集合的马尔可夫决策过程,专门用于描述目标条件化的强化学习任务。定义一个 UMDP 的元组为 U = ( S , G , A , T , R , γ ) U=(S,G,A,T,R,\gamma) U = ( S , G , A , T , R , γ ) 。其中的 G G G 为目标集合;其中的 T T T 为转移概率函数, T ( s , a , s ′ ) T(s,a,s^\prime) T ( s , a , s ′ ) 表示在状态 s s s 执行动作 a a a 之后到达状态 s ′ s^\prime s ′ 的概率。
UMDP 在运行时,在每个 episode 开始时,会从目标集合 G G G 中采样一个目标 g ∈ G g\in G g ∈ G ,该目标在整个 episode 中保持不变。UMDP 的优化目标是学习一个目标条件化的策略 π : S × G → A \pi:S\times G\rightarrow A π : S × G → A ,该策略能最大化值函数
v π ( s , g ) = E π [ ∑ n = 0 ∞ γ n R t + n + 1 ∣ s t = s , g t = g ] v_\pi(s,g)=E_\pi\Big[\sum_{n=0}^\infty\gamma^nR_{t+n+1}\Big\vert s_t=s,g_t=g\Big]
v π ( s , g ) = E π [ n = 0 ∑ ∞ γ n R t + n + 1 ∣ ∣ ∣ ∣ s t = s , g t = g ]
其中 v π ( s , g ) v_\pi(s,g) v π ( s , g ) 表示在策略 π \pi π 下,初始状态为 s s s ,任务目标为 g g g 时,智能体能获得的期望累积折扣奖励
UVFA 通用值函数近似器
UVFA 用于估计目标条件化策略的动作价值函数 Q 函数,时 HAC 中 Critic 网络的核心基础。Q 函数的公式定义如下
q π ( s , g , a ) = E π [ ∑ n = 0 ∞ γ n R t + n + 1 ∣ s t = s , g t = g , a t = a ] q_\pi(s,g,a)=E_\pi\Big[\sum_{n=0}^\infty\gamma^nR_{t+n+1}\Big\vert s_t=s,g_t=g,a_t=a\Big]
q π ( s , g , a ) = E π [ n = 0 ∑ ∞ γ n R t + n + 1 ∣ ∣ ∣ ∣ s t = s , g t = g , a t = a ]
其中的 q π ( s , g , a ) q_\pi(s,g,a) q π ( s , g , a ) 是在策略 π \pi π 下,在状态 s s s 、目标 g g g 、执行动作 a a a 后,智能体能获得的期望累积折扣奖励。相比于 v π ( s , g ) v_\pi(s,g) v π ( s , g ) ,Q 函数增加了动作 a a a 的条件约束,是对具体动作价值的量化。
HAC
HAC 的目标是高效学习一个 k k k 层的策略层级 Π k − 1 \Pi_{k-1} Π k − 1 ,包含 k k k 个独立的目标条件化策略 π 0 , ⋯ , π k − 1 \pi_0,\cdots,\pi_{k-1} π 0 , ⋯ , π k − 1 ,将原始任务的 UMDP 转化为 k k k 个 UMDP 的集合 { u 0 , ⋯ , u k − 1 } \{u_0,\cdots,u_{k-1}\} { u 0 , ⋯ , u k − 1 } ,每个 UMDP 对应层级中的一层,第 i i i 层的 UMDP 定义为 U i = ( S i , G i , A i , T i , R i , γ i ) U_i=(S_i,G_i,A_i,T_i,R_i,\gamma_i) U i = ( S i , G i , A i , T i , R i , γ i )
在 HAC 中,层级的每一层都学习一个确定性的目标条件化策略 π i : S i × G i → A i \pi_i:S_i\times G_i\rightarrow A_i π i : S i × G i → A i ,其中的三个空间 S , G , A S,G,A S , G , A 是 HAC 架构的核心,如下
状态空间 S i S_i S i :所有层级的状态空间与原始任务的状态空间完全一致,即 S i = S S_i=S S i = S
目标空间 G i G_i G i :所有层级的目标空间也与原始状态空间完全一致,即 G i = S G_i=S G i = S ,由于每一层都需要学习以任意状态为目标的最短路径的问题,所有状态都可能成为子目标
动作空间 A i A_i A i
对于最底层 A 0 A_0 A 0 :动作空间与原始动作空间一致 A 0 = A A_0=A A 0 = A
对于底层以上的所有层 A i ( i > 0 ) A_i(i>0) A i ( i > 0 ) :动作空间等于下一层的目标空间,即 A i = S A_i=S A i = S ,这些层输出的是子目标状态
HAC 的层级通过策略嵌套实现时间抽象,嵌套的本质是将第 i − 1 i-1 i − 1 层的策略 π i − 1 \pi_{i-1} π i − 1 嵌入到第 i i i 层的转移函数 T i T_i T i 中,让高层的一个动作对应低层的 H H H 个原始动作,实现决策时间尺度的压缩。其中第 i i i 层转移函数的执行流程如下
第 i i i 层策略输出子目标动作 a i a_i a i ,该动作被赋值为 i − 1 i-1 i − 1 层的目标,即 g i − 1 = a i g_{i-1}=a_i g i − 1 = a i
第 i − 1 i-1 i − 1 层的策略 π i − 1 \pi_{i-1} π i − 1 最多有 H H H 次尝试来达到目标 g i − 1 g_{i-1} g i − 1
当用完了 H H H 次尝试次数或者达成了任意 n ≥ i − 1 n\geq i-1 n ≥ i − 1 层的目标 g n g_n g n 时执行终止
执行终止之后,返回智能体当前的状态,作为第 i i i 转移后的下一状态
对于最底层的转移函数由环境本身提供 T 0 = T T_0=T T 0 = T
在 HAC 中,层级转移函数会出现非平稳性,主要来源于两个方面
下层策略的更新:只要第 i i i 层的策略 π i \pi_i π i 发生更新,所有在 i i i 以上的层转移函数 T j ∣ π j − 1 ⋆ ( j > i ) T_{j\vert\pi_{j-1}^\star}(j>i) T j ∣ π j − 1 ⋆ ( j > i ) 都会发生变化
下层策略的探索:所有层的策略都是确定性的,必须通过行为策略 π i b = π i + N ( 0 , σ 2 ) ) \pi_{i_b}=\pi_i+\mathcal{N}(0,\sigma^2)) π i b = π i + N ( 0 , σ 2 ) ) 进行探索,而行为策略是随时间变化的,进一步加剧了转移函数的非平稳
RL 算法有效收敛的前提是动作导致的状态分布是平稳的,而非平稳性会导致高层策略无法学习到稳定的动作价值,因此无法直接并行学习多层策略。所以在 HAC 算法中,如果在训练每一层的策略时都假设下层策略已经是最优的策略 π i ⋆ \pi_i^\star π i ⋆ ,那么对应的转移函数 T i ∣ π i − 1 ⋆ T_{i\vert\pi_{i-1}^\star} T i ∣ π i − 1 ⋆ 就是完全平稳的,从而可以和下层策略并行学习
为了实现上述并行学习,提出了后见之明动作转移 。在训练时,假设高层策略 π i \pi_i π i 在状态 s i − 1 s_{i-1} s i − 1 输出子目标 g i − 1 g_{i-1} g i − 1 ,低层 π i − 1 \pi_{i-1} π i − 1 用行为策略执行了 H H H 个原始动作,未达到 g i − 1 g_{i-1} g i − 1 ,最终停在状态 s i s_i s i 。传统的转移样本为 ( s = s i − 1 , a = g i − 1 , r = r , s ′ = s i , g = g f i n a l ) (s=s_{i-1},a=g_{i-1},r=r,s^\prime=s_i,g=g_{final}) ( s = s i − 1 , a = g i − 1 , r = r , s ′ = s i , g = g f i n a l ) ,动作为原本的子目标 g i − 1 g_{i-1} g i − 1 ,但是实际上到达的是 s i s_i s i ,动作和下一状态不匹配,所以低层的策略不是最优的。
后见之明动作转移通过两个核心规则来模拟最优下层策略的转移效果
动作替换:用事实实际到达的动作 s i s_i s i 替代原本输出的子目标 g i − 1 g_{i-1} g i − 1 作为转移样本中的动作项
奖励函数设计:子目标层的奖励函数必须满足两个要求
激励最短路径到目标
与低层的执行路径无关,只和最终到达的状态与目标有关
在 HAC 算法中,设置所有子目标层的奖励函数如下
R i ( s ′ , g ) = { 0 s ′ ∈ g − 1 R_i(s^\prime,g)=\left\{\begin{aligned}&0&&s^\prime\in g\\&-1\end{aligned}\right.
R i ( s ′ , g ) = { 0 − 1 s ′ ∈ g
匹配的折扣因子如下
γ i ( s ′ , g ) = { 0 s ′ ∈ g γ \gamma_i(s^\prime,g)=\left\{\begin{aligned}&0&&s^\prime\in g\\&\gamma\end{aligned}\right.
γ i ( s ′ , g ) = { 0 γ s ′ ∈ g
经过后见之明动作转移之后,高层最终得到的动作转移样本为 ( s = s 0 , a = s 1 , r = − 1 , s ′ = s 1 , g = g f i n a l ) (s=s_0,a=s_1,r=-1,s^\prime=s_1,g=g_{final}) ( s = s 0 , a = s 1 , r = − 1 , s ′ = s 1 , g = g f i n a l ) ,样本中,高层原本就输出子目标 s 1 s_1 s 1 ,并且用最优下层策略一步达成了 s 1 s_1 s 1 ,得到的转移样本完全一致。所以此时得到了对应最优下层策略的平稳转移样本,彻底解决了非平稳性问题
但是在后见之明动作转移之后,每一层依旧面临稀疏奖励的困境:只有随机达成了目标才能获得 0 的奖励,其他的时候都是 -1,策略很难学习到有效的动作价值。因此提出后见之明目标转移 ,它的核心是为每一层的转移样本做 HER 数据增强,用 episode 中实际到达的状态替换原始目标,保证每一轮执行后,至少有一个样本包含稀疏奖励,实现流程如下
对于低层 i = 0 i=0 i = 0 的处理
每执行一个原始动作 a 0 a_0 a 0 ,获得环境返回的下一状态 s 0 ′ s_0^\prime s 0 ′ ,并且同步生成两个转移样本
原始样本按照低层奖励和折扣因子公式计算对应的奖励和折扣因子,即 ( s = s 0 , a = a 0 , r = r 0 , s ′ = s 0 ′ , g = g 0 , γ = γ 0 ) (s=s_0,a=a_0,r=r_0,s^\prime=s_0^\prime,g=g_0,\gamma=\gamma_0) ( s = s 0 , a = a 0 , r = r 0 , s ′ = s 0 ′ , g = g 0 , γ = γ 0 ) ,加入低层回放缓冲区
带填充的 HER 样本复制标准样本的 s , a , s ′ s,a,s^\prime s , a , s ′ ,其他的留空 TBD,即 ( s = s 0 , a = a 0 , r = T B D , s ′ = s 0 ′ , g = T B D , γ = T B D ) (s=s_0,a=a_0,r=TBD,s^\prime=s_0^\prime,g=TBD,\gamma=TBD) ( s = s 0 , a = a 0 , r = T B D , s ′ = s 0 ′ , g = T B D , γ = T B D ) ,加入低层 HER 存储区
执行完最多 H H H 个动作之后,对所有的 HER 样本进行填充
采用随机采样策略,从所有到达的状态中随机选择一个,作为新的目标 g h i n d s i g h t g_{hindsight} g h i n d s i g h t ,也可以直接选择本次执行最终到达的状态 s f i n a l ′ s^\prime_{final} s f i n a l ′ 作为新目标 g h i n d s i g h t g_{hindsight} g h i n d s i g h t
对 HER 存储区的每一个候选样本,填充 g = g h i n d s i g h t g=g_{hindsight} g = g h i n d s i g h t ,根据上述后见之明动作转移的公式,重新计算奖励和折扣因子并填充
所有填充完成的后见之明目标样本,全部加入底层的回放缓冲区,和标准样本一起用于训练底层的策略和 Q 网络
对于高层 i > 0 i>0 i > 0 的处理
高层输出原始子目标 a i a_i a i ,下层执行完最多 H H H 步后返回最终状态 s i ′ s_i^\prime s i ′ ,首先执行后见之明动作替换,即 a i ← s i ′ a_i\leftarrow s_{i}^\prime a i ← s i ′ ,然后生成两个样本
标准样本按照高层的公式计算奖励和折扣因子 ( s = s i , a = a i , r = r i , s ′ = s i ′ , g = g i , γ = γ i ) (s=s_i,a=a_i,r=r_i,s^\prime=s_i^\prime,g=g_i,\gamma=\gamma_i) ( s = s i , a = a i , r = r i , s ′ = s i ′ , g = g i , γ = γ i ) ,加入高层回放缓冲区
HER 候选样本 ( s = s i , a = a i , r = T B D , s ′ = s i ′ , g = T B D , γ = T B D ) (s=s_i,a=a_i,r=TBD,s^\prime=s_i^\prime,g=TBD,\gamma=TBD) ( s = s i , a = a i , r = T B D , s ′ = s i ′ , g = T B D , γ = T B D ) ,加入高层 HER 存储区
填充规则与低层一致,替换 HER 样本的目标字段,重新计算 HER 候选样本的奖励和折扣因子
所有填充完成的后见之明目标样本,全部加入高层的回放缓冲区,和标准样本一起用于训练高层的策略和 Q 网络
仅用上述的两种后见之明转移会带来两个核心缺陷
仅用后见之明动作和目标转移,会导致每一层只能学习到从当前状态出发, H H H 步内可达的子目标的 Q 值,完全忽略了 H H H 步内不可达的远距离子目标。但子目标层的动作空间是完整的状态空间,Q 网络会给这些远距离子目标分配不合理的高 Q 值,导致策略输出无法达成的子目标,智能体行为完全异常
后见之明转移让子目标完全忽略下层策略的当前能力,只学习理论最优路径,可能会输出当前下层无法达成的子目标,导致策略实际表现次优
所以 HAC 提出子目标测试转移 ,为了解决仅用前两种后见之明转移带来的两个核心缺陷。它与后见之明动作转移的作用完全相反:让高层学习当前下层策略能否达成这个子目标,从而乘法无法达成的远距离子目标,同时让高层偏好当前下层能实现的子目标。实现流程如下
第 i i i 层输出子目标 a i a_i a i 之后,以 λ \lambda λ 的概率触发子目标测试
触发测试时,下层必须严格使用当前的目标策略 π i − 1 \pi_{i-1} π i − 1 执行,尝试达成子目标 a i a_i a i ,最多进行 H H H 次尝试
如果最终未能达成子目标 a i a_i a i ,则给第 i i i 层施加惩罚,设置为 − H -H − H ,同时设置折扣因子为 0
则得到对应的惩罚转移样本为 ( s = s i , a = a i , r = − H , s ′ = s i ′ , g = g i , γ = 0 ) (s=s_i,a=a_i,r=-H,s^\prime=s_i^\prime,g=g^i,\gamma=0) ( s = s i , a = a i , r = − H , s ′ = s i ′ , g = g i , γ = 0 ) ,如果达成了子目标,则不施加惩罚,按正常的后见之明转移处理。在 HAC 中使用 ∣ s − a ∣ \vert s-a\vert ∣ s − a ∣ 来表示在最优下层策略 π i − 1 ⋆ \pi_{i-1}^\star π i − 1 ⋆ 下,从状态 s s s 到子目标 a a a 所需要的动作步数,分为下面三种情况分析子目标测试对 Q 值的影响
∣ s − a ∣ > H \vert s-a\vert>H ∣ s − a ∣ > H ,即在最优策略下也无法在 H H H 步内达成子目标,则 Q 网络学习这类子目标的 Q 值为 − H -H − H
∣ s − a ∣ ≤ H \vert s-a\vert\leq H ∣ s − a ∣ ≤ H 且当前下层策略 π i − 1 \pi_{i-1} π i − 1 可以达成,此时子目标测试对 Q 值几乎无影响,Q 值由后见之明转移的目标值主导
∣ s − a ∣ > H \vert s-a\vert>H ∣ s − a ∣ > H 但当前下层策略 π i − 1 \pi_{i-1} π i − 1 无法达成,Q 值是后见之明转移的目标值和惩罚值 − H −H − H 的加权平均,但由于后见之明样本的数量远多于测试样本,Q 值会更接近后见之明的目标值
定义在 HAC 中每个层级的训练流程为核心递归函数 T r a i n L e v e l ( i , s , g ) \mathrm{TrainLevel}(i,s,g) T r a i n L e v e l ( i , s , g ) ,输入层级、当前状态和目标,输出执行之后的最终状态,如下
初始化当前层级状态 s i = s s_i=s s i = s 和目标 g i = g g_i=g g i = g
循环执行,最多 H H H 次尝试,或达成任意 n ≥ i n\geq i n ≥ i 层目标
采样动作
在非测试时, a i = π i ( s i , g i ) + N ( 0 , σ 2 ) a_i=\pi_i(s_i,g_i)+\mathcal{N}(0,\sigma^2) a i = π i ( s i , g i ) + N ( 0 , σ 2 )
在测试时, a i = π i ( s i , g i ) a_i=\pi_i(s_i,g_i) a i = π i ( s i , g i )
分支判断
若 i > 0 i>0 i > 0 时,以概率 λ \lambda λ 决定是否测试子目标,递归调用 T r a i n L e v e l ( i − 1 , s i , a i ) \mathrm{TrainLevel}(i-1,s_i,a_i) T r a i n L e v e l ( i − 1 , s i , a i ) ,得到执行之后的状态
若 i = 0 i=0 i = 0 时,执行原始动作 a 0 a_0 a 0 ,观察环境返回的下一状态 s 0 ′ s^\prime_0 s 0 ′
生成回放转移样本
若 i > 0 i>0 i > 0 子目标未达成,且触发了测试时,向回放缓冲区中加入惩罚样本 ( s = s i , a = a i , r = − H , s ′ = s i ′ , g = g i , γ = 0 ) (s=s_i,a=a_i,r=-H,s^\prime=s_i^\prime,g=g^i,\gamma=0) ( s = s i , a = a i , r = − H , s ′ = s i ′ , g = g i , γ = 0 )
利用后见之明替换动作 a i ← s i ′ a_i\leftarrow s_i^\prime a i ← s i ′
向回放缓冲区加入后见之明动作转移样本 ( s = s i , a = a i , r = { − 1 , 0 } , s ′ = s i ′ , g = g i , γ = { γ , 0 } ) (s=s_i,a=a_i,r=\{-1,0\},s^\prime=s_i^\prime,g=g^i,\gamma=\{\gamma,0\}) ( s = s i , a = a i , r = { − 1 , 0 } , s ′ = s i ′ , g = g i , γ = { γ , 0 } )
向 HER 存储区加入待填充的 HER 样本 ( s = s i , a = a i , r = T B D , s ′ = s i ′ , g = T B D , γ = T B D ) (s=s_i,a=a_i,r=TBD,s^\prime=s_i^\prime,g=TBD,\gamma=TBD) ( s = s i , a = a i , r = T B D , s ′ = s i ′ , g = T B D , γ = T B D )
更新当前状态 s i = s i ′ s_i=s_i^\prime s i = s i ′
循环结束之后,用 HER 存储区的样本执行 HER,生成后见之明目标转移样本,加入回放缓冲区中
返回最终状态 s i s_i s i
综合上述的内容,得到 HAC 算法的流程
设定层级数量 k k k ,设定子目标最大步数 H H H ,设定子目标测试频率 λ \lambda λ
执行 M 次迭代训练
采样初始状态 s = S i n i t s=S_{init} s = S i n i t ,采样任务目标 g = G k − 1 g=G_{k-1} g = G k − 1
递归调用 T r a i n L e v e l ( k − 1 , s , g ) \mathrm{TrainLevel}(k-1,s,g) T r a i n L e v e l ( k − 1 , s , g )
用回放缓冲区的样本更新所有 Critic 和 Actor 网络
结束循环
HRL-LS
HRL-LS 即隐空间分层强化学习(Hierarchical Reinforcement Learning with Latent Space),旨在通过在隐空间中进行策略优化来处理高维复杂任务中的长期依赖问题。HRL-LS 将复杂任务分解为多个较小的子任务,从而提高学习效率,同时通过隐空间进一步减少学习的难度。HRL-LS 的分层结构包含以下两层
高层策略:在低维隐空间中,选择目标并生成子目标,子目标被传递给低层策略
隐空间表示:高层策略通过编码器将原始的高维状态 s s s 投影到低维隐空间 z z z 中
目标选择:在隐空间中,高层策略选择一个隐向量 z t z_t z t 作为当前时间步的子目标
低层策略:在原始的状态空间中执行具体的动作,根据高层策略生成的目标优化动作序列
低层策略根据高层策略生成的因向量 z t z_t z t ,在原始状态空间中选择具体的动作 a t a_t a t
低层策略通过动作序列来逐步实现高层策略设定的子目标
标准 RL 强化学习的核心是最大化轨迹的期望累积奖励,仅关注奖励最大化。HRL-LS 在此基础上加入了策略的期望熵项,得到最大熵优化目标
J ( π ) = E τ ∼ ρ π ( τ ) [ ∑ t r ( s t , a t ) + α H ( π ( ⋅ ∣ s t ) ) ] J(\pi)=E_{\tau\sim\rho_\pi(\tau)}\Big[\sum_tr(s_t,a_t)+\alpha\mathcal{H}(\pi(\cdot\vert s_t))\Big]
J ( π ) = E τ ∼ ρ π ( τ ) [ t ∑ r ( s t , a t ) + α H ( π ( ⋅ ∣ s t ) ) ]
其中的 H ( π ( ⋅ ∣ s t ) ) \mathcal{H}(\pi(\cdot\vert s_t)) H ( π ( ⋅ ∣ s t ) ) 是策略在状态 s t s_t s t 下的熵,连续分布的熵定义为
H ( π ( ⋅ ∣ s t ) ) = − ∫ A π ( a ∣ s t ) log π ( a ∣ s t ) d a \mathcal{H}(\pi(\cdot\vert s_t))=-\int_A\pi(a\vert s_t)\log\pi(a\vert s_t)da
H ( π ( ⋅ ∣ s t ) ) = − ∫ A π ( a ∣ s t ) log π ( a ∣ s t ) d a
熵越大,则策略的随机性越强,行为覆盖范围越广。
HRL-LS 中通过将最优控制问题转化为推理问题来推导出最大熵目标,引入最优性二元随机变量 O t O_t O t ,将求解最优策略转化为在所有时刻都最优的条件下,推理动作的后验分布。定义状态转移因子 p ( s t + 1 ∣ s t , a t ) p(s_{t+1}\vert s_t,a_t) p ( s t + 1 ∣ s t , a t ) ;定义动作先验 p ( a t ) p(a_t) p ( a t ) 通常设计为均匀分布或高斯分布;最优性变量 O t O_t O t 为二元随机变量, O t = t r u e O_t=true O t = t r u e 表示在 t t t 时刻的步是最优的
目标是求解在当前状态 s t s_t s t ,且当前到外来所有时刻都最优 O t : T = t r u e O_{t:T}=true O t : T = t r u e 的条件下,动作的后验分布即最优策略
π ⋆ ( a t ∣ s t ) = p ( a t ∣ s t , O t : T = t r u e ) \pi^\star(a_t\vert s_t)=p(a_t\vert s_t,O_{t:T}=true)
π ⋆ ( a t ∣ s t ) = p ( a t ∣ s t , O t : T = t r u e )
为了将奖励函数融入图模型中,将奖励编码到最优性变量的条件概率中
p ( O t ∣ s t , a t ) = exp ( r ( s t , a t ) ) p(O_t\vert s_t,a_t)=\exp(r(s_t,a_t))
p ( O t ∣ s t , a t ) = exp ( r ( s t , a t ) )
这里假设 r ( s t , a t ) < 0 r(s_t,a_t)<0 r ( s t , a t ) < 0 ,保证概率值落在 [ 0 , 1 ] [0,1] [ 0 , 1 ] 的合法区间内。基于上述定义,所有时刻都最优的条件下,轨迹的后验分布如下
p ( τ ∣ O 0 : T = t r u e ) ∝ p ( s 0 ) ∏ t = 0 T p ( a t ) p ( s t + 1 ∣ s t , a t ) exp ( r ( s t , a t ) ) p(\tau\vert O_{0:T}=true)\propto p(s_0)\prod_{t=0}^Tp(a_t)p(s_{t+1}\vert s_t,a_t)\exp(r(s_t,a_t))
p ( τ ∣ O 0 : T = t r u e ) ∝ p ( s 0 ) t = 0 ∏ T p ( a t ) p ( s t + 1 ∣ s t , a t ) exp ( r ( s t , a t ) )
最优轨迹的概率,与初始状态分布、动作先验、环境动态、累积奖励的指数项成正比,基于这个分布,可以执行概率推理,求解最优动作的后验 p ( a t ∣ s t , O t : T = t r u e ) p(a_t\vert s_t,O_{t:T}=true) p ( a t ∣ s t , O t : T = t r u e )
但是该分布假设环境的随机状态转移可以被修改来偏好最优行为,但实际中智能体无法控制环境动态,另外在连续域中,该后验分布没有解析解,必须用参数化的近似分布来拟合,所以上述推导出的最优动作分布无法直接作为策略。所以在 HRL-LS 中才哟昂结构化变分推理,用变分分布 q ( τ ) q(\tau) q ( τ ) 近似真实后验 p ( τ ∣ O 0 : T = t r u e ) p(\tau\vert O_{0:T}=true) p ( τ ∣ O 0 : T = t r u e ) ,另外对变分分布做两个关键约束,保证其复合 RL 的设定
动态约束:变分分布中的状态转移与真实环境动态完全一致
策略约束:动作由参数化策略 π ( a t ∣ s t ) \pi(a_t\vert s_t) π ( a t ∣ s t ) 生成
最终变分分布定义为
q ( τ ) = p ( s 0 ) ∏ t = 0 T π ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) q(\tau)=p(s_0)\prod_{t=0}^T\pi(a_t\vert s_t)p(s_{t+1}\vert s_t,a_t)
q ( τ ) = p ( s 0 ) t = 0 ∏ T π ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t )
其中的 p ( s 0 ) p(s_0) p ( s 0 ) 是真实的初始状态分布, p ( s t + 1 ∣ s t , a t ) p(s_{t+1}\vert s_t,a_t) p ( s t + 1 ∣ s t , a t ) 是动态转移函数,其中的 π ( a t ∣ s t ) \pi(a_t\vert s_t) π ( a t ∣ s t ) 是希望学习的参数化策略。该分布完全由初始状态、待学习的策略、真实环境动态决定,没有对环境做任何修改。变分推理的核心就是最大化对数边际似然的证据下界,即
log p ( O 0 : T ) ≥ − D K L ( q ( τ ) ∥ p ( O 0 : T , τ ) ) \log p(O_{0:T})\geq-D_{KL}\big(q(\tau)\Vert p(O_{0:T},\tau)\big)
log p ( O 0 : T ) ≥ − D K L ( q ( τ ) ∥ p ( O 0 : T , τ ) )
此时公式右侧是对数边际似然的下界,最大化改下界就等于最小化 q q q 和 p p p 的 KL 散度,让变分分布尽可能拟合真实的最优后验。由于 p p p 和 q q q 中的初始状态分布和环境动态完全匹配,则 KL 散度可以化简得到最终的优化目标
J ( π ) = E τ ∼ ρ π ( τ ) [ ∑ t = 0 T r ( s t , a t ) − D K L ( π ( ⋅ ∣ s t ) ∥ p ( ⋅ ) ) ] J(\pi)=E_{\tau\sim\rho_\pi(\tau)}\Big[\sum_{t=0}^Tr(s_t,a_t)-D_{KL}\big(\pi(\cdot\vert s_t)\Vert p(\cdot)\big)\Big]
J ( π ) = E τ ∼ ρ π ( τ ) [ t = 0 ∑ T r ( s t , a t ) − D K L ( π ( ⋅ ∣ s t ) ∥ p ( ⋅ ) ) ]
该公式就是通过变分推理得到的在ELBO,也就是需要最大化的目标。当动作先验 p ( ⋅ ) p(\cdot) p ( ⋅ ) 选择均匀分布时, − D K L ( π ∥ p ) = H ( π ) + C -D_{KL}(\pi\Vert p)=\mathcal{H}(\pi)+C − D K L ( π ∥ p ) = H ( π ) + C
分层结构的基础是带潜变量的随机基策略,由两个核心因子组成
条件动作分布 π ( a t ∣ s t , h t ) \pi(a_t\vert s_t,h_t) π ( a t ∣ s t , h t ) ,其中的 h t h_t h t 是潜随机变量,是高层策略的输出动作
潜变量先验 p ( h t ) p(h_t) p ( h t )
从该策略采样动作的流程为:先从潜变量先验 p ( h t ) p(h_t) p ( h t ) 中采样潜变量 h t h_t h t ,再基于 h t h_t h t 和当前状态 s t s_t s t ,从 π ( a t ∣ s t , h t ) \pi(a_t\vert s_t,h_t) π ( a t ∣ s t , h t ) 中采样最终的物理动作 a t a_t a t
将基策略整合到 MDP 中,得到一个新的 MDP。对原始动作 a t a_t a t 进行边缘化,得到新的 MDP 的状态转移模型如下
p ( s t + 1 ∣ s t , h t ) = ∫ A p ( s t + 1 ∣ s t , a t ) π ( a t ∣ s t , h t ) d a t p(s_{t+1}\vert s_t,h_t)=\int_Ap(s_{t+1}\vert s_t,a_t)\pi(a_t\vert s_t,h_t)da_t
p ( s t + 1 ∣ s t , h t ) = ∫ A p ( s t + 1 ∣ s t , a t ) π ( a t ∣ s t , h t ) d a t
再新的 MDP 中, h t h_t h t 成了高层动作, p ( h t ) p(h_t) p ( h t ) 是新的动作先验。基策略塑造了系统的底层动态,理想情况下让高层策略的控制问题变得简单,可以重复这个过程,逐层堆叠策略,构建任意深度的分层结构,其中每一层都将下一层的潜变量作为自己的动作空间。为了保证分层结构的有效性,子策略需要同时满足三个特性
能高效计算动作的对数似然,对潜变量的边缘化计算简单
不限制高层到低层的信息流,能表示任意复杂的策略分布
高层将低层视作环境的一部分,映射的确定性可以避免额外噪声影响高层的学习
HRL-LS 基于双射变换实现潜变量到动作的映射,同时满足上述的特性。定义双射变换 a t = f ( h t ; s t ) a_t=f(h_t;s_t) a t = f ( h t ; s t ) ,该变换是可逆的,一一映射的,给定 h t h_t h t 和 s t s_t s t 能唯一确定动作 a t a_t a t ,反之,给定 a t a_t a t 和 s t s_t s t 也能反推出唯一的 h t h_t h t 。通过变量替换公式,可以用潜变量的先验密度和变换的雅可比行列式,直接计算动作的边缘策略密度
π ( a t ∣ s t ) = p ( h t ) ∣ det ( d f ( h t ; s t ) d h t ) ∣ − 1 \pi(a_t\vert s_t)=p(h_t)\Big\vert\det\Big(\frac{df(h_t;s_t)}{dh_t}\Big)\Big\vert^{-1}
π ( a t ∣ s t ) = p ( h t ) ∣ ∣ ∣ ∣ det ( d h t d f ( h t ; s t ) ) ∣ ∣ ∣ ∣ − 1
π ( a t ∣ s t ) \pi(a_t\vert s_t) π ( a t ∣ s t ) 是策略在状态 s t s_t s t 下对动作 a t a_t a t 的条件密度; p ( h t ) p(h_t) p ( h t ) 是潜变量 h t h_t h t 的先验密度; d f ( h t ; s t ) d h t \frac{df(h_t;s_t)}{dh_t} d h t d f ( h t ; s t ) 是双射变换 f f f 对潜变量 h t h_t h t 的雅可比矩阵; ∣ det ( ) ∣ \vert\det()\vert ∣ det ( ) ∣ 是雅可比矩阵的行列式的绝对值;由于变换是双射的,所以可通过 a t a_t a t 反推 h t h_t h t ,实现高密度计算。
在 HRL-LS 中使用了 Real NVP 变换作为双射变换,核心优势是它的雅可比矩阵为三角矩阵,行列式的计算简化为对角元素的乘积,能大幅降低计算复杂度。同时 HRL-LS 中做了关键的扩展:仅要求潜变量 h t h_t h t 到动作 a t a_t a t 的路径是可逆的,变换对状态 s t s_t s t 的依赖可以是任意复杂的非可逆的方式。在 HRL-LS 中通过两层全连接网络对观测做嵌入,再与潜变量输入拼接,既保证了可逆性,又不损失策略对状态的表达能力。另外双射变换支持链式组合,多层变换的复合仍然是双射的,所以多层策略既可以端到端训练为单个高表达性策略,也可以自底向上逐层训练为分层策略,无需重新设计网络拓扑
HRL-LS 针对不同的任务场景,为策略层级的奖励函数提出了两种设计的方法
同奖励逐层训练:依次训练每一层,冻结权重之后再训练上一层,所有层使用完全相同的任务奖励和最大熵目标。在每一层中都尝试解决任务,为上一层简化问题
分层塑形奖励设计:给低层设计启发式的塑形奖励,学习通用的基础技能;而高层使用原始任务的真实稀疏奖励,学习长程决策。
算法的训练流程如下
真实环境动态 p ( s t + 1 ∣ s t , h t ( 0 ) ) p(s_{t+1}\vert s_t,h_t^{(0)}) p ( s t + 1 ∣ s t , h t ( 0 ) ) ,其中最底层的 h t ( 0 ) = a t h_t^{(0)}=a_t h t ( 0 ) = a t ,对应原始动作
奖励函数集合 { R 0 , ⋯ , R K − 1 } \{R_0,\cdots,R_{K-1}\} { R 0 , ⋯ , R K − 1 } ,共 K K K 个奖励函数,对应着 K K K 层策略,最后一个 R K − 1 R_{K-1} R K − 1 是真实任务的奖励
逐层训练循环
初始化第 i i i 层双射变换 f i f_i f i 的网络权重
学习 f i f_i f i 的权重,使得 h t ( i ) = f i ( h t ( i + 1 ) ; s t ) h_t^{(i)}=f_i(h_t^{(i+1)};s_t) h t ( i ) = f i ( h t ( i + 1 ) ; s t ) ,其中的 h t ( i + 1 ) ∼ p ( h t ( i + 1 ) h_t^{(i+1)}\sim p(h_t^{(i+1)} h t ( i + 1 ) ∼ p ( h t ( i + 1 ) ,在环境 p ( s t + 1 ∣ s t , h t ( i ) ) p(s_{t+1}\vert s_t,h_t^{(i)}) p ( s t + 1 ∣ s t , h t ( i ) ) 上优化奖励 R i R_i R i
将学习好的 f i f_i f i 嵌入到环境中,得到新的环境,供上一层训练使用 p ( s t + 1 ∣ s t , h t ( i + 1 ) ) ← p ( s t + 1 ∣ s t , f i ( h t ( i + 1 ) ; s t ) ) p(s_{t+1}\vert s_t,h_t^{(i+1)})\leftarrow p(s_{t+1}\vert s_t,f_i(h_t^{(i+1)};s_t)) p ( s t + 1 ∣ s t , h t ( i + 1 ) ) ← p ( s t + 1 ∣ s t , f i ( h t ( i + 1 ) ; s t ) )
最后得到所有层双射变换的复合函数 f = f 0 f 1 ⋯ f K − 1 f=f_0f_1\cdots f_{K-1} f = f 0 f 1 ⋯ f K − 1 ,即所有层双射变换的复合函数,实现从最高层潜变量到最终物理动作的端到端映射
HIRO
HIRO 即 Hierarchical Reinforcement Learning with Off-Policy Correction,旨在解决长时间跨度和稀疏奖励问题,核心解决了传统 HRL 方法通用性差、样本效率极低的痛点
HIRO 中实现了极简的两层策略架构,通过高层实现时间抽象,低层实现环境交互,如下
低层策略 μ l \mu^{l} μ l :直接与环境交互,接收当前状态和高层给出的目标,输出底层原子动作,是策略的执行端
高层策略 μ h \mu^h μ h :在更大的时间尺度上做决策,不直接与环境交互,输出目标状态作为高层动作,直到低层策略的行为,是策略的规划端
在高层策略中,并非每一步都要做出决策,而是每 C C C 个时间步输出一次目标,实现时间维度的抽象
当 t m o d C = 0 t\mod C=0 t m o d C = 0 时,高层根据当前状态采样输出目标 g t = μ h ( s t ) g_t=\mu^h(s_t) g t = μ h ( s t ) ,其中 g t g_t g t 的维度与状态维度完全一致
中间的时间步,通过固定的目标转移函数 h h h 更新当前目标,即 g t = h ( s t − 1 , g t − 1 , s t ) g_t=h(s_{t-1},g_{t-1},s_t) g t = h ( s t − 1 , g t − 1 , s t ) ,无需高层重新决策
高层输出的目标 g t g_t g t 是期望的状态相对变化量,即高层希望低层在 C C C 个时间步之后,让环境状态满足 s t + c ≈ s t + g t s_{t+c}\approx s_t+g_t s t + c ≈ s t + g t 。另外为了保证目标的绝对位置不随环境的实时状态变化而偏移,定义了固定的目标转移函数
h ( s t , g t , s t + 1 ) = s t + g t − s t + 1 h(s_t,g_t,s_{t+1})=s_t+g_t-s_{t+1}
h ( s t , g t , s t + 1 ) = s t + g t − s t + 1
低层的优化目标是匹配高层给出的目标状态,因此内部奖励定义为当前状态与目标状态的负 L2 距离
r ( s t , g t , a t , s t + 1 ) = − ∥ s t + g t − s t + 1 ∥ 2 r(s_t,g_t,a_t,s_{t+1})=-\Vert s_t+g_t-s_{t+1}\Vert_2
r ( s t , g t , a t , s t + 1 ) = − ∥ s t + g t − s t + 1 ∥ 2
低层每一步的状态越接近 s t + g t s_t+g_t s t + g t ,则奖励越高,反之奖励越低。只需要将目标 g t g_t g t 作为额外输入,接入 TD3 或 DDPG 的策略网络和 Q 网络,即可按照离线 RL 的方式训练。
低层 Q 网络的优化目标:最小化 Bellman 误差 L = ( Q θ l ( s t , g t , a t ) − r ( s t , g t , a t , s t + 1 ) − γ Q θ l ( s t + 1 , g t + 1 , μ ϕ l ( s t + 1 , g t + 1 ) ) ) 2 L=\Big(Q_\theta^l(s_t,g_t,a_t)-r(s_t,g_t,a_t,s_{t+1})-\gamma Q_\theta^l\big(s_{t+1},g_{t+1},\mu_\phi^l(s_{t+1},g_{t+1})\big)\Big)^2 L = ( Q θ l ( s t , g t , a t ) − r ( s t , g t , a t , s t + 1 ) − γ Q θ l ( s t + 1 , g t + 1 , μ ϕ l ( s t + 1 , g t + 1 ) ) ) 2
低层策略网络的优化目标:最大化 Q 值 max ϕ Q θ l ( s t , g t , μ ϕ l ( s t , g t ) ) \underset{\phi}{\max}Q_\theta^l\big(s_t,g_t,\mu_\phi^l(s_t,g_t)\big) ϕ max Q θ l ( s t , g t , μ ϕ l ( s t , g t ) )
HIRO 直接使用原始状态作为目标,让低层从训练第一步就能得到有效的奖励信号,大幅提升训练效率和最终性能
此前的 HRL 方法几乎都采用 on-policy 训练,主要是因为低层策略在持续更新,对于高层策略来说,同一个目标 g t g_t g t ,在过去的低层策略下产生的状态转移,和当前低层策略下的结果完全不同,这就导致高层回放池中的旧经验失效。所以需要将高层的 C C C 步长序列经验,转换为标准 off-policy RL 可用的元组 ( s t , g t , ∑ R t : t + c − 1 , s t + c ) (s_t,g_t,\sum R_{t:t+c-1},s_{t+c}) ( s t , g t , ∑ R t : t + c − 1 , s t + c ) ,但旧的目标 g t g_t g t 显然与当前低层的策略不匹配,所以对旧经验中的原始目标 g t g_t g t 进行重标记,找到一个新的目标 g ~ t \tilde{g}_t g ~ t ,让过去 C C C 步内低层实际执行的动作序列 a t : t + c − 1 a_{t:t+c-1} a t : t + c − 1 在当前低层策略下出现的概率最大。
大多数强化学习算法中,行为策略是随机的,动作序列的对数概率可以写作
log μ l ( a t : t + c − 1 ∣ s t : t + c − 1 , g ~ t : t + c − 1 ) ∝ − 1 2 ∑ i = t t + c − 1 ∥ a i − μ l ( s i , g ~ i ) ∥ 2 2 + c o n s t \log\mu^l(a_{t:t+c-1}\vert s_{t:t+c-1},\tilde{g}_{t:t+c-1})\propto-\frac{1}{2}\sum_{i=t}^{t+c-1}\big\Vert a_i-\mu^l(s_i,\tilde{g}_i)\big\Vert_2^2+const
log μ l ( a t : t + c − 1 ∣ s t : t + c − 1 , g ~ t : t + c − 1 ) ∝ − 2 1 i = t ∑ t + c − 1 ∥ ∥ ∥ a i − μ l ( s i , g ~ i ) ∥ ∥ ∥ 2 2 + c o n s t
其中,中间步的目标 g ~ t + 1 : t + c − 1 \tilde{g}_{t+1:t+c-1} g ~ t + 1 : t + c − 1 可以通过固定的目标转移函数 h h h ,由初始目标 g ~ t \tilde{g}_t g ~ t 计算得到。优化的目标就是找到 g ~ t \tilde{g}_t g ~ t 以最大化上述对数概率,也就是最小化动作序列与当前低层策略输出动作的平方误差和。为了高效求解上述的最大化问题,HIRO 中采用了候选集采样的方式,首先是生成 10 个候选目标,选择其中对数概率最大的作为重标记后的目标,其中的候选目标如下
候选 1:经验中原始的目标 g t g_t g t
候选 2:实际的状态变化量 s t + c − s t s_{t+c}-s_t s t + c − s t
候选 3-10:8 个随机采样的候选目标,从以 s t + c − s t s_{t+c}-s_t s t + c − s t 为均值,以 0.5 × 1 2 0.5\times\frac{1}{2} 0 . 5 × 2 1 高层动作范围为标准差,并将其裁剪到高层动作的合法范围内
HIRO 的训练流程如下
与环境交互,收集状态、目标、动作、奖励等完整经验序列
用单步转移元组训练低层策略,优化目标是匹配高层给出的目标状态
对高层的 C C C 步长经验,执行 off-policy 修正,用重标记后的目标 g ~ t \tilde{g}_t g ~ t 替换原始目标,生成标准的 off-policy 训练元组,训练高层策略
重复迭代,实现高低层策略的端到端联合训练
DHRL
DHRL 即动态分层强化学习(Dynamic Hierarchical Reinforcement Learning),它是一种自适应分层强化学习算法,其目标是根据任务和环境的复杂性动态地构建、修改和使用分层策略。DHRL 允许代理在学习过程中根据需要动态生成和调整分层策略,从而实现更好的任务分解和高效学习。
在 DHRL 中指出,高低层策略的时间视界耦合才是传统 HRL 在大环境中扩展性差的根源。在传统 HRL 中,高低层的时间视界严格绑定,满足
h h × h l = H h^h\times h^l=H
h h × h l = H
其中高层策略时间视界 h h = H c h h^h=\frac{H}{c_h} h h = c h H 表示高层在一个回合内需要做决策的步数,其中的 c h c_h c h 是高层动作的执行间隔;低层策略时间视界 h l h^l h l 表示低层完成一个高层子目标需要的最大步数,传统的 HRL中 h l = c h h^l=c_h h l = c h ;整个任务回合的总时间步长 H H H 时由环境决定的值。由于上述公式的绑定关系,导致传统的 HRL 算法无法同时降低高层和低层的训练负担。
在 DHRL 中,为了打破 HRL 的耦合时间视界,引入图结构作为中间层:
高层策略可以自由拉伸 h l h^l h l ,实现更长的时间抽象
图结构将高层输出的单个子目标,分解为一系列连续的路径点
低层策略仅需要负责完成单个路径点,从而时间视界 h l ≪ c h h^l\ll c_h h l ≪ c h 始终保持在可训练的范围内
DHRL 中采用了高层-图中间层-低层的三层结构,打破传统 HRL 的两层耦合结构,定义如下
高层策略 π h ( s g ∣ s , g ) \pi^h(sg\vert s,g) π h ( s g ∣ s , g ) ,根据当前环境状态 s t s_t s t ,任务全局目标 g t g_t g t ,输出长程子目标 s g t sg_t s g t 。策略每 c h c_h c h 步执行一次决策,而 c h c_h c h 可拉伸,不受低层约束
图中间层为非参数化规划模块,接收高层策略输出的长程子目标,将其分解为低层可执行的路径点序列 ( s t , w p t , 1 , w p t , 2 , ⋯ , s g t ) (s_t,wp_{t,1},wp_{t,2},\cdots,sg_t) ( s t , w p t , 1 , w p t , 2 , ⋯ , s g t ) 。路径点之间的总步数之和等于高层动作间隔 c h c_h c h ,即 ∑ i = 1 N c l , i = c h \sum_{i=1}^Nc_{l,i}=c_h ∑ i = 1 N c l , i = c h ,其中 c l , i c_{l,i} c l , i 是低层完成第 i i i 个路径点的最大步数
低层策略 π l ( a ∣ s , w p ) \pi^l(a\vert s,wp) π l ( a ∣ s , w p ) 输入当前状态与当前的目标路径点,输出环境低层执行动作,仅需在 c l , i c_{l,i} c l , i 步内完成单个路径点,与高层 c h c_h c h 无绑定关系
在 DHRL 中,高层的一个子目标被图分解为 N N N 个路径点,低层仅需在 c l , i c_{l,i} c l , i 步内完成单个路径点,消除了 h h h^h h h 和 h l h^l h l 的乘积约束,使得两者均可工作在各自最优的时间尺度。图的实现逻辑如下
图 G G G 由节点集 V V V 和边集 E E E 组成,每个节点 v ∈ V v\in V v ∈ V 对应环境中的一个有效状态,边 e ∈ E e\in E e ∈ E 对应两个状态的可达性,边的成本为低层策略在两个状态间转移的真实时间步数
在训练过程中,智能体探索到的有效状态会被作为节点加入图中,仅当两个节点的时间距离 ≤ c l \leq c_l ≤ c l 时才会构建边,保证低层的可达性
路径搜索采用 Dijkstra 算法搜索最短路径,确保路径点序列的总步数匹配高层的 c h c_h c h ,且单段路径的步数不超过低层的最大视界 c l c_l c l
低层策略采用图与 Critic 分离的 Q 网络,目标是让低层无高估地恢复状态间地时间距离,为图结构提供可靠的底层支持
在传统的 HRL 中,低层的单个 Q 网络同时承担状态距离估计和策略优化两个任务,容易出现 Q 值过高估计,导致图的边成本估计错误,路径点不可达
SQGC 设计:分离两个独立的 Q 网络,各司其职
Graph Q 网络:用于估计两个状态之间的时间距离,为图的边成本提供无偏的数值度量,保证路径搜索的准确性
Critic Q 网络:专门用于低层策略的优化,基于 TD3 算法更新,保证策略能稳定在 c l c_l c l 步内到达目标路径
低层策略的优化目标时最小化到达路径点的轨迹误差,Graph Q 网络的优化目标是最小化时间距离的估计误差
DHRL 的图结构和低层策略在训练中是动态更新的,收集经验数据时的图 G β G_\beta G β 和低层策略 π β l \pi_\beta^l π β l 与训练时的当前图 G G G 和最优低层策略 π ⋆ l \pi^l_\star π ⋆ l 存在差异,会导致离线策略学习的误差,影响高层策略的收敛性。DHRL 借鉴事后经验重放的思路,提出事后转换方法,并且证明了该方法的误差上界,如下
设 G G G 为任意的 ϵ \epsilon ϵ 分辨率图,满足 ϵ < c l 2 \epsilon<\frac{c_l}{2} ϵ < 2 c l ,同时设 π β l \pi_\beta^l π β l 和 G β G_\beta G β 为收集数据时的低层策略和图, π ⋆ l \pi^l_\star π ⋆ l 和 G G G 为当前训练时的最优低层策略和图。离线策略误差率 ρ ( G ) \rho(G) ρ ( G ) 是根据 π β l \pi_\beta^l π β l 和 G β G_\beta G β 到 π ⋆ l \pi_\star^l π ⋆ l 和 G G G 的变化,相对于总遍历距离的归一化距离误差。若存在从 s s s 到 g g g 的路径,则通过在 G G G 上进行图搜索得到的路径,其离线策略误差率 ρ ( G ) \rho(G) ρ ( G ) 的上界为 2 ϵ c l \frac{2\epsilon}{c_l} c l 2 ϵ 。其中 ϵ \epsilon ϵ 是图的覆盖精度,任意真实环境状态,到图中最近节点的时间距离都小于 ϵ \epsilon ϵ 。证明如下:
对于初始状态 s s s ,第一个路径点 w p 1 wp_1 w p 1 ,存在中间点 p 1 p_1 p 1 满足 d i s t ( s → p 1 ) = c l − ϵ \mathrm{dist}(s\rightarrow p_1)=c_l-\epsilon d i s t ( s → p 1 ) = c l − ϵ ,根据 ϵ \epsilon ϵ 分辨率图的定义,则必然存在节点 w p 1 wp_1 w p 1 满足 d i s t ( p 1 → w p 1 ) < ϵ \mathrm{dist}(p_1\rightarrow wp_1)<\epsilon d i s t ( p 1 → w p 1 ) < ϵ ,因此则有
d i s t ( s → w p 1 ) ≤ d i s t ( s → p 1 ) + d i s t ( p 1 → w p 1 ) < c l \mathrm{dist}(s\rightarrow wp_1)\leq\mathrm{dist}(s\rightarrow p_1)+\mathrm{dist}(p_1\rightarrow wp_1)<c_l
d i s t ( s → w p 1 ) ≤ d i s t ( s → p 1 ) + d i s t ( p 1 → w p 1 ) < c l
则单路径点的时间距离小于低层最大视界 c l c_l c l ,保证低层可完成该路径点。同时对于 w p 1 wp_1 w p 1 到最终目标 g g g 的剩余距离,有
d i s t ( w p 1 → g ) ≤ d i s t ( w p 1 → p 1 ) + d i s t ( p 1 → g ) < ϵ + ( T − c l + ϵ ) = T − c l + 2 ϵ \mathrm{dist}(wp_1\rightarrow g)\leq\mathrm{dist}(wp_1\rightarrow p_1)+\mathrm{dist}(p_1\rightarrow g)<\epsilon+(T-c_l+\epsilon)=T-c_l+2\epsilon
d i s t ( w p 1 → g ) ≤ d i s t ( w p 1 → p 1 ) + d i s t ( p 1 → g ) < ϵ + ( T − c l + ϵ ) = T − c l + 2 ϵ
则证明完成第一个路径点之后,到目标的剩余距离上界缩小了 c l − 2 ϵ c_l-2\epsilon c l − 2 ϵ ,轨迹误差的累积是线性可控的。重复上述步骤,对于第 i i i 个路径点 w p i wp_i w p i ,取中间点 p i + 1 p_{i+1} p i + 1 满足 d i s t ( w p i → p i + 1 ) = c l − ϵ \mathrm{dist}(wp_i\rightarrow p_{i+1})=c_l-\epsilon d i s t ( w p i → p i + 1 ) = c l − ϵ ,必然存在节点 w p i + 1 wp_{i+1} w p i + 1 使得
max ( d i s t ( p i + 1 → w p i + 1 ) , d i s t ( w p i + 1 → p i + 1 ) ) < ϵ \max\big(\mathrm{dist}(p_{i+1}\rightarrow wp_{i+1}),\mathrm{dist}(wp_{i+1}\rightarrow p_{i+1})\big)<\epsilon
max ( d i s t ( p i + 1 → w p i + 1 ) , d i s t ( w p i + 1 → p i + 1 ) ) < ϵ
由此可以得到两个递推不等式
相邻路径点的距离 d i s t ( w p i → w p i + 1 ) < c l \mathrm{dist}(wp_i\rightarrow wp_{i+1})<c_l d i s t ( w p i → w p i + 1 ) < c l
剩余目标距离 d i s t ( w p i + 1 → g ) < T − ( i + 1 ) c l + 2 ( i + 1 ) ϵ \mathrm{dist}(wp_{i+1}\rightarrow g)<T-(i+1)c_l+2(i+1)\epsilon d i s t ( w p i + 1 → g ) < T − ( i + 1 ) c l + 2 ( i + 1 ) ϵ
当智能体执行完 T T T 步(从初始状态 s s s 到最终目标 g g g 的总时间步数)之后,会到达第 [ T / c l ] [{T}/{c_l}] [ T / c l ] 个路径点,此时到目标的剩余距离小于 T − [ T / c l ] c l + 2 [ T / c l ] ϵ T-[T/c_l]c_l+2[T/c_l]\epsilon T − [ T / c l ] c l + 2 [ T / c l ] ϵ ,即总步数 T T T 减去已完成路径点的总步数上限,加上累积的 ϵ \epsilon ϵ 分辨率误差。离线策略误差率 ρ ( G ) \rho(G) ρ ( G ) 为总误差除以总遍历距离 T T T ,则
ρ ( G ) < T − [ T / c l ] c l + 2 [ T / c l ] ϵ T ≤ T − ( c l − 2 ϵ ) ( T / c l ) T = 2 ϵ c l \rho(G)<\frac{T-[T/c_l]c_l+2[T/c_l]\epsilon}{T}\leq\frac{T-(c_l-2\epsilon)(T/c_l)}{T}=\frac{2\epsilon}{c_l}
ρ ( G ) < T T − [ T / c l ] c l + 2 [ T / c l ] ϵ ≤ T T − ( c l − 2 ϵ ) ( T / c l ) = c l 2 ϵ
其中利用 [ T / c l ] ≥ T / c l − 1 [T/c_l]\geq T/c_l-1 [ T / c l ] ≥ T / c l − 1 ,将其缩放化简
另外在 DHRL 中还提出两个优化技术,可进一步提升长程任务的数据效率
渐进惩罚:随着高层动作空间随 c h c_h c h 的拉伸而扩大,精细化地对高层策略施加惩罚,鼓励高层输出低层可实际到达的子目标,避免子目标不可达导致的训练失效。对于高层的经验样本 ( s t , g t , s g t , r t , s t + c h ) (s_t,g_t,sg_t,r_t,s_{t+c_h}) ( s t , g t , s g t , r t , s t + c h ) ,按照子目标的可达性分为 3 类
L1 类:子目标靠近图,且低层实际完成了子目标,基于正奖励,不施加惩罚
L2 类:子目标高进图,但低层未能完成子目标,施加中等惩罚
L3 类:子目标原理图,完全超出低层能力范围,施加高强度惩罚
基于前沿的目标偏移:加速复杂环境的探索,解决训练中目标落在已探索区域时,智能体无法有效探索新区域的问题
目标区域判断:若最终目标 g g g 到图中所有节点的最小距离 min v ∈ V d i s t ( v → g ) \min_{v\in V}\mathrm{dist}(v\rightarrow g) min v ∈ V d i s t ( v → g ) 小于截断阈值,说明目标在已探索区域
前沿目标生成:从图节点中按 − Q ( s 0 , π ( s 0 , v ) ∣ v ) -Q\big(s_0,\pi(s_0,v)\vert v\big) − Q ( s 0 , π ( s 0 , v ) ∣ v ) 加权采样,叠加随机噪声,生成位于图探索前沿的新目标,替换原目标