路網匹配解決方案
建模過程
要素
- 路網由路段組成;
- 基站網絡由各個基站位置組成;
- 基站序列
匹配過程
- 輸入為基站網絡中的基站序列
- 輸出為路段序列
- 匹配過程為:尋找某一個路段為起點,最后尋找他周邊的連通路段,逐漸在搜索空間中擴充路徑,最終得到(一條或多條)完整路徑,可以在此基礎上再對路徑進行調整改進與選擇。

問題歸納
路網匹配與TSP旅行商問題、VRP車輛路徑問題同屬於NP難的組合優化問題,也是序列決策問題(任何組合優化問題都可以轉化為一個多階段的決策問題,即動態規划問題(但求解時會遭遇維度災難))。

組合優化問題的解決思路
- 分支定界法(可以使用其他啟發式方法來輔助進行分支節點的選取(類似在籬笆圖中使用強化學習來進行輔助))
- 貪婪算法、局部搜索算法、松弛算法、動態規划法
- 啟發式算法是一種基於直觀或經驗構造的算法,能在可接受的計算成本內盡可能地逼近最優解,得到一個相對優解,但無法預計所得解與最優解的近似程度
- 元啟發式算法(進化算法) 是隨機算法與局部搜索算法相結合的產物,包括禁忌搜索算法、模擬退火算法、遺傳算法、蟻群算法、粒子群算法、人工神經網絡(代指Hopfield能量網絡)等。
- 序列生成模型,如RNN、seq2seq模型
- 序列決策模型,如強化學習
- 圖模型,如圖神經網絡
++== 現在的趨勢是使用多種方法結合求解! ==++
從動機角度理解機器學習在組合優化問題上的使用
在組合優化算法中使用機器學習的方法,主要有兩方面:
-
優化算法中某些模塊計算非常消耗時間和資源,可以利用機器學習得出一個近似的值,從而加快算法的速度。
動機(1)下使用的是 demonstration setting(模仿學習) 這種策略呢就是不斷模仿expert做的決策進行學習,也沒有什么reward啥的,反正你怎么做我也怎么做。他是通過一系列的“樣例”進行學習,比如你把TSP問題的輸入和最優解打包丟給他,讓他進行學習,當他學有所成時,你隨便輸入一個TSP的數據,他馬上(注意是非常快速的)就能給出一個結果。這個結果有可能是最優的,也有可能是近似最優的。在demonstration setting下,學習的目標是盡可能使得policy的action和expert相近。
當然,如果有了真實實例,那么也可以逼近真實解

1.1 在求解線性規划時,通過添加切割平面(cutting plane)可以拉緊(tighten)當前的松弛(relaxation),從而獲得一個更好的下界(lower bound),暫且將加入cutting plane后lower bound相比原來提升的部分稱之為improvement吧。Baltean-Lugojan et al. (2018) 使用了一個neural network去對求解過程中的improvement進行了一個近似。
1.2 使用分支界定法(branch and bound)求解混合整數規划問題(mixed integer programming)的時候,如何選擇分支的節點,非常重要。一個有效的策略,能夠大大減少分支樹的size,從而節省大量的計算時間。目前表現比較好的一個啟發式策略是strong branching (Applegate, Bixby, Chvátal, & Cook, 2007),該策略計算眾多候選節點的linear relaxation,以獲得一個potential lower bound improvement,最終選擇improvement最大那個節點進行分支。盡管如此,分支的節點數目還是太大了。因此,Marcos Alvarez, Louveaux, and Wehenkel (2014, 2017)使用了一個經典的監督學習模型去近似strong branching的決策。He, Daume III, and Eisner (2014)學習了這樣的一個策略--選擇包含有最優解的分支節點進行分支,該算法是通過整個分支過程不斷收集expert的behaviors來進行學習的。
1.3 當然強化學習與模仿學習可以結合,主要是使用模仿學習來初始化強化學習的策略。2019年Mila等機構的論文《Exact Combinatorial Optimization with Graph Convolutional Neural Networks》也是采用類似的思路,使用模仿學習來學習branch-and-bound算法中的變量選取策略,同時它還結合了圖卷積神經網絡。branch-and-bound求解過程需要不斷地進行節點選取和變量選取,這可以看作是一個序列化決策問題。傳統的方式是通過專家設計的啟發來最小化求解時間。這是我們希望通過機器學習替代的部分。對於節點選取問題,strong branching是一種較為理想的啟發,它可以產生很簡單的搜索樹,但缺點是計算量非常大,以至於不可能應用於所有節點。為了解決該決策過程的編碼和難以泛化的問題,文中采用圖卷積神經網絡來建模,輸入為二分圖狀態。圖卷積神經網絡有對輸入規模伸縮性好,計算復雜度僅和密度相關(善於處理稀疏結構)和permutation-invariant的優點。模型的訓練通過模仿學習和近似strong branching。該方法使得學習的策略有好的泛化能力,即在訓練中學習到的策略可以用於更大規模的問題實例中。實驗部分將之用set covering等四個NP-hard問題,說明在大規模問題中比SOTA solver中的專家設計啟發有優勢。
-
現存的一些優化方法效果並不是那么顯著,希望通過學習的方法學習搜索最優策略過程中的一些經驗,提高當前算法的效果。
動機(2)意在發現新的策略,policy是使用reinforcement learning通過experience進行學習的。他是通過一種action-reward的方式,訓練policy,使得它不斷向最優的方向改進。當然了,這里為了獲得最大的reward,除了使用reinforcement learning algorithms的方法,也可以使用一些經典的optimization methods,比如genetic algorithms(遺傳算法), direct/local search。
2.1 在TSP問題中,獲得一個可行解是非常容易的一件事,我們只需要依次從未插入的節點中選擇一個節點並將其插入到解中,當所有節點都插入到解中時,就可以得到一個可行解。在貪心算法中,每次選擇一個距離上次插入節點最近的節點,當然我們最直接的做法也是這樣的。但是這樣的效果,並沒有那么的好,特別是在大規模的問題中。所以就可以使用強化學習來改善貪心算法。具體可以參考下面這篇推文: Khalil, Dai, Zhang, Dilkina, and Song (2017a)構建了一個貪心的啟發式框架,其中節點的選擇用的是graph neural network,一種能通過message passing從而處理任意有限大小graphs的neural network。對於每個節點的選擇,首先將問題的網絡圖,以及一些參數(指明哪些點以及被Visited了)輸入到neural network中,然后獲得每個節點的action value,使用reinforcement learning對這些action value進行學習,reward的使用的是當前解的一個路徑長度。

強化學習與其他方法的結合
為什么要引入強化學習?
- 對於監督學習來說算法質量很大程度上取決於訓練集的質量。為了克服監督學習的局限,於是強化學習被引入了進來。對於NP-Hard的組合優化問題,很多時候沒有辦法獲取給定例子的最優解,因此需要使用RL這種更加高效的search方法來進行訓練而非監督學習。
- 組合優化問題天然可以建模成一個序列決策過程
- 在很多組合優化問題中,強化學習的設定與問題比較配對。例如旅行商問題評價的指標是路徑長度,直接拿這個做loss對網絡而言是不可導的,而強化學習天然適合這種輸出與loss沒有直接關系的情形。因此目前的幾十篇paper里面都是使用RL來讓神經網絡可以反向傳播從而更新參數。
強化學習/近似動態規划就是針對傳統動態規划的不足而來的。通過一些近似的方法來降低計算量,解決傳統動態規划的問題。那么近似的思路有哪些?

三種近似的思想:
- Approximate Min:簡單來說就是 我們在求解極小化問題的時候可以不用那么較真,能求到一個差不多的近似最優解就可以了。也就是說拉緊下界bound時不用那么緊
- Approximate 期望:這個也比較好理解了,很多時候我們並不知道隨機變量的分布,也就很難計算出期望的close form,那我們只好采用估計的方法來近似期望,例如采用樣本均值來估計期望就是一種方式 (當然由於TSP問題沒有隨機變量在里邊自然無需期望)。
- Approximate cost-to-go function(value function) :動態規划的關鍵就在這個上了,要想精確得到這個,需要再求解一個子優化問題,然后像剝洋蔥一樣層層遞推到最后才能算出來,那么我可以通過近似未來的cost的方式來降低計算量,我只計算一個近似的cost-to-go function 。那么我們這一過程稱為Approximation in value space (值空間近似)。
從求解思路上來說這些paper的對組合優化的馬爾可夫建模思路也可以再分成兩類:
- 一類是基於局部解讓網絡輸出新加入的節點來拓展當前的局部解,迭代若干次從而得到完整解;
- 另一類是基於一個完整的解讓網絡輸出對當前解的改進操作,從而提高解的質量,當達到迭代閾值時選取整個過程中最好的解作為最后的結果
- 強化學習與分支定界法結合:分支定界算法的效率取決於從哪個變量 branch 和 node selection兩個因素,如果branch 和 node selection的策略比較好,那么分支定界算法可以很快的剪枝或者可以很快的得到比較好的界,就可以大大提升分支定界算法的效率。目前對於 branch 和 node selection的策略還沒有公認的太好的方法。傳統的方法基本上都是一些簡單的啟發式規則,那么強化學習可以幫助我們有效的給出一個 branch 和 node selection的策略。這樣的一種策略也被稱為Learning to search,有別於以往單純的基於Search的傳統優化方法,Learning to search還是在優化過程中引入學習的概念幫助更加有效的搜索最優解。2014年在NIPS會議上,文章Lodi A, Zarpellon G. On learning and branching: a survey[J]. TOP, 2017: 1-30.是比較早的一個用機器學習算法來學習分支定界算法里邊的 branch 和 node selection的策略的
目前的paper使用強化學習解決組合優化時他們的contribution或者說novelty主要是集中在對網絡結構的設計上,即如何設計一個能handle住組合優化對應的數據結構的network architecture。
-
序列模型:把問題建模成一個sequence形式的input,然后想辦法使用基於attention的魔改結構(可以是比較裸的self-attention,也可以是進一步的把transformer搬過來)來提取feature給結果。
序列模型有專為組合優化求解而誕生的神經網絡Pointer Network(Ptr-Net)。是基於Sequence-to-Sequence網絡生成的一種新的網絡架構。Ptr-Net與Sequence-to-Sequence類似,都是解決從一個序列到另一個序列的映射問題,不同的是Ptr-Net針對的序列問題更加特殊:輸出序列的內容與輸入序列的內容完全一致,只是序列的順序發生了改變。這種問題在實際中常見的應用就是組合優化問題,因此Ptr-Net首次建立了神經網絡與組合優化問題的聯系。Ptr-Net正是利用了注意力機制解決了對輸入序列排序的問題。通過注意力機制,可以計算出當前輸出與輸入序列關系最大的元素,那么我們就將輸入序列的元素作為該輸出元素,每一個輸出元素都像有一個指針一樣指向輸入元素,Pointer Network因此得名。需要注意的是,每個輸入元素只能被一個輸出元素所指,這樣就避免了輸入元素的重復出現,下圖給出Ptr-Net的基本結構圖:

對於無序輸入數據,2015年Google的論文《Order Matters: Sequence to sequence for sets》提出了Read-Process-and-Write架構。它由三個網絡組成。開始的Read部分是一個神經網絡將輸入進行嵌入得到對應的memory vector;接下來,Process部分是一個沒有輸入或輸出的LSTM,它用前面的memory vector通過注意力機制進行一定步數的計算,得到相對於輸入permutation invariant的隱狀態;最后,Writer部分是一個LSTM Pointer Network,它的輸入為Process部分輸出的隱狀態,以及Read部分輸出的memory vector,產生最終的輸出。這里相對於原始的Pointer Network,在pointer部分前加了一個額外的注意力機制(因為原來的注意力機制被用來輸出結果了),稱為glimpse機制。對於無序輸出數據,文中提出一種高效的訓練算法,它在訓練和推理時搜索所有可能的順序。對於像TSP和triangulation等問題,其解中存在大量的等價類。對於這些等價類做一些約束,有利於更快地收斂。如對於TSP,可以從輸入的第一個元素開始,然后按逆時針順序輸出,准確率能有所提高。

-
序列模型結合強化學習:序列模型作為策略參數來通過強化學習進行進一步調整。 2016年Google的的論文《Neural Combinatorial Optimization with Reinforcement Learning》提出了Neural Combinatorial Optimization(NCO)。在神經網絡模型方面,它使用前面提到的Ptr-Net架構作為策略模型,然后使用基於梯度的強化學習方法(REINFORCE算法)來學習策略模型的參數。它將每個問題實例作為一個訓練樣本。對於TSP問題來說,訓練的目標函數是給定一個圖的期望旅途長度。基於梯度的強化學習用於減少方差的一個常用方法是引入一個baseline function。文中引入了另一個RNN網絡作為這個baseline function,它估計給定輸入序列下的的期望旅途長度。該網絡以均方誤差MSE為目標函數並使用隨機梯度下降SGD來優化。另外,文中指出結合推理時搜索還能進一步改善效果。由於評估一條旅途的長度只需很小計算量,因此可以讓模型輸出很多候選,然后在里邊找最優的。這樣就可以衍生出Sampling和Active Search兩種策略。前者通過采樣得到大量候選解,然后找到其中的最優解。后者針對給定的問題實例,在推理時對策略模型參數進行refine,以最小化該問題實例下的期望旅途長度。這兩種策略還可以與強化學習的預訓練模型結合。實驗部分該方法被應用於TSP和KNAPSACK問題。TSP問題考慮的規模為20, 50和100個城市。結合推理時優化,TSP的解可以勝於Christofides algorithm以及OR Tools(通過local search與LK heuristic提升Christofides’ solution)。(感覺最新的方法可能針對的TSP規模都不是很大,在更大規模上可能沒有啟發式的好,啟發式的baseline本身就很高了)
-
Transformer模型: 2017年Google的論文《Attention Is All You Need》僅僅使用了注意力機制,沒有使用於RNN,LSTM或者CNN對序列建模。Transformer延續了encoder-decoder架構,其encoder和decoder網絡均由層疊的self-attention和point-wise fully connected層組成(原論文圖1)。這里的注意力機制和以前Seq2Seq模型中的注意力機制有所不同,這是稱為Multi-Head Attention(MHA)的Self-Attention機制(原論文圖2),該模型除了准確率更高,還更易並行,且訓練也更快。


-
Transformer模型與強化學習結合:2018年巴黎綜合理工學院等機構的論文《Learning Heuristics for the TSP by Policy Gradient》基於前面NCO的主要思想,與原Transformer模型相比,encoder部分中沒有用positional encoding,這樣便使node embedding與輸入順序無關。其它部分基本沿用了Transformer架構中層疊的multi-head attention(MHA)和feed-forward(FF)結構來得到每個城市對應的node embedding。node embedding的平均作為graph embedding。這個embedding會輸出給decoder。Decoder采用了經典的autoregressive模式,在每一步中,基於encoder的embedding和之前步的輸出,得到當前步的輸出。Decoder網絡基於注意力機制,與前面工作一大區別在於它引入了context node來表征解碼時的上下文,它包含了graph embedding,以及第一個節點(它是起點也是終點)與前一個輸出節點的embedding。這個context node加上其它的embedding信息通過MHA層(與encoder中的MHA相比,這里為了高效沒有skip-connection, BN和FF子層)得到輸出向量。最后,decoder結構有一個single attention head(即M=1的MHA),通過softmax輸出即為當前步的輸出。訓練使用的仍是經典的REINFORCE算法,這里有些區別的是baseline function是通過rollout的方法得到的,即基於當前最好的策略模型進行deterministic greedy rollout得到。實驗部分主要考慮了多種路徑問題,如TSP和VRP的多種變體(如SDVRP, PCTSP, SPCTSP)。在很多case中,與構造類heuristic(Nearest, Random and Farthest Insertion和Nearest Neighbor),OR Tools,Christofides+2-OPT local search以及其它基於機器學習的方法相比能得到更優的解。


-
圖模型:把問題建模成一個graph形式的input,然后想辦法基於GNN和基於GNN的attention的魔改結構來提取feature給結果。主要包括圖嵌入模型作為表示學習與圖神經網絡解決圖任務兩部分,其中互有重疊,GE與GNN是兩個維度的概念,前者指一種任務,后者指完成很多任務的一類模型。但由於它們之間關系緊密,所以放在一起討論。
-
一個相對早些的將GE引入的工作是2017年佐治亞理工學院的論文《Learning Combinatorial Optimization Algorithms over Graphs》,它也成為了后面很多新方法的對標對象。對於組合優化問題,一個困境是對於同樣類型,但數據不同的問題,我們常常需要一遍遍地重新去解決。因此文中比較正式的提出了靈魂拷問:給定一個圖優化問題和一個問題實例的分布,有沒有辦法可以讓heuristic泛化到那些不曾見過的問題實例。它還指出之前很多基於機器學習的組合優化算法都是通用的,因此沒有充分挖掘圖這種特殊的結構。為了解決,它將GE與RL進行了結合,提出了S2V-DQN算法。這里的GE用的是他們在2016年論文《Discriminative embeddings of latent variable models for structured data》中的structure2vec(S2V)方法。強化學習部分考慮前面工作普遍采用的policy gradient樣本效率不高,因而使用了Q-learning。該方法基於貪心算法框架,每一步中,基於當前的部分解,選取使評估函數最大的節點。可以看到,這里評估函數非常重要,它需要能夠提取和表達圖中的各種信息。為了做到這一點,structure2vec被用來做圖嵌入以及參數化評估函數。為了優化評估函數中的參數,該評估函數可以作為Q-learning中的Q函數,然后進行訓練。與前面的模型相比,該模型中沒有使用單獨的encoder和decoder,而是一個基於GE的單個模型。實驗部分在Minimum Vertex Cover,Maximum Cut和TSP上與NCO,以及每種問題相關的heuristic方法進行了對比,並在optimality gap指標上得到了更優的解(尤其是對於像MVC這種圖結構信息更重要的問題)。對於MVC和TSP規模分別達到500和300左右。另外GE使得訓練好的模型應用到更大的圖上。實現中拿在50-100節點的問題上訓練的模型應用到更大規模的問題(最大到1200)取得了很小的approximation ratio。


(在解決方案構建過程的每次迭代中,神經網絡會觀察當前的圖表,並選擇一個節點添加到解決方案中,然后根據該選擇更新圖表,接着重復這個過程,直到得到一個完整的解決方案。使用DQN算法來訓練神經網絡。缺陷就是他們會使用一個“輔助”方程來幫助圖神經網絡尋找更好解法。這個輔助方程是人為設計用於解決特定問題的)GNN中重要的一種就是結合了卷積的圖卷積網絡(Graph Convolutional Network,GCN)。它在很多解關於圖的組合優化的工作中都有用到。2019年德里印度理工學院與加州大學聖巴巴拉分校的論文《Learning Heuristics over Large Graphs via Deep Reinforcement Learning》提出一種稱為GCOMB的深度強化學習框架用於學習大規模圖下的組合優化問題。與前面的文章目的類似,它的目的也是讓算法能解決來自與訓練集中同分布的但未見的問題實例,但它將之擴展到更大規模的問題(百萬級節點)。整個算法包含訓練與推理兩個階段。訓練階段又分兩個子階段:第一步用GCN作為embedding,通過監督學習的方式學習GCN中的參數。它本質上是讓embedding能反映每個節點對於解的重要程度;第二步基於Q-learning用於形成解集。將回報設定為加入某節點后的邊際收益,然后進行訓練。在推理階段,對於給定的圖,先用訓練好的GCN進行embedding,然后通過Q-learning學習的Q函數迭代地計算解。即用貪心算法以增量方式構造解。

2017年紐約大學的論文《A Note on Learning Algorithms for Quadratic Assignment with Graph Neural Networks》引入了GNN來解決二次分配問題(Quadratic assignment problem,QAP)這個NP-hard問題。TSP可看作是QAP的一種特例因此也被提及。該文以監督學習的方式訓練GNN,並直接以鄰接矩陣的形式輸出解,然后通過beam search找到可行解。相比前面挨個輸出解中元素,也就是autoregressive的方式,這種是一下子輸出解的方式稱為non-autoregressive的方法。但在TSP上似乎效果不如Ptr-Net和Christofides算法,原因可能是由於監督學習下解的質量依賴於ground truth,而ground truth又來自於heuristic(LK Heuristic)。2019年南洋理工大學和洛約拉馬利蒙特大學的論文《An Efficient Graph Convolutional Network Technique for the Travelling Salesman Problem》基於《Residual Gated Graph Convnets》中的Graph ConvNets和beam search算法來解決TSP。對於50和100個節點的TSP它將optimality gap縮減到0.01%和1.39%,超越了當時其它基於深度學習的方法。首先,該模型以TSP的圖為輸入,通過Graph ConvNet進行表征學習,然后edge embedding經過MLP得到概率矩陣。如果將TSP解中旅途表示成鄰接矩陣的話,那該輸出的概率矩陣就可以看作鄰接矩陣的heat map。這種以non-autoregressive的方式輸出鄰接矩陣與上一篇論文中是類似的。然后,該模型使用監督學習進行訓練,訓練集中的解通過Concorde求解器得到。在推理時,基於模型得到的鄰接矩陣可以通過beam search算法轉為合法的旅途,即TSP的解。對於Graph ConvNet和beam search,都可以被並行化通過GPU加速,因此在性能上可以有一定優勢。同時,文中也指出與autoregressive模型相比,該模型的泛化能力較差。另外,因為是基於監督學習,意味着它處理的問題規模會有瓶頸。

2018年劍橋大學等機構的論文《Graph Attention Networks》提出Graph attention networks(GAT)。它將注意力機制的思想引入到GNN,即可以讓節點將注意力放到某些鄰接節點上。它成為了近幾年中圖相關問題網絡模型主流方法之一。2020年康奈爾大學和哥倫比亞大學的論文《Learning to Solve Combinatorial Optimization Problems on Real-World Graphs in Linear Time》就是應用了GAT,並提出一種針對圖結構組合優化問題的框架。它在一個訓練集上使用強化學習訓練GNN,訓練好的神經網絡可以對於一個新的圖實例輸出近似解。該框架比較有特色的是引入了edge-to-vertex line graph(原圖中的每條邊對應這個圖中的節點)用於那些需要選取邊的問題(如MST)。GNN用來學習圖的表征並輸出選取節點的策略。這個GNN基於經典的encoder-decoder架構。Encoder部分基於GAT,decoder使用了注意力機制。整個網絡的計算保持在線性復雜度。該方法通過不同的目標函數可以適用於多種基於圖的組合優化問題。它在解的質量(optimality gap接近於1)與運行性能(線性執行時間)上都有好的表現。


當然我認為與序列+圖並不矛盾,但是主體只能有一個
RL反而變成了一個固定工具,有DQN(基於值函數的)和PG(基於策略的)(應該還有actor-critic),而且基本都是最原始的加上去並且基本沒有對RL算法有什么額外修改。
最近兩年的相關的AI頂會paper告訴我們:Attention mechanism可以處理組合優化對應的數據結構,RL loss可以用於網絡的訓練
參考
https://www.zhihu.com/question/406601430
https://blog.csdn.net/weixin_39970064/article/details/111528715
后處理
前面的介紹可以看到,基於深度學習的方法已經在組合優化問題中達到還不錯的成績。另一方面,我們也可以看到,這些方法大多數還是需要結合一些后處理的。比如不少工作中對於機器學習模型表示概率的輸出,需要經過一些后處理算法得到最終的解。
如常用的包括:
- Greedy:每次選取輸出概率最高的節點。
- Beam search:本質上是寬度受限的廣度優先搜索。
- Sampling:采樣一定數量的解,取最優。
- 還有些工作是結合了像2-OPT算法來進一步提高解的質量。
與前面幾種方法不同,像2-OPT,3-OPT這種是對一個完整的解進行局部修改來試圖改進它,稱為perturbative search(擾動搜索)。那么問題來了,這些搜索過程在整個算法中的影響如何?我們又如何評估機器學習部分的算法能力呢?2019年蒙特利爾綜合理工學院等機構的論文《How to Evaluate Machine Learning Approaches for Combinatorial Optimization: Application to the Travelling Salesman Problem》就是主要針對該問題。它指出常用的評估指標optimality gap同時針對機器學習和搜索部分,因而無法准確評估機器學習部分算法。為此它提出了一種新的測度,稱為ratio of optimal decision(ROD)。其優點是可以排除搜索部分帶來的影響,只評估機器學習部分的效果。它的主要思想是將問題看作序列化問題,並關注每一步決策的質量。這樣那些大多數步里做了最優的決策,但因一步之差導致optimality gap不理想的情況就不至於得分很低。另外,通過實驗它還說明了搜索過程對於機器學習方法的影響巨大。一些基於機器學習的方法得到的解在經過如2-OPT,3-OPT和LK等方法refine后其optimality gap能夠顯著降低。
以往的很多工作中基本是以增量的方式構造解,每當一步決策后,它們通常不會再重新考慮之前所做的決定。而2019年牛津大學等機構的論文《Exploratory Combinatorial Optimization with Reinforcement Learning》則是在推理時進行探索以獲取更優的解。本文提出exploratory combinatorial optimization(ECO-DQN)方法,適用於定義於圖結構上的組合問題。概括來說,ECO-DQN可以歸結為S2V-DQN+RevAct + ObsTun+IntRew。其中的S2V-DQN指前面《Learning Combinatorial Optimization Algorithms over Graphs》提出的方法。RevAct(Reversible Actions)指允許flip一個節點多次。ObsTun(Observation Tuning)指狀態包含7個觀察,分別基於vertex state等。它們提供了多方面的信息,用於確定選取動作的價值,提供歷史信息避免過短環路,保證外部和內部回報符合馬爾可夫特性,以及有限步的episode。IntRew(Intermediate Rewards)指通過reward reshaping,當達到新的局部最優解時,給一個小的中間回報,作為內部回報。這樣主要為了克服回報稀疏的問題。在Maximum Cut Problem上,它的表現性於SOTA的強化學習方法。另外,該算法可以從任意的解開始。因此,可以與其它的搜索方法結合進一步提升。
2018年Intel Labs和香港科技大學的論文《Combinatorial Optimization with Graph Convolutional Networks and Guided Tree Search》結合了圖卷積網絡與樹搜索來解決組合優化問題。它主要思想是基於圖卷積網絡輸出節點屬於最優解的概率,然后用它引導樹搜索。這個圖卷積神經網絡模型通過監督學習來訓練,因此它需要大量預先解好的問題實例。算法的流程分幾步:首先,輸入的圖經過一個預處理,即graph reduction進行簡化,然后喂給圖卷積神經網絡,輸出多個概率圖表示每個節點屬於最優解的似然。至於為什么是多張概率圖是有講究的,文中提到最優解可能有多個,而一個節點可能出現在多個最優解當中,換言之,該概率分布是多峰的。另一方面,這樣做可以生成很多候選解,有利於后面樹搜索中更好的探索。接下來,這些概率圖就用來在樹搜索中以迭代的方式構造解。最后還會用local search(2-improvement local search算法)看看能不能改善解。實驗中基於MIS,MVC,MC,SAT等多個NP-hard問題與S2V-DQN,Z3,ReduMIS,Gurobi等方法做了比較,在數據上優於這些方法,且對於問題類型和數據集的泛化能力強。另外,樹搜索是容易並行加速的,因為可以將部分解的擴展放到多個線程運行。

2019年UC Berkeley和Facebook的論文《Learning to Perform Local Rewriting for Combinatorial Optimization》提出了一種結合機器學習的基於搜索的方法。對於組合優化問題,傳統的搜索通常依賴於啟發,而在不同的場景中調優這個啟發往往非常耗時。本文提出NeuRewriter方法來學習策略來重寫當前解的局部組件,並以迭代的方式不斷改進解直到收斂,優化問題被看作是重寫問題,策略分為兩部分組件:即region-picking策略和rule-picking策略。前者用於根據當前狀態(每個解就是一個狀態)選取要改的區域;后者選取重寫的規則。這些網絡模型通過神經網絡來表示並用強化學習中的AC方法來訓練。之前一些基於機器學習的方法很多是逐個節點添加構造解(即auto-regressive),而該方法是從一個可行解出發改進它找到更優解。實驗中,NeuRewirter方法在expression simplification上超越了Z3,online job scheduling上超越了DeepRM與OR tools,CVRP上分別超越了一些基於機器學習的方法以及OR tools。


組合優化問題學習框架

路網匹配的方法
隱馬爾可夫模型
隱馬爾可夫模型建模為隱藏狀態序列與觀測狀態序列。在路網匹配這個問題上,是從觀測序列到隱藏序列進行逆采樣的過程,忽略了狀態節點之間的路徑,一般假設為最短路徑,
一般結合候選選擇、籬笆圖與維特比算法一套組合拳進行預測。籬笆圖的節點與邊分為設有權重。現有的工作一般是針對這些權重考慮的。比較特殊的是IVMM從構建了多個籬笆圖來加權投票

籬笆圖是否必要?
使用籬笆圖的好處:
- 將搜索空間壓縮為有限空間,
- 可以將路網匹配轉換為搜索樹的問題,進而使用各種搜索方法解決。
使用籬笆圖的不足:
- 使用籬笆圖是對問題的一個簡化,忽視了節點之間的路徑選擇,有助於減少搜索空間,但這里可能出現匹配不正常的部分。
- 使用籬笆圖就需要候選選擇,同樣可以進一步減少搜索空間,由於采用誤差進一步增大,也不是很可靠。
深度學習模型
針對基站的路網匹配主要是DMM與DeepMM
- DeepMM主要是數據增強(訓練數據擴充)與序列模型解決路網匹配

- DMM主要是簡單的基站嵌入表示,以序列模型為策略參數的強化學習

未來可能的方法思路
==
第一部分,保留籬笆圖,即簡化中間路段選擇部分
- 保留籬笆圖,使用更強的圖嵌入+強化學習+圖搜索(強化學習+分支界定法)的方法解決
- 保留籬笆圖,將籬笆圖建模為序列模型,然后使用pointer-Net生成輸出,通過強化學習policy訓練pointer-Net參數
- 保留籬笆圖,將籬笆圖建模為拓撲圖,然后輸入到圖神經網絡每次輸出一個節點,並依據輸出節點更新圖神經網絡,直到全部輸出。通過強化學習Q-learning訓練
- 保留籬笆圖,將籬笆圖建模為拓撲圖,將基站序列建模為子圖,拓撲圖中與基站序列相似的子圖
第二部分,輸出連續的所有路段組成路徑,進一步分為一個一個路段生成(只能參考之前生成出來的部分),還是一次性全部生成(可以互相調整)。
- 使用序列模型建模,不只使用DMM的Seq2seq,而使用Transformer來做策略,進一步在強化學習部分使用A3C(值函數+策略)而不是只有policy結構
- 模仿學習,來使隱馬爾可夫模型以線性時間預測
- 圖結構建模+Attention機制(或者Transformer)可以實現對結果的輸出(GCN作為Encoder,Attention作為Decoder),強化學習來進行參數調整訓練
- 貪心框架下用圖結構GCN建模+Q-learning的值函數貪婪地選擇節點
- 訓練GNN,並直接以鄰接矩陣的形式輸出解,然后通過beam search找到可行解(一下子輸出解的方式稱為non-autoregressive的方法)
第三部分,后處理對(多條)輸出路徑進行選擇與調整(選擇調整區域與更新收斂)
- 在上面提到的搜索方法中,使用Beam Search來保留多個解,更有機會逼近更優解。
- region-picking策略和rule-picking策略。前者用於根據當前狀態(每個解就是一個狀態)選取要改的區域;后者選取重寫的規則。通過神經網絡來表示並用強化學習中的AC方法來訓練。
==
