機器之心報導
參與:一鳴、杜偉
去年5月,機器之心報導了 MIT 華人學神胡淵鳴等開源的計算機圖形庫——太極。近日,這位作者聯合其他研究者推出了自動微分版本的太極——微分太極。這一框架可以基於太極實現自動微分,在物理模擬優化方面有很高的性能和靈活性。這意味著太極從計算機圖形學進入了機器學習的領域。
目前,一作胡淵鳴已在 GitHub 上開源了基於這一框架完成的 10個 物理模擬器,項目登上了 GitHub 熱榜。而微分太極論文也已被 ICLR2020 接收。
項目地址:https://github.com/yuanming-hu/difftaichi
論文地址:https://arxiv.org/pdf/1910.00935.pdf
10 個不同的物理模擬器
微分太極框架極大了提升了可微物理模擬器的性能和生產力。例如,利用微分太極框架的可微彈性對象模擬器(ChainQueen)的速度比 TensorFlow 實現快了 188 倍;微分太極框架的運行速度與 CUDA 實現相當,但代碼縮短了 4.2 倍。
大多數可微模擬器可以在 2 至 3 小時內實現。以下是其中一些模擬器的動態展示圖:
可微 2D 彈性對象模擬器
左:梯度下降迭代步數 0;右:梯度下降迭代步數 80。
可微 3D 彈性對象模擬器
梯度下降迭代步數 40。
可微 3D 流體模擬器
梯度下降迭代步數 450。
可微高度場水模擬器
梯度下降迭代步數 180。
可微(對抗性)水渲染器
這種渲染器包含三個組件:可微水模擬、可微水渲染和可微卷積神經網絡(CNN)。
可微水渲染器結構圖。
實驗結果表明,在經過水模擬和水渲染之後,VGG-16 網絡框架將帶有動態水紋的松鼠照片誤識別為金魚。
可微剛性物體模擬器
時間步長 2048,梯度下降迭代步數 20。
可微彈簧質點模擬器
時間步長 682,梯度下降迭代步數 20。
可微撞球模擬器
微分太極還能模擬撞球等其他包含多個物體的複雜場景。
左:梯度下降迭代步數 0;右:梯度下降迭代步數 100。
微分太極怎樣實現自動微分
太極原本是用於計算機圖形計算和模擬的,為什麼要開發為微分框架呢?這是因為使用可微模擬器進行物理控制器優化,相比 model-free 的強化學習算法,可以提升 1 到 4 個量級的收斂速度。
微分太極是基於太極項目的,它能夠使用源碼轉換的方式,對模擬步驟生成梯度。模擬程序由一個輕量的 tape 進行記錄,並以降序方式返回核的梯度,實現端到端反向傳播。
基本架構
圖 1:(左)微分太極可以和神經網絡控制器及物理模擬模塊無縫結合,並向控制器或初始化轉臺參數更新梯度。模擬過程通常有 512 到 2048 個時間步,每個時間步達到 1000 次並行運算。(右)10 個基於微分太極構建的微分模擬器。
微分太極的主要目標是進行自動微分,即自動生成模擬器的梯度,而且對於傳統的前向模擬器的代碼改變保持最小。
為了保證性能和靈活性,研究者開發了這樣的自動微分系統:在核內使用源碼轉換的方法進行微分,並使用輕量 tape 記錄函數指針和屬性,用於模擬微分。全局張量是計算梯度的檢查點。
圖 2:自動微分架構。(左)微分太極系統。白色部分為來自太極語言的重用架構,藍色為微分程序的擴展部分。(右)Tape 記錄了核的運行,在反向傳播時以降序方式重放(replay)梯度核。
使用源碼遷移進行局部自動微分
典型的太極核由多層循環和一個程序體組成。為了使後續的自動微分變得簡單,研究者採用了兩種代碼遷移方式,分別為平整分支(flatten branching)和消除可變變量(eliminate mutable var),用於簡化程序體:
圖 3:程序體從左到右逐漸被簡化(C++代碼)。
使用 Tape 進行端到端反向傳播的全局自動微分
在微分太極中,研究者構建了一個輕量級的 tape,用於核的執行,使得梯度核可以以降序的方式重放。Tape 很輕量,它不保存中間結果,而是在前向模擬中記錄核的名稱和輸入變量。
在一個微分太極的核啟動的時候,核的函數指針和參數會被添加到 tape 中。當進行梯度計算的時候,系統會順著降序的 tape,將記錄的參數輸入梯度核中獲得梯度。需要注意的是,微分太極的自動微分會根據輸入的全局張量而非輸入參數進行梯度計算。
舉個例子,假定我們的目標是優化三個彈簧質點組成的幾何圖形,在模擬結束的時候需要使它們組成的面積為 0.2。損失函數可定義如下:
程序使用「ti.Tape」記錄前向核的運行。它會自動返回這些核的梯度。剛開始的時候,三角形有著 [0.1, 0.1, 0.14] 的三邊長,而優化後的長度是 [0.600, 0.600, 0.529]。這意味著三角形需要根據胡克定律從小到大進行形變。
上圖中的代碼表示了三角形的形變過程。左側的代碼類似於 PyTorch 或 TF2.0 的訓練過程:設定迭代次數,在前向計算後計算損失,並更新梯度。通過梯度優化的方式,計算機圖形的模擬會變得更快更精確。
論文一作胡淵鳴簡介
胡淵鳴是 MIT 人工智慧實驗室(CSAIL)的博士生,師從 Fredo Durand 和 Bill Freeman 兩位教授。
他從小就對計算機表現出極大的興趣,因其在 2012 年全國高中學科奧賽(信息學)中的優異成績而被保送至清華大學。
2017 年 7 月,胡同學作為優秀畢業生從清華大學姚班畢業。他在微軟亞洲研究院跟隨 Stephen Lin 博士實習時從事深度學習和計算機視覺相關工作。胡同學的本科論文主要研究的是使用強化學習和對抗學習的自動照片後期處理(發表在 SIGGRAPH 2018 大會上)。2018 年 11 月,胡同學在 Wojciech Matusik 教授的指導下完成其碩士論文。
本科論文連結:https://arxiv.org/abs/1709.09602碩士論文連結:http://taichi.graphics/wp-content/uploads/2018/11/thesis_ChainQueen.pdf胡淵鳴開發的一系列 GitHub 項目都獲得了極大的關注,其中最著名的當屬 Taichi 項目,Star 量至今已達 7800。
2019 年的項目貢獻值為 4651。