文獻閱讀報告 - Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks


  1. paper:Gupta A , Johnson J , Fei-Fei L , et al. Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks[J]. 2018.
  2. code:https://github.com/agrimgupta92/sgan

概覽

文章提出了一種采用GAN架構進行訓練的軌跡預測模型,Generator由Encoder-Decoder結構組成,Discriminator由Decoder組成,旨在從合理性、多樣性和預測速度等多方面對現有模型進行提升。

解決問題點

  1. 符合社會規范的軌跡:關注了預測生成軌跡在社會規則上的可行性,在定性評估上相交其他模型生成路徑更合理。
  2. 多樣化的軌跡:傳統評估模型時采用ADE和FDE指標,優化模型的量化評估雖好,但其往往導致溫和單一的預測軌跡,這與現實場景中軌跡的多樣化情況不符。
  3. 預測速度提升:Vanilla LSTM vs SGAN vs Soicla LSTM :56x vs 16x vs 1x,速度有了明顯提升。

模型創新點

  1. 提出新的損失函數-Variety Loss:借鑒於Minimum Over N損失函數,該損失函數鼓勵Generator生成多條可行的路徑。- 多樣化軌跡
  2. 提出新的池化模型:模型中的池化用於LSTMs交換信息,SGAN將Social LSTM模型每步池化變為已知軌跡變化階段僅一次池化(預測階段默認每步都進行池化),同時將池化范圍由固定局部范圍拓展至全局所有行人。- 符合社會規范的軌跡預測速度提升
  3. 將GAN模型應用在軌跡預測的序列生成任務上:GAN在視覺處理上已有大量使用,但對於自然語言處理等序列模型涉及較少,主要是因為生成器向判別器傳遞輸出的操作是不可微的。

閱讀疑問

  1. 文中提到影響GAN在序列模型領域的應用原因是生成器向判別器的操作是不可微的,為何?
  2. SGAN生成器的最終輸出是Decoder的隱藏狀態經MLP(多層感知機)得到的二維坐標軌跡,但Social LSTM中預測二維坐標是基於隱藏狀態滿足二維高斯分布,SGAN沒有采用這樣的假設是因為該方法在反向傳播時不可微,為何?

2019.8.22 更新

經過閱讀一些知乎上的文章,對於上述兩個問題有了初步的解答:

  1. GAN作者早起就已有提及,GAN只適用於連續型數據的生成,對於離散型數據效果不佳。
  2. GAN網絡在訓練生成器(Generator)時,損失函數是在判別器處計算的,從數據流向上是(數據) -> (生成器權重) -> (判別器權重) -> (Loss)只是生成器權重可訓練而判別器權重不可訓練。若有使用反向傳播更新權重,則整個運算過程必須是可導的
  3. 對於問題一:序列問題如NLP,常常在生成結果時有采樣(sample)的行為,例如經過softmax得到詞向量的概率,再將概率最大的置位1其余為0表示最終預測的單詞,這個概率離散化的過程就是采樣,是不可以從數學上求導的。
  4. 對於問題二:Social LSTM訓練階段直接基於二維高斯分布使用neg log-likehood計算損失,在生成階段是基於二維高斯分布隨機多次采樣求均值得到最終位置。如要用到GAN網絡上,傳遞給判別器(Discriminator)的數據須使用生成階段的采樣方法,但這種方法是不可導的。

link:https://zhuanlan.zhihu.com/p/29168803


SGAN模型整體架構

GAN與cGAN

GAN中文又稱生成對抗式網絡,是Goodfellow等人提出的一種方式,旨在最大化訓練數據的可能性下界,其中包含較多的數學原理與推導,筆者在此不具體敘述,只在實現層面簡述GAN的幾個特征:

  1. GAN的組成部分:GAN由生成器和判別器組成,但並不要求生成器與判別器要由神經網絡組成,也可以是其他的數學模型。因此GAN實際為一個訓練的框架,其中實體因實際情況而異,例如在具體的Social GAN模型中,生成器和判別器均為神經網絡,並在生成時采用Encoder-Decoder結構,判別時采用Encoder結構,核心屬於序列模型

    \[\min_{G}\max_{D}V(G,D) = E_{x \sim p_{data}}[logD(x)]+E_{x \sim p(z)}[log(1- D(G(z)))] \]

  2. cGAN:基礎的GAN網絡中,生成器生成的結果是基於隨機初始化的輸入向量(例如LSTM模型中,輸入因為隨機初始化的Hidden State),但是該網絡的目標是基於已知的軌跡生成預測軌跡,因此生成器的輸入還需根據已有信息合成。

    下面的SGAN結構圖中,在Generator中若要再細致一些的話,真正的生成器是由LSTN組成的Decoder部分,前段和中段的Encoder和Pooling Module實為為Decoder准備其初始化Hidden State的預處理部件。

  1. GAN的訓練過程:GAN訓練時的對象生成器和判別器,而測試時對象僅有生成器。
    1. 一次迭代(epoch/iteration)中,生成器和判別器將分別經過g_stepsd_steps步訓練,每次迭代中,先單獨訓練判別器的d_steps次,再單獨訓練生成器。
    2. 訓練判別器:每步訓練中,對於同一段已知路徑,判別器將接受來自數據庫和生成器的真軌跡與假軌跡,並對兩個軌跡真假性做出評估,對抗損失函數將基於判別器對於兩個軌跡的判斷
    3. 訓練生成器:每步訓練中,生成器將根據一段已知路徑生成假軌跡,並交由判斷器判斷真假,對抗損失函數將基於判別器對假軌跡的判斷

SGAN結構

Social GAN分為Generator和Discriminator:

  1. Generator:生成器由Encoder、Pooling Module和Decoder組成。

    1. Encoder使用LSTM序列模型實現,用於將行人的歷史軌跡信息編碼。最終輸出的隱藏狀態\(h_{ei}^{t_{obs}}\),將包含整個軌跡的信息。

      \[e_i^t = \phi (x_i^t, y_i^t, W_{ee}) \]

      \[h_{ei}^t = LSTM(h_{ei}^{t-1}, e_i^t;W_{encoder}) \]

    2. Pooling Module使用max pooling實現,用於共享行人間信息。最終輸出的是\(c_i^t\),作為Decoder輸入的一部分。

      \[P_i = PM(h_{e1}^{t_{obs}},h_{e2}^{t_{obs}},h_{e3}^{t_{obs}}...) \]

      \[c_i^t = \gamma (P_i, h_{ei}^{t_{obs}};W_c) \]

      *\(\gamma(.)\)是使用Relu的多層感知機(含有多個隱藏層的全連接層)

    3. Decoder使用LSTM序列模型實現,用於生成預測的軌跡。不同於其他LSTM,其Hidden State初始值並不隨機,而是由\(h_{di}^t = [c_i^t, z]\)拼接而成,前者為PM生成的結果,后者是加入的隨機噪音以便生成多種軌跡。Decoder實際可被看做是帶輸入條件的生成器。

      這其中需要:注意實驗默認的Pooling Module在Decode階段每步運行都會進行池化。

      \[e_i^t = \phi(x_i^{t-1}, y_i^{t-1}, W_{ed}) \]

      \[P_i = PM(h_{d1}^{t-1},...,h_{dn}^{t-1}) \]

      \[h_{di}^t = LSTM(\gamma(P_i,h_{di}^{t-1}),e_i^t,W_{decoder}) \]

      \[(\hat{x_i^t},\hat{y_i^t}) = \gamma(h_{di}^t) \]

      *\(\gamma(.)\)是使用Relu的多層感知機

  2. Discriminator:判別器結構相對簡單,由一個LSTM實現的Decoder和對[Decoder輸出, 已知軌跡部分]進行多層感知的全連接層組成,最終輸出對於路徑真假性的評分。


模型特點與創新

損失函數

SGAN模型訓練是分別針對生成器和判別器的,因而兩部分的損失函數也需要分別定義,SGAN的損失函數基礎量是Adversarial Loss,除此之外還附加了Variety Loss增加路徑生成的多樣性

  1. 生成器

    \[L_G = L_{adversarial}+L_{variety} \]

    1. \(L_{adversarial}\):懲罰“生成的軌跡被判別器判為假”:判別器對軌跡的scores與[0]向量的交叉熵。
    2. \(L_{variety} = \min_k||Y_i - \hat Y_i^{(k)}||_2\):這是基於\(L_2\)損失改進的,k指代Generator中在生成Decoder的初始隱藏狀態時,\(z\)的隨機取樣次數。按原文來講,該函數只懲罰\(L_2\)誤差最小的預測路徑,鼓勵“hedge its bets”(多下注,留退路),生成多種可行的路徑。(與MoN損失函數類似,但並未在此領域使用過)。
  2. 判別器

    \[L_D = L_{adversarial} \]

    1. 懲罰“生成的軌跡被判別器判為真”:判別器對軌跡的scores與[0.7-1.2]向量的交叉熵。
    2. 懲罰“真實的軌跡被判別器判為假”:判別器對軌跡的scores與[0]向量的交叉熵。

池化模塊

SGAN提出了異於Social Pooling的新型池化模型,這種池化模型將全局行人的信息納入考量,並且源信息在LSTMs的Hidden States基礎上增加了行人間的位置信息。后續的實驗結果表明新的池化模型在量化指標上稍遜Social Pooing,但生成軌跡更符合社會規則。

此處有幾點需要注意:

  1. Pooing Module的輸入由[Hidden States, Relative Location]兩部分組成——每個LSTMs的隱藏狀態和其他行人對目標行人的相對位置x,原文中在兩處分別提到了這兩個數據源,但並沒有統一結合說明。
  2. 由於不同場景的人數不相同,模型為保證對池化結果維數相同,使用的是max pooling,對於每個行人(num_ped,N)的張量變為(1, N)。
  3. 實現代碼中有關相對位置的計算和批量矩陣化運算的實現細節比較巧妙,如有需求請參考代碼model.py - PoolHiddenNet部分和實驗代碼解析。

其他

  1. 路徑數據相對VS絕對:雖然文章中僅在Pooling Module部分重點提出過使用相對位置(不同人在同一時刻之間),但經過通過閱讀實驗代碼,生成器從輸入到最終的輸出,都是相對位置(同一人某時刻相較於前一時刻的位置變化),而絕對位置雖傳入模型但僅作為計算相對位置、合成絕對位置、計算grid等功能。

  2. 生成器輸出:在Social LSTM中,作者基於LSTM最終輸出的隱藏狀態呈現位置信息的二維高斯分布,並以此預測位置和計算損失;但在SGAN中,文章以該方法在反向傳播時不可微的原因使用多層感知機直接預測二維目標,並用\(L_2\)計算損失。


模型評估與實驗

  1. 實驗數據庫:ETH和UCY,4種場景,1536條行人軌跡,未經歸一化處理。

  2. 評價指標:ADE - Average Displacement Error,FDE - Final Displacement Error。鑒於SGAN生成路徑的多樣性,評價時將對一條路徑的多種預測取最小誤差作為結果

  3. 無關變量控制

    1. 預測時間:輸入3.2秒,預測3.2秒或4.8秒。
    2. SGAN實驗模型的編號為SGAN-kVP-N:kV表示訓練時使用Variety Loss的生成次數(1表示沒有使用Variety Loss);有無P表示是否使用新型池化結構;N表示計算Error前,對於一條已知路徑生成了多少條備選路徑。
  4. 定量實驗結論

    1. 全場最佳:SGAN模型編號SGAN-20V-20整體表現最佳,SGAN-20VP-20在量化結果上稍遜前者(后文解釋)。

    2. 多樣化輸出顯著,模型對噪音敏感:若在評估時只取模型隨機生成的一個軌跡,那么量化指標結果差於Social LSTM,這表示模型對噪音\(\alpha\)是敏感的。同時,隨着評估參考軌跡的數量上升,評估結果也顯著提高,最高在\(k=100\)(100條軌跡中選誤差最小的)時能夠降低33%的錯誤率。

    3. 速度提升顯著:得益於池化結構簡化,SGAN生成速度可達Social LSTM的16倍。

      注:Social LSTM整體表現比Vanilla LSTM差,原文章的實驗結果使用真實數據訓練+加強數據測試的策略無法復現。

  1. 定性實驗結論

    雖然具有新型池化結構的模型比原池化的模型的數據表現略遜一籌,但將軌跡數據可視化后,新型池化的預測要比原模型更符合社會規則性。文中特別提取幾種常見社交場景進行對比,具體請參見原文:

    1. 沖突場景:一對一相遇、一對多相遇、追尾式相遇、帶有角度的側面相遇。
  1. 人群聚合場景、人群回避場景(人人間互相回避)、人群跟隨場景


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM