Learning Combinatorial Optimization Algorithms over Graphs(部分精读)

背景

精确算法:不适用于大型数据集;

近似算法:无法确保最优解,目标是在多项式时间内尽可能地接近最优值。近似算法可能会受到弱最优性保证或经验影响,甚至是不可近似问题;

启发式算法:具体问题需具体分析,需要算法设计者进行大量针对特定问题的研究和反复试验。

全文所需定义

基本定义

G(V,E,ω)G(V,E,\omega)G(V,E,ω)VVVvectex(节点)vectex(节点)vectex(节点)EEEedge(边)edge(边)edge()ω\omegaω表示边的权重

μv\mu_vμvvvv节点的嵌入向量表示

N(v)N(v)N(v)GGGvvv节点的邻居集

SSS:表示已经得到的可行解,候选解为S‾=V−S\overline{S}=V-SS=VS

xxx:为二元决策向量,每一个维度xvx_vxv表示,如果vvv节点在SSS中,就是1,否则为0

S^\widehat{S}S :强化学习模块中,表示最终状态,即状态的末态

函数定义

h(S)h(S)h(S):将SSS映射到满足问题的特定约束的组合结构

c(h(S),G)c(h(S),G)c(h(S),G):决定已经得到的可行解质量如何

Q(h(S),v)Q(h(S),v)Q(h(S),v):评价函数,即对SSS,加入一个新的节点vvv,该节点可以让Q(h(S),v)Q(h(S),v)Q(h(S),v)取到最大值,如下:
S:=(S,v∗), where v∗:=argmaxv∈S‾Q(h(S),v) \begin{aligned}S&:=(S,v^*), \mathrm{~where~}v^*:=\text{argmax}_{v\in\overline{S}}Q(h(S),v)\end{aligned} S:=(S,v), where v:=argmaxvSQ(h(S),v)

Q^(h(S),v;Θ)\widehat Q(h(S),v;\Theta)Q (h(S),v;Θ):评价函数,较上面更加一般化,具有一个深度学习参数Θ\ThetaΘ,避免Q(h(S),v)Q(h(S),v)Q(h(S),v)在设计上较难的问题(图上的深度学习架构)

Q∗Q^*Q:表示强化学习问题中的最优QQQ函数

图嵌入

Structure2Vec

​ structure2vec 根据输入图结构 G 递归地定义网络架构,节点特定的标签或特征xvx_vxv根据 G 的图拓扑递归聚合,经过几步递归后,网络将为每个节点生成一个新的嵌入,同时考虑到图特征和这些节点特征之间的远程交互。

​ 每一个节点的初始化embedding为0,对于所有v ∈ V ,在第t次迭代同步更新embedding:
μv(t+1)←F(xv,{μu(t)}u∈N(v),{w(v,u)}u∈N(v);Θ) \mu_{v}^{(t+1)}\leftarrow F\left(x_{v},\{\mu_{u}^{(t)}\}_{u\in\mathcal{N}(v)},\{w(v,u)\}_{u\in\mathcal{N}(v)};\Theta\right) μv(t+1)F(xv,{μu(t)}uN(v),{w(v,u)}uN(v);Θ)
​ 只有在前一轮所有节点的嵌入更新完成后,才会开始新一轮的遍历节点的嵌入。 不难看出,更新还定义了一个过程,其中节点特征xvx_vxv通过非线性传播函数 F 传播到其他节点。 此外,执行的更新迭代越多,节点特征将传播得越远,并在远处节点处非线性聚合。 最后,如果一个节点在 T 次迭代后终止,则每个embedding:μv(T)\mu_{v}^{(T)}μv(T)的节点将包含有关其 T -hop邻域的信息,这也是GNN的精髓所在。

​ 大量实验表明,GNN不适合层数过深,因此本文的迭代总次数T设定为4.

Parameterizing:Q^\widehat{Q}Q

针对上面提到的式子,可以将非线性变换F具象出来,变为如下式子:
μv(t+1)←relu(θ1xv+θ2∑u∈N(v)μu(t)+θ3∑u∈N(v)relu(θ4w(v,u))) \mu_{v}^{(t+1)}\leftarrow\mathrm{relu}\big(\theta_{1}x_{v}+\theta_{2}\sum_{u\in\mathcal{N}(v)}\mu_{u}^{(t)}+\theta_{3}\sum_{u\in\mathcal{N}(v)}\mathrm{relu}(\theta_{4}w(v,u))\big) μv(t+1)relu(θ1xv+θ2uN(v)μu(t)+θ3uN(v)relu(θ4w(v,u)))
其中:θ1∈Rp,θ2,θ3∈Rp×p and θ4∈Rp\theta_{1}\in\mathbb{R}^{p},\theta_{2},\theta_{3}\in\mathbb{R}^{p\times p}\mathrm{~and~}\theta_{4}\in\mathbb{R}^{p}θ1Rp,θ2,θ3Rp×p and θ4Rp,这些都是模型参数

针对上面公式:

  • 邻居上的求和是聚合邻居信息的一种方式,该邻居信息对邻居上的排列是不变的
  • 为了使非线性变换更强大,可以在汇集相邻嵌入μv\mu_vμv之前添加更多的relu层

因此到此处,已经求出来了各个节点对应的嵌入向量表达,接着用这些嵌入向量来进一步表示Q^(h(S),v;Θ)\widehat Q(h(S),v;\Theta)Q (h(S),v;Θ)
Q^(h(S),v;Θ)=θ5⊤relu⁡([θ6∑u∈Vμu(T),θ7μv(T)]) \widehat Q(h(S),v;\Theta)=\theta_5^\top\operatorname{relu}([\theta_6\sum_{u\in V}\mu_u^{(T)},\theta_7\mu_v^{(T)}]) Q (h(S),v;Θ)=θ5relu([θ6uVμu(T),θ7μv(T)])
其中:θ5∈R2p,θ6,θ7∈Rp×p,[⋅,⋅]\theta_{5}\in\mathbb{R}^{2p},\theta_{6},\theta_{7}\in\mathbb{R}^{p\times p},[· , ·]θ5R2p,θ6,θ7Rp×p,[⋅,⋅]表示连接运算符

分析公式,其本质是:

  • 将节点vvv的嵌入μv\mu_vμv作为节点vvv的代替代
  • 将整张图的池化嵌入∑u∈Vμu(T)\sum_{u\in V}\mu_u^{(T)}uVμu(T)作为h(S)h(S)h(S)的替代
  • 由于Q^\widehat QQ 的计算用到了μv\mu_vμv,因此其本质上由7个参数来控制:Θ={θi}i=17\Theta=\{\theta_i\}_{i=1}^7Θ={θi}i=17

图嵌入小结

​ 以前,graph embedding方法需要为每个输入图 GGG 提供一个真实标签,以便训练 Structure2vec 架构。 在那种情况下,嵌入的输出与 softmax 层相关联,因此可以通过最小化交叉熵损失来端到端地训练参数。

​ 由于本例中缺乏训练标签,这种方法不适用于我们的案例。 相反,我们使用强化学习对这些参数进行端到端的训练。

训练:Q-learning

强化学习基本元素构成

  • 要训练的函数:Q^\widehat{Q}Q ,也就是强化学习中的状态-价值函数

  • State:一个ppp维的向量,表征图G的一系列节点node,即:∑v∈Vμv\sum_{v\in V}\mu_vvVμv

    值得注意的是,针对该论文,状态的末态表示为:S^\widehat{S}S

  • Transition:将最新选取的节点,其标签xvx_vxv的值,置为1即可

  • Action:节点的选择,选择一个节点vvv放入SSS

  • Reward:函数表达为:r(S,v)r(S,v)r(S,v),表示采取动作后到达的新状态和原本状态的“解质量”的差值,具体如下:
    r(S,v)=c(h(S′),G)−c(h(S),G) \begin{aligned}r(S,v)&=c(h(S'),G)-c(h(S),G)\end{aligned} r(S,v)=c(h(S),G)c(h(S),G)
    其中S′:=(S,v)S^{\prime}:=(S,v)S:=(S,v),此时需要注意的是,对于初态:c(h(∅),G)=0c(h(\emptyset),G)=0c(h(),G)=0

​ 通过该初值的限制,就可以实现如下等式:
R(S^)=∑i=1∣S^∣r(Si,vi)=c(h(S^),G) \begin{aligned}R(\widehat{S})=\sum_{i=1}^{|\widehat{S}|}r(S_i,v_i)\end{aligned} =c(h(\widehat{S}),G) R(S )=i=1S r(Si,vi)=c(h(S ),G)

  • Policy:基于学习到的Q^\widehat{Q}Q 来确定,是一个确定性的贪心策略:
    π(v∣S):=argmax⁡v′∈S‾Q(h(S),v′) \begin{aligned}\pi(v|S)&:=\operatorname{argmax}_{v'\in\overline{S}}Q(h(S),v')\end{aligned} π(vS):=argmaxvSQ(h(S),v)

学习算法

  • Loss-function:
    (y−Q^(h(St),vt;Θ))2 \begin{aligned}(y-\widehat{Q}(h(S_t),v_t;\Theta))^2\end{aligned} (yQ (h(St),vt;Θ))2
    其中对于非终态的1−step1-step1step而言,
    y=γmax⁡v′Q^(h(St+1),v′;Θ)+r(St,vt) \begin{aligned}y=\gamma\max_{v'}\widehat{Q}(h(S_{t+1}),v';\Theta)+r(S_{t},v_{t})\end{aligned} y=γvmaxQ (h(St+1),v;Θ)+r(St,vt)

​ 有意思的是,对于n−stepn-stepnstep更新来说,这种结构更适合延时奖励的获取,即1−step1-step1step可能过于短视,n−stepn-stepnstep可以对未来奖励的估计更加准确。但是对于n−stepn-stepnstep而言,其和1−step1-step1step的差异并不体现在loss−functionloss-functionlossfunction上,而是体现在目标上,此时yyy的取值变为如下:
y=∑i=0n−1r(St+i,vt+i)+γmax⁡v′Q^(h(St+n),v′;Θ) y=\sum_{i=0}^{n-1}r(S_{t+i},v_{t+i})+\gamma\operatorname*{max}_{v^{\prime}}\widehat{Q}(h(S_{t+n}),v^{\prime};\Theta) y=i=0n1r(St+i,vt+i)+γvmaxQ (h(St+n),v;Θ)
​ 对于学习过程,可以生成一批样本之后再进行批量的学习,即从经验回放池中读取一批数据集EEE来进行Q^\widehat{Q}Q 函数的更新学习,数据集的形式如下:
(St,at,Rt,t+n,St+n)Rt,t+n=∑i=0n−1r(St+i,at+i) (S_t,a_t,R_{t,t+n},S_{t+n}) \\ R_{t,t+n}=\sum_{i=0}^{n-1}r(S_{t+i},a_{t+i}) (St,at,Rt,t+n,St+n)Rt,t+n=i=0n1r(St+i,at+i)
​ 即从经验回放池中,随机抽取EEE,再进行随机梯度更新!

​ 此处的Q- learning(DQN)是一个off-policy方法。众所周知,诸如 Q-learning 之类的强化学习算法比其策略梯度算法的样本效率(sample-efficient)更高。主要是由于策略梯度方法需要在function approximator(函数逼近器)的每次参数更新后获得新策略的策略样本。

伪代码

在这里插入图片描述

评估

(没有仔细去总结!)

1:预训练

2:时间因素

3:精度因素

总结

​ 本文提出了一个端到端的机器学习框架,用于为图上的NP-Hard组合优化问题自动设计贪婪启发式算法。 该方法的核心是将deep graph embedding与RL相结合。 通过广泛的实验评估,我们证明了与手动设计的贪心算法相比,所提出的框架在学习贪心启发式算法方面的有效性。 学习启发式算法的出色性能在多个不同的问题、图类型和图大小上是一致的,这表明该框架是一种很有前途的新工具,用于设计图问题的算法。

https://zhuanlan.zhihu.com/p/551714846
https://arxiv.org/abs/1704.01665

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐