請問根本理論是什麼?


剛好有一篇理論文章可以部分解答這個問題:

Exact solutions to the nonlinear dynamics of learning in deep linear neural networks?

arxiv.org

我們先把研究對象放在非常簡單的線性網路動力學上面,獲得一個比較嚴格的解,希望從中獲得一些啟發(類比到非線性網路)。

這篇文章給出的答案是:如果(且僅當)輸入的統計結構與要學習的輸入-輸出映射的結構一致時,無監督的預訓練可以幫助後續的監督學習任務

我們來看具體如何得到:

動力學方程

考慮一個三層的線性網路:

很自然,我們有方程 [公式] 。假定loss是mean squared error,則參數的動力學方程為:

[公式]

[公式]

其中, [公式] 為輸入關聯矩陣, [公式] 為輸入-輸出關聯矩陣。 [公式] 是一個關於學習率的量。

為了簡化參數的動力學方程,我們將輸入白化(whiten): [公式] 。再考慮輸入-輸出關聯矩陣的SVD分解:

[公式]

其中 [公式] 反映輸出中(output)獨立的變化模式(mode),而 [公式] 反映輸入中(input)獨立的變化模式。為了將輸入層和隱藏層(hidden layer);隱藏層和輸出層連接起來,我們做如下變換:

[公式]

此時動力學方程被改寫成:

[公式]

[公式]

新的矩陣 [公式] 將輸入模式和隱藏層連接起來,我們令 [公式] 表示 [公式] 的第 [公式] 列;同理, [公式] 將隱藏層和輸出模式連接起來,令 [公式] 表示 [公式] 的第 [公式] 行。那麼動力學方程再次被改寫成:

[公式]

[公式]

動力學的解

至此我們獲得了動力學方程(5)。這組動力學方程可以寫成一個能量的梯度下降,這個能量方程為:

[公式]

分析這個能量方程,我們可以獲得非常重要的信息。由於是梯度下降,所以能量越低越好。第一項要求[公式][公式] 為合作關係,一起朝向同一個方向且模都要增大;第二項要求[公式][公式]為競爭關係,方向互相垂直。最終這在所有不同的第一層和第二層連接模式之間產生了對稱的、成對的排斥力,將網路驅動到一個不同連接模式正交的解耦狀態(decoupled regime)。

通過分析分析方程的固定點(fixed-point): [公式] 我們發現一個穩定的固定點:

[公式]

而其餘的固定點都是鞍點(saddle point)。因此,當學習收斂時,網路將表示最接近真實輸入-輸出相關矩陣的 [公式] 階近似。

預訓練和初始化

由於方程(5)對於任意的初始條件並不好解,我們考慮其中容易解的初始化: [公式][公式]平行而[公式][公式]垂直。這種初始化可以通過矩陣的SVD分解獲得:

[公式]

其中 [公式][公式] 是對角矩陣而 [公式] 是一個正交矩陣。在這種初始化條件下,通過求解動力學方程,我們發現如果這個乘積從一個很小的值 [公式] 開始,那麼它就會顯示一個s形上升。 這中上升可以表現出從初始化狀態到完全學習狀態的急劇轉變:

其中不同的曲線族為不同 [公式] 值下面的學習速度,紅色的線為解耦初始化下的結果,綠色為非線性網路的結果。

現在我們來看預訓練做了什麼:

由於預訓練中,輸出就是輸入,此時的輸入輸出關聯矩陣和輸入關聯矩陣是一樣的。所以SVD分解就變成 [公式] ,其中 [公式][公式] 的本徵向量。

在預訓練中,由於訓練時間有限,最終 [公式] ,其中[公式] 是一個對角矩陣,它隨著訓練逐漸趨於單位矩陣。

所以我們有 [公式] 以及 [公式] ,其中 [公式] 是一個任意一個可逆的矩陣。

然而,當從小的隨機權重開始時,每個權重矩陣最終將對整個映射做出大致平衡的貢獻。這種平衡對應於 [公式] ,其中 [公式] 是一個任意的正交矩陣。

對比上面的公式(1),我們發現預訓練可以達到解耦的(decouped)初始化僅僅需要滿足

[公式]

如果(且僅當)輸入的統計結構與要學習的輸入-輸出映射的結構一致時,無監督的前訓練可以幫助後續的監督學習任務,這是一個直觀概念的精確量化實例。

從實驗角度而言,我們需要驗證 [公式] 是不是對角矩陣即可。我們觀察MNIST是不是滿足:

左圖為MNIST [公式] 的子矩陣,右圖為 [公式] ,的確近似是對角矩陣。

我們注意到,這種分析不太可能完全適用於非線性網路。一些非線性網路在初始化後是近似線性的(例如tanh非線性),因此我們的解可以在學習的早期很好地描述這些動態。然而,當網路進入非線性狀態時,我們的解不應該期望保持精確。


希望這個回答可以幫助大家對這個問題有個更好的理解~


我覺得預訓練很多模型能work的根本原因就是引入了更多的信息吧。

cv的imagenet預訓練也好,nlp的word2vec預訓練也好,包括最近非常火的graph embedding對實體進行向量表徵也好,都是從模型數據本身之外引入了大量的信息(來自大規模預訓練數據集),這個思路其實不止預訓練,只要模型合理的利用了新的信息,能夠work不是水到渠成的事情嗎?比如cw2vec在詞之外引入了筆畫信息和n-gram信息,只要用的好,理論上應該都是有提升的。


因為深度學習模型並不完全是個黑箱子,在模型設計的時候,網路層所承擔的作用,是有模式的。雖然不可能精確到說每一層網路層是做什麼的,但是中間層在幹什麼,大體還是知道的。網路層的模式,可以被複用。

其次,深度學習的學習,本質上還是機器對於數據的一種歸納總結,深度學習這種數據大殺器,要的就是見多識廣,而常用來作為預訓練數據集的ImageNet,無論是在圖像數量還是類別上,其實都比我們想像的要豐富。

遷移ImageNet上預訓練的模型到無人駕駛應用上一般會有好的效果,因為ImageNet是一個種類龐大的數據集,且在ImageNet上訓練的模型,已經見過了道路、車輛等與自動駕駛任務相關的場景

當然這並不是說遷移學習怎麼用怎麼好。比如在無人駕駛中,識別車道線和車輛是很常見的任務,但是預訓練了其中一個任務的模型,再遷移到另一個任務上時,表現卻不一定就好。(想想這是為什麼?)

所以,回到本質上,預訓練要想有作用,得看兩件事 ——數據量大小,數據相似度

而在遷移預訓練模型這件事情上,一般採取以下策略:

1. 數據量小,數據相似度高

Fine tune the output dense layer of the pretrained model

2. 數據量大,數據相似度高

Fine tune the pretrained model

3. 數據量小,數據相似度低

Fine tune the lower layers of the pretrained model

4. 數據量大,數據相似度低

Train the model from scratch

最後,最後的最後,預訓練模型至少給迷茫的深度學習模型提供了一個不錯的初始參數,看成是一種參數初始化的方式也無妨。


這個這個問題也一直使我感到疑惑和驚訝。我的圖片數據集和ImageNet差別很大,但是使用在ImageNet上預訓練的權值進行微調卻得到了不錯的效果。我想可能是1.ImageNet囊括了非常多的不同類別的數據,這些數據有各種各樣淺層和深層的特徵,在ImageNet上訓練好的權值很好的提取到了這些特徵。

2.不同圖片數據之間或多或少都存在共性,包括我們能看到和看不到的,因此在ImageNet上的權值能提取到我的圖片數據集上的這些共性特徵。

3.ImageNet上特徵在別的數據集上可能是不同的表現形式,用ImageNet上預訓練的權值在我的圖片數據集上提取到的這些特徵剛好有一些特徵可以很好地區分我的圖片數據集中的圖片,當然也有一些提取到的特徵可能對區分我的圖片根本沒有用,但是沒有進一步實驗研究哪些權值對我的數據集有用哪些有用。


如果從底層邏輯來看,deep network很大的困境就是難以收斂,預訓練可以看成是一個較為完備的參數初始化過程,盡量使網路不要因為不好的初始化而無法訓練收斂。

更加抽象一些的說法就是,通過ImageNet訓練之後,你的模型本身「特徵抽取」的能力已經具備,接下來就是根據具體任務數據對模型的「判別能力」做調整,使其適應不同的任務。


推薦閱讀:
相关文章