ICML2022版本 Koopman Q-learning: Offline Reinforcement Learning via Symmetries of Dynamics
在上一篇文章(状态处理) OfflineRL中的状态空间的数据增强(7种增强方案)基础上,经过 知乎用户(宋致) 推荐了解到本篇文章,乘热打铁阅读一下。
这篇文章很有意思,最初是投稿在ICLR2022会议上,但不幸被拒了,最后发表在ICML2022顶会上,所以好论文还是一个仔细打磨过程的结果,共勉
简要: 当前的Offline RL算法过度拟合训练数据集,因此在部署到环境后,遇到分布的外泛化就表现不佳。目前解决OOD算法的方法也挺多。而本文作者通过学习 Koopman潜在表示(Koopman latent representation) 来解决这些限制,它是一种model-free方法,通过使用环境动态的对称性来Guide数据增强策略。然后用于在训练期间扩展原本静态的离线数据集;这构成了一个新颖的数据增强框架 ,结果表明在几个基准离线强化学习任务和数据集(包括 D4RL、Metaworld 和 Robosuite)上,该方法表现不错。
1. 目前遇到的问题及背景
在Online强化学习中,我们一般通过最小化贝尔曼误差损失函数来训练优化训练模型。
Q
^
i
+
1
←
arg
min
Q
E
[
r
t
+
γ
Q
^
i
(
s
t
+
1
,
a
t
+
1
)
−
Q
i
(
s
t
,
a
t
)
]
\hat{Q}_{i+1} \leftarrow \arg \min _{Q} \mathbb{E}\left[r_{t}+\gamma \hat{Q}_{i}\left(s_{t+1}, a_{t+1}\right)-Q_{i}\left(s_{t}, a_{t}\right)\right]
Q^i+1←argQminE[rt+γQ^i(st+1,at+1)−Qi(st,at)]
而在Offline RL中,我们的优化目标变为:
π i + 1 ← arg max π E s t ∼ D [ Q ^ ( s t , π i ( a t ∣ s t ) ) ] \pi_{i+1} \leftarrow \arg \max _{\pi} \mathbb{E}_{s_{t} \sim \mathcal{D}}\left[\hat{Q}\left(s_{t}, \pi_{i}\left(a_{t} \mid s_{t}\right)\right)\right] πi+1←argπmaxEst∼D[Q^(st,πi(at∣st))]
其中这里最大的区别在于收集好的fixed数据集, 我们知道最经典的CQL离线强化学习(Offline RL)系列3: (算法篇) CQL 算法详解与实现算法能够减少状态值的过估计问题(特别是OOD之外的),我们对比一下与OfflineRL的区别:
π
i
+
1
←
arg
max
π
E
s
t
∼
D
[
Q
^
(
s
t
,
π
i
(
a
t
∣
s
t
)
)
−
α
log
π
i
(
a
t
∣
s
t
)
]
\pi_{i+1} \leftarrow \arg \max _{\pi} \mathbb{E}_{s_{t} \sim \mathcal{D}}\left[\hat{Q}\left(s_{t}, \pi_{i}\left(a_{t} \mid s_{t}\right)\right)-\alpha \log \pi_{i}\left(a_{t} \mid s_{t}\right)\right]
πi+1←argπmaxEst∼D[Q^(st,πi(at∣st))−αlogπi(at∣st)]
可以明显看到多了一项对数项
α
log
π
i
(
a
t
∣
s
t
)
\alpha \log \pi_{i}\left(a_{t} \mid s_{t}\right)
αlogπi(at∣st) ,也就是添加了一个策略熵正则化项(policy entropy regularization term),然后在此基础上minimizing its values over out of distribution randomly sampled actions:
Q ^ i + 1 ← arg min Q ( E s t , a t , s t + 1 ∼ D [ r t + γ Q ^ i ( s t + 1 , a t + 1 ) − Q i ( s t , a t ) ] + α ~ E s t ∼ D [ log ∑ a exp ( Q i ( s t , a ) ) − E a ∼ π ( s t ) [ Q i ( s t , a ) ] ] ) \begin{aligned} \hat{Q}_{i+1} \leftarrow \arg \min _{Q}(& \underset{s_{t}, a_{t}, s_{t+1} \sim \mathcal{D}}{\mathbb{E}}\left[r_{t}+\gamma \hat{Q}_{i}\left(s_{t+1}, a_{t+1}\right)-Q_{i}\left(s_{t}, a_{t}\right)\right] \\ &\left.+\tilde{\alpha} \underset{s_{t} \sim \mathcal{D}}{\mathbb{E}}\left[\log \sum_{a} \exp \left(Q_{i}\left(s_{t}, a\right)\right)-\underset{a \sim \pi\left(s_{t}\right)}{\mathbb{E}}\left[Q_{i}\left(s_{t}, a\right)\right]\right]\right) \end{aligned} Q^i+1←argQmin(st,at,st+1∼DE[rt+γQ^i(st+1,at+1)−Qi(st,at)]+α~st∼DE[loga∑exp(Qi(st,a))−a∼π(st)E[Qi(st,a)]])
2. KOOPMAN THEORY(库普曼理论)
作者在此处引入了动力系统的库普曼理论(KOOPMAN THEORY)观点来描述哈密顿系统测量的演化,大多数现代强化学习任务的基本动态是非线性的,即智能体行为导致由复杂非线性动态系统描述的状态变化。但非线性系统缺乏这种统一的表征。库普曼算子理论框架可以通过线性无限维库普曼运算符描述非线性动力学(The Koopman operator theoretic framework describes nonlinear dynamics via a linear infinite-dimensional Koopman operator)
一般的非仿射控制系统由非线性常微分方程(ODE)系统控制,如下所示:
s
˙
=
f
(
s
,
a
)
\dot{s}=f(s, a)
s˙=f(s,a)
这里的
f
f
f 是一些一般的非线性最小C1可微-向量值函数,而在离散系统中就表示为:
s
t
+
1
=
F
(
s
t
,
a
t
)
s_{t+1}=F\left(s_{t}, a_{t}\right)
st+1=F(st,at)
2.1 KoopMan opereator
Koopman Operator表示为:
( K ψ ) ( x t ) = ψ ( f ( x t ) ) (\mathcal{K} \psi)\left(x_{t}\right)=\psi\left(f\left(x_{t}\right)\right) (Kψ)(xt)=ψ(f(xt))
由于 K ψ \mathcal{K} \psi Kψ 是一个新的函数,我们变换一下写法得到: ( K ) ψ ( x t ) = ψ ( f ( x t ) ) (\mathcal{K}) \psi\left(x_{t}\right)=\psi\left(f\left(x_{t}\right)\right) (K)ψ(xt)=ψ(f(xt))
可以这样理解, ψ \psi ψ 是一个升维函数(为什么要升维,因为在低维下是非线性的,映射到高维下,就可以用线性来表示了),类似编码器或神经网络之类的,本来要求下一个状态 x t + 1 x_{t+1} xt+1 需要通过非线性系统 f ( x ) f(x) f(x),但是通过Koopman操作,使用算子 K K K 与 x x x 升维函数进行矩阵乘法,就等于下一个状态 x t + 1 = f ( x t ) x_{t+1}=f\left(x_{t}\right) xt+1=f(xt) 的升维,然后使用反变换之类的操作,就可以使用下一个状态的升维,变回下一个状态,即:
( K ) ψ ( x t ) = ψ ( x t + 1 ) = ψ ( f ( x t ) ) → x t + 1 = f ( x t ) (K) \psi\left(x_{t}\right)=\psi\left(x_{t+1}\right)=\psi\left(f\left(x_{t}\right)\right) \rightarrow x_{t+1}=f\left(x_{t}\right) (K)ψ(xt)=ψ(xt+1)=ψ(f(xt))→xt+1=f(xt)
这样,就相当于使用线性的 K K K 矩阵,从状态 x t x_{t} xt 线性变换到了下一个状态 x t + 1 x_{t+1} xt+1 。Koopman大概就是这么个东西,那么重点就是怎么去求这个矩阵。这是个问题,【本部分参考自:Koopman operator】
接着我们回到RL中,对刚才的Koopman中加入动作 a a a ,则表示Definition1中的: K g ( s t , a t ) = g ( F ( s t , a t ) , a t + 1 ) = g ( s t + 1 , a t + 1 ) , ∀ g ∈ K ( S × A ) \mathcal{K} g\left(s_{t}, a_{t}\right)=g\left(F\left(s_{t}, a_{t}\right), a_{t+1}\right)=g\left(s_{t+1}, a_{t+1}\right), \quad \forall g \in \mathcal{K}(\mathcal{S} \times \mathcal{A}) Kg(st,at)=g(F(st,at),at+1)=g(st+1,at+1),∀g∈K(S×A)
对于双线化(bilinearisation)的动作, ψ \psi ψ 可以表示为: f ( s , a ) = f 0 ( s ) + ∑ i m f i ( s ) a i f(s, a)=f_{0}(s)+\sum_{i}^{m} f_{i}(s) a_{i} f(s,a)=f0(s)+∑imfi(s)ai
在这种情况下Koopman operator就简化为如下形式:
g
(
s
t
+
1
)
=
K
(
a
)
g
(
s
t
)
=
(
K
0
+
∑
i
m
K
i
a
i
)
g
(
s
t
)
,
∀
g
∈
K
(
S
×
A
)
g\left(s_{t+1}\right)=\mathcal{K}(a) g\left(s_{t}\right)=\left(\mathcal{K}_{0}+\sum_{i}^{m} \mathcal{K}_{i} a_{i}\right) g\left(s_{t}\right), \quad \forall g \in \mathcal{K}(\mathcal{S} \times \mathcal{A})
g(st+1)=K(a)g(st)=(K0+i∑mKiai)g(st),∀g∈K(S×A)
补充:动态系统下,动态和koopman operator的区别
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4fqcp5pp-1661761490103)(https://www.bilibili.com/video/BV1RL4y1575i)]](https://pic4.zhimg.com/80/v2-7fec1760d6c1c3e59f2a93cdfa952b27.png)
关于Koopman operator(THE KOOPMAN FORWARD FRAMEWORK)的理论操作主要如下,数学有点多先跳过
在以上理论分析的基础上,作者基于CQL算法,提出了 Koopman Forward (Conservative) Q-learning (KFC) 算法,作者为了避免使用不准确的预测模型,并充分利用VAE的准确性和泛化能力。
2.2 Koopman latent space representation
作者这里给出了koopman的结构图,所述的latent space representation 个人感觉和VAE的其实差不多,多了原理中所说的 K K K 矩阵
具体的数学更新公式部分和 CQL 算法的区别如下:
Q ^ i + 1 ← arg min Q ( E s t , a t , s t + 1 ∼ D [ r t + γ Q ^ i ( σ a t ϵ ( s ~ t + 1 ∣ s t + 1 ) , a t + 1 ) − Q i ( σ a t ϵ ( s ~ t ∣ s t ) , a t ) ] + α ~ E s t ∼ D [ log ∑ a exp ( Q i ( s t , a ) ) − E a ∼ π ( s t ) [ Q i ( s t , a ) ] ] ) \begin{aligned} &\hat{Q}_{i+1} \leftarrow \arg \min _{Q}\left(\underset{s_{t}, a_{t}, s_{t+1} \sim \mathcal{D}}{\mathbb{E}}\left[r_{t}+\gamma \hat{Q}_{i}\left(\sigma_{a_{t}}^{\epsilon}\left(\tilde{s}_{t+1} \mid s_{t+1}\right), a_{t+1}\right)-Q_{i}\left(\sigma_{a_{t}}^{\epsilon}\left(\tilde{s}_{t} \mid s_{t}\right), a_{t}\right)\right]\right.\\ &\left.+\tilde{\alpha} \underset{s_{t} \sim \mathcal{D}}{\mathbb{E}}\left[\log \sum_{a} \exp \left(Q_{i}\left(s_{t}, a\right)\right)-\underset{a \sim \pi\left(s_{t}\right)}{\mathbb{E}}\left[Q_{i}\left(s_{t}, a\right)\right]\right]\right) \end{aligned} Q^i+1←argQmin(st,at,st+1∼DE[rt+γQ^i(σatϵ(s~t+1∣st+1),at+1)−Qi(σatϵ(s~t∣st),at)]+α~st∼DE[loga∑exp(Qi(st,a))−a∼π(st)E[Qi(st,a)]])
其中 状态空间对称生成函数 σ a ϵ : S → S \sigma_{a}^{\epsilon}: \mathcal{S} \rightarrow \mathcal{S} σaϵ:S→S 取决于正态分布的随机变量 ϵ \epsilon ϵ 。 这里作者只修改下面方程式的贝尔曼误差。并保持CQL算法特定的调节器(regulizer untouched.)不变。
CQL算法更新公式
Q ^ i + 1 ← arg min Q ( E s t , a t , s t + 1 ∼ D [ r t + γ Q ^ i ( s t + 1 , a t + 1 ) − Q i ( s t , a t ) ] + α ~ E s t ∼ D [ log ∑ a exp ( Q i ( s t , a ) ) − E a ∼ π ( s t ) [ Q i ( s t , a ) ] ] ) \begin{aligned} \hat{Q}_{i+1} \leftarrow \arg \min _{Q}(& \underset{s_{t}, a_{t}, s_{t+1} \sim \mathcal{D}}{\mathbb{E}}\left[r_{t}+\gamma \hat{Q}_{i}\left(s_{t+1}, a_{t+1}\right)-Q_{i}\left(s_{t}, a_{t}\right)\right] \\ &\left.+\tilde{\alpha} \underset{s_{t} \sim \mathcal{D}}{\mathbb{E}}\left[\log \sum_{a} \exp \left(Q_{i}\left(s_{t}, a\right)\right)-\underset{a \sim \pi\left(s_{t}\right)}{\mathbb{E}}\left[Q_{i}\left(s_{t}, a\right)\right]\right]\right) \end{aligned} Q^i+1←argQmin(st,at,st+1∼DE[rt+γQ^i(st+1,at+1)−Qi(st,at)]+α~st∼DE[loga∑exp(Qi(st,a))−a∼π(st)E[Qi(st,a)]])
基于此作者研究了两个不同的案例,即 σ a t ϵ \sigma_{a_{t}}^{\epsilon} σatϵ 部分。
(I) σ a t ϵ : s ↦ s ~ = D ( ( 1 + ϵ σ a t ) E ( s ) ) \sigma_{a_{t}}^{\epsilon}: s \mapsto \tilde{s}=D\left(\left(\mathbb{1}+\epsilon \sigma_{a_{t}}\right) E(s)\right) σatϵ:s↦s~=D((1+ϵσat)E(s))
(II) σ a t ϵ : s ↦ s ~ = D ( ( 1 + σ a t ( ϵ ⃗ ) ) E ( s ) ) \sigma_{a_{t}}^{\epsilon}: s \mapsto \tilde{s}=D\left(\left(\mathbb{1}+\sigma_{a_{t}}(\vec{\epsilon})\right) E(s)\right) σatϵ:s↦s~=D((1+σat(ϵ))E(s)),
where σ a t ( ϵ ⃗ ) = Re ( U ( a t ) diag ( ϵ 1 , … , ϵ N ) U − 1 ( a t ) ) \quad \sigma_{a_{t}}(\vec{\epsilon})=\operatorname{Re}\left(U\left(a_{t}\right) \operatorname{diag}\left(\epsilon_{1}, \ldots, \epsilon_{N}\right) U^{-1}\left(a_{t}\right)\right) σat(ϵ)=Re(U(at)diag(ϵ1,…,ϵN)U−1(at)),
这个状态对应到前馈网络模型为,我们可以看到本质是通过了 D D D 网络和 E E E 网络进行了函数近似
网络结构可以理解为:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w2F8VLuR-1661761490105)(https://zhuanlan.zhihu.com/p/85400189)]](https://pic4.zhimg.com/80/v2-e07db59023a63dff1e35f7fa19b15fef.png)
相关的一些超参数设置如论文原图所示:
3. 实验评估及结果
作者在这里通过与CQL 算法和S4RL离线强化学习(Offline RL)系列7: (状态处理) OfflineRL中的状态空间的数据增强(7种增强方案)算法进行了对比,结果如下所示:
参考文献
[1]. Matthias Weissenbacher, Samarth Sinha, Animesh Garg, Yoshinobu Kawahara: “Koopman Q-learning: Offline Reinforcement Learning via Symmetries of Dynamics”, 2021; arXiv:2111.01365.
OfflineRL推荐阅读
离线强化学习(Offline RL)系列7: (状态处理) OfflineRL中的状态空间的数据增强
离线强化学习(Offline RL)系列6: (采样效率) OfflineRL中的样本选择策略
离线强化学习(Offline RL)系列5: (模型参数) 离线强化学习中的超参数选择
离线强化学习(Offline RL)系列4:(数据集) 经验样本复杂度对模型收敛的影响分析
离线强化学习(Offline RL)系列4:(数据集)Offline数据集特征及对离线强化学习算法的影响
离线强化学习(Offline RL)系列3: (算法篇) AWAC算法详解与实现
离线强化学习(Offline RL)系列3: (算法篇) AWR(Advantage-Weighted Regression)算法详解与实现
离线强化学习(Offline RL)系列3: (算法篇) Onestep 算法详解与实现
离线强化学习(Offline RL)系列3: (算法篇) IQL(Implicit Q-learning)算法详解与实现
离线强化学习(Offline RL)系列3: (算法篇) CQL 算法详解与实现
离线强化学习(Offline RL)系列3: (算法篇) TD3+BC 算法详解与实现(经验篇)
离线强化学习(Offline RL)系列3: (算法篇) REM(Random Ensemble Mixture)算法详解与实现
离线强化学习(Offline RL)系列3: (算法篇)策略约束 - BRAC算法原理详解与实现(经验篇)
离线强化学习(Offline RL)系列3: (算法篇)策略约束 - BEAR算法原理详解与实现
离线强化学习(Offline RL)系列3: (算法篇)策略约束 - BCQ算法详解与实现
离线强化学习(Offline RL)系列2: (环境篇)D4RL数据集简介、安装及错误解决
离线强化学习(Offline RL)系列1:离线强化学习原理入门