1. 程式人生 > >Hinton Neural Networks課程筆記3e:如何利用梯度值訓練網路(學習策略和過擬合抑制)

Hinton Neural Networks課程筆記3e:如何利用梯度值訓練網路(學習策略和過擬合抑制)

這裡只是開了個頭,籠統的講了講如何利用梯度值訓練網路,包括優化演算法的部分以及防止過擬合的部分。

1. 優化演算法的部分

這裡只提到了三個部分(具體要到第六節才講):batch相關的抉擇、學習率相關的選擇、優化演算法的選擇。
batch相關的選項有online(one case)、mini-batch(some cases)和full-batch(all cases)。那online典型的問題就是zig-zag的前進方式,需要將梯度值設的小一點;full-batch則是計算資源和時間消耗大;mini-batch是兩者的折中,也是實際使用中通常選擇的部分(但是需要決定batch的大小)。
學習率的部分:固定學習率通常使得訓練速度較慢(因為需要從一開始就選擇一個較小的學習率),讓學習率在訓練過程中適應性的改變是個不錯的選擇(例如當loss震盪的時候減少學習率,當loss持續減少的時候增加學習率等等),甚至可以為每一個權重自適應一個學習率。
優化演算法的選擇:之前講到的都是steepest descent,也就是使得權重每次改變學習率和梯度值的乘積。實際中可以使用類似動量(可以較好的解決長橢圓這樣steepest descent很慢的情況)這樣的元素,改變每次權重的改變值。
optimization algorithm

2. 過擬合問題

2.1. 什麼是過擬合:使用複雜模型的一個缺點

回憶感知機以及線性神經元中利用權重空間解釋學習演算法的部分,每個資料點可以被看做對學習到的權重的一個約束。對於整個訓練集而言,這些約束必然是有噪音的,分為兩種:目標值不可靠(Hinton說這對於神經網路是小問題,但沒有解釋,筆者認為noise本身就很小,多個數據點的noise之間正負相消可以解決一部分;然後考慮BP演算法,noise對於權重的影響也是線性的)、取樣噪聲(即因為取樣不足夠隨機充分,導致學習到了一些偶然的限制)。對於取樣噪聲,Hinton舉了個例子:讓機器去學習多邊形,如果你只給他看正方形和長方形,那麼機器很可能學到了四條邊、角為直角這樣的限制;而如果給他看三角形和六邊形,機器可能學到一定是凸的,且角度都是60度的倍數。而且Hinton提到,對於有限的訓練集而言,取樣噪聲是不可避免的。
對於機器而言,其無法分辨哪一個約束是真實的,哪一個約束是來自於取樣噪聲,所以機器會適應所有的限制。在模型十分複雜(能力強)的時候,它會很好的適應取樣噪聲引入的限制,而這會使得學習到的模型泛化能力很差,也就是過擬合。
overfitting

2.2. 一個例子

example
訓練集為六個黑點,那如果訓練一個線性神經元,其學習到的是綠線的模型;而如果訓練一個自由度為6的多項式,其學習到的可能是紅色的模型。這裡面Hinton提到了一個可信度(convincing)的概念:已知函式的6個<自變數,因變數>點對,請問綠線和紅線哪個更可能是該函式,即哪個模型更可信。(筆者認為這個其實是見仁見智了,但紅線確實抖動的更加厲害,難以相信)Hinton提出,足夠簡單且能夠較好的擬合訓練集的模型是可信度高的模型(但是沒有提出什麼是足夠簡單,以及怎麼樣算較好擬合。。。)

2.3. 減少過擬合的方法

這裡就列舉了一系列防止過擬合的方法,具體還要等到lecture 7才講。
1. weight-decay:權重小或者部分為零(簡單模型原則)
2. weight-sharing:權重共享,也是減少模型複雜度
3. early stopping:根據驗證集確定停止訓練時間和程度(驗證集和訓練集因為取樣誤差引入同一限制的可能性不高)
4. model averaging:模型平均,ensemble的一種,利用多個模型的均值減少過擬合(不同模型可能學習到不同的取樣噪聲引入的誤差,多個模型期待可以正負相消;即使同一種模型,考慮最後收斂到最小值附近的情況,震盪在最小值附近的多個模型均值期待可以更靠近最小值(這也是checkpoints的使用方法))
5. Bayesian fitting of neural networks:Hinton說是model averaging的一種fancy模型
6. dropout:這是Hinton的代表作了,訓練過程中隨機設定某些神經元的輸出為0,有兩種解釋方式,後面肯定會詳細解釋的。目前可以參考

CS231n課程筆記6.2:神經網路訓練技巧之Ensemble、DropoutCS231n作業筆記2.5:dropout的實現與應用
7. generative pre-training:這裡Hinton直接說有點複雜,就帶過了。。。

一些有意思的點:
1. 可以為每一個權重自適應一個學習率
2. 動量可以較好的解決長橢圓這樣steepest descent很慢的情況
3. 過擬合可能是因為模型在學習取樣噪聲引入的限制
4. 對於有限的訓練集而言,取樣噪聲是不可避免的
5. 足夠簡單且能夠較好的擬合訓練集的模型是可信度的模型