摘要
在神经组合优化问题(CO)中,强化学习(RL)可以将一个深度学习网络转为一个快速、有力的启发式NP-hard问题的解决器。这种方法在实际中有巨大的潜力,因为它能在没有大量专业知识专家指导的情况下发现近似最优解。我们引入了带有多最优解的策略优化(Policy Optimization with Multiple Optima (POMO)),一种用来建立上述启发式解决器的端到端方法。POMO可应用于很大范围的组合优化问题。它被设计利用组合优化解决方案的对称性。POMO使用强迫多样化的预演(rollout)朝向所有最优解决方案的改良REINFORCE算法。以经验为主地,POMO的低方差baseline使得RL训练更快和稳定,同时与以前的方法相比,它更能抵抗局部极小值。我们也引入了一个新的基于增强的推理方法(augmentation-based inference method),能够很好地配合POMO方法。我们通过解决三个热门的NP-hard问题,既旅行商(TSP)、有能力的车辆路径规划(CVRP)和0-1背包问题,展示了POMO方法的效率。对于这些问题,我们基于POMO的解决器相比最近学习的启发式方法展示了巨大的提升。特别地,我们实现了0.14%的最优gap在TSP100的数据及上,同时推理时间减少了一个数量级。
零、一些基础
1.梯度近似
强化学习从high level角度总共分为两大部分,分别是value-based method和policy-based method。
我们的目标都是求取策略 π ∗ π^* π∗,value-based采用了迂回的方法,计算出价值函数Q(利用贪婪、采样等策略),然后给出确定性策略,虽然可以采用 ε ε ε软性策略给一定的随机性,但本质仍是确定性策略。
如果想要随机策略或者动作空间为连续的情况下,则需要采用policy-based method。
给定状态
s
s
s,动作
a
a
a的参数化的概率分布如下:
π
(
a
∣
s
;
θ
)
\pi(a|s;\theta)
π(a∣s;θ)
可连续,可离散,接下来构建一个目标函数,其中
s
0
s_0
s0代指“任意状态”:
J
(
θ
)
≜
V
π
(
s
0
)
J(\theta) \triangleq V_{\pi}(s_0)
J(θ)≜Vπ(s0)
定义平均次数
η
(
s
)
\eta(s)
η(s),h为初始平均次数,后续步骤需要考虑状态、动作和上一步:
η
(
s
)
=
h
(
s
i
n
i
t
i
a
l
)
+
∑
s
‾
η
(
s
‾
)
∑
a
π
(
a
∣
s
‾
)
p
(
s
∣
s
‾
,
a
)
=
∑
k
=
0
T
−
1
P
r
(
s
0
→
s
,
k
,
π
)
\eta(s)=h(s_{ initial})+\sum_{\overline{s}} \eta(\overline{s})\sum_{a} \pi (a|\overline{s})p(s|\overline{s},a) \\ =\sum_{k=0}^{T-1}Pr(s_0→s,k,\pi)
η(s)=h(sinitial)+s∑η(s)a∑π(a∣s)p(s∣s,a)=k=0∑T−1Pr(s0→s,k,π)
定义出现概率
μ
(
s
)
\mu(s)
μ(s):
μ
(
s
)
=
η
(
s
)
∑
s
′
η
(
s
′
)
\mu(s)=\frac{\eta(s)}{\sum_{s'}\eta(s')}
μ(s)=∑s′η(s′)η(s)
2.策略梯度定理
▽
V
π
(
s
)
=
▽
∑
a
π
(
a
∣
s
)
⋅
q
π
(
s
,
a
)
=
∑
a
[
▽
π
(
a
∣
s
)
⋅
q
π
(
s
,
a
)
]
+
π
(
a
∣
s
)
⋅
▽
q
π
(
s
,
a
)
]
\begin{align*} \triangledown V_{\pi}(s) &=\triangledown \sum_{a}\pi(a|s) \cdot q_{\pi}(s,a) \\ &=\sum_{a}[\triangledown \pi(a|s) \cdot q_{\pi}(s,a)]+\pi(a|s) \cdot \triangledown q_{\pi}(s,a)] \\ \end{align*}
▽Vπ(s)=▽a∑π(a∣s)⋅qπ(s,a)=a∑[▽π(a∣s)⋅qπ(s,a)]+π(a∣s)⋅▽qπ(s,a)]
其中,
▽
q
π
(
s
,
a
)
=
▽
∑
s
′
,
r
p
(
s
′
,
r
∣
s
,
a
)
⋅
(
r
+
γ
V
π
(
s
′
)
)
\triangledown q_{\pi}(s,a)=\triangledown \sum_{s',r} p(s',r|s,a) \cdot (r+\gamma V_{\pi}(s'))
▽qπ(s,a)=▽s′,r∑p(s′,r∣s,a)⋅(r+γVπ(s′))
为推导便利,这里假设折扣率
γ
\gamma
γ为1,上式和
θ
\theta
θ有关的只有
V
π
(
s
′
)
V_{\pi}(s')
Vπ(s′)
▽
q
π
(
s
,
a
)
=
∑
s
′
p
(
s
′
∣
s
,
a
)
⋅
▽
V
π
(
s
′
)
\triangledown q_{\pi}(s,a) = \sum_{s'} p(s'|s,a) \cdot \triangledown V_{\pi}(s')
▽qπ(s,a)=s′∑p(s′∣s,a)⋅▽Vπ(s′)所以,
▽
V
π
(
s
)
=
∑
a
▽
π
(
a
∣
s
)
⋅
q
π
(
s
,
a
)
+
π
(
a
∣
s
)
⋅
∑
s
′
p
(
s
′
∣
s
,
a
)
⋅
▽
V
π
(
s
′
)
]
\triangledown V_{\pi}(s)=\sum_{a}\triangledown \pi(a|s) \cdot q_{\pi}(s,a)+\pi(a|s) \cdot \sum_{s'} p(s'|s,a) \cdot \triangledown V_{\pi}(s')]
▽Vπ(s)=a∑▽π(a∣s)⋅qπ(s,a)+π(a∣s)⋅s′∑p(s′∣s,a)⋅▽Vπ(s′)]
如此得到关于
V
(
s
)
V(s)
V(s)和
V
(
s
′
)
V(s')
V(s′)的迭代,进一步展开可得,
▽
V
π
(
s
)
=
∑
a
{
▽
π
(
a
∣
s
)
⋅
q
π
(
s
,
a
)
+
π
(
a
∣
s
)
⋅
∑
s
′
p
(
s
′
∣
s
,
a
)
⋅
[
∑
a
′
▽
π
(
a
′
∣
s
′
)
⋅
q
π
(
s
′
,
a
′
)
+
π
(
a
′
∣
s
′
)
⋅
∑
s
′
′
p
(
s
′
′
∣
s
′
,
a
′
)
⋅
▽
V
π
(
s
′
′
)
]
}
\triangledown V_{\pi}(s)=\sum_{a} \{ \triangledown \pi(a|s) \cdot q_{\pi}(s,a)+\pi(a|s) \cdot \sum_{s'} p(s'|s,a) \cdot [\sum_{a'}\triangledown \pi(a'|s') \cdot q_{\pi}(s',a')+\pi(a'|s') \cdot \sum_{s''} p(s''|s',a') \cdot \triangledown V_{\pi}(s'')] \}
▽Vπ(s)=a∑{▽π(a∣s)⋅qπ(s,a)+π(a∣s)⋅s′∑p(s′∣s,a)⋅[a′∑▽π(a′∣s′)⋅qπ(s′,a′)+π(a′∣s′)⋅s′′∑p(s′′∣s′,a′)⋅▽Vπ(s′′)]}
将上式子拆为三部分可以获得,
①
=
∑
a
▽
π
(
a
∣
s
)
⋅
q
π
(
s
,
a
)
=
∑
x
∈
S
P
r
(
s
→
x
,
0
,
π
)
⋅
∑
a
▽
π
(
a
∣
x
)
⋅
q
π
(
x
,
a
)
\begin{align*} ①&=\sum_{a} \triangledown \pi(a|s) \cdot q_{\pi}(s,a)\\ &=\sum_{x \in S} Pr(s→x,0,\pi) \cdot \sum_{a}\triangledown \pi(a|x) \cdot q_{\pi}(x,a) \end{align*}
①=a∑▽π(a∣s)⋅qπ(s,a)=x∈S∑Pr(s→x,0,π)⋅a∑▽π(a∣x)⋅qπ(x,a)
可知
P
r
(
s
→
x
,
0
,
π
)
=
1
Pr(s→x,0,\pi)=1
Pr(s→x,0,π)=1,
②
=
∑
a
π
(
a
∣
s
)
⋅
∑
s
′
p
(
s
′
∣
s
,
a
)
⋅
∑
a
′
▽
π
(
a
′
∣
s
′
)
⋅
q
π
(
s
′
,
a
′
)
=
∑
s
′
∑
a
π
(
a
∣
s
)
⋅
p
(
s
′
∣
s
,
a
)
⋅
∑
a
′
▽
π
(
a
′
∣
s
′
)
⋅
q
π
(
s
′
,
a
′
)
=
∑
s
′
P
r
(
s
→
s
′
,
1
,
π
)
⋅
∑
a
′
▽
π
(
a
′
∣
s
′
)
⋅
q
π
(
s
′
,
a
′
)
\begin{align*} ② &=\sum_{a}\pi(a|s) \cdot \sum_{s'} p(s'|s,a) \cdot \sum_{a'}\triangledown \pi(a'|s') \cdot q_{\pi}(s',a')\\ &=\sum_{s'} \sum_{a}\pi(a|s) \cdot p(s'|s,a) \cdot \sum_{a'}\triangledown \pi(a'|s') \cdot q_{\pi}(s',a')\\ &=\sum_{s'} Pr(s→s',1,\pi) \cdot \sum_{a'}\triangledown \pi(a'|s') \cdot q_{\pi}(s',a') \end{align*}
②=a∑π(a∣s)⋅s′∑p(s′∣s,a)⋅a′∑▽π(a′∣s′)⋅qπ(s′,a′)=s′∑a∑π(a∣s)⋅p(s′∣s,a)⋅a′∑▽π(a′∣s′)⋅qπ(s′,a′)=s′∑Pr(s→s′,1,π)⋅a′∑▽π(a′∣s′)⋅qπ(s′,a′)
写为通式可得,
②
=
∑
x
∈
S
P
r
(
s
→
x
,
k
,
π
)
⋅
∑
a
▽
π
(
a
∣
x
)
⋅
q
π
(
x
,
a
)
②=\sum_{x \in S} Pr(s→x,k,\pi) \cdot \sum_{a}\triangledown \pi(a|x) \cdot q_{\pi}(x,a)
②=x∈S∑Pr(s→x,k,π)⋅a∑▽π(a∣x)⋅qπ(x,a)
③
=
π
(
a
′
∣
s
′
)
⋅
∑
s
′
′
p
(
s
′
′
∣
s
′
,
a
′
)
⋅
▽
V
π
(
s
′
′
)
③=\pi(a'|s') \cdot \sum_{s''} p(s''|s',a') \cdot \triangledown V_{\pi}(s'')
③=π(a′∣s′)⋅s′′∑p(s′′∣s′,a′)⋅▽Vπ(s′′)
由此,可以得到,
∞
\infty
∞与
T
−
1
T-1
T−1等价,
▽
J
(
θ
)
=
∑
s
∈
S
∑
k
=
0
∞
P
r
(
s
0
→
s
,
k
,
π
)
∑
a
▽
π
(
a
∣
s
)
q
π
(
s
,
a
)
=
∑
s
∈
S
η
(
s
)
∑
a
▽
π
(
a
∣
s
)
q
π
(
s
,
a
)
=
∑
s
′
η
(
s
′
)
∑
s
∈
S
μ
(
s
)
∑
a
▽
π
(
a
∣
s
)
q
π
(
s
,
a
)
\begin{align*} \triangledown J(\theta)&=\sum_{s \in S} \sum_{k=0}^{\infty}Pr(s_0→s,k,\pi) \sum_{a} \triangledown \pi(a|s) q_\pi(s,a)\\ &=\sum_{s \in S} \eta(s) \sum_{a} \triangledown \pi(a|s) q_\pi(s,a)\\ &=\sum_{s'} \eta(s') \sum_{s \in S} \mu(s) \sum_{a} \triangledown \pi(a|s) q_\pi(s,a)\\ \end{align*}
▽J(θ)=s∈S∑k=0∑∞Pr(s0→s,k,π)a∑▽π(a∣s)qπ(s,a)=s∈S∑η(s)a∑▽π(a∣s)qπ(s,a)=s′∑η(s′)s∈S∑μ(s)a∑▽π(a∣s)qπ(s,a)
其中,
∑
s
′
η
(
s
′
)
\sum_{s'} \eta(s')
∑s′η(s′)是一个常数,我们只关心梯度的方向,至于大小并不关心,省略后可得,
▽
J
(
θ
)
∝
∑
s
∈
S
μ
(
s
)
∑
a
▽
π
(
a
∣
s
)
q
π
(
s
,
a
)
\triangledown J(\theta) \propto \sum_{s \in S} \mu(s) \sum_{a} \triangledown \pi(a|s) q_\pi(s,a)
▽J(θ)∝s∈S∑μ(s)a∑▽π(a∣s)qπ(s,a)
3.REINFORCE
由零、2.,我们已知,
▽
J
(
θ
)
∝
∑
s
∈
S
μ
(
s
)
∑
a
▽
π
(
a
∣
s
)
q
π
(
s
,
a
)
\triangledown J(\theta) \propto \sum_{s \in S} \mu(s) \sum_{a} \triangledown \pi(a|s) q_\pi(s,a)
▽J(θ)∝s∈S∑μ(s)a∑▽π(a∣s)qπ(s,a)
可以写为期望形式,
s
s
s使用随机变量
S
t
S_t
St表示,
=
E
π
[
∑
a
▽
π
(
a
∣
S
t
)
q
π
(
S
t
,
a
)
]
=
E
π
[
∑
a
π
(
a
∣
S
t
)
▽
π
(
a
∣
S
t
)
π
(
a
∣
S
t
)
q
π
(
S
t
,
a
)
]
=
E
π
[
▽
π
(
A
t
∣
S
t
)
π
(
A
t
∣
S
t
)
q
π
(
S
t
,
a
)
]
=
E
π
[
▽
log
π
(
A
t
∣
S
t
)
⋅
q
π
(
S
t
,
a
)
]
\begin{align*} &=E_{\pi}[\sum_{a} \triangledown \pi(a|S_t)q_\pi(S_t,a)] \\ &=E_{\pi}[\sum_{a} \pi(a|S_t) \frac{\triangledown \pi(a|S_t)}{\pi(a|S_t)}q_\pi(S_t,a)] \\ &=E_{\pi}[ \frac{\triangledown \pi(A_t|S_t)}{\pi(A_t|S_t)}q_\pi(S_t,a)] \\ &=E_{\pi}[ \triangledown \log \pi(A_t|S_t) \cdot q_\pi(S_t,a)] \\ \end{align*}
=Eπ[a∑▽π(a∣St)qπ(St,a)]=Eπ[a∑π(a∣St)π(a∣St)▽π(a∣St)qπ(St,a)]=Eπ[π(At∣St)▽π(At∣St)qπ(St,a)]=Eπ[▽logπ(At∣St)⋅qπ(St,a)]
已知,
q
π
(
s
,
a
)
=
E
π
[
G
t
∣
S
t
=
s
,
A
t
=
a
]
q
π
(
S
t
,
A
t
)
=
E
π
[
G
t
]
q_\pi(s,a)=E_{\pi}[G_t|S_t=s,A_t=a]\\ q_\pi(S_t,A_t)=E_{\pi}[G_t]
qπ(s,a)=Eπ[Gt∣St=s,At=a]qπ(St,At)=Eπ[Gt]
蒙特卡洛采样可得,
=
E
π
[
G
t
▽
log
π
(
A
t
∣
S
t
;
θ
)
]
=E_{\pi}[ G_t \triangledown \log \pi(A_t|S_t;\theta) ] \\
=Eπ[Gt▽logπ(At∣St;θ)]
其中,
θ
t
+
1
=
θ
t
+
α
⋅
G
t
▽
log
π
(
A
t
∣
S
t
;
θ
t
)
\theta_{t+1}=\theta_{t}+\alpha \cdot G_t \triangledown \log \pi (A_t|S_t;\theta_t)
θt+1=θt+α⋅Gt▽logπ(At∣St;θt)
4.REINFORCE with Baseline
由零、2.,我们增加一个
b
(
s
)
b(s)
b(s),
▽
J
(
θ
)
∝
∑
s
∈
S
μ
(
s
)
∑
a
▽
π
(
a
∣
s
)
(
q
π
(
s
,
a
)
−
b
(
s
)
)
\triangledown J(\theta) \propto \sum_{s \in S} \mu(s) \sum_{a} \triangledown \pi(a|s) (q_\pi(s,a)-b(s))
▽J(θ)∝s∈S∑μ(s)a∑▽π(a∣s)(qπ(s,a)−b(s))
原生的REINFORCE方差太大了(由于蒙特卡洛采样方法),其中
b
(
s
)
b(s)
b(s)与
a
a
a无关,
∑
a
▽
π
(
a
∣
s
)
b
(
s
)
=
b
(
s
)
▽
∑
a
π
(
a
∣
s
)
\sum_{a} \triangledown \pi(a|s) b(s)=b(s) \triangledown \sum_{a} \pi(a|s)
a∑▽π(a∣s)b(s)=b(s)▽a∑π(a∣s)
因此,
θ
t
+
1
=
θ
t
+
α
⋅
(
G
t
−
b
(
S
t
)
)
▽
π
(
A
t
∣
S
t
,
θ
t
)
π
(
A
t
∣
S
t
,
θ
t
)
\theta_{t+1}=\theta_{t}+\alpha \cdot (G_t-b(S_t)) \frac{\triangledown \pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)}
θt+1=θt+α⋅(Gt−b(St))π(At∣St,θt)▽π(At∣St,θt)
5.REINFORCE Actor-Critic
相当于value-based和gradient-based的交集,其中Actor相当于policy(学习了
θ
\theta
θ的参数),Critic相当于value(学习了
w
w
w的参数)。
其中,
G
t
:
t
+
1
G_{t:t+1}
Gt:t+1表示的是goal,但只有t→t+1是真的,其他时刻如t+2,…,T,采用“自举”方法;
v
^
\hat{v}
v^为机器学习方法估算出来的。
θ
t
+
1
=
θ
t
+
α
⋅
(
G
t
:
t
+
1
−
v
^
(
S
t
,
w
)
)
▽
π
(
A
t
∣
S
t
,
θ
t
)
π
(
A
t
∣
S
t
,
θ
t
)
=
θ
t
+
α
⋅
(
R
t
+
1
+
γ
v
^
(
S
t
+
1
,
w
)
−
v
^
(
S
t
,
w
)
)
▽
π
(
A
t
∣
S
t
,
θ
t
)
π
(
A
t
∣
S
t
,
θ
t
)
=
θ
t
+
α
⋅
δ
t
▽
π
(
A
t
∣
S
t
,
θ
t
)
π
(
A
t
∣
S
t
,
θ
t
)
\begin{align*} \theta_{t+1}&=\theta_{t}+\alpha \cdot (G_{t:t+1}-\hat{v}(S_t,w)) \frac{\triangledown \pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)}\\ &=\theta_{t}+\alpha \cdot (R_{t+1}+\gamma\hat{v}(S_{t+1},w)-\hat{v}(S_t,w)) \frac{\triangledown \pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)}\\ &=\theta_{t}+\alpha \cdot \delta_t\frac{\triangledown \pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)}\\ \end{align*}
θt+1=θt+α⋅(Gt:t+1−v^(St,w))π(At∣St,θt)▽π(At∣St,θt)=θt+α⋅(Rt+1+γv^(St+1,w)−v^(St,w))π(At∣St,θt)▽π(At∣St,θt)=θt+α⋅δtπ(At∣St,θt)▽π(At∣St,θt)
6.多解旅行商问题
(0)来源
(1)摘要
目前的多数研究致力于延续的多解优化,很少有致力于离散多解优化的。本文设计了一个具有多个等优解的TSP基准套件,既MSTSP。为了解决该问题,我们提出了两种算法:基于邻域的遗传算法(NGA)和生态魔音算法(NMA)。
(2)MSTSP基准
多解旅行商问题 (MSTSP) 本质上是一个 TSP,但具有多个最优解。该基准包括 25 个 MSTSP。城市的数量从 9 到 66 个不等,最优解的数量从 4 个到 196 个不等。当最大适应度评估 (MaxFEs) 耗尽时,用于处理 MSTSP 的算法终止。
问题分为三类:简单的MSTSP、几何MSTSP、复合MSTSP
指标分为解决方案质量指标 F β F_{\beta} Fβ、多样性指标 D I DI DI。
(3)TSPLIB-ms
除了上述 MSTSP 基准之外,还可以通过著名的 TSPLIB 进一步评估 MSTSP 优化器。我们定义了 TSPLIB 的一个子集,名为 TSPLIB-ms,其中包含具有多个良好解决方案的八个实例:eil51、berlin52、st70、pr76、kroA100、lin105。
具体而言,提供的解决方案应满足以下两个要求。(1) 长度小于某个阈值长度:(1 + σ) × (TSPLIB提供的最佳游程长度),其中σ设置为0.1。(2) 任意两个解之间的共享距离(一种相似性度量)应小于λx(本例中的城市数),其中λ设置为0.8。
(4)MSTSP上的Demo
基于邻域的遗传算法(NGA)
T. Huang, Y. Gong and J. Zhang, “Seeking Multiple Solutions of Combinatorial optimization Problems: A Proof of Principle Study,” 2018 IEEE Symposium Series on Computational Intelligence (SSCI), Bangalore, India, 2018, pp. 1212-1218.
为了促进离散领域的多解研究,作者设计了多解旅行商问题的基准测试套件,并提出了两个评估指标。此外,为了解决这些问题,遗传算法结合了在离散空间中定义的生态位技术,即NGA。实验结果表明,所提出的算法在所获得解决方案的质量和多样性方面优于比较算法。
小生境模因算法(NMA)
T. Huang, Y. Gong, S. Kwong, H. Wang and J. Zhang, “A Niching Memetic Algorithm for Multi-Solution Traveling Salesman Problem,” IEEE Transactions on Evolutionary Computation. DOI: 10.1109/TEVC.2019.2936440.
本文提出了一种小生境模因算法(NMA)。所提出的算法的特点是采用利基保存技术,可以并行搜索多个最优解;平衡探索和开发的自适应邻域策略;一种关键的边缘感知方法,可以为复制提供有效的指导;和选择性局部搜索策略以提高搜索效率。实验结果表明,我们的算法优于其他对比算法。此外,采用所提出的算法来解决著名的 TSPLIB 库中的问题,以获得一组不同但良好的解决方案。
一、介绍
组合优化(CO)在物流、制造和分布供应链、顺序分销商领域扮演者重要的角色。运筹学(OR)社区对该问题进行了广泛的研究,但现实世界中的CO问题无处不在,而且每个问题都有其独特的约束条件,彼此不同。此外,这些限制往往会随着工作环境的变化而迅速变化。设计一种强大而高效的算法,并能在各种条件下统一应用,即使不是不可能,也是很棘手的。因此,工业中面临的许多CO问题通常都是用手工制作的启发式方法来处理的,尽管它们有缺点,由当地专家设计。
在计算机视觉(CV)和自然语言处理(NLP)领域,基于专家手工特征工程的经典方法现在已经被自动化的端到端深度学习算法所取代。监督学习的巨大进步,即学习从训练输入到标签的映射,使这一显著的转变成为可能。不幸的是,监督学习在很大程度上不适用于大多数CO问题,因为我们不能立即获得最优标签。相反,人们应该利用分数,这对于大多数CO解决方案来说是很容易计算的,来训练一个模型。强化学习范式非常适合组合优化问题。
最近的深度强化学习(RL)方法已经很有前景,为抽象的NP-hard CO问题找到了接近于最优的解决方案,如旅行商(TSP),有能力的车辆路由(CVRP)和0-1背包(KP)以优异的速度。我们通过引入带有多重优化的策略优化(POMO),为深度学习社区的这一团队努力做出了贡献。POMO提供了一个简单直接的框架,可以自动生成一个不错的求解器。它可以应用于广泛的一般CO问题,因为它使用CO本身的对称性,在CO解的顺序表示中发现。
我们通过使用相同的神经网络和相同的训练方法解决前面提到的三个NP-hard问题,即TSP, CVRP和KP,证明了POMO的有效性。我们的方法纯粹是数据驱动的,训练程序设计中的人工指导被保持到最低限度。更具体地说,它不需要在算法中插入特定问题的手工启发式。尽管它很简单,但我们的实验证实,与所有当代神经RL方法相比,POMO在减少最优性差距和推理时间方面取得了优越的性能。
本文的贡献有三个方面:
•我们识别了RL方法中的对称性,用于解决导致多重最优的CO问题。这种对称性可以在神经网络训练期间通过并行的多个铺开来利用,每个轨迹都有一个不同的最优解作为探索的目标。
•我们为策略梯度设计了一个新的低方差baseline。因为这个基线是从一组不同的轨迹中衍生出来的,学习变得不那么容易受到局部极小值的影响。
•我们提出了基于多个贪婪预演的推理方法,该方法比传统的抽样推理方法更有效。我们还介绍了一种实例增强技术,可以在推理阶段进一步利用CO问题的对称性。
二、相关工作
(1)深度强化学习构建法
Bello et al.——指针网络(PtrNet)
使用了actor-critic算法,证明神经最和优化可以实现TSP和KP问题的近似最优解。模型基于Seq2Seq结构,用了注意力算法机制。
Narari et al.——改善指针网络(PtrNet)
其他:与前者基于RNN的不同,基于Transformer的注意力模型,基于贪婪-预演的REINFORCE,类似于self-critical训练。已经应用于TSP,OP和VRP问题。
Peng et al.——注意力模型
Dai et al.——Struct2Vec
Khalil et al.——deep Q-learning
解决了TSP问题,最小顶点切割和最大顶点切割问题。部分解以图的形式嵌入,深度神经网络估计每个图的值。
(2)推理技术
——Active search
在单一的测试实例上优化策略。
——Sampling method
在多个解决方案中选择最好的。
——Beam search
用先进策略提升采样效率。
——经典启发式
经典的启发式运算如后处理也可以应用于神经网络生成的解,进一步提高解的质量。
(3)深度强化学习改善法
POMO属于上面总结的构造型RL方法的范畴,其中CO解决方案是由神经网络一次性创建的。
另一种方法,结合机器学习和启发式算法。训练神经网络来指导局部搜索算法,局部搜索算法在之前算法的基础上迭代地找到更好的解,直到时间预算耗尽。
三、激励
假设我们有一个联合优化问题,用一组节点表示
{
v
1
,
v
2
,
.
.
.
,
v
M
}
\{ v_1,v_2,...,v_M \}
{v1,v2,...,vM},有一个可训练的策略网络参数
θ
\theta
θ。一个解决方案
τ
=
(
a
1
,
.
.
.
,
a
M
)
\tau =(a_1,...,a_M)
τ=(a1,...,aM),其中第
i
i
i个动作
a
i
a_i
ai可以选择节点
v
j
v_j
vj,根据下式遵循随机策略,一次迭代一个节点生成,
π
t
=
{
p
θ
(
a
t
∣
s
)
for
t
=
1
p
θ
(
a
t
∣
s
,
a
1
:
t
−
1
)
for
t
∈
{
2
,
3
,
…
,
M
}
\pi_t= \begin{cases}p_\theta\left(a_t \mid s\right) & \text { for } t=1 \\ p_\theta\left(a_t \mid s, a_{1: t-1}\right) & \text { for } t \in\{2,3, \ldots, M\}\end{cases}
πt={pθ(at∣s)pθ(at∣s,a1:t−1) for t=1 for t∈{2,3,…,M}
其中
s
s
s为问题实例定义的状态。
起始动作
a
1
a_1
a1的选择严重影响后续动作的选择
(
a
2
,
a
3
,
.
.
.
,
a
M
)
(a_2,a_3,...,a_M)
(a2,a3,...,aM)。实际上,
a
1
a_1
a1的任何选择都应该同样好,我们试图找一种策略优化方法,可以充分利用这种对称性。
四、多最优解的策略优化POMO
1.多启动节点探索
POMO首先指定
N
N
N个不同的节点
{
a
1
1
,
a
1
2
,
.
.
.
,
a
1
N
}
\{a^1_1,a^2_1,...,a^N_1\}
{a11,a12,...,a1N} *(上文用v表示节点,a表示动作;这里却又用a表示节点了……,我觉得作者实际想表达的是初始动作的选择)*作为起始节点来探索。网络通过蒙特卡洛采样
N
N
N个轨迹解决方案
{
τ
1
,
τ
2
,
.
.
.
,
τ
N
}
\{ \tau^1,\tau^2,...,\tau^N \}
{τ1,τ2,...,τN},该轨迹被定义为如下序列,
τ
i
(
a
1
i
,
a
2
i
,
.
.
.
,
a
M
i
)
for
i
=
1
,
2
,
.
.
.
,
N
\tau^i(a_1^i,a_2^i,...,a_M^i) \text{ \ \ \ \ for \ }i=1,2,...,N
τi(a1i,a2i,...,aMi) for i=1,2,...,N
前文提到的RNN或者Transformer框架的方法,来自多采样轨迹的第一个节点总是由网络来做选择。一个可训练的START令牌(这些模型起源于NLP的遗产)被输入到网络中,并返回第一个节点。通常,使用这样的START令牌是明智的,因为它允许机器学习找到导致最佳解决方案的“正确”第一步。
然而,在存在多个“正确”的第一步时,它会迫使机器倾向于特定的起点,这可能会导致有偏见的策略。因此,当所有的第一步都同样好时,应用熵最大化技术来改进探索是明智的。熵最大化通常是通过在RL的目标函数中添加熵正则化项来实现的。然而,POMO直接最大化了第一个动作的熵,迫使网络总是产生多个轨迹,所有这些轨迹在训练过程中贡献相同。
请注意,这些轨迹与START令牌方案下重复采样的N个轨迹有根本不同。源自START令牌的每个轨迹都接近于单个最优路径,但是POMO的N个解轨迹将紧密匹配最优解的N个不同节点序列表示。从概念上讲,POMO的探索类似于引导学生从许多不同的角度反复解决同一个问题,让她接触到各种解决问题的技巧,否则这些技巧是没有用的。
2.策略梯度的共享基准
POMO基于REINFORCE算法。一旦我们采样了一个集合的轨迹解决方案
{
τ
1
,
τ
2
,
.
.
.
,
τ
N
}
\{ \tau^1, \tau^2,...,\tau^N \}
{τ1,τ2,...,τN},我们就可以计算出每个解决方案
τ
i
\tau^i
τi的全部回报
R
(
τ
i
)
R(\tau^i)
R(τi)。为了最大化期待收益
J
J
J,我们使用近似的梯度下降法。
∇
θ
J
(
θ
)
≈
1
N
∑
i
=
1
N
(
R
(
τ
i
)
−
b
i
(
s
)
)
∇
θ
log
p
θ
(
τ
i
∣
s
)
\nabla_\theta J(\theta) \approx \frac{1}{N} \sum_{i=1}^N\left(R\left(\tau^i\right)-b^i(s)\right) \nabla_\theta \log p_\theta\left(\boldsymbol{\tau}^i \mid s\right)
∇θJ(θ)≈N1i=1∑N(R(τi)−bi(s))∇θlogpθ(τi∣s)
其中,
p
θ
(
τ
i
∣
s
)
≡
∏
t
=
2
M
p
θ
(
a
t
i
∣
s
,
a
1
:
t
−
1
i
)
p_\theta\left(\boldsymbol{\tau}^i \mid s\right) \equiv \prod_{t=2}^M p_\theta\left(a_t^i \mid s, a_{1: t-1}^i\right)
pθ(τi∣s)≡∏t=2Mpθ(ati∣s,a1:t−1i)。
b
i
(
s
)
b^i(s)
bi(s)是一个有很多自由选择,以减少采样梯度方差的baseline。原则上来说,它是一个关于
a
1
i
a^i_1
a1i的函数,为每个轨迹
τ
i
\tau^i
τi分配不同的值。然而在POMO中,我们使用共享的baseline,
b
i
(
s
)
=
b
shared
(
s
)
=
1
N
∑
j
=
1
N
R
(
τ
j
)
for all
i
b^i(s)=b_{\text {shared }}(s)=\frac{1}{N} \sum_{j=1}^N R\left(\boldsymbol{\tau}^j\right) \text {\ \ \ \ for all } i
bi(s)=bshared (s)=N1j=1∑NR(τj) for all i
相比贪婪-预演策略,POMO的baseline在梯度策略中减少了方差。在上上式中的优势项,
R
(
τ
i
)
−
b
i
(
s
)
R(\tau^i)-b^i(s)
R(τi)−bi(s)对于POMO有零均值,然而,贪婪的baseline在大多数情况下会带来劣势。这是因为采样-预演(遵循策略的softmax)在多数情况下在解决方案质量上难以超越贪婪-预演(遵循策略的argmax)。此外,相比其他深度强化学习方法,POMO baseline可以更高效地计算,因为前者需要单独的训练网络(critic)或克隆的策略网络(贪婪-预演)。
最重要的是,POMO使用的共享基线使RL训练对局部极小值具有很强的抵抗力。当生成
N
N
N个解决方案轨迹
{
τ
1
,
τ
2
,
.
.
.
,
τ
N
}
\{ \tau^1, \tau^2,...,\tau^N \}
{τ1,τ2,...,τN}时,如果我们不使用共享的baseline,同时严格坚持使用贪婪-预演来代替,则每个采样-预演
τ
i
\tau^i
τi将被独立评估。与具有相同起始节点
a
1
i
a^i_1
a1i的贪婪-预演对应相比,产生
τ
i
\tau^i
τi的操作仅通过其表现更好(或更差)的程度来加强。因为这种训练方法是由两个密切相关的网络产生的两个预演之间的差异来指导的,所以它很可能在actor和critic都以类似的方式表现不佳的状态下过早地收敛。然而,在共享baseline的情况下,每个轨迹现在都与N−1个其他轨迹竞争,其中没有两个轨迹是相同的。随着异构轨迹数量的增加,所有这些都有助于将baseline设置在正确的水平,过早收敛到次优策略是非常不鼓励的。
3.推理的多贪婪轨迹
CO问题的构造型神经网络模型一般有两种预演模式。
在“贪婪模式”中,使用策略上的argmax绘制单个确定性轨迹。
在“采样模式”中,根据概率策略从网络中采样多个轨迹。
采样解的平均回报可能比贪婪解的回报小,但在计算代价上,采样可以根据需要重复多次。在大量采样解的情况下,可以找到一些奖励大于贪婪-预演的解。
使用多开始节点POMO的方法,就可以产生不止一条而是多条贪婪轨迹。从
N
N
N个不同的节点
{
a
1
1
,
a
1
2
,
.
.
.
,
a
1
N
}
\{ a^1_1,a^2_1,...,a^N_1 \}
{a11,a12,...,a1N}开始,
N
N
N个不同的贪婪轨迹可以确定地获得,从中可以选择类似于“采样模式”方法。
N
N
N个贪婪轨迹在大多数情况下优于
N
N
N个采样轨迹。
(1)增加实例
POMO的多贪婪预演方法的一个缺点是,一个人可以利用的贪婪预演的数量
N
N
N不能任意大,因为它被限制为有限个可能的起始节点。然而,在某些类型的CO问题中,可以通过引入实例增强来绕过这个限制。它是POMO核心思想的自然延伸,寻求不同的方法来达到相同的最优解决方案。如果你可以重新制定问题,让机器看到不同的问题,但却得到完全相同的解决方案呢?
例如,可以翻转或旋转二维路径优化问题中所有节点的坐标,并生成另一个实例,从中可以获得更多贪婪的轨迹。
实例增加的灵感来自自监督学习技术,该技术训练神经网络学习旋转图像之间的等价性。对于CV任务,有概念上类似的测试时间增强技术,如“多作物评估”,可以增强神经网络在推理阶段的性能。实例增强技术在CO任务上的适用性和多目标性取决于问题的具体情况,也取决于所使用的策略网络模型。附录中描述了更多关于实例增强的想法。
五、实验
0.基础
(1)注意力模型
注意力模型(AM)很适合POMO,尽管本文强调POMO是一种同样的RL方法,并不绑定到特定结构的策略网络。AM由编码器和解码器两个主要部分组成。大多数复杂的计算发生在多层编码器里,通过编码器,每个节点的信息及其与其他节点的关系被嵌入为一个向量。解码器使用这些向量作为点积注意力机制的
k
e
y
key
key,然后自回归地生成一个解序列。
要应用POMO,我们需要为CO问题的一个实例绘制多个(
N
N
N个)轨迹。这不会影响AM的编码过程,因为无论需要生成多少个轨迹,编码只需要一次。另一方面,AM的解码器需要处理
N
N
N倍于POMO的计算。通过将
N
N
N个
q
u
e
r
y
query
query叠加到一个矩阵中,并将其传递给注意力机制,可以有效地并行生成
N
N
N个轨迹。
(2)问题设置
对于TSP和CVRP,我们解决问题用一个设置在Kool et al.文章中描述的那样。对于0-1 KP,我们跟随Bello et al.的文章里的设置。
(3)训练
对于所有的实验,策略梯度是从一批64个实例中平均出来的。Adam优化器学习率 η = 1 0 − 4 \eta=10^{-4} η=10−4,权重延迟( L 2 L_2 L2正则化) w = 1 0 − 6 w=10^{-6} w=10−6。为了保持所有实验的训练条件简单和相同,我们没有应用衰减学习率,尽管我们建议在实践中使用经过微调的衰减学习率以实现更快的收敛。我们定义一个epoch 100,000个随机生成的训练实例。训练时间因问题的大小而异,从几个小时到一周不等。以TSP100为例,在单个Titan RTX GPU上,一个训练epoch大约需要7分钟。我们已经等待了2000个epoch(~ 1周)来观察完全收敛,大多数学习已经在200个epoch(~ 1天)完成。
(4)推理
我们报告里每个问题的10,000个实例的时间。对于路径问题,我们使用表中列出的坐标转换,
我们尝试了有和无
×
8
\times 8
×8的实例增加。没有实例增加被用于0-1 knapsack(KP),因为没有直接的方法。
自然而然的,Kool et al.已经用带有贪婪预演 baseline的REINFORCE算法训练了AM。两个单独训练的神经网络必须以相同的方式进行评估。由于POMO推理方法从多个答案中选择最好的,即使没有实例增强,这也给了POMO不公平的优势。因此,我们在我们的POMO训练网络上以“单轨迹模式”执行推理,其中随机选择一个起始节点来绘制单个贪婪预演。
请注意,当基于随机实例的小测试集(10,000)时,平均推断结果可能会波动。为了避免读者混淆,我们对表2中TSP结果的一些平均路径长度进行了轻微修改(基于报告的最优性差距),使它们与我们计算的最优值(使用超过10万个样本)一致,TSP20和TSP50分别为3.83和5.69。对于CVRP和KP,抽样误差甚至比TSP更大,因此在这种情况下,我们在结果的表示上更加谨慎。只有当结果表基于相同的测试集时,我们才会在结果表中显示“间隙”。
(5)代码
详见于:Github-POMO
1.旅行商问题
我们采用开始节点( N N N)为20个。结果如上表2所示。POMO在房安置了、效率、稳定性都有很大优势。结合使用多个贪婪的POMO预演和 × 8 \times 8 ×8实例增加,可以将最优性差距(gap)进一步缩小一个数量级。更详细的结果分析见文章原文
2.有能力的车辆路径规划问题
当POMO训练一个策略网络时,理想情况下,它应该只使用“好的”开始节点,从中推出最佳方案。但是,与TSP不同,并非CVRP中所有节点多可以成为最优轨迹的第一步(如上图所示),并且如果不事先知道最优解,就无法确定哪些节点是好的。解决此问题的一种方法是添加一个二级网络,该网络返回POMO使用的最佳开始节点和候选节点。然而,我们将这种方法留给未来的研究,在我们的CVRP实验中。我们简单地使用所有节点作为POMO探索的开始节点,而不管它们是好是坏。
这种应用POMO的简单方法仍然可以成为一个强大的求解器。表3报告了在客户节点为20、50和100的CVRP上的实验结果,POMO的性能大大优于简单的REINFORCE。请注意,目前还没有算法可以在合理的时间内找到10,000个随机CVRP实例的最优解,因此表中的“Gap”值是相对于LKH3结果给出的。POMO在CVRP100中的差距(0.32%)小于CVRP50(0.45%),这可能是由于随着问题规模的增长,LKH3的性能下降速度比POMO更快。
POMO是一种结构性方法,它与别的改善方法结合可以产生更好的结果。
3.0-1背包问题
我们选择KP来证明POMO在路由问题之外的灵活性。与CVRP的情况类似,我们重用TSP的神经网络,并采用简单的方法,使用实例中给出的所有项作为推出的第一步,避免设计额外的、更复杂的“开始节点选择”网络。求解KP时,每一项的权重和值代替TSP每个节点的x坐标和y坐标。当网络生成一个物品序列时,我们将这些物品一个接一个地放入背包中,直到包满,此时我们终止序列生成。
在表4中,POMO结果与基于动态规划的最优解、贪婪启发式的最优解以及我们的PtrNet实现和原始AM方法进行了比较。即使没有实例增强,POMO也极大地提高了从深度神经网络获得的解决方案的质量。
六、结论
POMO是一种基于深度强化学习的纯数据驱动的组合优化方法,它避免了由领域专家手工构建的启发式方法。在训练和推理阶段,POMO利用CO问题的多个最优解的存在,有效地引导自己达到最优。我们用旅行推销员(TSP)、有能力车辆路径(CVRP)和0-1背包(KP)问题对POMO进行了实证评估。对于这三个问题,我们发现与其他结构的深度RL方法相比,POMO在缩小最优性差距和减少推理时间方面达到了最先进的性能。
七、附录
A 实例增加
A.1 应用想法
坐标转换
本文中的TSP和CVRP实验遵循了节点位置从单位方格中随机抽样的设置,既 x ∼ ( 0 , 1 ) x\sim(0,1) x∼(0,1)和 y ∼ ( 0 , 1 ) y\sim(0,1) y∼(0,1)。实验中 × 8 \times 8 ×8的实例增加的所有变换都保留了 x x x和 y y y的范围,因此这些变换生成的新问题实例仍然有效。
但是为了改善推理结果,只要能够生成节点序列的(near-)最优排序,就不需要执着于“有效”问题实例符合设置规则。举个例子,旋转中心在(0.5,0.5)旋转10度。这个转换生成的新问题实例可能包含(也可能不包含)在单元方格之外的节点,但这也没啥。尽管策略网络仅使用单元方格内的节点进行训练,但可以合理假设,它仍可以在距离边界较近的节点上表现良好。只要网络能产生非零概率更好的替代结果,并且在时间预算上充足,这种不服从的转换在推理阶段仍值得尝试。
输入顺序
在AM模型中,输入数据的顺序并不重要,因为点注意力机制并不关心 q u e r y query query向量的堆叠顺序。但在实践中,POMO可以应用于其他类型的神经模型,例如基于RNN,LSTM等。对于这些神经网络,输入的顺序会影响结果。对位置编码(Transformer模型)同理。
CO问题的最优解应该是相同的,而不管输入数据的给定顺序如何。对输入集进行简单的重新排序可以导致上面描述的神经网络体系结构中使用POMO的实例增多。这可能比我们实验使用的 × 8 \times 8 ×8坐标转换更强大,因为输入重新排序会给出 N ! N! N!的数量增加。
A.2 无POMO训练的消融研究
ablation study往往是在论文最终提出的模型上,减少一些改进特征(如减少几层网络等),以验证相应改进特征的必要性。
在本文中,实例增加只应用于经过POMO训练的网络。但实例增加是一种通用的推理技术,可以用于其他深度RL协同求解器,不仅是构造型,还包括改进型。
我们进行了额外的实验,在原始AM网络上应用 × 8 \times 8 ×8实例增加,用REINFORCE基于贪婪预演baseline训练。有趣的是, × 8 \times 8 ×8增加(既从八个贪婪轨迹中选择最好的),将AM结果提高到抽样1280个轨迹所达到的类似水平。
B 旅行商问题
B.1 问题设置
我们需要找到连接所有 N N N个节点的最短环路,其中两个节点之间的距离是欧几里得距离。每个节点的位置是从单位方格中随机抽样的。
B.2 策略网络
POMO实验中使用的AM模型除了省略了起始节点选择部分外,与Kool et al. (我们称之为“原始AM论文”)的AM模型相同。
编码器
没有对POMO的实现进行任何更改。AM的编码器产生节点嵌入 h i \mathbf{h_i} hi其中 1 ≤ i ≤ n 1\leq i \leq n 1≤i≤n。我们定义 h ‾ \overline{\mathbf{h}} h为所有节点嵌入的均值。
译码器
在原始的AM论文里,译码器使用单独的“上下文节点嵌入”
h
(
c
)
h_{(c)}
h(c)作为译码器输入。由下式定义,
h
(
c
)
=
{
[
h
‾
,
h
π
t
−
1
,
h
π
1
]
t
>
1
[
h
‾
,
v
1
,
v
f
]
t
=
1
\mathbf{h}_{(c)}= \begin{cases}{\left[\overline{\mathbf{h}}, \mathbf{h}_{\pi_{t-1}}, \mathbf{h}_{\pi_1}\right]} & t>1 \\ {\left[\overline{\mathbf{h}}, \mathbf{v}^1, \mathbf{v}^{\mathrm{f}}\right]} & t=1\end{cases}
h(c)={[h,hπt−1,hπ1][h,v1,vf]t>1t=1
其中,
t
t
t为迭代次数,
h
π
t
\mathbf{h}_{\pi_{t}}
hπt是第
t
t
t个选择的节点嵌入。
v
1
v^1
v1,
v
f
v^f
vf为训练参数,使得
h
(
c
)
(
t
=
1
)
h_{(c)}(t=1)
h(c)(t=1)为一个可训练的START令牌。
在POMO中,我们使用
N
N
N个不同的上下文节点嵌入,
h
(
c
)
1
,
h
(
c
)
2
,
…
,
h
(
c
)
N
\mathbf{h}_{(c)}^1, \mathbf{h}_{(c)}^2, \ldots, \mathbf{h}_{(c)}^N
h(c)1,h(c)2,…,h(c)N。每个上下文节点嵌入有下面所得,
h
(
c
)
i
=
{
[
h
‾
,
h
π
t
−
1
i
,
h
π
1
i
]
t
>
1
none
t
=
1.
\mathbf{h}_{(c)}^i= \begin{cases}{\left[\overline{\mathbf{h}}, \mathbf{h}_{\pi_{t-1}}^i, \mathbf{h}_{\pi_1}^i\right]} & t>1 \\ \text { none } & t=1 .\end{cases}
h(c)i={[h,hπt−1i,hπ1i] none t>1t=1.
我们不使用上下文节点嵌入在
t
=
1
t=1
t=1是,因为POMO不使用译码器来决定第一个选择的节点。取而代之的,我们简单地定义,
h
π
1
i
=
h
i
for
i
=
1
,
2
,
…
,
N
.
\mathbf{h}_{\pi_1}^i=\mathbf{h}_i \quad \text { for } \quad i=1,2, \ldots, N \text {. }
hπ1i=hi for i=1,2,…,N.
B.3 超参数
节点嵌入是 d h d_h dh-维度,其中 d h = 128 d_h=128 dh=128。编码器有注意力层 N l a y e r = 6 N_{layer}=6 Nlayer=6,其中每层包含一个头数 M = 8 M=8 M=8的多头注意力层,同时 k e y key key, v a l u e value value, q u e r y query query的维度 d k = d v = d q = d h / M = 16 d_k=d_v=d_q=d_h/M=16 dk=dv=dq=dh/M=16。一个前馈子层在每个注意力层有维度 d f f = 512 d_{ff}=512 dff=512。这个超参数设置同样被用于CVRP和KP。
C 有能力的车辆路径规划问题
C.1 问题设置
有 N N N个顾客节点,它们的位置是从单位正方形中均匀采样的。一个顾客节点 i i i有一个需求 δ ^ i = δ i / D \hat{\delta}_i=\delta_i/D δ^i=δi/D,其中 δ i \delta_i δi从一个离散集合中均匀抽样 { 1 , 2 , . . . , 9 } \{ 1,2,...,9 \} {1,2,...,9}和 D = 30 , 40 , 50 D=30,40,50 D=30,40,50对于各自 N = 20 , 50 , 100 N=20,50,100 N=20,50,100。在单元方格内的随机位置创建一个额外的“仓库”节点。容量为1的配送车辆往返于仓库,根据客户的需求将货物运送到客户节点,并在仓库补充库存。我们不允许分割交付,这意味着每个客户节点只被访问一次。目标是找到车辆的最短路径。
C.2 策略网络
由于CVRP有一个固定的起点(仓库节点),POMO应用于路径中的第二个节点(要访问的第一个客户节点)。最初的AM方法将仓库节点作为策略网络的输入(即,仓库节点作为START令牌),然后选择第二个节点。在我们的POMO方法中,我们通过将所有客户节点指定为第二个节点来生成 N N N个不同的轨迹。
在TSP中,所有的轨迹都由相同数量的节点组成,这使得并行轨迹的生成非常简单。在CVRP中,车辆可以在车辆段多次停靠。规划得更好的路线往往会减少返回仓库的次数,使这些轨道比其他轨道更短。对于多个轨迹的并行处理,我们迫使没有更多交付的车辆停留在仓库,以固定的概率1,直到所有其他轨迹完成。这使得所有的轨迹都具有相等的长度,简化了使用张量的并行计算。注意,这不会改变车辆的总行程长度。更重要的是,这并不会改变神经网络的学习过程,因为常数概率1的梯度为零。
D 0-1背包问题
D.1 问题设置
我们准备了一组 N N N个物品,每个物品的重量和值都是从 ( 0 , 1 ) (0,1) (0,1)中随机抽取的。当 N = 50 , 100 , 200 N = 50,100,200 N=50,100,200时,背包的重量容量为 12.5 , 25 , 25 12.5,25,25 12.5,25,25。我们的目标是找到最优的物品子集,使总价值最大化,同时适合背包。
D.2 策略网络
我们重复使用TSP训练的神经网络用于解决KP,因为他们又同样的输入形式: N N N个元组 ( x , y ) ∈ { x ∈ R , y ∈ R : 0 ≤ x ≤ 1 , 0 ≤ y ≤ 1 } (x, y) \in\{x \in \mathbb{R}, y \in \mathbb{R}: 0 \leq x \leq 1,0 \leq y \leq 1\} (x,y)∈{x∈R,y∈R:0≤x≤1,0≤y≤1}。在TSP中, ( x , y ) (x,y) (x,y)是节点的 x − x- x−和 y − y- y−坐标,而在KP中,它是一个项目的重量和价值。在KP中,对一个项目(一个节点)的“访问”被解释为将其放入背包。在“上下文节点嵌入”中包含第一个和最后一个选定的项( h π t − 1 \mathbf{h}_{\pi_{t-1}} hπt−1和 h π 1 \mathbf{h}_{\pi_1} hπ1)似乎对构建KP的良好启发式没有必要,但我们采取了惰性方法,没有修改模型,让机器选择哪些信息是相关的。
然而,有些改变是必要的。求解TSP时,只有访问过的节点被屏蔽,不进行选择。在求解KP时,选择的物品(即访问过的节点)以及不再适合背包的物品将被掩盖。在TSP的情况下,当所有节点都被选中时,一集结束。在KP中,当所有剩余物品的重量大于背包的剩余容量时,它就结束了。
为了使多个轨迹包含相等数量的项(用于并行处理),将使用具有零值和权重的辅助项。对训练算法进行了改进。对于TSP,为了使行程长度最小化,使用负行程长度作为奖励。对于KP,所选物品的总价值(没有否定)被用作奖励。
E 我们对原始AM的实现
对于TSP和CVRP,我们论文中原始AM(由贪心预演 baseline的REINFORCE训练)的结果略好于原始AM论文中报道的结果。这种改进主要是由于我们一直在训练,直到我们使用更多的训练实例观察到训练曲线的收敛。为了充分披露,下面是我们在实现中所做的其他一些更改。
无论如何,我们在每个训练阶段之后都会更新评论网络(贪心预演 baseline从其中计算出来),而不需要额外的逻辑来决定是否根据与参与者的性能相比更新评论网络。我们使用更多的注意力层,这样可以将AM和POMO-训练的 AM在同框架下比较。对于所有问题,批处理大小固定为256个实例。当训练曲线收敛时,我们应用一次学习率衰减系数为0.1,并继续训练几个epoch。
八、主要参考文献
仅列出几个主要的文献,其余文献详见[1]
[1]Yeong-Dae Kwon, Jinho Choo, Byoungjip Kim, Iljoo Yoon, Seungjai Min,and Youngjune Gwon.POMO: Policy Optimization with Multiple Optima for Reinforcement Learning. arXiv preprint arXiv:2010.16011v3
[2]Wouter Kool, Herke van Hoof, and Max Welling. Attention, learn to solve routing problems! In International Conference on Learning Representations, 2019.
[3]Irwan Bello, Hieu Pham, Quoc V. Le, Mohammad Norouzi, and Samy Bengio. Neural combinatorial optimization with reinforcement learning. In ICLR (Workshop), 2017.
九、代码解析
【待补充】
相关领域
【待补充】