日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

微分方程模型_天生一对,硬核微分方程与深度学习的「联姻」之路

發(fā)布時間:2023/12/31 pytorch 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微分方程模型_天生一对,硬核微分方程与深度学习的「联姻」之路 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

微分方程真的能結(jié)合深度神經(jīng)網(wǎng)絡(luò)?真的能用來理解深度神經(jīng)網(wǎng)絡(luò)、推導(dǎo)神經(jīng)網(wǎng)絡(luò)架構(gòu)、構(gòu)建深度生成模型?我們將從鄂維南、董彬和陳天琦等研究者的工作中,窺探微分方程與深度學(xué)習(xí)聯(lián)袂前行的路徑。

近日,北京智源人工智能研究院開展了第一次論壇,其以「人工智能的數(shù)理基礎(chǔ)」這一重大研究方向為主題,從數(shù)學(xué)、統(tǒng)計和計算等角度討論了智能系統(tǒng)應(yīng)該怎樣融合數(shù)學(xué)系統(tǒng)。

在論壇中,北京大學(xué)董彬副教授、林偉研究院和張志華教授等研究者從基礎(chǔ)出發(fā)介紹了「數(shù)學(xué)」眼中的機(jī)器學(xué)習(xí)是什么樣的。而這些數(shù)理基礎(chǔ),正好是構(gòu)建可計算、可泛化、可解釋和穩(wěn)健 ML 系統(tǒng)所必需的。

在眾多演講中,我們發(fā)現(xiàn)董彬老師介紹的微分方程非常有吸引力,它對于探索新的深度學(xué)習(xí)架構(gòu)、構(gòu)建更高性能的深度學(xué)習(xí)模型非常有幫助。因此在這篇文章中,我們重點關(guān)注微分方程在深度學(xué)習(xí)中的應(yīng)用,看起來,它們確實是天生一對的組合。

微分方程與深度學(xué)習(xí)

深度學(xué)習(xí)還能與微分方程相結(jié)合?是的,這是一個很有意思的領(lǐng)域,近來也有非常多的研究成果,包括 NeurIPS 2018 的最佳論文。那么什么是微分方程,它結(jié)合深度學(xué)習(xí)又有什么用呢?

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

不過深度學(xué)習(xí)一般也就會用到概率論、線性代數(shù)和最優(yōu)化等基礎(chǔ)數(shù)學(xué),似乎與微分方程沒什么關(guān)系?其實并不然,如果我們探索網(wǎng)絡(luò)架構(gòu)到底與數(shù)學(xué)的哪些概念是相關(guān)的,那么會發(fā)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)可以理解為一種微分方程。即,深度神經(jīng)網(wǎng)絡(luò)架構(gòu),就是離散化的微分方程。

因此如果能找到了微分方程與深度網(wǎng)絡(luò)之間的關(guān)系,那么兩個領(lǐng)域之間的研究成果就能互相借鑒,也就能找到更高效的深度模型。

此外,深度學(xué)習(xí)的模型設(shè)計缺少系統(tǒng)指導(dǎo),大多數(shù)深度學(xué)習(xí)模型都缺少可解釋性,這也限制了它的應(yīng)用。如果加上了微分方程,那么網(wǎng)絡(luò)架構(gòu)就是數(shù)值微分方程,網(wǎng)絡(luò)訓(xùn)練就是最優(yōu)控制,神經(jīng)網(wǎng)絡(luò)的設(shè)計也就能有理論指導(dǎo)了。

如上圖所示,比較受關(guān)注的是神經(jīng)網(wǎng)絡(luò)架構(gòu)與數(shù)值微分方程之間的關(guān)系,這個領(lǐng)域早期比較有影響的就是北大、普林斯頓教授鄂維南老師的研究,它首次將殘差網(wǎng)絡(luò)理解為微分方程。北大董彬等研究者在 ICML 2018 中進(jìn)一步表明 ResNet、PolyNet、FractalNet 和 RevNet 等網(wǎng)絡(luò)都可以理解為微分方程的不同數(shù)值離散方式。

此外,在 NeurIPS 2018 的最佳論文中,陳天琦等研究者提出神經(jīng)常微分方程,在近似常數(shù)級的內(nèi)存成本上,ODENet 能實現(xiàn)高效的圖像分類和生成任務(wù)。在 ICLR 2019 中,陳天琦等研究者進(jìn)一步將微分方程應(yīng)用到流模型中,從而獲得內(nèi)存效率更高的生成模型。

正如董彬老師所言,通過結(jié)合微分方程,我們可以從數(shù)學(xué)角度出發(fā)設(shè)計網(wǎng)絡(luò)架構(gòu),并分析它們的泛化性能和可解釋性。在這篇文章中,我們希望從基本概念到應(yīng)用,介紹該領(lǐng)域的一些新想法。

數(shù)學(xué)老師眼中的 ResNet

鄂維南院士是一位主要關(guān)注數(shù)學(xué)領(lǐng)域的研究者,也是北京大學(xué)和普林斯頓大學(xué)的教授。在 17 年的《Communications in Mathematics and Statistics》中,鄂維南發(fā)表了一篇文章,他討論了使用連續(xù)動力學(xué)系統(tǒng)建模高維非線性函數(shù)的想法,即微分方程與深度學(xué)習(xí)之間的關(guān)系。

以下是該工作的地址:

  • 論文:A Proposal on Machine Learning via Dynamical Systems
  • 論文地址:https://link.springer.com/article/10.1007/s40304-017-0103-z

在這篇「Proposal」中,鄂老師表示深度神經(jīng)網(wǎng)絡(luò)可以理解為離散的動力學(xué)系統(tǒng)。離散的動力學(xué)系統(tǒng)很難分析,但連續(xù)的動力學(xué)系統(tǒng)在數(shù)學(xué)上更易于分析,因此它可作為深度神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)基礎(chǔ)。此外,因為有很多種方式離散化動力學(xué)系統(tǒng),所以我們也許能構(gòu)建更多有意思的模型。例如,動力學(xué)系統(tǒng)可以選擇自適應(yīng)的時間步大小,這對應(yīng)于選擇自適應(yīng)的神經(jīng)網(wǎng)絡(luò)層級。

這一篇文章提出了非常多的新洞見,尤其是結(jié)合常微分方程與深度殘差網(wǎng)絡(luò)的新視角。下面讓我們看看在數(shù)學(xué)家的眼中,殘差網(wǎng)絡(luò)到底該怎樣推導(dǎo)。

離散動態(tài)系統(tǒng):ResNet

因為 DNN 可以視為離散的動力學(xué)系統(tǒng),那么每一步最基礎(chǔ)的動力學(xué)過程即線性變換加上非線性激活函數(shù),這是最簡單的非線性離散動力學(xué)系統(tǒng)之一。具體而言對于深度殘差網(wǎng)絡(luò),我們可以用離散動態(tài)系統(tǒng)描述為:

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

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

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

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

這難道不就是標(biāo)準(zhǔn)的殘差連接嗎?它不就是如下動態(tài)系統(tǒng)的離散化嗎?

這里 t 相當(dāng)于層級 l 的連續(xù)化,如果 l 趨向于無窮小,那么按照導(dǎo)數(shù)的定義,z_l+1 與 z_l 兩層之間的差就趨向于 z 對 t 的導(dǎo)數(shù)。所以,可以說殘差網(wǎng)絡(luò)其實就是連續(xù)變換的歐拉離散化,它是一個特例。

如果從導(dǎo)數(shù)定義的角度來看方程 2.7,當(dāng) t 的變化趨向于無窮小時,隱藏狀態(tài)的變化 dz 可以通過神經(jīng)網(wǎng)絡(luò)建模。當(dāng) t 從初始一點點變化到終止,那么 z(t) 的改變最終就代表著前向傳播結(jié)果。

從節(jié)選的幾步推導(dǎo),我們可以看到,ResNet 能天然理解為動力學(xué)系統(tǒng),能用微分方程天然表示。但是所有的,或大多數(shù)深度神經(jīng)網(wǎng)絡(luò)都能這樣理解嗎?董彬老師做了進(jìn)一步的研究,他們將這一觀點推廣到了更多的深度神經(jīng)網(wǎng)絡(luò)。

其它深度卷積網(wǎng)絡(luò)又怎樣?

北京大學(xué)董彬副教授等研究者做了進(jìn)一步探討,即 ResNet 與微分方程的這種關(guān)系是特例還是一般化的聯(lián)系。如果數(shù)值 ODE 和網(wǎng)絡(luò)構(gòu)架的聯(lián)系建立起來了,董彬老師表示我們就可以從數(shù)值 ODE 反推出一些有用的神經(jīng)網(wǎng)絡(luò)構(gòu)架。因為 ODE 已經(jīng)發(fā)展了幾十年,有豐富的研究成果可以參考,反推的新架構(gòu)可能取得更好的效果。

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

  • 論文:Beyond Finite Layer Neural Networks: Bridging Deep Architectures and Numerical Differential Equations
  • 論文地址:https://arxiv.org/abs/1710.10121

微分方程的解法即網(wǎng)絡(luò)架構(gòu)

這里展示了其它卷積網(wǎng)絡(luò)與微分方程之間的關(guān)系,它們在圖像識別等任務(wù)上都非常有效。如下所示為 ResNet 及其它三種卷積網(wǎng)絡(luò)架構(gòu)。

圖源:arXiv: 1710.10121

其中 PolyNet 為每個殘差模塊引入了 PolyInception 模塊,從而加強(qiáng)模塊的表達(dá)能力。PolyInception 模塊是 Inception 單元的「多項式」組合,它會以并行或串行的方式集成多條計算路徑。FractalNet 以自相似性為基準(zhǔn)設(shè)計架構(gòu),它會重復(fù)引用簡單的擴(kuò)展規(guī)則,從而生成結(jié)構(gòu)為截斷分形(fractal)的深度網(wǎng)絡(luò)。最后的 RevNet 是一種可逆網(wǎng)絡(luò),它不需要在前饋傳播中儲存中間激活值。

在下表中,董彬老師總結(jié)了不同卷積網(wǎng)絡(luò)對應(yīng)的微分方程數(shù)值解法。其中 ResNet 和 ResNeXt 可視為步長為 1 的前向歐拉離散化,其它卷積網(wǎng)絡(luò)也對應(yīng)著不同的離散化方式。

圖源:arXiv: 1710.10121

PolyNet

這里我們先看看 PolyNet 怎樣搭上微分方程這班車。PolyNet 主要希望提供多樣性的架構(gòu),因此 PolyInception 除了常規(guī)殘差模塊的一階路徑,還添加了另一條二階路徑。具體而言,PolyInception 模塊可以表示為:

其中 I 表示恒等映射,「·」表示作用于,即 F·x 表示非線性變換 F 作用于 x。我們可以看到,PolyInception 多了一個二階的復(fù)合函數(shù),也就是說,如果 F 表示某種 Inception 模塊,那么二階的路徑會穿過串聯(lián)的兩個 Inception 模塊。在 PolyNet 原論文中,作者展示了可能的 PolyInception 結(jié)構(gòu):

圖源:arXiv: 1611.05725

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

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

因此,PolyNet 可以視為采用反向歐拉策略解常微分方程 u_t = f(u) 的逼近方法。如果這樣理解,那么它暗示著允許更大的時間步大小,因此這表示我們可以采用更少的殘差模塊就能構(gòu)建更好的效果。這正好解釋了,為什么 PolyNet 能增加殘差模塊寬度而降低層級深度,從而實現(xiàn)更好的分類準(zhǔn)確度。

此外,從微分方程的角度來說,反向歐拉法要比正向歐拉法有更好的穩(wěn)定性。這也能從側(cè)面說明為什么在相近參數(shù)和計算量下,PolyNet 能實現(xiàn)更好的效果。

FractalNet 與 RevNet

FractalNet 與 RevNet 也都有對應(yīng)的微分方程「解法」,研究者發(fā)現(xiàn) FractalNet 的宏觀架構(gòu)能解釋為數(shù)值分析中著名的 Runge-Kutta 方法。例如對于復(fù)合次數(shù)小于等于 2 的 FractalNet,每一個模塊都可以表示為:

其中 f_1 和 f_2 分別表示不同的 Fractal,如果我們看看二階的 Runge-Kutta 方法,我們就會發(fā)現(xiàn)他們的表達(dá)式非常相似:

另外的 RevNet 也是一樣,因為它是一種可逆的深度網(wǎng)絡(luò),所以它有從 X 到 Y 和 Y 到 X 的過程。如果它們分別對應(yīng)著前向歐拉方法,那么就表示兩條簡單的動態(tài)系統(tǒng)就能描述整個神經(jīng)網(wǎng)絡(luò)。此外值得注意的是,雖然深度學(xué)習(xí)中很少有可逆的雙向網(wǎng)絡(luò),但是在微分方程中,動態(tài)系統(tǒng)的正反向都是可行的。

最后,董彬老師還根據(jù)數(shù)值微分方程提出了一種新的結(jié)構(gòu):Linear Multi-step Architecture。他表明加上這種結(jié)構(gòu),殘差網(wǎng)絡(luò)只需要一半的參數(shù)量就能達(dá)到相同的訓(xùn)練效果,這表示新結(jié)構(gòu)使卷積網(wǎng)絡(luò)的訓(xùn)練更高效與穩(wěn)定,希望了解的讀者可查閱董老師的原論文。

神經(jīng)化的微分方程

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

在他們的研究 ODENet 中,研究者使用神經(jīng)網(wǎng)絡(luò)參數(shù)化隱藏狀態(tài)的導(dǎo)數(shù),而不是如往常那樣直接參數(shù)化隱藏狀態(tài)。這里參數(shù)化隱藏狀態(tài)的導(dǎo)數(shù)就類似構(gòu)建了連續(xù)性的層級與參數(shù),而不再是離散的層級。因此參數(shù)也是一個連續(xù)的空間,我們不需要再分層傳播梯度與更新參數(shù)。

簡而言之,ODENet 中的神經(jīng)網(wǎng)絡(luò)建模可以表示為下式:

其中 f 表示的是神經(jīng)網(wǎng)絡(luò),h 表示的是隱藏狀態(tài)。相比而言,常規(guī)卷積網(wǎng)絡(luò)可表示為 h(t+1) = f(h(t), θ)。

如果參數(shù)化的是隱藏狀態(tài)的變化,神經(jīng)微分方程在前向傳播過程中不儲存任何中間結(jié)果,因此它只需要近似常數(shù)級的內(nèi)存成本。

  • 論文:Neural Ordinary Differential Equations
  • 論文地址:https://arxiv.org/abs/1806.07366
  • 實現(xiàn)地址:https://github.com/rtqichen/torchdiffeq

新穎的前傳與反傳

其實 ResNet 只不過是簡單的歐拉離散化,而近百年來,數(shù)學(xué)家構(gòu)建了很多現(xiàn)代 ODE 求解方法。這些新方法不僅能保證收斂到真實解,同時還能控制誤差水平。

ODENet 就采用了一種適應(yīng)性 ODESolver 代替前向傳播過程,它不像歐拉法移動固定的步長,相反它會根據(jù)給定的誤差容忍度選擇適當(dāng)?shù)牟介L逼近真實解。

如下圖所示,左邊的殘差網(wǎng)絡(luò)定義有限轉(zhuǎn)換的離散序列,它從 0 到 1 再到 5 是離散的層級數(shù),且在每一層通過激活函數(shù)做一次非線性轉(zhuǎn)換。此外,黑色的評估位置可以視為神經(jīng)元,它會對輸入做一次轉(zhuǎn)換以修正傳遞的值。而右側(cè)的 ODE 網(wǎng)絡(luò)定義了一個向量場,隱藏狀態(tài)會有一個連續(xù)的轉(zhuǎn)換,黑色的評估點也會根據(jù)誤差容忍度自動調(diào)整。

圖源:arXiv: 1806.07366

所以 ResNet 采用的是固定的步長 1,適應(yīng)性 ODESolver 可以自動估計不同的步長,它的自由度和誤差控制都更強(qiáng)一些。

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

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 表示的也是神經(jīng)網(wǎng)絡(luò)層級。不過它不需要層層堆疊離散的層級,只要通過 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 代替了整個前傳過程,這樣豈不是無法進(jìn)行反向傳播了?為了「繞過」前向傳播中的 ODESolver,陳天琦等研究者采用了一種名為 adjoint method 的梯度計算方法。也就是說,模型在反傳中通過第二個增廣 ODESolver 算出梯度,其可以逼近按計算路徑從前向 ODESolver 傳遞回的梯度,因此可用于進(jìn)一步的參數(shù)更新。

總之,通過一系列推導(dǎo),反向傳播在不知道中間激活值的情況下,直接求一個微分方程就行了。我們并不需要一層層反向傳遞梯度,就能直接獲得更新參數(shù)的梯度。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 為增廣狀態(tài)的動力學(xué)過程,用于求解微分方程。ODESlover 求出來的 dL/dθ 就可以直接用來更新神經(jīng)網(wǎng)絡(luò)的權(quán)重。

ODENet 采用了一種非常新穎的前向與反向傳播過程,它和常規(guī)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練完全不一樣。它的優(yōu)勢也體現(xiàn)在這種差異上,因為反向傳播不需要保留前傳的中間計算結(jié)果,所以只需要常數(shù)級的內(nèi)存要求。

微分方程也能搭生成模型

在 ODENet 中,研究者也展示了將微分方程應(yīng)用到生成模型的前景。因此在 ICLR 2019 中,陳天琦等研究者進(jìn)一步研究了微分方程如何用于流模型。

  • 論文:FFJORD: Free-form Continuous Dynamics for Scalable Reversible Generative Models
  • 論文地址:https://arxiv.org/abs/1810.01367

目前,最流行的生成模型 GAN 通過生成器與判別器的博弈,從而逼近真實數(shù)據(jù)的概率密度函數(shù) p(x)。但流模型希望通過一系列可逆轉(zhuǎn)換,明確地學(xué)習(xí)到數(shù)據(jù)分布 p(x)。因此,流模型會通過可逆神經(jīng)網(wǎng)絡(luò)將數(shù)據(jù)點從一個簡單分布映射到復(fù)雜分布。

但基于似然度訓(xùn)練常規(guī)流模型需要限制它們的架構(gòu),從而使雅可比行列式的計算成本足夠小。例如流模型 Real NVP 或 Glow 等,它們對矩陣維度進(jìn)行分割或使用秩為 1 的權(quán)重矩陣進(jìn)行限制。

ODENet 使用常微分方程定義了一種從隱變量到數(shù)據(jù)的映射,它可以使用相對低成本的跡運算計算雅可比行列式。后面提出的 FFJORD 進(jìn)一步發(fā)揚了這種觀點,它將跡估計和前向傳播都定義為了常微分方程,并使用 ODESolver 直接求解。直觀而言,FFJORD 的抽象過程可如下圖所示:

圖源:arXiv: 1810.01367

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

最后,這些方向與成果都表明,微分方程真的可以和深度神經(jīng)網(wǎng)絡(luò)相結(jié)合。也許以后,微分方程乃至其它數(shù)理基礎(chǔ),都能幫助我們構(gòu)建更魯棒和可解釋性的機(jī)器學(xué)習(xí)系統(tǒng)。

總結(jié)

以上是生活随笔為你收集整理的微分方程模型_天生一对,硬核微分方程与深度学习的「联姻」之路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。