这里写目录标题
0. 补充概念
(1)旅行商问题(travelling salesman problem, TSP)
- 典型旅行商问题 举例:有个快递员分别要给3家顾客送快递,他自己到达每个顾客家的路程各不相同,每个顾客之间的路程也各不相同。那么,如果想要将快递依次送达,并最终返回起点,哪一条路线所走的总距离最短?
- 思路1-枚举法,但该方法时间复杂度为 O ( n ! ) O(n!) O(n!) ,花费的运算时间太高。
- 思路2-相对优化的解决方法,如动态规划法、分支定界法,但时间复杂度仍然是指数级的。
(2)P 问题、NP 问题、NPC 问题
补充概念——归约
- 定义:可以简单理解成问题之间的转化,例如问题 Q : 3 x + 6 = 12 Q: 3x+6=12 Q:3x+6=12,可以转化为一元二次问题 Q ′ : 0 x 2 + 3 x + 6 = 12 Q': 0x^2+3x+6 = 12 Q′:0x2+3x+6=12。只要有办法解决 Q ′ Q' Q′ 就一定能够解决 Q Q Q, 对于这种情况,我们可以说问题 Q Q Q归约于问题 Q ′ Q' Q′
- 归约可以逐级传递,比如问题A归约于问题B,问题B归约于问题C,问题C归约于问题D,那么我们可以说问题A归约于问题D
问题 | 描述 |
---|---|
P 问题(多项式时间算法 Polynomial-time) | 时间复杂度可以用多项式表示的算法,例如:归并排序 O ( n l o g n ) O(nlogn) O(nlogn);冒泡排序 O ( n 2 ) O(n^2) O(n2);Floyd算法 O ( n 3 ) O(n^3) O(n3) |
NP 问题(Non-deterministic Polynomial-time) | 无法(至少是暂时无法)在多项式时间内解决的,比如一些算法的时间复杂度是 O ( n ! ) O(n!) O(n!) ,甚至 O ( 2 n ) O(2^n) O(2n)。NP 问题具体指不确定是否存在多项式时间的求解算法,但可以在多项式时间内验证一个猜测解的正确性的问题 |
NP-hard 问题 | 如果所有NP问题可在多项式时间内转化(归约,意思是解决了后者也就相应的解决了前者)成某个问题,则该问题称为NP-hard 问题 |
NPC 问题 | 将众多 NP 问题层层规约,得到一个或多个终极问题,这些规约的终点就是 NPC 问题。旅行商问题,被科学家证明属于 NPC 问题。 |
(3)启发式算法
- 在现实生活中TSP的运用实例涉及到的是成千上万的城市数量运算,为了能在合理的时间(可能是几个小时)内解决问题,通常需要运用那些高度复杂的搜索算法和启发式算法。
- 启发式就是能快速出结果的算法,出来的结果一般是可用的,但是不能保证全局最优,也不能保证算法的完备性。 全局最优容易理解,完备性是说能这个算法能不能找到所有的解,或者干脆判定此问题无解。
(4)补充背景知识
文章的摘要部分提到 “hand-crafted heuristics”,当时不太理解,后来无意中看到一篇文章【参考链接4,见上】很好地梳理了图神经网络在 NPC 类问题求解的发展过程,其中就提到了这个概念。概括如下:
-
《 Learning Combinatorial Optimization Algorithms over Graphs》
该文章方法的一大缺点就是使用了辅助函数,以帮助神经网络找到更好的解决方案。这个辅助函数是人为设计的,并且是特定于问题的,而这正是我们想要避免的。(还没有看过这篇文章,此处暂时理解为hand-crafted heuristics,待核实) -
《 Attention! Learn to Solve Routing Problems》
该文章开始尝试学习如何在没有人类知识干预的情况下解决问题 -
《 Learning Heuristics Over Large Graphs Via Deep Reinforcement Learning》
该文章向解决现实世界那般规模大小的问题迈出了重要一步,解决真实的大型实例问题
1. Introduction
从组合优化(CO)问题角度看,机器学习可以从两个方面辅助求解:
- 假定优化算法具有专家知识,但希望通过快速近似代替繁重计算。希望通过机器学习,在不派生新的显示算法情况下,用一种通用的方法建立这样的近似。
- 假定优化算法不具备充足专家知识(或不令人满意),这样一来 使用机器学习的目的即为探索解空间,从最优解中学习这种专家知识,以提升算法性能。
文章框架:
- Section 2 主要讲的是 为理解本文 读者需要掌握的组合优化、机器学习、深度学习和强化学习必要的基础知识
- Section 3.1 说明机器学习如何通过模仿专家/借助经验以学习到最优策略;Section 3.2 说明 ML 和 CO 的相互作用机制
- Section 5 列举现存问题和方法论要点
- Section 6 列举该领域挑战
- Section 7 总结
2. 算法结构(原文 3.2)
2.1 端到端的学习 End to end learning
用机器学习处理 TSP 问题并不是个新话题,早期工作从90年代开始,集中在 Hopfield 神经网络和自组织神经网络。具体可参照下方文献:
1999《 Neural Networks for Combinatorial Optimization: A Review of More Than a Decade of Research.》
具体端到端的学习框架,描述如下图:
2015《 Pointer networks》
-
提出 Pointer networks,用 RNN 作为 encoder 解析(parse) 输入图上的 TSP 节点,并生成每个节点的 encoding
-
再用一个带有注意力机制的 RNN decode,生成每个节点的概率分布
-
将计算好的 TSP 的解作为目标,训练模型
2017 《 Neural Combinatorial Optimization with Reinforcement Learning 》
- 用了一个类似的模型,使用的是强化学习,将行程长度(the tour length) 作为 reward
- 这样的做法能够解决监督学习(supervised / imitation learning)的局限性,例如,必须要计算出问题最优解才能训练的问题。
- 但反过来,本文中的这种模型,在求不出精确解或者存在多个解时就显得很不明确。
2018《 Attention Solves Your TSP 》
- 模型中引入了更多先验知识
- 使用 GNN 替换 RNN 处理输入
2018《 Learning Permutations with Sinkhorn Policy Gradient 》
2017《 A Note on Learning Algorithms for Quadratic Assignment with Graph Neural Networks 》
- 在神经网络的输出 直接近似双随机矩阵
2018《 Predicting Solution Summaries to Integer Linear Programs under Imperfect Information with Machine Learning 》
- 训练得到一个神经网络,用来预测确定的混合整数线性规划模型(MILP)情况下,随机负荷规划问题(stochastic load planning problem)的解
- 主要研究动机是,一些应用需要在战术/策略水平(a tactical level)上做出决策,比如在信息不完备情况下
2.2 将学习扩充到运筹学算法 Learning to configure algorithms
这种结构通过 ML 模型,向运筹学算法提供一些有价值的信息,从而提升模型性能
2016《 ASlib: A benchmark library for algorithm selection 》
- 在复杂优化算法中,常有一组参数保持不变(在机器学习中称为超参数),仔细选择这些参数大小能够极大改善算法性能
- 将学习思想扩展到优化问题中,目的就是寻找这样一组合适的参数,这样的参数在类似的问题实例中能够通用
2017《 Learning When to Use a Decomposition 》
- 在这篇文章中,一个数据点被表示为一个固定长度的向量,feature 代表实例(instance)
- 在求解 MILP 问题时,事先估计 Dantzig-Wolf 是否有效
- 这样分解的方法或许有效,但是决定是否使用/如何应用这种方法,还是取决于具体问题和等式
2018《 Learning a Classification of Mixed-Integer Quadratic Programming Problems》
- 用机器学习决定线性化问题是否能够加速问题求解
- 例如在求解二次规划问题(the quadratic programming problem),当其松弛问题是凸的,我们就可以通过B&B算法求解其松弛问题,以得到问题的下界
2.3 Machine learning alongside optimization algorithms
这种结构主要是一个主算法(master algorithm) 控制着高层结构,同时频繁调用 ML 模型以协助决策下级决策问题。这个结构和上一个不同之处在于,组合优化算法每次使用的都是用一个 ML 模型,只是按照算法的迭代顺序逐次调用 ML 模型,从而做出相同类型的决策。
一般的应用还是基于分支定界法的框架,每个节点上所做的分支决策都是有待学习的,
2017《 Deep Learning Assisted Heuristic Tree Search for the Container Pre-marshalling Problem 》
- 学习 a branching policy 和 value network 以实现启发式树搜索
2018《 Strong sparse cut selection via trained neural nets for quadratic semidefinite outer-approximations 》
- 目标是解决原始二次规划问题,学习的模型用来筛选割平面,每次筛出一个,cuts将会被添加到 LP 松弛问题中。这样一来,集成了 ML 的模型也能求得精确解。