通过深度学习中的Attention机制求解TSP问题

Attention机制求解TSP问题

1. 基础知识

  深度学习中Attention机制的出现,使得NLP的发展取得了重大突破。 Attention机制模仿了生物观察行为的内部过程,即一种将内部经验和外部感觉对齐从而增加部分区域的观察精细度的机制。例如人的视觉在处理一张图片时,会通过快速扫描全局图像,获得需要重点关注的目标区域,也就是注意力焦点。然后对这一区域投入更多的注意力资源,以获得更多所需要关注的目标的细节信息,并抑制其它无用信息。
  VRP的本质就是序列决策问题,这意味着深度学习技术在VRP上也可能有所突破。使用完全端到端求解的深度强化学习方法可直接将问题的已知条件输入训练好的深度神经网络快速得到输出的序列决策,该神经网络使用强化学习算法向着总路径长度最小化的方向训练。
  目前一些学者使用了基于Encoder-Decoder的框架(目前大部分Attention模型都依附在Encoder-Decoder框架下,有关这一框架大家可以自行了解哦)。将问题已知条件通过各种形式输入到Encoder中并将Decoder的每一步输出状态通过与Encoder做Attention从而指向Encoder中的某一点形成指针网络用于端到端求解的序列决策。
  本博客以"Attention, learn to solve routing problems"为例子讲解这种完全端到端的求解方法。

2. 模型介绍

   VRP的目标是找到总成本最小的一组路径,每条路径中车辆从指定的仓库出发并最终回到 仓库,路径上的总需求不能超过车辆的承载能力。求解VRP的算法可分为精确算法和启发式算法。精确算法提供了最优的保证解,但由于计算复杂度高,无法处理大规模算例,而启发式算法往往速度快,但由于没有精确理论保证往往只能得到次优解。考虑到最优性和计算代价之间的权衡,启发式算法可以在大规模算例可接受的运行时间内找到次优解。然而,设计性能良好的启发式算法并不容易。
  设计启发式算法是一个繁琐的过程。我们可以使用深度强化学习的方法来设计完全端到端的神经网络,在不需要人工干预的情况下自动地学习到隐含的启发式信息,尽可能地达到与启发式算法相近的效果。
   对于本文求解的最经典的带容量限制的车辆路径规划问题(CVRP),一辆有特定容量限制的车辆负责从仓库节点出发,需要将货物运送到多个客户节点,当车辆容量不足以满足任何客户点的需求时,必须返回仓库将货物装满。该问题的解决方案可以看作一组路径序列,每个路径序列的起点和终点都在车站,中间经过的都是客户节点。
  VRP可以看作是一个连续的决策问题,可将编码器-解码器(Encoder-Decoder)架构作为解决这类问题的有效框架。以神经机器翻译(NMT)为例,编码器从源语言文本中提取句法结构和语义信息,然后解码器根据编码器给出的特征构造目标语言文本。由于求解VRP的输入输出均为特定内容的序列,所以编码器-解码器架构也可以用来求解VRP。首先利用编码器提取输入实例的特征,然后经过一系列的处理,最后用解码器迭代地构造解,在每个解序列的构建过程中,解码器预测选择每个节点的概率分布,然后选择一个节点将其放到当前已生成序列的末尾。因此,对每个输入实例X和模型的所有参数θ 该方法生成的解序列概率可由链式法则分解为如下:

  本篇推文的Encoder-Decoder框架借鉴了论文"Attention is all you need,31st Conference on Neural Information Processing Systems (NIPS 2017), Long Beach, CA, USA" 中提出的transformer模型,引入一个上下文向量来表示解码上下文,使用具有带确定性贪心基准值(greedy rollout baseline)的深度强化学习算法对模型进行训练。该模型将一个算例视为一个图,并提取节点特征来表示这样一个复杂的图结构,该结构捕获节点在其图邻居上下文中的属性,并根据这些节点特性逐步构造解。

2. 1 编码器 Encoder

  编码器(Encoder)部分的架构如下图所示,图中以输入四个点(n=4)为例,编码器产生所有输入节点的嵌入信息,这与transformer模型非常类似,其中使用了N个transformer模型中的注意力层,每个注意力层包含两个子层:多头注意力层(Multi-Head Attention layer, MHA)和全连接前馈层(fully connected Feed-Forward layer, FF),每个子层都使用了残差连接(Skip connection)和批归一化(Batch Normalization, BN)。
在这里插入图片描述
每个注意力层的计算过程如下式:

在这里插入图片描述
其中h_i分别由x_i经过全连接将维度扩展为后续计算的embedding_size得到,l表示所在的注意力层数,MHA表示节点i与所有节点进行多头注意力计算,过程如下:
在这里插入图片描述
由于输入的节点之间没有序列信息,故该架构去除了transformer模型中的位置序列编码部分。该编码器最后将所有节点的嵌入信息取平均得到整个图的嵌入信息,如下式:

在这里插入图片描述

2. 2 解码器 Decoder

  解码器的架构及其解码过程如下图所示,图中依然以四个点为例。解码是按顺序进行的,在第t步时,解码器根据编码器的图嵌入以及t’(t’< t)时刻产生的输出信息从而输出选择各个节点的概率。解码器计算编码器上的一个注意(子)层,但是为了提高计算效率,与编码器中每个节点都与其他所有节点进行信息交互不同的是,每一步解码只将编码器中计算得到的各节点嵌入信息发送到综合当前已有信息的Context node embedding中。
在这里插入图片描述
在解码器的每一步解码中,为得到综合当前已有信息的Context node embedding,首先将从编码器得到的图嵌入信息与每一步解码需要增加的信息嵌入(对于TSP的求解,增加的信息为起点和当前点的embedding;对于VRP的求解,增加的信息为当前点的embedding和车辆的剩余容量)做连接(即图中左上角的Concatenation部分,上图是该论文求解TSP为例的decoder模型图,如果求解VRP那么将Concatenation部分的后两位改成当前点的embedding和车辆的剩余容量即可),如下式所示
在这里插入图片描述
然后将结果与编码器中得到的所有节点通过一个多头注意力层(Multi-Head Attention layer, MHA)进行注意力计算后得到Context node embedding,如下式所示:
在这里插入图片描述
最后,将 Context node embedding 再与编码器中得到的所有节点进行注意力匹配后得到其与每个节点的匹配度,通过softmax函数对这些匹配度归一化后得到最后的选择每个节点的概率,这最后的概率是使用单头注意力机制计算的。解码的每一步中不允许在下一步中访问的点的选取概率会被置为0,即将其通过掩蔽过程(mask)去掉。

3 基于策略梯度的深度强化学习算法

  在"Attention, learn to solve routing problems"这篇论文中,该基于transformer模型的Encoder-Decoder架构的方法提出使用一种带确定性贪心基准值(greedy rollout baseline)的深度强化学习算法对模型进行训练,给定一些算例,训练的目标是最小化路径的总长度,将解码的每一步选择节点视为马尔可夫决策过程,不断地最小化策略梯度,该训练算法的伪码如下Algorithm 1。
在这里插入图片描述

算法中SampleRollout表示对该模型使用按节点选择的概率采样的策略得到解的神经网络;GreedyRollout表示对该模型使用取最大选择概率的节点的策略得到解的神经网络;OneSidedPairedTTest表示对当前SampleRollout和GreedyRollout的解做单侧配对t检验(α=5%),如果当前SampleRollout的解效果在该t检验中要显著好于GreedyRollout的解效果,那么就将GreedyRollout的网络参数更新为当前SampleRollout的网络参数。

  • 6
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值