天天看點

天生一對,硬核微分方程與深度學習的「聯姻」之路

近日,北京智源人工智能研究院開展了第一次論壇,其以「人工智能的數理基礎」這一重大研究方向為主題,從數學、統計和計算等角度讨論了智能系統應該怎樣融合數學系統。

在論壇中,北京大學董彬副教授、林偉研究院和張志華教授等研究者從基礎出發介紹了「數學」眼中的機器學習是什麼樣的。而這些數理基礎,正好是建構可計算、可泛化、可解釋和穩健 ML 系統所必需的。

在衆多演講中,我們發現董彬老師介紹的微分方程非常有吸引力,它對于探索新的深度學習架構、建構更高性能的深度學習模型非常有幫助。是以在這篇文章中,我們重點關注微分方程在深度學習中的應用,看起來,它們确實是天生一對的組合。

微分方程與深度學習

深度學習還能與微分方程相結合?是的,這是一個很有意思的領域,近來也有非常多的研究成果,包括

NeurIPS 2018 的最佳論文

。那麼什麼是微分方程,它結合深度學習又有什麼用呢?

按照維基百科的描述:「微分方程是一種數學方程,用來描述某一類函數與其導數之間的關系」,是以一個方程如果同時包含函數及其導數,那麼就可以稱為微分方程。例如,f'(x) = 2x 就是一個常微分方程,我們可以「看出來」其通解為 f(x)=x^2 +C,其中 C 表示任意常數。

不過深度學習一般也就會用到機率論、線性代數和

最優化

等基礎數學,似乎與微分方程沒什麼關系?其實并不然,如果我們探索網絡架構到底與數學的哪些概念是相關的,那麼會發現深度神經網絡可以了解為一種微分方程。即,深度神經網絡架構,就是離散化的微分方程。

是以如果能找到了微分方程與深度網絡之間的關系,那麼兩個領域之間的研究成果就能互相借鑒,也就能找到更高效的深度模型。

此外,深度學習的模型設計缺少系統指導,大多數深度學習模型都缺少可解釋性,這也限制了它的應用。如果加上了微分方程,那麼網絡架構就是數值微分方程,網絡訓練就是最優控制,神經網絡的設計也就能有理論指導了。

天生一對,硬核微分方程與深度學習的「聯姻」之路

如上圖所示,比較受關注的是神經網絡架構與數值微分方程之間的關系,這個領域早期比較有影響的就是北大、普林斯頓教授鄂維南老師的研究,它首次将殘差網絡了解為微分方程。北大董彬等研究者在 ICML 2018 中進一步表明 ResNet、PolyNet、FractalNet 和 RevNet 等網絡都可以了解為微分方程的不同數值離散方式。

此外,在 NeurIPS 2018 的最佳論文中,陳天琦等研究者提出神經常微分方程,在近似常數級的記憶體成本上,ODENet 能實作高效的圖像分類和生成任務。在 ICLR 2019 中,陳天琦等研究者進一步将微分方程應用到流模型中,進而獲得記憶體效率更高的生成模型。

正如董彬老師所言,通過結合微分方程,我們可以從數學角度出發設計網絡架構,并分析它們的泛化性能和可解釋性。在這篇文章中,我們希望從基本概念到應用,介紹該領域的一些新想法。

數學老師眼中的 ResNet

鄂維南院士是一位主要關注數學領域的研究者,也是北京大學和普林斯頓大學的教授。在 17 年的《Communications in Mathematics and Statistics》中,鄂維南發表了一篇文章,他讨論了使用連續動力學系統模組化高維非線性函數的想法,即微分方程與深度學習之間的關系。

以下是該工作的位址:

在這篇「Proposal」中,鄂老師表示深度神經網絡可以了解為離散的動力學系統。離散的動力學系統很難分析,但連續的動力學系統在數學上更易于分析,是以它可作為深度神經網絡的數學基礎。此外,因為有很多種方式離散化動力學系統,是以我們也許能建構更多有意思的模型。例如,動力學系統可以選擇自适應的時間步大小,這對應于選擇自适應的神經網絡層級。

這一篇文章提出了非常多的新洞見,尤其是結合常微分方程與深度殘差網絡的新視角。下面讓我們看看在數學家的眼中,殘差網絡到底該怎樣推導。

離散動态系統:ResNet

因為 DNN 可以視為離散的動力學系統,那麼每一步最基礎的動力學過程即線性變換加上非線性激活函數,這是最簡單的非線性離散動力學系統之一。具體而言對于深度殘差網絡,我們可以用離散動态系統描述為:

天生一對,硬核微分方程與深度學習的「聯姻」之路

其中 Z_l 和 Z_l+1 為第 l 層的輸入與輸出,y_l 為第 l 層的輔助變量,h 和 g 為一些映射,它們可以是線性的,也可以是非線性的。對于深度神經網絡,如果 g 和 h 是恒等映射,訓練會非常順暢,那麼為什麼會這樣呢?為什麼 g 和 h 是恒等映射就能減輕梯度爆炸或消失問題?

實際上,如果令 G 為 g 的逆向映射(inverse map),我們可以将上述動力學系統寫為:

天生一對,硬核微分方程與深度學習的「聯姻」之路

為了有一個穩定的訓練過程,即梯度不爆炸、不消失,上述方程右邊的梯度需要接近于恒等映射。也就是說,梯度由後向前傳時,它在量上需要保持穩定。鄂老師表示若令 h 和 g 都為恒等映射,∇G∇h 就逼近恒等映射(F 為較小随機擾動),梯度的傳遞就非常平穩。

其實若 h 和 g 為恒等映射,那麼方程 2.3 就可以寫為:

天生一對,硬核微分方程與深度學習的「聯姻」之路

這難道不就是标準的殘差連接配接嗎?它不就是如下動态系統的離散化嗎?

天生一對,硬核微分方程與深度學習的「聯姻」之路

這裡 t 相當于層級 l 的連續化,如果 l 趨向于無窮小,那麼按照導數的定義,z_l+1 與 z_l 兩層之間的差就趨向于 z 對 t 的導數。是以,可以說殘差網絡其實就是連續變換的歐拉離散化,它是一個特例。

如果從導數定義的角度來看方程 2.7,當 t 的變化趨向于無窮小時,隐藏狀态的變化 dz 可以通過神經網絡模組化。當 t 從初始一點點變化到終止,那麼 z(t) 的改變最終就代表着前向傳播結果。

從節選的幾步推導,我們可以看到,ResNet 能天然了解為動力學系統,能用微分方程天然表示。但是所有的,或大多數深度神經網絡都能這樣了解嗎?董彬老師做了進一步的研究,他們将這一觀點推廣到了更多的深度神經網絡。

其它深度卷積網絡又怎樣?

北京大學董彬副教授等研究者做了進一步探讨,即 ResNet 與微分方程的這種關系是特例還是一般化的聯系。如果數值 ODE 和網絡構架的聯系建立起來了,董彬老師表示我們就可以從數值 ODE 反推出一些有用的神經網絡構架。因為 ODE 已經發展了幾十年,有豐富的研究成果可以參考,反推的新架構可能取得更好的效果。

在 ICML 2018 的一項研究中,董彬等研究者表示很多高效的卷積神經網絡都能解釋為微分方程,并基于微分方程的線性多步解法提出新的線性多步架構,這種結構能提升 ImageNet 等的圖像分類任務的性能。

微分方程的解法即網絡架構

這裡展示了其它卷積網絡與微分方程之間的關系,它們在圖像識别等任務上都非常有效。如下所示為 ResNet 及其它三種卷積網絡架構。

天生一對,硬核微分方程與深度學習的「聯姻」之路

圖源:arXiv: 1710.10121

其中 PolyNet 為每個殘差子產品引入了 PolyInception 子產品,進而加強子產品的表達能力。PolyInception 子產品是 Inception 單元的「多項式」組合,它會以并行或串行的方式內建多條計算路徑。FractalNet 以自相似性為基準設計架構,它會重複引用簡單的擴充規則,進而生成結構為截斷分形(fractal)的深度網絡。最後的 RevNet 是一種可逆網絡,它不需要在前饋傳播中儲存中間激活值。

在下表中,董彬老師總結了不同卷積網絡對應的微分方程數值解法。其中 ResNet 和 ResNeXt 可視為步長為 1 的前向歐拉離散化,其它卷積網絡也對應着不同的離散化方式。

天生一對,硬核微分方程與深度學習的「聯姻」之路

PolyNet

這裡我們先看看 PolyNet 怎樣搭上微分方程這班車。PolyNet 主要希望提供多樣性的架構,是以 PolyInception 除了正常殘差子產品的一階路徑,還添加了另一條二階路徑。具體而言,PolyInception 子產品可以表示為:

天生一對,硬核微分方程與深度學習的「聯姻」之路

其中 I 表示恒等映射,「·」表示作用于,即 F·x 表示非線性變換 F 作用于 x。我們可以看到,PolyInception 多了一個二階的複合函數,也就是說,如果 F 表示某種 Inception 子產品,那麼二階的路徑會穿過串聯的兩個 Inception 子產品。在 PolyNet 原論文中,作者展示了可能的 PolyInception 結構:

天生一對,硬核微分方程與深度學習的「聯姻」之路

圖源:arXiv: 1611.05725

如上所示,a 和 b 是等價的,F 和 G 表示是否共享參數。董彬老師表示,PolyNet 可以解釋為時間步為 1 的反向歐拉方法,實際上前向傳播就是在解一個反向歐拉。

天生一對,硬核微分方程與深度學習的「聯姻」之路

不過本身反向歐拉要求解一個非常巨大的非線性方程組的逆,這樣無法求解就隻能用多項式去逼近解。也就是說,上式的求逆又可以寫為:

天生一對,硬核微分方程與深度學習的「聯姻」之路

是以,PolyNet 可以視為采用反向歐拉政策解常微分方程 u_t = f(u) 的逼近方法。如果這樣了解,那麼它暗示着允許更大的時間步大小,是以這表示我們可以采用更少的殘差子產品就能建構更好的效果。這正好解釋了,為什麼 PolyNet 能增加殘差子產品寬度而降低層級深度,進而實作更好的分類準确度。

此外,從微分方程的角度來說,反向歐拉法要比正向歐拉法有更好的穩定性。這也能從側面說明為什麼在相近參數和計算量下,PolyNet 能實作更好的效果。

FractalNet 與 RevNet

FractalNet 與 RevNet 也都有對應的微分方程「解法」,研究者發現 FractalNet 的宏觀架構能解釋為數值分析中著名的 Runge-Kutta 方法。例如對于複合次數小于等于 2 的 FractalNet,每一個子產品都可以表示為:

天生一對,硬核微分方程與深度學習的「聯姻」之路

其中 f_1 和 f_2 分别表示不同的 Fractal,如果我們看看二階的 Runge-Kutta 方法,我們就會發現他們的表達式非常相似:

天生一對,硬核微分方程與深度學習的「聯姻」之路

另外的 RevNet 也是一樣,因為它是一種可逆的深度網絡,是以它有從 X 到 Y 和 Y 到 X 的過程。如果它們分别對應着前向歐拉方法,那麼就表示兩條簡單的動态系統就能描述整個神經網絡。此外值得注意的是,雖然深度學習中很少有可逆的雙向網絡,但是在微分方程中,動态系統的正反向都是可行的。

最後,董彬老師還根據數值微分方程提出了一種新的結構:Linear Multi-step Architecture。他表明加上這種結構,殘差網絡隻需要一半的參數量就能達到相同的訓練效果,這表示新結構使卷積網絡的訓練更高效與穩定,希望了解的讀者可查閱董老師的原論文。

神經化的微分方程

微分方程除了為深度網絡提供理論解釋,并啟發架構創新,它還能做一些更炫酷的工作嗎?多倫多大學陳天琦等研究者表示,既然殘差連接配接就是常微分方程(ODE)的離散化,那麼正常神經網絡的前向傳播過程豈不就是微分方程給定初值解末值的過程?如果我們用業界成熟的微分方程求解器(ODESolve)解某個 ODE,這不就能代替前傳和反傳麼?

在他們的研究 ODENet 中,研究者使用神經網絡參數化隐藏狀态的導數,而不是如往常那樣直接參數化隐藏狀态。這裡參數化隐藏狀态的導數就類似建構了連續性的層級與參數,而不再是離散的層級。是以參數也是一個連續的空間,我們不需要再分層傳播梯度與更新參數。

簡而言之,ODENet 中的神經網絡模組化可以表示為下式:

天生一對,硬核微分方程與深度學習的「聯姻」之路

其中 f 表示的是神經網絡,h 表示的是隐藏狀态。相比而言,正常卷積網絡可表示為 h(t+1) = f(h(t), θ)。

如果參數化的是隐藏狀态的變化,神經微分方程在前向傳播過程中不儲存任何中間結果,是以它隻需要近似常數級的記憶體成本。

新穎的前傳與反傳

其實 ResNet 隻不過是簡單的歐拉離散化,而近百年來,數學家建構了很多現代 ODE 求解方法。這些新方法不僅能保證收斂到真實解,同時還能控制誤差水準。

ODENet 就采用了一種适應性 ODESolver 代替前向傳播過程,它不像歐拉法移動固定的步長,相反它會根據給定的誤差容忍度選擇适當的步長逼近真實解。

如下圖所示,左邊的殘差網絡定義有限轉換的離散序列,它從 0 到 1 再到 5 是離散的層級數,且在每一層通過激活函數做一次非線性轉換。此外,黑色的評估位置可以視為神經元,它會對輸入做一次轉換以修正傳遞的值。而右側的 ODE 網絡定義了一個向量場,隐藏狀态會有一個連續的轉換,黑色的評估點也會根據誤差容忍度自動調整。

天生一對,硬核微分方程與深度學習的「聯姻」之路

圖源:arXiv: 1806.07366

是以 ResNet 采用的是固定的步長 1,适應性 ODESolver 可以自動估計不同的步長,它的自由度和誤差控制都更強一些。

對于新穎的前向傳播,我們可以通過兩段僞代碼了解它與正常方法的不同之處。如下是 ResNet 的簡要僞代碼,定義 f 為卷積層、T 為殘差塊的數量:

def f(h, t, θ): 
return nnet(h, θ_t) 

def resnet(h): 
for t in [1:T]:
h = h + f(h, t, θ)
return h      

如下展示的是整個 ODEnet 的僞代碼,f 表示的也是神經網絡層級。不過它不需要層層堆疊離散的層級,隻要通過 ODESolver 求出終止時刻 t_1 的 h 就行了,整個 ODESolver 就是一個黑箱過程。

def f(h, t, θ):
return nnet([h, t], θ)

def ODEnet(h, θ): 
return ODESolver(f, h, t_0, t_1, θ)      

是以不同之處在于 ODESlover 代替了整個前傳過程,這樣豈不是無法進行反向傳播了?為了「繞過」前向傳播中的 ODESolver,陳天琦等研究者采用了一種名為 adjoint method 的梯度計算方法。也就是說,模型在反傳中通過第二個增廣 ODESolver 算出梯度,其可以逼近按計算路徑從前向 ODESolver 傳遞回的梯度,是以可用于進一步的參數更新。

def f(h, t, θ):
return nnet([h, t], θ)

def ODEnet(h, θ):
return ODESolver(f, h, t_0, t_1, θ)      

總之,通過一系列推導,反向傳播在不知道中間激活值的情況下,直接求一個微分方程就行了。我們并不需要一層層反向傳遞梯度,就能直接獲得更新參數的梯度。ODENet 的反向傳播過程如下僞代碼所示:

def f_and_a([z, a], t): 
return[f, -a*df/da, -a*df/dθ]

[z0, dL/dx, dL/dθ]=
ODESolver([z(t1), dL/dz(t), 0], f_and_a, t1, t0)      

其中 f_and_a 為增廣狀态的動力學過程,用于求解微分方程。ODESlover 求出來的 dL/dθ 就可以直接用來更新神經網絡的權重。

ODENet 采用了一種非常新穎的前向與反向傳播過程,它和正常的神經網絡訓練完全不一樣。它的優勢也展現在這種差異上,因為反向傳播不需要保留前傳的中間計算結果,是以隻需要常數級的記憶體要求。

微分方程也能搭生成模型

在 ODENet 中,研究者也展示了将微分方程應用到生成模型的前景。是以在 ICLR 2019 中,陳天琦等研究者進一步研究了微分方程如何用于流模型。

目前,最流行的生成模型 GAN 通過生成器與判别器的博弈,進而逼近真實資料的機率密度函數 p(x)。但流模型希望通過一系列可逆轉換,明确地學習到資料分布 p(x)。是以,流模型會通過可逆神經網絡将資料點從一個簡單分布映射到複雜分布。

但基于似然度訓練正常流模型需要限制它們的架構,進而使雅可比行列式的計算成本足夠小。例如流模型 Real NVP 或 Glow 等,它們對矩陣次元進行分割或使用秩為 1 的權重矩陣進行限制。

ODENet 使用常微分方程定義了一種從隐變量到資料的映射,它可以使用相對低成本的迹運算計算雅可比行列式。後面提出的 FFJORD 進一步發揚了這種觀點,它将迹估計和前向傳播都定義為了常微分方程,并使用 ODESolver 直接求解。直覺而言,FFJORD 的抽象過程可如下圖所示:

天生一對,硬核微分方程與深度學習的「聯姻」之路

圖源:arXiv: 1810.01367

如上圖所示,對于微分方程而言,我們知道初始的随機分布 z(t_0),并系統通過 ODESolver 解出真實圖像分布 z(t_1)。如果知道了 z(t_1),那麼從中采樣就能生成真實圖像。

最後,這些方向與成果都表明,微分方程真的可以和深度神經網絡相結合。也許以後,微分方程乃至其它數理基礎,都能幫助我們建構更魯棒和可解釋性的機器學習系統。

本文為機器之心原創,轉載請聯系本公衆号獲得授權。

繼續閱讀