原文文獻
Social BiGAT : Kosaraju V, Sadeghian A, Martín-Martín R, et al. Social-BiGAT: Multimodal Trajectory Forecasting using Bicycle-GAN and Graph Attention Networks[C]//Advances in Neural Information Processing Systems. 2019: 137-146.
Cycle GAN : Zhu J Y, Park T, Isola P, et al. Unpaired image-to-image translation using cycle-consistent adversarial networks[C]//Proceedings of the IEEE international conference on computer vision. 2017: 2223-2232.
Highlights
- 多元化特征抽取與注意力機制:使用VGG網絡提取場景圖像特征,使用LSTM提取行人軌跡特征,使用基於Scale-Dot和GAT的注意力機制合成預測軌跡的最終特征向量。
- 基於Cycle GAN增強預測的多元化:異於Info-GAN模型,采用了新模型結構和訓練方法,以保證GAN網絡生成軌跡時對Latent Code的敏感性,從而有助於軌跡生成的MultiModel特性。使用了兩個G網分別負責\(noise \rightarrow_G trajectory\)和\(trajectory \rightarrow_G noise\),並定義了一致性損失(Consistence Loss)和循環型的多步訓練方式\(z \rightarrow trajectory' \rightarrow z'\)和\(trajectory \rightarrow z' \rightarrow trajectory'\)(其中未帶有 ' 的表示Ground Truth)。
- 有效的功能抽象與遷移能力:文章中體現了作者對各種模型適用性與差異性的有效理解,例如根據數據差異采用了GAT、Scale-Dot等多種注意力機制;並且能夠從其他具體問題中舉一反三,例如將Cycle GAN所適用的圖像風格轉換任務遷移至多元化路徑生成,並重新定義設計了G網和D網的結構分布。
Summary
感謝之前有一位讀者在向我推薦的Social BiGAT這篇文章,正逢這段時間有空,便仔細讀一讀,並也對其中的要點進行總結。Social BiGAT是繼Social LSTM, Social GAN, SoPhie后的Social-Family新成員,從整體成果上來說是用Cycle-GAN和GAT網絡的新方法更好解決在Social GAN時提出的老問題:
- 社會交互(Social Interaction)
- 靜態場景(Context Cues)
- 預測的多元性(Multimodal prediction)
同時,從整體上來看,Social BiGAT其實已有向模型融合的趨勢發展,對於模型結構的使用有顯著的工具箱特點,就像是先明確問題而后從備選模型中信手拈來進行拼接。訓練與測試數據仍采用ETH和UCY數據庫,最外層仍然是GAN模型的結構(注意僅僅是結構,模型在訓練上與GAN存在比較大的差異):

- 對於G網:在使用LSTM的Decoder進行軌跡預測生成前,加入了噪音和多類Encoder進行特征提取並恰當地使用多種注意力結構,進過注意力機制處理的拼接向量經過遞交給Decoder進行預測。
- 對於D網,分成了兩個,分別探討軌跡在整體環境中和局部環境中的合理性,核心作用是促進G網生成與真實軌跡”無法分辨“(indistinguishable)的軌跡。
- 此外,為保證模型對噪音反應的敏感性和合理性,Social BiGAT還借鑒了Cycle GAN的思想,引入了由預測軌跡反推噪音的Latent Encoder(本質上就是Cycle GAN中的逆向生成網F),並結合多步訓練的模式與方法建立了噪音與預測軌跡之間的雙射關系,最終更好地解決了預測結果多元性的問題。
由於BiGAT具有模型融合的特點,其中一些思想方法其實已經在之前研究中已有提出,例如:
- 使用層數和已知路徑時序相同的GAT網絡,每一層中以結點為行人,以同層邊代表交互,處理Social Interaction。
- 使用標准的Q-K-V注意力機制,針對每一個行人提取經過CNN網絡后的背景特征中的有效信息,處理Context Cues。
因此我將側重在本模型中所新采用的Cycle GAN結構,首先介紹Cycle GAN原文中任務與模型,而后分析BiGAT的作者是如何不等價但等效地將Cycle GAN用到<噪音 - 預測軌跡>這一對組合上。
Cycle GAN
概覽
Cycle GAN可以被理解為一種Autoencoder(自編碼器),最初提出時,旨在解決圖像翻譯(Image-to-Image Translation)中缺乏配對(Paired)數據的問題,缺少配對數據一方面是因為人工標注在某些領域中存在困難:例如繪畫風格遷移,很少存在能夠准確在現實世界中找到一幅畫作中的風景;而另一方面是因為人工標注的數據總量比較有限。
因此,文章決定在訓練時從更大的范圍和抽象上進行,模型原本需要建立一一對應的配對(Paired)數據的映射,而現在僅需要建立兩個圖像集合之間(不需要數據之間配對)的映射。
因此對於參與模型訓練的數據,如果嚴格從單個圖像級的標簽角度,則屬於非監督學習,而如果上升至圖像集合的級別,其實又屬於監督學習。

模型結構
朴素模型:建立GAN網絡,G網絡學習\(X \rightarrow Y\)的映射,而D網作用則是激勵G網生成的圖像與真實圖像無法分辨。
朴素模型問題:
- 約束不足:由於訓練G網時是建立在集合層級(Set Level)的,即D網和目標函數僅能約束G網建立向目標集合的映射。因此模型所習得的向目標集合的映射其實是有無窮無盡的可能,這其中只有少部分是真正所期望的映射。
- 模式坍塌:在實際實驗中,模型習得的映射使得不同輸入都到達同樣的輸出,使得優化停止。
使用循環網絡約束映射:
由於不存在嚴格的配對數據,因此基於目標集合\(Y\)構造目標函數並不可行,因此模型使用了一種較為經典的依托傳遞性(transitivity)的循環一致性損失(Cycle Consistency Loss)對生成模型加以更強的約束。具體來說,模型在結構和訓練上均有特點:
- 模型:定義了”兩套“GAN網絡<\(G, D_Y\)>和<\(F, D_X\)>,分別致力於使用生成對抗式網絡實現集合(域)X和Y之間的相互映射。

- 訓練:兩套GAN網絡無法獨立訓練,需通過\(x \rightarrow G(x) \rightarrow F(G(x)) \sim x\)和\(y \rightarrow F(y) \rightarrow G(F(y)) \sim y\)兩步數據流進行訓練。
訓練時的兩類數據流構成了多步訓練,前者稱作forward cycle consistency,后者稱作backward cycle consistency。文章中僅通過實驗結果的方式證明兩類一致性約束訓練缺一不可,但筆者並沒有找到理論上的一些猜想和假設,該部分有待進一步研究。
因此,對於綜合GAN網絡的損失和一致性損失,共同形成了整個網絡的目標函數:
- \(L(G,F,D_X,D_Y) = L_{GAN}(G,D_Y) + L_{GAN}(F,D_X) + \lambda L_{cyc}(G,F)\)
- \(L_{GAN}(G,D_Y) = E_{y\sim p_{data}}[logD_Y(y)]+E_{x\sim p_{data}}[log(1 - D_Y(G(x)))]\)
- \(L_{GAN}(F,D_X) = E_{x\sim p_{data}}[logD_X(x)]+E_{y\sim p_{data}}[log(1 - D_X(F(y)))]\)
- \(L_{cyc}(G,F) = E_{x\sim p_{data}}||F(G(x))-x||_1 + E_{y\sim p_{data}}||G(F(y))-y||_1\)

使用Cycle GAN生成多軌跡的預測
訓練與目標函數
BiGAT使用了Cycle GAN的思想以更好地實現模型對多條可行性軌跡的預測,整體上是為Cycle GAN找到了一個新的應用方向,但從細節上,由於任務類型的不同BiGAT還是需要據實進行修改,在這里筆者先貼出模型的訓練過程和最終目標函數,再逐個分析其與原模型各部分的對應情況。
目標函數和訓練過程沿用原模型由兩部分組成,第一步是\(z \rightarrow Y' \rightarrow z'\)的前向循環,第二步是\(Y \rightarrow z' \rightarrow Y'\)的前向約束。
\(G*,D*,E* = argmin_{G,E}argmax_D(L_{gan1} + L_z + L_{gan2} + L_{traj} + L_{kl})\)
- 在前向約束中,由\(G-D_1\)網目標函數和噪音z的一致性目標函數組成:
- \(L_{gan1} = E(logD(X_i,Y_i)) + E(log(1 - D(X_i,\hat Y_i)))\)
- \(L_z = ||E(\hat Y_i) - z||_1\)
- 在后向約束中,由\(G-D_2\)網目標函數,路徑Y的一致性目標函數和L網的生成分布目標函數組成:
- \(L_{gan2} = E(logD(X_i,Y_i)) + E(log(1 - D(X_i,G(X_i,E(Y_i)))))\)
- \(L_{traj} = ||Y_i - G(X_i, E(Y_i))||_2\)
- \(L_{kl} = E[D_{kl}(E(Y_i)||N(0,I))]\)

BiGAT與Cycle GAN等效性分析
如果沒有閱讀過Cycle GAN原文(其實就算閱讀了),這部分初看也有些眼花繚亂,和原本的Cycle GAN的差異還是比較大的,但如果再仔細揣摩,會發現二者在原理上實屬相同,這其實也是作者對網絡模型功能深度理解與靈活運用的體現。
- 此前需要明確的是,BiGAT只將循環GAN用在了輸入噪音z與生成軌跡之間,其他的輸入例如軌跡、場景等會參與該過程,但不是該問題的主角,可以被抽象為一個無關的編碼輸入。
- 首先,是BiGAT各網絡模塊在Cycle GAN中的對應關系:生成軌跡的G網連通其軌跡場景等編碼器 + \(D_1\) + \(D_2\)三部分負責\(z \rightarrow traj\)的映射,而L網則負責\(traj \rightarrow z\)的映射。不同於Cycle GAN中的兩對GAN<\(G,D\)>和\(<F,D>\)負責兩個相反方向的映射,BiGAT中的兩個D網均用於建立\(z \rightarrow traj\)方向的映射,而E網(圖中的L模塊)無需獨立的D網即可被訓練出\(traj \rightarrow z\)的映射,這也反映了GAN網絡的設置是方便於訓練映射,而不是必須的。
- 而后,是各目標函數與Cycle GAN中的對應關系:
- \(z \rightarrow traj\) 映射目標函數:\(L_{gan1}, L_{gan2}\)
- \(traj \rightarrow z\) 映射目標函數:\(L_{gan2}, L_{kl}\)。由此可知E網(反向映射網)的訓練是依托於正向映射判別器的,而非Cycle GAN中對稱地划分。(KL散度輔助生成正態分布)
- 一致性目標函數:\(L_{traj}, L_z\)
在BiGAT中,對於L模塊(E網)的訓練是基於真實路徑利用E網得到的噪音z'再參與生成的路徑是否被判別器D2識別,但若直接使用Cycle GAN中的想法,則是真實路徑經過E網得到的噪音z‘是否滿足為判別器所接受,筆者在此的一種想法是將[Y,E(Y)]輸入一個判別器D3,用以訓練E網建立正確的映射。>