在本文中,我想將經典數學建模和機器學習之間建立聯繫,它們以完全不同的方式模擬身邊的對象和過程。雖然數學家基於他們的專業知識和對世界的理解來創建模型,而機器學習算法以某種隱蔽的不完全理解的方式描述世界,但是在大多數情況下甚至比專家開提出的數學模型更準確。然而,在許多應用程式(如醫療保健,金融,軍事)中,我們需要清晰可解釋的決策,而機器學習算法,特別是深度學習模型並不是這樣設計的。
本文將回顧所期望模型的的主要特點,「經典」數學模型和機器學習模型的優點和缺點,並展示一個結合了兩種模型特點的案例:disentangled representation learning。
深度學習有什麼問題?
自從深度學習開始蓬勃發展以來,我們嘗試在任何地方使用神經網絡。在許多重要領域,它非常有效並可以得到最先進的結果,例如在計算機視覺,自然語言處理,語音分析和信號處理等領域。最終,這些深度學習的方法都是關於從複雜數據中自動提取特徵,在神經網絡中結合線性和非線性變換,以一些「向量」(vector)結束,也叫做「嵌入」(embedding),它表示輸入對象需要的所有信息並對其進行分類或回歸:
這些「向量」在特徵提取和準確性方面確實非常好,但它們也在很多方面都有不足:
可解釋性:大小為N的向量不能告訴我為什麼要採取某種決策,只有逆向工程方法可以在輸入數據中突出「感興趣對象」。需要大量數據:深度學習並不適合只有10-100個樣本。無監督學習:大多數應用都需要標記訓練數據。零重複使用:這是一個非常重要的問題:在一個數據集上訓練的神經網絡很少可以直接應用於另一個類似的數據集而無需重新訓練。對象生成:我可以通過嵌入生成真實的對象嗎?對GAN來說,可以。對象操作:我可以使用嵌入操作輸入對象的特定屬性嗎?並不能。理論基礎:我們有通用逼近理論。但是不夠深入。在現代機器學習框架中,似乎很難解決這些問題。但是我們可以用某種方式來解決!
數學建模有什麼用?
關於上面提到的這些問題,大多數數學家在20,50甚至100年前根本沒有遇到過。為什麼?因為他們一直在使用數學來建立模型,即用數學抽象來描述現實世界中的對象和過程,例如分布,公式或微分方程(這就是為什麼我們的標題中有「ODE」,常微分方程(ordinary differential equations))。再次查看「問題清單」,並考慮科學家從頭開始創建的數學模型。我仍然會在這裡使用術語「嵌入」,它將代表數學模型的參數,即微分方程中的自由度集。
可解釋性:每個數學模型都是基於科學家如何描述對象而創建的,具有明確的動機和理論。例如,為了描述物理運動,我們的嵌入將包括物體質量,運動速度和坐標空間,沒有抽象的向量!需要大量數據:今天的大部分科學突破都沒有在「ImageNet大小」的數據集上完成。無監督學習:嗯~,這不是數學建模要考慮的情況:)零重複使用:相同的隨機微分方程,比方說,幾何布朗運動可以應用於金融,生物或物理,只需要重命名參數名稱。對象生成:立即可用,只需要採樣參數。對象操作:立即可用,只需要操作參數。理論基礎:數百年的科學理論。那麼為什麼我們不使用微分方程呢?事實證明,對於大規模的複雜數據,它們的表現要差得多。這就是如今掀起深度學習的浪潮的原因。但是,我們仍然希望從開發的模型中獲得不錯的靈感。
機器學習和數學建模的結合
如果我們想使用在分析複雜數據時比較準確的神經網絡,但也要具有上面描述的屬性,應該怎麼做?在不同的環境中,可解釋性,生成和操縱對象的能力,無監督的特徵學習和零重複使用,怎樣找?例如,作為面部圖像的特徵提取器,我希望看到下面這樣的東西:
它適用於對於微分方程或其他模型而言過於複雜的圖像,允許生成和操縱對象,有可解釋性,並且很可能也可以在另一個數據集上完成這些操作。這項工作的唯一問題是不是完全無監督。另一個重要的操作問題是當我改變例如「鬍鬚」的特徵時,它會自動使臉部變得更有男子氣概,這意味著學習的特徵雖然可以解釋,但是彼此相關連,或者是糾纏。
β-VAE
然而,存在一種方法可以幫助我們解開糾纏,換句話說,那就是嵌入,其中的每個元素負責單個因子,並且該嵌入可以用於新數據的分類,生成或操作任務(在零重用領域)。該算法是在DeepMind實驗室中開發的,基於可變自動編碼器,但更強調潛在分布與先驗分布選擇之間的KL-差異,而不是恢復損失。有關詳細信息,可以參考下面的視頻,它很好地解釋了β-VAE背後的想法,和在監督學習和強化學習中的應用。
觀看此視頻後,您可以看到,β-VAE實際上能夠提取輸入數據變化的因素:物理運動方向,物體大小,顏色還有方向,它們能夠在強化學習分離出感興趣的物體和背景,並可以在實際環境中重複使用模擬訓練的結果。
我的實驗
由於我一直在醫療和金融應用方面工作,脫離了真正解決實際問題相關的可解釋的模型,人工數據生成和零重複學習,我嘗試將beta-VAE用於ECG和BTC價格數據。您可以在我的GitHub中找到用於訓練模型的代碼。首先,我將β-VAE(非常簡單的MLP網絡)用在來自PTB診斷數據集的心電圖,它有三個變化因素:不同的心電圖脈衝/形式,不同的人隨時間變化的脈搏,還有是否患有梗塞的診斷。我一共訓練VAE 50次迭代,bottleneck 大小為 10,學習率為5e-4,capacity C 為 25(詳見本處)。輸入設置為單個心跳。正如我預料的,我的模型學習了數據集變化的真正因素。在下面的圖片中可以看到,操做心跳輸入(黑色的線)時bottleneck中的單個特徵從-3變為3的,同時保留其他特徵是怎樣變化的。可以看到,第5個特徵負責改變心跳的形式,第8個特徵代表心臟狀況(藍色表示有梗塞症狀,而紅色心電圖與它相反),第10個特徵改變脈搏等。
解析心電圖節拍
關於金融數據,一切都不是那麼清楚(不足為奇)。訓練參數相似,但輸入是2017年收集的BTC價格的180分鐘的樣本。我期望從beta-VAE學習一些「標準」金融時間序列模型,如均值回歸時間序列,但解釋獲得的表示相對比較困難。可以看出五號特徵改變了輸入時間序列的趨勢,但二號,三號和六號更多或更少的「更改」會在在時間序列的不同部分添加或刪除曲線。
解析 BTC收盤價
多目標解析
如果在圖像上顯示多個對象並且為每個對象找到不同的因素,那麼情況又是怎樣呢?
總結
讓我們總結一下 beta-VAE 在描述「一般」深度學習和數學建模時的方法。
可解釋性:完全可解釋的特徵,需要驗證每個特定的嵌入元素。需要大量數據:仍然需要如此,因為我們是在深度學習領域運行。無監督學習:100%無人監督。零重複使用:來自視頻的強化學習示例對象生成:像一般的VAE一樣容易採樣。對象操作:使用您想要的任何變化因素都很簡單。理論基礎:正在進行中我們幾乎擁有經典數學建模所具有的所有優良特性以及深度學習能力,可以高精度地分析複雜的數據類型。因此,非常自然的問題出現了:如果我能夠以完全無監督的方式從複雜數據中學習如此好的模型,那麼它是否意味著「經典」數學建模的結束?如果ML模型可以做到,我們是否真的需要考慮複雜的模型,只需要分析它的特徵?這取決於我們決定:)