常見的方法有:選取更好的代價函式,就是被稱為交叉熵代價函式(the cross-entropy cost function);
四種正則化方法(l1和
l2正則、
dropout
、訓練資料的擴充套件)
一.交叉熵代價函式:
考慮一下神經元的學習方式:通過計算代價函式的偏導 和
來改變權重和偏移。那麼我們說「學習速度很慢」其實上是在說偏導很小。因為sigmod啟用函式的特性,在0和
1附近變化緩慢。
我們可以用不同的代價函式比如交叉熵(cross-entropy)代價函式來替代二次代價函式
假設神經元的輸出為
,z為加權輸入(權重和+偏置
b)。定義神經元的交叉熵代價函式為:
n是訓練資料的個數,這個加和覆蓋了所有的訓練輸入x,
y是期望輸出。
交叉熵有兩個特性能夠合理地解釋為何它能作為代價函式。首先,它是非負的。因為等式加和裡的每一項都是負的,它們的對數是負的;整個式子的前面有乙個負號。
其次,如果對於所有的訓練輸入
,這個神經元的實際輸出值都能很接近我們期待的輸出的話,那麼交叉熵將會非常接近0。
事實上,我們的均方代價函式也同時滿足這兩個特徵。
交叉熵有另乙個均方代價函式不具備的特徵,它能夠避免學習速率降低的情況。
因為交叉熵對權重的偏導為:
上式告訴我們權重的學習速率可以被
控制,,也就是被輸出結果的誤差所控制,那麼誤差越大我們的神經元學習速率越大。
此外它還能避免
導致的學習減速。因為交叉熵中的該項被抵消掉了,不必擔心它會變小。
交叉熵對偏移的偏導
與對權重的偏導形式相似也避免了學習速率低的問題。
二. softmax
softmax的主要思想是為神經網路定義一種新的輸出層,它也是對加權輸入
進行計算,只是在獲取輸出結果的時候我們不使用
sigmod
函式,使用
softmax
函式代替。第
j個輸出神經元的啟用值為:
分母對所有的輸出神經元k求和。
使用softmax時,所有的輸出啟用值加起來必須為
1,因為
於是某個輸出啟用值增大或減小時,其餘的輸出啟用值則會相應的減小或增大以維持平衡。
從softmax 層得到的輸出是一系列相加和為1的正數。換言之,從
softmax 層得到的輸出可以看做是乙個概率分布。於是可以將輸出啟用值
看作是神經網路認為結果是j的概率。
但是如果使用 sigmoid 輸出層,我們不能使用 softmax 的結論去解讀。
三. 過擬合和正則化
我們使用validation_data而不是
test_data
來預防過擬合。為了做到這一點,在每一步訓練之後,計算
validation_data
的分類精度。一旦
validation_data
的分類精度達到飽和,就停止訓練。這種策略叫做提前終止(
early stopping)。當然在實踐中,我們並不能立即知道什麼時候準確度已經飽和。取而代之,我們在確信精度已經飽和之前會一直訓練。
通過validation_data來選擇不同的超引數(例如,訓練步數、學習率、最佳網路結構、等等)是乙個普遍的策略。我們通過這樣的評估來計算和設定合適的超引數值。如果基於
test_data
的評估結果設定超引數,有可能我們的網路最後是對
test_data
過擬合。也就是說,我們或許只是找到了適合
test_data
具體特徵的超引數,網路的效能不能推廣到其它的資料集。
由於validation_data 和test_data 是完全分離開的,所以這種找到優秀超引數的方法被稱為分離法(hold out method)。
一般來說,增加訓練資料的數量是降低過擬合的最好方法之一。
另一種避免過擬合的方法是減小網路的規模。然而,我們並不情願減小規模,因為大型網路比小型網路有更大的潛力。
正則化也可以避免過擬合,一種最常用的正則化技術——權重衰減(weight decay)或叫
l2正則(
l2 regularization
)。l2
正則的思想是,在代價函式中加
入乙個額外的正則化項。
如:正則化後的交叉熵:
加入了第二項,也就是網路中所有權值的平方和。它由引數
進行調整,其中
被稱為正則化引數(regularization parameter)。注意正則化項不包括偏移。
正則化的作用是讓網路偏好學習更小的權值,而在其它的方面保持不變。選擇較大的權值只有一種情況,那就是它們能顯著地改進代價函式的第一部分。換句話說,正則化可以視作一種能夠折中考慮小權值和最小化原來代價函式的方法。
當較小時,我們偏好最小化原本的代價函式,而
較大時我們偏好更小的權值。
使用l2正則化後,權值的學習規則變為:
即我們以
調整權值,也稱權重衰減。
經驗表明,當在多次執行我們的mnist網路,並使用不同的(隨機)權值初始化時,發現未正則化的那些偶爾會被「卡住」,似乎陷入了代價函式的區域性最優中。結果就是每次執行可能產生相當不同的結果。相反,正則化的那些每次執行可以提供更容易復現的結果。
小權重意味著網路的行為不會因為我們隨意更改了一些輸入而改變太多。這使得它不容易學習到資料中區域性雜訊。可以把它想象成一種能使孤立的資料不會過多影響網路輸出的方法,相反地,乙個正則化的網路會學習去響應一些經常出現在整個訓練集中的例項。
與之相對的是,如果輸入有一些小的變化,乙個擁有大權重的網路會大幅改變其行為來響應變化。因此乙個未正則化的網路可以利用大權重來學習得到訓練集中包含了大量雜訊資訊的複雜模型。
允許大規模的偏置使我們的網路在效能上更為靈活——特別是較大的偏置使得神經元更容易飽和,這通常是我們期望的。由於這些原因,我們通常不對偏置做正則化。
機器學習,深度學習,神經網路,深度神經網路
先來說一下這幾者之間的關係 人工智慧包含機器學習,機器學習包含深度學習 是其中比較重要的分支 深度學習源自於人工神經網路的研究,但是並不完全等於傳統神經網路。所以深度學習可以說是在傳統神經網路基礎上的公升級。神經網路一般有輸入層 隱藏層 輸出層,一般來說隱藏層大於2的神經網路就叫做深度神經網路,深度...
深度學習 深度神經網路
神經網路是由乙個個神經元相互連線並按層次排列構成的,深度神經網路是有任意層的神經網路,這裡的深度是指層次的多,而不是神經元數量的多。有任意層,那麼就要有乙個迴圈來負責遍歷每一層進行計算。所以深度神經網路的計算形式,就必須要適應這個迴圈結構。我們先來說說神經元吧 對於多神經元神經網路,其實也是一樣的。...
神經網路深度學習 學習小記
一 sigmod function出現的必要性 為什麼不直接用stage function?在feedback時,假如說我們現在用的是stage function,直接用樓梯式的跳躍函式,我們每次做很小的引數改動時。如果說這個之前這個引數使函式值落在0 1 改變的那一塊區域,即便我們做的change...