計算機圖形自動可微:MIT學神微分太極框架開源,論文被ICLR接收

2021-01-10 機器之心Pro

機器之心報導

參與:一鳴、杜偉

去年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。

相關焦點

  • 計算機圖形也能自動可微:MIT學神的微分太極框架開源
    機器之心機器之心報導參與:一鳴、杜偉去年5月,機器之心報導了 MIT 華人學神胡淵鳴等開源的計算機圖形庫——太極。近日,這位作者聯合其他研究者推出了自動微分版本的太極——微分太極。
  • 7 Papers|MIT學神開源微分太極;北大等提出沒有乘法的神經網絡
    機器之心&ArXiv Weekly Radiostation參與:杜偉、楚航、羅若天本周的重要論文有 MIT 學神胡淵鳴等開源的自動微分版太極以及北大、華為諾亞方舟實驗室等主張以加法運算代替深度神經網絡中的乘法運算。
  • DeepMind可微分神經計算機DNC開源 內部架構原理首次曝光
    1 新智元報導1   作者:聞菲胡祥傑 劉小芹 零夏  【新智元導讀】DeepMind昨夜宣布,將其 Nature 論文研究成果、2016 年引起熱議的可微分神經計算機 DNC 開源,相關代碼和部署細節已經在 Github 公開。
  • 華為開源自研AI框架MindSpore!自動微分、並行加持,一次訓練,可多...
    伴隨著開源,它更多的特性,正在顯露出來。  MindSpore四大功能  華為MindSpore首席科學家、IEEE Fellow陳雷介紹,當前開源的MindSpore主要具備基於源碼轉換的通用自動微分、自動實現分布式並行訓練、數據處理、以及圖執行引擎等功能特性。  整體架構如下圖所示:
  • 華為深度學習框架MindSpore正式開源:自動微分不止計算圖
    今年的華為開發者大會 HDC 2020 上,除了昇騰、鯤鵬等自研晶片硬體平臺之外,最令人期待的就是深度學習框架 MindSpore 的開源了。今天上午,華為 MindSpore 首席科學家陳雷在活動中宣布這款產品正式開源,我們終於可以在開放平臺上一睹它的真面目。
  • 可微分的「OpenCV」:這是基於PyTorch的可微計算機視覺庫
    機器之心整理參與:思如何打造一個可微分的 OpenCV?如何將圖像處理嵌入到訓練流程中?你需要 Kornia 這個開源可微的計算機視覺庫。在這個項目中,開發者提出了一種新型開源可微分計算機視覺庫 Kornia,並且它建立在 PyTorch 之上。Kornia 包含了一組例程和可微分模塊,並致力於解決通用計算機視覺問題。在 Kornia 的核心代碼中,它使用 PyTorch 作為主要後端,並高效地利用反向模式自動微分機制來定義並計算複雜函數的梯度。
  • 清華「計圖」迎來重大更新:支持可微渲染,多項任務速度超PyTorch|...
    蕭簫 發自 凹非寺量子位 報導 | 公眾號 QbitAI想研究可微分渲染,卻擔心找不到合適的框架?現在,官方支持可微分渲染的深度學習框架來了:清華自研的「計圖」 (Jittor)深度學習框架,在更新的版本中加入了可微分渲染庫。
  • 數十篇滿分論文,接收率26.5%,ICLR2020接收結果,明年非洲見
    機器之心報導 機器之心編輯部 經歷了一系列審稿風波,ICLR 2020 的論文接收結果終於塵埃落定。今天,ICLR 2020 公布了論文接收結果。
  • CMU出品,計算機圖形學秋季課程已上線,B站同步字幕視頻
    為期 3 個多月的 CMU《計算機圖形學》課程已經進入了最後的授課階段,授課者也放出了大多數課程主題的線上視頻。B 站也同步更新了這門課程的視頻。計算機圖形學(Computer Graphics)是研究計算機在硬體和軟體幫助下創建計算機圖形的學科,近年來受到了學界和業界的廣泛關注。
  • ICLR 2020接收結果已出,明年非洲見
    機器之心機器之心報導經歷了一系列審稿風波,ICLR 2020 的論文接收結果終於塵埃落定。今天,ICLR 2020 公布了論文接收結果。今天,ICLR 2020 的接收結果終於放出,以下是官方統計的數據:在最終提交的 2594 篇論文中,有 687 篇被接收,接收率為 26.5%;和之前一樣,所有被接收的論文都將進行 poster 展示;23% 的接收論文將進行口頭講述報告,其中 108 篇論文為 spotlight,演講時間
  • CycleGAN作者朱俊彥獲SIGGRAPH傑出博士論文獎
    計算機圖形頂級會議 ACM SIGGRAPH 2018 即將於 8 月 12-16 日在加拿大溫哥華舉行。在大會開始前,部分獎項結果已經揭曉。我們剛剛得到消息:畢業於加州大學伯克利分校的朱俊彥(Jun-Yan Zhu)獲得了大會的最佳博士論文獎。
  • 清華自研深度學習框架「計圖」開源!多項任務性能超過PyTorch
    「貴系」計算機系的圖形實驗室出品,取名Jittor,中文名計圖。值得一提的是,這也是首個來自中國高校科研機構的開源深度學習框架,之前,業內來自「高校」的還有加拿大蒙特婁大學的Theano,UC伯克利的Caffe。
  • 用NumPy寫深度模型,用Julia可微分編程寫函數,這是WAIC開發者日
    「Julia 內建可微分編程,定義任何函數,他就會自動算出值以及梯度!」,Julia 創始人 Viral 說。這就是 WAIC 開發者日,屬於開發者的節日。WAIC 世界人工智慧大會已於近日在上海開幕。
  • ICLR 2020 匿名評審九篇滿分論文,最佳論文或許就在其中|模型|杜克...
    機器之心整理參與:思源、蛋醬、澤南從反傳的自動微分機制,到不平行語料的翻譯模型,ICLR 2020 這 9 篇滿分論文值得你仔細閱讀。早在去年12月,ICLR 2020的論文接收結果就已經出來了,其接收率達到了26.5%。
  • MIT發明一款計算機系統,可自動設計機器人結構
    圖|相關論文(來源:MIT 官網)該論文的第一作者、麻省理工學院計算機科學與人工智慧實驗室 (CSAIL) 的博士生 Allan Zhao 稱:「機器人設計仍然是一個非常手工化的過程。」研究人員表示,這一進展可能會給設計機器人形狀領域注入一定的計算機輔助創造力。基於節肢動物的啟發,研究人員開發出一種遞歸圖形語法規則。Allan Zhao 認為,機器人是為各種無窮無盡的任務而設計的,然而 「它們的整體形狀和設計往往非常相似。」
  • 谷歌推出開源 Python 庫「Tangent」,支持前向模式自動微分
    雷鋒網 AI科技評論編譯整理如下:Tangent 是一個全新的免費開源 Python 庫,可以用於自動微分。與其他現有的機器學習庫相比,Tangent屬於源到源(source-to-source)系統,可以用 Python f 函數調用新的 Python 函數,計算出 f 的梯度。對用戶來說,這大大改善了梯度計算的可見性,更易於編輯和調試。
  • 機器之心年度盤點:2018年重大研究與開源項目
    大大的 GAN今年 9 月份,DeepMind 團隊創造出「史上最強 GAN」,該研究被接收為 ICLR 2019 的 oral 論文。很多學者驚呼:不敢相信這樣高質量的圖像竟是 AI 生成出來的。這款新型 GAN 生成器架構借鑑了風格遷移研究,可對高級屬性(如姿勢、身份)進行自動學習和無監督分割,且生成圖像還具備隨機變化(如雀斑、頭髮)。
  • 從概念到實踐,我們該如何構建自動微分庫
    像 PyTorch 或 TensorFlow 這樣通用的自動微分框架是非常有用和高效的,而且在大多數情況下,幾乎不需要再寫一些更專門化的東西。然而本文作者構建了一個自動微分庫,以高效地計算小批量數據上的訓練。此外,作者還詳細描述了在構建自動微分庫中的過程與思考,是理解自動微分理念的優秀博文。
  • NumPy、AI基礎設施可微分編程、技術實踐,這是一場開發者的盛會
    在深度學習框架領域有很多的貢獻和積累,是 Caffe 的作者,TensorFlow 的作者之一,同時還是 Pytorch1.0 的合作領導者和 Onnx 的創始人。加州大學伯克利分校計算機科學博士學位、清華大學碩士學位和學士學位。
  • 3個開源Python GUI框架
    作為通用程式語言的本質,在每個通用作業系統中都可以使用解釋器,Python必須完全不知道它為創建圖形用戶界面所做出的選擇。幸運的是,有許多選項可供程式設計師使用,希望為用戶創建一種與程序交互的簡便方法。在各種平臺上存在多個UI框架的綁定,包括Windows,Mac和Linux本地的UI框架,以及可以在這三個平臺上工作的許多UI框架。