InitLight: Initial Model Generation for Traffic Signal Control Using Adversarial Inverse Reinforcement Learning
摘要
当前基于强化学习的TSC方法基于试错,会导致较长的训练时间和对其他复杂交通环境较差的适应性。
本文提出了基于模仿学习的预训练方法InitLight,能够有效生成初始模型。InitLight仅基于多个单交叉路口和对应的专家轨迹训练一个初始模型。由于InitLight学习的奖励函数能够还原各个路口最优状态下TSC的真实奖励,因此预训练模型能够被用来作为初始模型加速RL训练。
实验表明InitLight生成的初始模型能够加速收敛,同时能够泛化能力强,能够适应各种复杂交通环境。
介绍
当前基于RL的TSC方法都是基于特定环境训练的,难以应用于其他交通环境。本文问题在于:如何有效提高学习效率和泛化能力。
InitLight由两个部分组成,包括生成器(Generator)和鉴别器(Discriminator)。与传统基于RL的TSC方法在特定交通路网训练一批Agent不同,InitLight则是基于多个单交叉路口环境和其对应的专家轨迹进行预训练。
InitLight采用了PPO算法作为Generator中的Agent,并在Discriminator的引导下进行训练。Discriminator的功能是区分Agent的轨迹和专家轨迹,此处指的轨迹是 < s , a , s ′ > <s,a,s'> <s,a,s′>。
Discriminator可以学习到一个奖励函数,用以在任何交通环境中还原真正的奖励函数。因此通过InitLight预训练的Agent能够部署在任何复杂的交通环境中,作为初始模型,加速训练。
本文贡献:
- 提出了一种模仿学习框架,能够快速为各种多路口环境生成通用有效的模型,加速RL训练。
- 引入对抗学习机制,来支持RL模型和奖励函数同时学习,采用Discriminator可以还原真实最优奖励。
- 采用Cityflow,将InitLight在真实和模拟数据集上进行实验,效果很好。
实现方法
上图是InitLight的详细构成,其对抗框架包括一个Generator、一个Discriminator和三个Buffer。通过PPO Agent和环境交互,Generator生成轨迹数据 < s , a , s ′ > <s,a,s'> <s,a,s′>,存储到Agent Trajectory Buffer,用以迷惑Discriminator。Discriminator通过辨别专家轨迹和Agent轨迹,从而学习到一个奖励函数,从而指导PPO Agent的学习。
Generator设计
Generator由PPO Agent和单路口环境构成,Agent与环境交互获得轨迹数据 < s , a , r , s ′ > <s,a,r,s'> <s,a,r,s′>。其中轨迹数据 < s , a , r , s ′ > <s,a,r,s'> <s,a,r,s′>将会被存储到Agent Replay Buffer中用以训练Agent, < s , a , s ′ > <s,a,s'> <s,a,s′>被存储到Trajectory Buffer中,通过Discriminator获得奖励。
路口建模
驶入车道 L a = { l i 1 , l i 2 , … , l i 12 } L_a=\{l_i^1,l_i^2,\dots,l_i^{12}\} La={li1,li2,…,li12},驶出车道 L d = { l o 1 , l o 2 , … , l o 12 } L_d=\{l_o^1,l_o^2,\dots,l_o^{12}\} Ld={lo1,lo2,…,lo12}。
车辆的行驶轨迹(车流运动)可以表示为 ( l i , l o ) (l_i,l_o) (li,lo),例如图中所示 ( l i 10 , l o 10 ) (l_i^{10},l_o^{10}) (li10,lo10)和 ( l i 11 , l o 11 ) (l_i^{11},l_o^{11}) (li11,lo11)。
由于右转不受信号灯控制,故有八相位 P = { p 1 , … , p 8 } P=\{p_1,\dots,p_8\} P={p1,…,p8},图中所示为相位 p 5 p_5 p5。
压力
采用压力机制设计Agent。
**定义1:**车流运动压力。
P
(
l
i
,
l
o
)
=
N
(
l
i
)
−
N
(
l
o
)
P_{(l_i,l_o)}=N(l_i)-N(l_o)
P(li,lo)=N(li)−N(lo)
**定义2:**路口压力。
P
I
=
∣
∑
l
i
∈
L
a
N
(
l
i
)
−
∑
l
o
∈
L
d
N
(
l
o
)
∣
P_I=|\sum_{l_i\in L_a}N(l_i)-\sum_{l_o\in L_d}N(l_o)|
PI=∣li∈La∑N(li)−lo∈Ld∑N(lo)∣
压力机制表示了到达和离开车辆的不平衡程度。通过最小化压力可以最大化路口吞吐量。
Agent设计
**状态:**所有车流运动的压力 ( P ( l i 1 , l o 1 ) , P ( l i 2 , l o 2 ) , … , P ( l i 12 , l o 12 ) ) (P_{(l_i^1,l_o^1)},P_{(l_i^2,l_o^2)},\dots,P_{(l_i^{12},l_o^{12})}) (P(li1,lo1),P(li2,lo2),…,P(li12,lo12))和当前相位 p c u r p_{cur} pcur。
**动作:**八相位。
**奖励:**使用 r = − P I r=-P_I r=−PI表示奖励,其中 P I P_I PI是路口压力。本文中使用Discriminator学习从专家轨迹和Agent轨迹样本中学习奖励函数。
PPO Agent为AC架构,其中Actor参数为 A θ A_\theta Aθ,Critic参数为 C θ C_\theta Cθ。Actor用于学习动作策略,Critic用于评价优化Actor。采用Replay Buffer收集了连续的轨迹样本。
Critic模型
Critic损失函数:
L
c
=
E
[
∣
C
θ
(
s
t
)
t
a
r
g
e
t
−
C
θ
(
s
t
)
∣
]
L_c=\mathbb{E}[|C_\theta(s_t)_{target}-C_\theta(s_t)|]
Lc=E[∣Cθ(st)target−Cθ(st)∣]
其中采用TD算法计算
C
θ
(
s
t
)
t
a
r
g
e
t
C_\theta(s_t)_{target}
Cθ(st)target:
C
θ
(
s
t
)
t
a
r
g
e
t
=
r
t
+
1
+
γ
⋅
C
(
s
t
+
1
)
C_\theta(s_t)_{target}=r_{t+1}+\gamma\cdot C(s_{t+1})
Cθ(st)target=rt+1+γ⋅C(st+1)
Critic采用的梯度下降算法为Adam:
θ
C
′
=
θ
C
−
η
C
∇
L
C
\theta'_C=\theta_C-\eta_C\nabla L_C
θC′=θC−ηC∇LC
其中
∇
L
C
\nabla L_C
∇LC是Critic的损失,
θ
C
\theta_C
θC是模型参数,
θ
C
′
\theta'_C
θC′是更新后的模型参数,
η
C
\eta_C
ηC是学习率。
Actor模型
Actor原始损失函数:(需推导)
L
A
=
E
[
l
o
g
(
A
θ
(
a
t
∣
s
t
)
)
A
t
]
L_A=\mathbb{E}[log(A_\theta(a_t|s_t))A_t]
LA=E[log(Aθ(at∣st))At]
其中
A
t
A_t
At是时间步
t
t
t优势函数估计的价值,其根据GAE进行计算:(
λ
=
1
\lambda=1
λ=1时,退化为原始优势函数)
A
t
=
δ
t
+
(
γ
λ
)
δ
t
+
1
+
(
γ
λ
)
2
δ
t
+
2
+
⋯
+
(
γ
λ
)
∣
B
∣
−
t
+
1
δ
∣
B
∣
−
1
A_t=\delta_t+(\gamma\lambda)\delta_{t+1}+(\gamma\lambda)^2\delta_{t+2}+\dots+(\gamma\lambda)^{|B|-t+1}\delta_{|B|-1}
At=δt+(γλ)δt+1+(γλ)2δt+2+⋯+(γλ)∣B∣−t+1δ∣B∣−1
其中
γ
∈
[
0
,
1
]
\gamma\in[0,1]
γ∈[0,1]是折扣因子,
γ
∈
[
0
,
1
]
\gamma\in[0,1]
γ∈[0,1]是GAE参数,
∣
B
∣
|B|
∣B∣是batch_size,
δ
t
=
r
t
+
γ
C
θ
(
s
t
+
1
)
−
C
θ
(
s
t
)
\delta_t=r_t+\gamma C_\theta(s_{t+1})-C_\theta(s_t)
δt=rt+γCθ(st+1)−Cθ(st)。
在本模型中,不再使用Actor原始损失函数,而使用重要性抽样来获得新Actor模型
A
θ
A_\theta
Aθ产生的样本期待。则其损失函数为:(可推导)
L
A
=
E
[
A
θ
(
a
t
∣
s
t
)
A
θ
o
l
d
(
a
t
∣
s
t
)
A
t
]
L_A=\mathbb{E}[\frac{A_\theta(a_t|s_t)}{A_\theta^{old}(a_t|s_t)}A_t]
LA=E[Aθold(at∣st)Aθ(at∣st)At]
使用KL散度能够在限制下优化
L
A
L_A
LA:
E
[
K
L
(
A
θ
(
⋅
∣
s
t
)
,
A
θ
o
l
d
(
⋅
∣
s
t
)
)
]
≤
ϵ
\mathbb{E}[KL(A_\theta(\cdot|s_t),A^{old}_\theta(\cdot|s_t))]\le\epsilon
E[KL(Aθ(⋅∣st),Aθold(⋅∣st))]≤ϵ
其中
ϵ
\epsilon
ϵ是一个较小的值。
为了简化实现,提高采样效率,使用了PPO-clip给出损失函数(代替KL散度):
L
A
=
E
[
m
i
n
(
R
t
,
c
l
i
p
(
R
t
,
1
−
σ
,
1
+
σ
)
)
A
t
]
L_A=\mathbb{E}[min(R_t,clip(R_t,1-\sigma,1+\sigma))A_t]
LA=E[min(Rt,clip(Rt,1−σ,1+σ))At]
其中,
R
t
=
A
θ
(
a
t
∣
s
t
)
A
θ
o
l
d
(
a
t
∣
s
t
)
R_t=\frac{A_\theta(a_t|s_t)}{A_\theta^{old}(a_t|s_t)}
Rt=Aθold(at∣st)Aθ(at∣st),
σ
\sigma
σ是裁剪参数用于约束
c
l
i
p
(
⋅
)
clip(\cdot)
clip(⋅)函数上下界。PPO-clip可以有效避开负优势,而不会贪婪选择正优势。
Discriminator设计
Discriminator用于从专家轨迹中学习奖励函数,从而能够指导模型预训练。Discriminator包括两个神经网络 R R R和 V V V。Agent生成的轨迹表示为 < s , a , s ′ > <s,a,s'> <s,a,s′>,专家轨迹表示为 s e , a e , s e ′ s_e,a_e,s_e' se,ae,se′。
根据轨迹中心公式,Discriminator
D
θ
D_\theta
Dθ被定义为:(1/2最优)
D
θ
(
τ
)
=
e
x
p
{
f
θ
(
τ
)
}
e
x
p
{
f
θ
(
τ
)
}
+
π
(
τ
)
D_\theta(\tau)=\frac{exp\{f_\theta(\tau)\}}{exp\{f_\theta(\tau)\}+\pi(\tau)}
Dθ(τ)=exp{fθ(τ)}+π(τ)exp{fθ(τ)}
其中
τ
\tau
τ是策略生成的状态和动作,
f
θ
f_\theta
fθ是函数
f
f
f的可学习参数,
π
\pi
π是Agent的策略(最大化学习奖励
R
(
τ
)
=
l
o
g
D
θ
(
τ
)
−
l
o
g
(
1
−
D
θ
(
τ
)
)
R(\tau)=logD_\theta(\tau)-log(1-D_\theta(\tau))
R(τ)=logDθ(τ)−log(1−Dθ(τ)))(
D
=
1
2
D=\frac{1}{2}
D=21时,为0)。
Discriminator更新被视作奖励函数更新,策略更新被视作采样分布更新。
若训练到最优,可以证明Discriminator可以提取到最优奖励函数
f
∗
(
τ
)
=
R
∗
(
τ
)
+
c
f^*(\tau)=R^*(\tau)+c
f∗(τ)=R∗(τ)+c,并且策略
π
\pi
π能够还原最优策略。但由于使用所有轨迹
τ
\tau
τ相较于只使用状态奖励对会导致高方差,故本文使用下式代替
D
θ
D_\theta
Dθ:
D
θ
(
s
,
a
)
=
e
x
p
{
f
θ
(
s
,
a
)
}
e
x
p
{
f
θ
(
s
,
a
)
}
+
π
(
a
∣
s
)
D_\theta(s,a)=\frac{exp\{f_\theta(s,a)\}}{exp\{f_\theta(s,a)\}+\pi(a|s)}
Dθ(s,a)=exp{fθ(s,a)}+π(a∣s)exp{fθ(s,a)}
又由于
f
θ
∗
(
s
,
a
)
f^*_\theta(s,a)
fθ∗(s,a)与最优策略的优势函数
A
∗
(
s
,
a
)
A^*(s,a)
A∗(s,a)相同:
f
θ
∗
(
s
,
a
)
=
l
o
g
π
∗
(
a
∣
s
)
=
A
∗
(
s
,
a
)
f^*_\theta(s,a)=log\pi^*(a|s)=A^*(s,a)
fθ∗(s,a)=logπ∗(a∣s)=A∗(s,a)
优势函数根据最优策略的动作监督每个动作,对环境状态不具有鲁棒性。
为解耦奖励函数和优势函数,Discriminator:
D
θ
(
s
,
a
,
s
′
)
=
e
x
p
{
f
R
θ
,
V
θ
(
s
,
a
,
s
′
)
}
e
x
p
{
f
R
θ
,
V
θ
(
s
,
a
,
s
′
)
}
+
A
θ
(
a
∣
s
)
D_\theta(s,a,s')=\frac{exp\{f_{R_\theta,V_\theta}(s,a,s')\}}{exp\{f_{R_\theta,V_\theta}(s,a,s')\}+A_\theta(a|s)}
Dθ(s,a,s′)=exp{fRθ,Vθ(s,a,s′)}+Aθ(a∣s)exp{fRθ,Vθ(s,a,s′)}
其中策略
π
\pi
π是Actor
A
θ
A_\theta
Aθ,
f
R
θ
,
V
θ
f_{R_\theta,V_\theta}
fRθ,Vθ由奖励近似函数
R
θ
R_\theta
Rθ和整形项
V
θ
V_\theta
Vθ组成:
f
R
θ
,
V
θ
(
s
,
a
,
s
′
)
=
R
θ
(
s
,
a
)
+
γ
V
θ
(
s
′
)
−
V
θ
(
s
)
f_{R_\theta,V_\theta}(s,a,s')=R_\theta(s,a)+\gamma V_\theta(s')-V_\theta(s)
fRθ,Vθ(s,a,s′)=Rθ(s,a)+γVθ(s′)−Vθ(s)
其中
V
θ
V_\theta
Vθ能够减轻奖励近似函数
R
θ
R_\theta
Rθ不必要的影响,在最优条件下其可以恢复一个只有状态的真值奖励。
R
θ
∗
=
R
∗
(
s
)
+
c
V
θ
∗
=
V
∗
(
s
)
+
c
R^*_\theta=R^*(s)+c\\ V^*_\theta=V^*(s)+c
Rθ∗=R∗(s)+cVθ∗=V∗(s)+c
其中
R
∗
(
⋅
)
R^*(\cdot)
R∗(⋅)是真正的奖励函数,
V
∗
(
⋅
)
V^*(\cdot)
V∗(⋅)是最优价值函数。
根据
f
θ
∗
(
s
,
a
)
f^*_\theta(s,a)
fθ∗(s,a)与最优策略的优势函数
A
∗
(
s
,
a
)
A^*(s,a)
A∗(s,a)相同:
f
∗
(
s
,
a
,
s
′
)
=
A
∗
(
s
,
a
)
=
Q
(
s
,
a
)
−
V
(
s
)
=
R
∗
(
s
)
+
γ
V
∗
(
s
′
)
−
V
∗
(
s
)
f^*(s,a,s')=A^*(s,a)=Q(s,a)-V(s)=R^*(s)+\gamma V^*(s')-V^*(s)
f∗(s,a,s′)=A∗(s,a)=Q(s,a)−V(s)=R∗(s)+γV∗(s′)−V∗(s)
f
∗
(
s
,
a
,
s
′
)
f^*(s,a,s')
f∗(s,a,s′)可视作随机环境中
A
∗
(
s
,
a
)
A^*(s,a)
A∗(s,a)的单样本估计,
Q
(
⋅
)
Q(\cdot)
Q(⋅)是Q函数。
使用二元交叉熵作为损失函数:
L
D
=
L
e
+
L
a
L
e
=
−
1
N
∑
i
=
1
N
y
e
i
l
o
g
(
D
G
,
H
(
x
e
i
)
)
+
(
1
−
y
e
i
)
l
o
g
(
1
−
D
G
,
H
(
x
e
i
)
)
L
a
=
−
1
N
∑
i
=
1
N
y
a
i
l
o
g
(
D
G
,
H
(
x
a
i
)
)
+
(
1
−
y
a
i
)
l
o
g
(
1
−
D
G
,
H
(
x
a
i
)
)
L_D=L_e+L_a\\ L_e=-\frac{1}{N}\sum^N_{i=1}y_{e_i}log(D_{G,H}(x_{e_i}))+(1-y_{e_i})log(1-D_{G,H}(x_{e_i}))\\ L_a=-\frac{1}{N}\sum^N_{i=1}y_{a_i}log(D_{G,H}(x_{a_i}))+(1-y_{a_i})log(1-D_{G,H}(x_{a_i}))
LD=Le+LaLe=−N1i=1∑Nyeilog(DG,H(xei))+(1−yei)log(1−DG,H(xei))La=−N1i=1∑Nyailog(DG,H(xai))+(1−yai)log(1−DG,H(xai))
其中,
x
e
i
,
x
a
i
x_{e_i},x_{a_i}
xei,xai是专家轨迹和Agent轨迹,
y
e
i
,
y
a
i
y_{e_i},y_{a_i}
yei,yai是轨迹判断结果(0,1)。
实验
实验设置
软硬件配置:
系统 | CPU | 内存 | GPU | 模拟器 |
---|---|---|---|---|
Ubuntu | 3.7GHz Intel | 32G | NVIDIA RTX 3080 | Cityflow |
参数设置:
- Actor:三层MLP,分别为13、32、8;
- Critic:三层MLP,分别为13、64、1;
- V、R:拥有相同结构,三层MLP,分别为13、32、1。
- optim:Adam
- lr:0.0003
- 折扣因子 γ \gamma γ:0.99
- GAE参数 λ \lambda λ:0.95
- batch_size:20
- PPO-clip裁剪参数 ϵ \epsilon ϵ:0.2
实验将从对专家轨迹学习的有效性,预训练模型的泛化性等方面进行介绍。
**Baseline:**略
数据集:
- 真实单路口数据集:11个真实单路口数据集(S1-S11),来自杭州摄像头。基于杭州出租车数据统计,转向率为10%、60%和30%。
- 模拟多路口数据集:4个模拟多路口数据集(Syn1-Syn4),包括1×3、2×2、3×3和4×4。数据集车辆到达率是500辆/小时,符合高斯分布。
- 真实多路口数据集:5个真实多路口数据集(Hangzhou1、Hangzhou2、Jinan1、Jinan2、Jinan3),杭州数据集拥有16个路口,济南数据集有12个路口。
模仿学习性能
对每个Baseline在S1-S11上每个路口训练20个Episode,共220个Episode。专家轨迹则使用MP机制在每个路口生成的轨迹。
7 11 \frac{7}{11} 117的数据集上取得了最优或次优的效果。A2C和FedLight相同是由于FedLight在单路口数据集上退化为A2C。
InitLight最快收敛并且平均行驶时间最小,其他3个Baseline则需要更多的Episode才能收敛,并且波动更加显著(无专家轨迹指导)。
迁移学习性能
在不同的多路口数据集上进行了9个迁移任务,每个路口设置一个Agent。对特定的多路口数据集,训练200个Episode。
除InitLight在所有多路口数据集上使用相同的预训练模型,其他模型都是随机初始化。InitLight在几乎所有数据集上都取得了最好效果。
InitLight在5个Episode内就取得了收敛。
上表表示了模型收敛时的平均行驶时间和收敛的轮数。
可学习奖励函数质量
本文比较了Discriminator学习到的奖励和通过MP机制计算的真实奖励。
上图比较了单路口数据集在最后一个episode的奖励,每个episode包含360步(最小动作时间为10s,3600/10),奖励趋势相似。
轨迹趋势也相似。