研究列表

研究 01 · 强化学习 · 图神经网络

使用强化学习创建TSP路径的图模型

2018.09–2021.06 · 本科生研究助理
公开代码

我实现了基于图模型的 TSP 搜索程序,通过强化学习选择下一个插入路径的城市。

  1. 1以图的形式表示

    城市、距离、访问状态

  2. 2Structure2Vec + Q-learning

    计算每个城市的 Q 值

  3. 3城市选择和路径插入

    插入模型使用启发式算法选择的城市

强化学习设计

状态
城市连接(邻接矩阵)与距离,以及已加入路线的城市
动作
选择下一个加入路线的城市
奖励
加入城市后增加的路线长度直接作为扣分

参考NeurIPS 2017图组合优化研究实现

Reinforcement learningStructure2VecDeep Q-learningGraph neural networkTensorFlowNumPy

直接分配的角色和结果

研究目标
TSP 的可能路线数量会随城市增加而急剧增长,目标是比现有算法更快地找到更短的路线。我与指导教授一起尝试用强化学习来解决。
已分配角色
基于参考论文中的图表示和Q学习思想,我实现了连接TSP环境、模型、学习循环和插入规则的实验代码。
成果
我编写了一个搜索程序:把城市的位置、距离和访问状态作为图输入,并用插入启发式把模型选出的城市加入路线。用公开代码与基线进行对比实验时,我也找出了学习未能正常起作用的原因。

我内部实施和分析的内容

  • 包含节点、边、访问状态和路径成本记录的图环境
  • Structure2Vec嵌入和Q值评估
  • 连接多步奖励累积和经验采样的探索循环
  • 模型选择城市,插入启发式算法确定插入位置的结构。

基于研究 · 公开模型

  • NeurIPS 2017 用于图组合优化研究的 Structure2Vec/强化学习方法

实验结果与试错

短路学习中未观察到与随机插入相比的改进

使用原始设置进行训练后,该策略对所有城市和按数值顺序选定的城市都产生了相同的 Q 值。

  • TensorFlow 2.15
  • 3个随机种子
  • 训练轮数:10,000 → 100
动画演示了学习策略和最大插入法在50个相同的城市中逐个构建路径的过程。学习策略按数字顺序选择城市,生成的路径长度是OR工具的1.12倍,而最大插入法生成的路径长度是OR工具的1.08倍。
这是包含 50 个城市的路径生成过程。学习策略(左图)按数字顺序选择城市,生成的路径长度是 OR-Tools 解决方案的 1.12 倍;而最佳距离插入(右图)生成的路径长度是 OR-Tools 解决方案的 1.08 倍。下表显示了多个问题的平均值。
  • +12%以上 50 度示例 · OR-Tools 比太阳还长路径
  • 改进未确认与随机顺序插入相比,学习时间更短
  • 2 件事代码中发现原因
  1. 预期

    选择学习到的 Q 值使路径更短的城市

  2. 当时的判断

    随着训练路线成本有所下降,但没有达到最优解;当时认为是城市太多、探索不够充分

  3. 实际

    由于所有城市的 Q 值相同,因此按数值顺序选择

  4. 原因

    未归一化的邻域总和导致数值飙升,而 TD 目标仅考虑起始城市。

问题及解决方案

  1. 问题矩阵大小随城市数量而变化,无法直接输入固定尺寸的神经网络。

    已解决。用 Structure2Vec 为每个城市生成嵌入,再由评估网络为每个未访问的城市给出 Q 值。

  2. 问题仅选择下一个城市并不能确定它在路径上的位置。

    已解决。学习模型负责城市选择,而插入位置则结合了一种启发式算法,该算法旨在找到使路径长度增加最小的位置。

  3. 问题即使出现短路径,也很难区分是学习效应还是插入规则效应造成的。

    分析·验证我们对随机城市顺序应用了相同的插入规则进行比较,并跟踪了 Q 值和 TD 目标计算结果。我们没有发现短路学习策略有所改进。

实验对比及详细结果

学习策略和OR工具在50个相同的城市中生成的路径。学习策略路径长度增加了 1.12 倍,左侧有较长的边交叉。
这是两条已完成的路径。学习策略路径(左侧)比 OR 工具路径长 1.12 倍,且两条路径的长边相交。
四个场景展示了 20 个城市问题中的路径堆叠情况。图中显示了偶数城市、断裂的边和新生成的边。
路径的构建方式如下:当策略选择下一个城市(橙色圆点)时,插入函数会在路径扩展最小的位置切断边(虚线),并用一条新边连接。
50 个城市和 100 个城市问题中不同方法的平均路径长度比率。学习策略 1.13 和 1.12,随机顺序插入 1.14 和 1.13,最佳距离插入 1.05 和 1.06。
OR-Tools 设置为 1.00 时的平均路径长度。学习策略与随机有序插入几乎相同,并且比简单的最接近插入更长。
相对于 OR-Tools 解的平均路径长度比 · 训练范围为 30–400 个城市 · 三个 seed 的学习策略都给出了相同路径
城市数量(问题数量)训练策略随机顺序 + 插入插入新对象最近邻居训练策略与随机训练(Wilcoxon p 检验)
20 (100) · 学习范围之外1.111.111.031.180.96
50 (50)1.131.141.051.210.24
100 (30)1.121.131.061.220.38

已观察到的原因和剩余任务

  1. Q值爆炸

    未进行归一化处理时,对整个图求和导致 Q 值增长至数百万,更新损失飙升至 10¹⁵ 个单位。

  2. TD目标误差

    目标值始终基于起始城市的 Q 值而非剩余城市的 Q 值计算,并且 n 步后的下一状态也存在一步偏差。

  3. 缩减至第100集

    由于大型图表每集大约需要 45 秒,因此 10,000 次迭代将耗时超过 5 天。我减少了迭代次数,其余设置保持不变。

读取结果的条件

  • 并非直接复现原始论文(无目标网络,n步方法不同)
  • 仅学习已配置的 1%章节
  • 训练到末端时的性能未知
下次实验需要改进的地方
  • 先将答案与小问题匹配
  • 邻居总和归一化和目标值校正
  • 从一开始就设置随机顺序基线
与最近项目的连接

这是我第一次亲手用代码实现神经网络的研究。将图的元素和关系表示为训练输入的经验,延续到了现在识别家具面板和面的研究中。

用于识别家具面板并计算尺寸变化的人工智能