NIPS2018最佳論文解讀:Neural Ordinary Differential Equations
雷鋒網 AI 科技評論按,不久前,NeurIPS 2018 在加拿大蒙特利爾召開,在這次著名會議上獲得最佳論文獎之一的論文是《Neural Ordinary Differential Equations》,論文地址:https://arxiv.org/abs/1806.07366。Branislav Holl?nder 在 towards data science 上對這篇論文進行了解讀,雷鋒網 AI 科技評論編譯整理如下:
這篇論文的作者隸屬於著名的多倫多大學向量研究所。在這篇文章中,我將嘗試解釋這篇論文的主要觀點,並討論它們對深度學習領域的潛在影響。該論文涉及到了常微分方程(ODE)、遞歸神經網路(RNN)和歸一化流(NF)等概念,但我會儘可能直觀地解釋它的觀點,讓您可以在不太深入了解技術細節的情況下理解主要概念。如果你感興趣的話,你可以去論文原稿中閱讀這些細節。文章分為多個部分,每個部分解釋論文中的一個或多個章節。
從序列變換到神經微分方程
如今,多神經網路體系結構(如 RNN 或殘差網路)包含重複的層塊,這些層塊能夠有序保留信息,並通過學習函數在每一步中對其進行更改。一般來說,這種網路可以用下面的方程來描述:
因此,ht 是時間步長 t 的「隱藏」信息,f(ht,θt)是當前隱藏信息和參數θ的學習函數。本文提出的核心問題是,我們是否可以通過逐步減小步長 [t,t+1] 來提升目前這些網路的最優性能。我們可以想像這是逐步增加 RNN 中的評估數量,或者增加殘差網路中的殘差層數量。如果我們這樣做,我們最終會得到上述方程的微分版本:
因為方程的解是一個函數(函數 h(t)),所以這種方程稱為常微分方程(ode)。換句話說,通過求解方程,我們得到了所需的隱藏狀態序列。我們必須在每次評估過程中,從初始狀態 h0 開始求解方程。這種問題也稱為初值問題。
用「伴隨法」計算模式求解器的梯度
數值求解一個 ODE 通常是通過積分來完成的。多年來,人們發明了很多積分方法,包括簡單的 Euler 方法和 Runge-Kutta 方法的高階變種。然而,這些方法在計算上都是相當密集的。在訓練過程中尤其如此,它需要對積分步驟進行微分,以便能將網路參數θ的所有梯度相加,這會導致較高的內存成本。
本文提出了一種用 Pontryagin 的「伴隨法」計算 ODE 梯度的替代方法。該方法通過求解第二個時間向後增加的 ODE,可以與所有的 ODE 積分器一起使用,並且佔用較小的內存。讓我們考慮最小化 ODE 求解器結果的損失函數,即:
在第二步中,使用了 ODE 解的定義,在第三步中,將 ODESolve 作為求解 ODE 的操作符引入。正如我前面提到的,這個操作符依賴於初始狀態 z(t0)、數 f、初始和結束時間 t0、t1 以及搜索的參數 θ。「伴隨法」現在確定了損耗函數 w.r.t 的梯度,其隱藏狀態為:
這個數量伴隨著 ODE 的增加。
計算梯度
(上述方程要求的第一個梯度)現在可以通過向後求解增強的 ODE 來完成。為了完整性,下面的公式說明了如何計算神經網路函數參數的梯度 w.r.t:
如作者所述,整個梯度計算演算法過程如下:
用於監督學習的 ODE 網路
接下來是論文中最有趣的部分:相關的應用。作者在論文中提到的第一個應用是在監督學習領域,即 MNIST 書寫數字分類。結果表明,該方法與參數較少的殘差網路性能相當。本文中用於評估的網路對輸入圖像進行兩次採樣,然後應用於 6 個殘差塊。總之,網路包含大約 60 萬個參數。ODESolve 網路使用單個 ODESolve 模塊替換 6 層網路。此外,作者還對 RK 網路進行了測試,除了使用 Runge-Kutta 方法直接反向傳播誤差外,該網路與 RK 網路相似。如上所述,您可以將傳統神經網路中的層數與 ODE 網路中的評估數聯繫起來。這兩個網路的參數個數為 22 萬個,重要的結果是,使用大約 1/3 的參數,RK 網路和 ODE 網路的性能與殘差網路大致相同。此外,ODE 網路的內存複雜性是恆定的(見下圖)。
此外,可以調整 ODE 解的精度以最大限度地提高計算性能。例如,一個人可以進行高精度的訓練,並降低評估準確性(更多詳細信息,請參閱原文)。
連續歸一化流
歸一化流是分布的可逆變換。它們可以通過一系列非線性變換將簡單的概率密度轉換為複雜的概率密度,正如在神經網路中一樣。因此,它們利用分布中的變數轉換公式:
上式中,q0(z0)為初始分布,qk(zk)為轉換分布,轉換為 fk,k=0...K。上述和中的 Jacobi 行列式保證了整個轉換過程中分布函數的積分保持為 1。不幸的是,除了一些簡單的變換外,計算這個行列式代價太大。
歸一化流的一個常見應用是變分自動編碼器(VAE),它通常假定潛在變數是高斯分布的。這一假設使得 VAE 的輸出結果變差,因為它不允許網路學習所需的分布。對於歸一化流,高斯參數可以在「解碼」之前轉換成各種各樣的分布,從而提高 VAE 的生成能力。這篇博文詳細解釋了歸一化流:http://akosiorek.github.io/ml/2018/04/03/norm_flows.html
本文討論了歸一化流在連續域中的擴展。有趣的是,這簡化了歸一化常數的計算。如果我們讓隨機變數在時間上是連續的,用函數 f 描述時間的變化(f 是 Lipschitz 連續的),則概率的對數變化遵循簡單的微分方程:
因此,行列式的計算在這裡被簡單的跟蹤運算所取代。此外,如果我們使用一個轉換的和,那麼我們只需要對跟蹤求和:
為了證明 CNF 的有效性,本文測試了概率密度從高斯分布到兩個目標分布的轉換,如下圖所示。
利用 CNF(上兩行)和 NF(下一行)在高斯分布和目標分布之間進行轉換(從 5% 到 100%)。
採用最大似然估計方法對神經網路和神經網路進行訓練,使目標概率分布下的期望值最大化,然後將模型反演為已知分布的樣本。
通過 ODE 生成時間序列模型
本文提到的第三個應用(可能是最重要的應用),是通過 ODE 進行時間序列建模。作者開始這項工作的動機之一是他們對不規則採樣數據的興趣,如醫療記錄數據或網路流量數據。這種數據的離散化常常定義不明確,導致某些時間間隔內數據丟失或潛在變數不準確。有一些方法將時間信息連接到 RNN 的輸入上,但這些方法並不能從根本上解決問題。
基於 ODE 模塊的解決方案是一個連續時間生成模型,在給定初始狀態 z0和觀測時間 t0…tN的情況下,該模型計算潛在狀態 z_t1…z_tN和輸出 x_t1…x_tN:
神經網路函數 f 負責計算從當前時間步長開始的任何時間 t 處的潛伏狀態 z。該模型是一個變分自動編碼器,它使用 RNN 在初始潛伏狀態 z0下編碼過去的軌跡(在下圖中為綠色)。與所有變分自動編碼器一樣,它通過分布的參數(在本例中,滿足均值為μ、標準差為σ的高斯分布)來捕獲潛在狀態分布。從這個分布中,抽取一個樣本並由 ODESolve 進行處理。
該體系結構在一個雙向二維螺旋的合成數據集上進行了測試,該數據集在不規則的時間點採樣,並且數據中有高斯雜訊。下圖定性地顯示了 Latent Neural ODE 模型的優越建模性能:
結論
本文提出了一種非常有趣和新穎的神經網路思維方法。這可能是一篇開啟深度學習新進化的里程碑式論文。我希望隨著時間的推移,越來越多的研究人員開始從不同的角度來思考神經網路,正如本文所做的那樣。
文中的方法是否確實適用於現有的各種模型、是否會被時間證明是有效的,仍有待觀察。作者也提到了他們方法的一些局限性:
小批量可能是這種方法的一個問題,然而作者提到,即使在整個實驗過程中使用小批量,評估的數量仍然是可以管理的。
只有當網路具有有限的權值並使用 Lipschitz 非線性函數(如 tanh 或 relu,而不是階躍函數)時,才能保證 ODE 解的唯一性。
前向軌跡的可逆性可能會受到前向模式求解器中的數值誤差、反向模式求解器中的數值誤差以及由於多個初始值映射到同一結束狀態而丟失的信息的綜合影響。
作者還提到,他們的方法是不唯一的,殘差網路作為近似的 ODE 求解器的想法已經過時了。此外,還有一些論文試圖通過神經網路和高斯過程來學習不同的方程。
本文提出的方法的一個重要優點是,在評估或訓練過程中,通過改變數值積分的精度,可以自由地調節速度和精確度之間的平衡。此外,該方法也非常適用(只要求神經網路的非線性是 Lipschitz 連續的),並且可以應用於時間序列建模、監督學習、密度估計或其他順序過程。
來源:https://towardsdatascience.com/paper-summary-neural-ordinary-differential-equations-37c4e52df128
雷鋒網
※不負光陰不負卿——比亞迪潛心研發13年掌控又一核心技術
※硬體超車無法掩蓋生態缺失,軟實力構建任重而道遠
TAG:雷鋒網 |