星小環的AI讀書會—深度學習系列05深度學習中的正則化
本系列星小環AI讀書會——深度學習於2017年8月28日開始,每周三晚上7點至9點,在星小環AI讀書會微信群裡面直播。本篇將介紹深度學習中的正則化。入群方法,Github代碼地址和詳細介紹見文章結尾。
深度學習中的正則化
機器學習中的一個核心問題是設計不僅在訓練集上誤差小,而且在新樣本上泛化能力好的演算法。許多機器學習演算法都需要採取相應的策略來減少測試誤差,這些策略被統稱為正則化。而神經網路由於其強大的表示能力經常遭遇過擬合,所以需要使用許多不同形式的正則化策略。
正則化通過對學習演算法的修改,旨在減少泛化誤差而不是訓練誤差。目前有很多正則化策略,有些是向機器學習模型中添加限制參數值的額外約束,有些是向目標函數添加額外項來對參數值進行軟約束。在本章中我們將更詳細地介紹正則化,重點介紹深度模型的正則化策略,包括參數範數懲罰、提前終止、Dropout等等。
基本概念
在開始本章之前,我們回顧以下幾個概念:
- Hessian矩陣:在數學中,海森矩陣(Hessian matrix 或 Hessian)是一個多變數實值函數的二階偏導數組成的方陣,假設有一實數函數 ,如果 所有的二階偏導數都存在,那麼 的Hessian矩陣的第 項是 ,即Hessian矩陣為
- 極值點:基於Hessian矩陣 我們可以判斷多元函數的極值情況:
- 如果 是正定矩陣,則臨界點一定是局部極小值點。
- 如果 是負定矩陣,則臨界點一定是局部極大值點。
- 如果行列式 ,需要更高階的導數來幫助判斷。
- 在其餘情況下,臨界點不是局部極值點。
- 實對稱矩陣可對角化:若 是實對稱矩陣,則存在正交矩陣 使得 ,其中 是矩陣 的特徵值。若 可逆(即非奇異),則每個 都非零且 是 的特徵值, 。
1. 參數範數懲罰
在本節中,我們討論各種範數懲罰對模型的影響。許多正則化方法(如神經網路、線性回歸、邏輯回歸)通過對目標函數 添加一個參數範數懲罰 ,限制模型的學習能力。將正則化後的目標函數記為 :
其中 是衡量參數範數懲罰程度的超參數。 表示沒有正則化, 越大對應正則化懲罰越大。
在神經網路中,參數包括每層線性變換的權重和偏置,我們通常只對權重做懲罰而不對偏置做正則懲罰;使用向量 表示應受懲罰影響的權重,用向量 表示所有參數。
1.1 正則化
參數正則化(也稱為嶺回歸、Tikhonov正則)通常被稱為權重衰減(weight decay),是通過向目標函數添加一個正則項 使權重更加接近原點。
目標函數
計算梯度
更新權重
從上式可以看出,加入權重衰減後會導致學習規則的修改,即在每步執行梯度更新前先收縮權重(乘以 )。
下面我們進一步分析,令 為未正則化的目標函數取得最小訓練誤差時的權重向量,即 ,在 的鄰域對目標函數 作二階泰勒展開近似:
其中 是 在 處的Hessian矩陣。注意這裡因為 是最優點,所以一階項即梯度為0,並且 是半正定矩陣。
當 最小時,其梯度為0,即
在上式中加入權重衰減的梯度,用 表示此時正則化後的最優點:
當 時,正則化的解 。因為 是實對稱矩陣,所以可以對角化,即存在正交矩陣 (由 特徵向量組成)使得 。於是有:
也就是說,權重衰減的效果是沿著由 的特徵向量所定義的軸縮放 ,縮放因子是 .
1)沿特徵值較大的方向正則化影響較小。即 時, 。
2)沿特徵值較小的方向,權重分量收縮到0。即 時, 。
1.2 正則化
將 正則化的參數懲罰項 由權重衰減項修改為各個參數的絕對值之和,即得到 正則化:
目標函數:
梯度:
其中 為符號函數,取各個元素的正負號。與之前的分析一樣,將目標函數作二次泰勒展開近似:
我們進一步假設Hessian是對角矩陣,即 , ,於是 正則化目標函數二次近似為:
最小化這個近似函數,有如下形式的解析解:
對每個 ,我們考慮 的情形:
1) ,正則化目標中的最優值是 。
2) , ,正則化不會將 的最優值推至0,而是在該方向上移動 的距離。
1.3 總結 與 正則化
- 相比 正則化, 正則化會產生更稀疏的解。如果考慮Hessian矩陣是對角正定矩陣,我們得到 正則化的最優解是 。如果 ,則 ,這說明 正則化不會使參數變得稀疏,而 正則化有可能通過足夠大的 實現稀疏。
- 正則化策略可以被解釋為最大後驗(MAP)貝葉斯推斷。
- 正則化相當於權重是高斯先驗的MAP貝葉斯推斷。
- 正則化相當於權重是Laplace先驗的MAP貝葉斯推斷。
最大後驗估計選擇後驗概率最大的點:
右邊的 對應標準的對數似然項, 對應先驗分布。在神經網路中上述公式中的 即我們考慮的權重 。
如果先驗是高斯分布 ,即 ,從而有 。因此 正則化權重衰減對應著權重是高斯先驗的MAP貝葉斯推斷。
如果先驗是Laplace分布 ,即 ,對數先驗項
與 正則化代價函數懲罰項 等價。
2. 作為約束的範數懲罰
考慮參數範數正則化的代價函數:
在上一節中考慮的是無約束問題,如果想約束 , 是某個常數,可以構造廣義Lagrange函數
該約束問題的解是
可以通過調節 與 的值來擴大或縮小權重的約束區域。較大的 將得到一個較小的約束區域,而較小的 將得到一個較大的約束區域。
使用顯示約束(相比於懲罰約束)的優點:
- 可以先用梯度下降法計算 的下降步,再投影到區域 的最近點。當知道什麼 合適時,不需要尋找對應的 值。
- 懲罰可能導致目標函數非凸,而使得演算法陷入局部極小。
- 重投影的顯示約束對優化過程增加了一定的穩定性。例如當學習率較高時,很可能進入正反饋,即大的權重誘導大的梯度,使權重獲得較大的更新。如果持續更新增加權重大小,則會使 迅速增大而遠離原點發生溢出。
3. 欠約束問題
機器學習中許多線性模型,如線性回歸和PCA,都依賴與矩陣 求逆,如果 不可逆,這些方法就會失效。這種情況下,正則化的許多形式對應求逆 ,這個正則化矩陣是可逆的。大多數正則化方法能夠保證應用於欠定問題的迭代方法收斂。
4. 數據集增強
讓機器學習模型泛化得更好的最好辦法是使用更多的數據進行訓練,因此需要在有限的數據中創建假數據並添加到訓練集中。數據集增強在對象識別領域是特別有效的方法。
- 數據集的各種變換,如對圖像的平移、旋轉和縮放。
- 在輸入層注入雜訊,也可以看作數據集增強的一種方法(如去噪自編碼器)。通過將隨機雜訊添加到輸入再進行訓練能夠大大改善神經網路的健壯性。
5. 雜訊魯棒性
- 將雜訊加入到輸入。在一般情況下,注入雜訊遠比簡單地收縮參數強大,特別是雜訊被添加到隱藏單元時會更加強大(如Dropout)。對於某些模型而言,向輸入添加方差極小的雜訊等價於對權重施加範數懲罰。
- 將雜訊加入到權重。這項技術主要用於循環神經網路。這可以被解釋為關於權重的貝葉斯推斷的隨機實現。貝葉斯學習過程將權重視為不確定的,並且可以通過概率分布表示這種不確定性,向權重添加雜訊是反映這種不確定性的一種實用的隨機方法。
- 例如對回歸問題,假設對每個輸入,網路權重添加隨機擾動 ,將擾動後的模型記為 。目標函數為:
- 最小化帶權重雜訊的 等價於最小化附加正則項: 的 。
- 這種正則化鼓勵參數進入權重小擾動對輸出相對影響較小的參數空間區域。換句話說,它推動模型進入對權重小的變化相對不敏感的區域,找到的點不只是極小點,而且是由平坦區域所包圍的極小點
- 將雜訊加入到輸出。即顯式地對標籤上的雜訊進行建模,假設訓練集上的標記 正確的概率是 ,其他標籤是正確的可能性是 。例如,標籤平滑通過把確切分類目標從0和1換成 和 ,正則化具有 個輸出的softmax函數的模型。softmax函數值永遠在 區間內而達不到0或1,標籤平滑的優勢是能夠防止模型追求確切概率而不影響模型學習正確分類。
6. 半監督學習
- 在半監督學習的框架下, 產生的未標記樣本和 中的標記樣本都用於估計 。在深度學習的背景下,半監督學習通常指的是學習一個表示 ,學習表示的目的是使相同類中的樣本有類似的表示。
- 我們可以構建這樣一個模型,其中生成模型 或 與判別模型 共享參數,而不用分離無監督和監督部分。
7. 多任務學習
- 多任務學習是通過合併幾個任務中的樣例(可以視為對參數施加的軟約束)來提高泛化的一種方式。當模型的一部分被多個額外的任務共享時,這部分將被約束為良好的值,通常會帶來更好的泛化能力。
- 下圖展示了多任務學習的一種普遍形式。不同的監督任務共享相同的輸入 和中間表示層 ,能學習共同的因素池。
- 從深度學習的觀點看,底層的先驗知識為:能解釋數據變化的因素中,某些因素是跨多個任務共享的。
8. 提前終止
由於神經網路強大的表示能力,當訓練次數過多時會經常遭遇過擬合,即訓練誤差會隨時間推移減少,而驗證集誤差會再次上升。
- 如果我們只要返回使驗證集誤差最低的參數,就可以獲得驗證集誤差更低的模型。這種策略被稱為提前終止(early stopping)。由於它的有效性和簡單性,這可能是深度學習中最常用的正則化形式。
- 提前終止是一種非常不顯眼的正則化形式,幾乎不需要改變基本訓練過程、目標函數。而使用權重衰減則必須小心不能使用太多的權重衰減,否則容易陷入局部極小點。
8.1 提前終止演算法
輸入: 為評估間隔步數, 為patience(即觀察到 次更差的驗證集表現後終止), 為初始參數
過程:
1: 初始化 , , , , ,
2:
3: 運行訓練演算法 步,更新 。
4: ,
5:
6: , , ,
7:
8:
9:
10:
輸出:最佳參數 ,最佳訓練步數
8.2 提前終止的優點
- 由於限制了訓練迭代次數,減少了訓練時的計算成本
- 具有正則化效果而不需要添加懲罰項或計算其梯度。
8.3 提前終止相當於 正則化
提前終止為何具有正則化效果?其真正機制可理解為將優化過程的參數空間限制在初始參數值 的小鄰域內。假如學習率為 ,進行 次訓練迭代,則 等價於權重衰減係數 。我們下面進行證明:
我們考慮二次誤差的簡單線性模型,採用梯度下降法,參數 ,代價函數 在最優值 附近作泰勒級數二階展開近似:
其中 是 關於 在 點的Hessian。由於 是全局最小點, 是半正定對稱矩陣,因此可以對角化,即存在正交矩陣 使得 。進一步, 是特徵向量的一組標準正交基, 是(對角元素是 特徵值的)對角矩陣。
在局部泰勒級數逼近下,梯度由下式給出:
將權重參數初始化為原點,即 ,梯度下降法由下面公式給出:
利用 的正交分解 ,得到:
假定 足夠小以保證 ,則經過 次迭代後:
我們回顧1.1節中 正則化的形式: ,注意到 ,即 ,於是有:
對比這兩個式子右端,如果滿足
那麼 正則化和提前終止是等價的(在目標函數的二階近似下)。
利用級數展開 該等式即:
如果所有 是小的( 且 ),則:
8.4 小結——提前終止與 正則化對比
- 提前終止和 正則化是等價的(在二階近似、 小的情況下),即 。也就是說訓練迭代次數 和學習率 起著與 正則化(權重衰減)係數 成反比的作用。
- 長度為 的軌跡結束於 正則化目標的極小點,但是提前終止通常涉及監控驗證集誤差,以便在空間特別好的點處終止軌跡。
- 提前終止比 正則化更具有優勢,提前終止能自動確定正則化的正確量,而權重衰減需要進行多個不同超參數的訓練實驗。
9. 參數綁定與參數共享
參數範數懲罰或約束是相對於固定區域或點,如 正則化是對參數偏離 固定值進行懲罰。但有時我們需要對模型參數之間的相關型進行懲罰,使模型參數盡量接近或者相等。
- 參數共享:強迫模型某些參數相等
- 主要應用:卷積神經網路(CNN)
- 優點:顯著降低了CNN模型的參數數量(CNN模型參數數量經常是千萬量級以上),減少模型所佔用的內存,並且顯著提高了網路大小而不需要相應的增加訓練數據。
10. 稀疏表示
稀疏表示也是卷積神經網路經常用到的正則化方法。 正則化會誘導稀疏的參數,使得許多參數為0;而稀疏表示是懲罰神經網路的激活單元,稀疏化激活單元。換言之,稀疏表示是使得每個神經元的輸入單元變得稀疏,很多輸入是0。
例如下圖, 只依賴於上一層的3個神經元輸入 、 、 ,而其他神經元到 的輸入都是0。
11. Bagging和其他集成方法
Bagging(bootstrap aggregating)是通過結合幾個模型降低泛化誤差的技術。主要想法是分別訓練幾個不同的模型,然後讓所有模型表決測試樣例的輸出。這是機器學習中常規策略的一個例子,被稱為模型平均(model averaging)。採用這種策略的技術被稱為集成方法。
Bagging是一種允許重複多次使用同一種模型、訓練演算法和目標函數的方法。具體來說,Bagging涉及構造 個不同的數據集。每個數據集從原始數據集中重複採樣構成,和原始數據集具有相同數量的樣例。
模型平均是一個減少泛化誤差的非常強大可靠的方法。例如我們假設有kk個回歸模型,每個模型誤差是 ,誤差服從零均值、方差為 、協方差為 的多維正態分布。則模型平均預測的誤差為 ,均方誤差的期望為
在誤差完全相關即 的情況下,均方誤差為 ,模型平均沒有幫助。在誤差完全不相關即 時,模型平均的均方誤差的期望僅為 。這說明集成平方誤差的期望隨集成規模的增大而線性減少。
其他集成方法,如Boosting,通過向集成逐步添加神經網路,可以構建比單個模型容量更高的集成模型。
12. Dropout
Dropout可以被認為是集成大量深層神經網路的實用Bagging方法。但是Bagging方法涉及訓練多個模型,並且在每個測試樣本上評估多個模型。當每個模型都是一個大型神經網路時,Bagging方法會耗費很多的時間和內存。而Dropout則提供了一種廉價的Bagging集成近似,能夠訓練和評估指數級數量的神經網路。
12.1 Dropout基本原理
- Dropout訓練的集成包括所有從基礎網路中除去神經元(非輸出單元)後形成的子網路。只需將一些單元的輸出乘零就能有效的刪除一個單元(稱之為乘零的簡單Dropout演算法)。假如基本網路有 個非輸出神經元,則一共有 個子網路。
- Dropout的目標是在指數級數量的神經網路上近似Bagging過程。具體來說,在訓練中使用Dropout時,我們會使用基於小批量產生較小步長的學習演算法,如隨機梯度下降。
- 每次在小批量中載入一個樣本,然後隨機抽樣(用於網路中所有輸入和隱藏單元的)不同二值掩碼。
- 對於每個單元,掩碼是獨立採樣的。通常輸入單元被包括的概率為0.8,隱藏單元被包括的概率為0.5。
- 然後與之前一樣,運行前向傳播、反向傳播和學習更新。
12.2 Dropout與Bagging區別
- Bagging:所有模型都是獨立的。
Dropout:所有模型共享參數,其中每個模型繼承父神經網路參數的不同子集。參數共享使得在有限內存下表示指數級數量的模型變得可能。
- Bagging:每個模型在其相應的訓練集上訓練到收斂。
Dropout:大部分模型沒有被顯式地被訓練,因為父神經網路通常很大,幾乎不可能採樣完指數級數量的子網路;取而代之的是,在單個步驟中訓練一小部分子網路,通過參數共享使得剩餘的子網路也有好的參數設定。
- 除此之外,Dropout與Bagging演算法一樣。例如每個子網路中遇到的訓練集是有放回採樣的原始訓練集的一個子集。
- 模型輸出:
- Bagging情況下,每個模型 產生一個概率分布 ,集成的預測由這些分布的算術平均值給出:
- Dropout情況下,通過掩碼 定義每個子模型的概率分布 。所有掩碼的算術平均值由下式給出:
其中 是訓練時採樣 的概率分布。但該求和包含指數級的項,一般是不可計算的,我們可以通過採樣近似推斷,即平均許多掩碼的輸出。通過幾何平均直接定義的非標準化概率分布由下式給出:
其中 是可被丟棄的單元數。為了作出預測,需要進行標準化,例如對均勻分布的 ,可按下式進行標準化:
12.3 Dropout小結
- Dropout優點
- 計算方便。訓練過程中使用Dropout產生 個隨機二進位數與狀態相乘即可。每個樣本每次更新的時間複雜度: ,空間複雜度: 。
- 適用廣。Dropout不怎麼限制適用的模型或訓練過程,幾乎在所有使用分散式表示且可以用隨機梯度下降訓練的模型上都表現很好。包括:前饋神經網路、概率模型、受限波爾茲曼機、循環神經網路等。
- 相比其他正則化方法(如權重衰減、過濾器約束和稀疏激活)更有效。也可與其他形式的正則化合併,得到進一步提升。
- Dropout缺點
- 不適合寬度太窄的網路。否則大部分網路沒有輸入到輸出的路徑。
- 不適合訓練數據太小(如小於5000)的網路。訓練數據太小時,Dropout沒有其他方法表現好。
- 不適合非常大的數據集。數據集大的時候正則化效果有限(大數據集本身的泛化誤差就很小),使用Dropout的代價可能超過正則化的好處。
- Dropout衍生方法
- Dropout作用於線性回歸時,相當於每個輸入特徵具有不同權重衰減係數的L2L2權重衰減,係數大小由其方差決定。但對深度模型而言,二者是不等同的。
- 快速Dropout (Wang and Manning,2013):利用近似解的方法,減小梯度計算中的隨機性析解,獲得更快的收斂速度。
- DropConnect (Wan,2013):將一個標量權重和單個隱藏單元狀態之間的每個乘積作為可以丟棄的一個單元。
- 不取二值,而是服從正態分布,即 (Srivastava,2014)。
13. 對抗訓練
對抗樣本主要用於計算機安全領域。在正則化背景下,通過對抗訓練(adversarial training)可以減少原有獨立同分布的測試集的錯誤率——在對抗擾動的訓練集樣本上訓練網路。
主要原因之一是高度線性,神經網路主要是基於線性模塊構建的。輸入改變 ,則權重為 的線性函數將改變 ,對於高維的 這是一個非常大的數。
對抗訓練通過鼓勵網路在訓練數據附件的局部區域恆定來限制這一個高度敏感的局部線性行為。
14. 切面距離、正切傳播和流形正切分類器
利用流形假設,假設數據位於低維流形附近來克服維數災難。
- 切面距離演算法
- 正切傳播演算法
- 流形正切分類器
結尾
本系列星小環AI讀書會——深度學習於2017年8月28日開始,每周三晚上7點至9點,在星小環AI讀書會微信群裡面直播。該群接納深度學習書籍的答疑討論,不過小環AI-er工作時間會響應滯後。
怎麼入群?歡迎評論區留言微信號申請入群,評論區不會公開,小環工作人員會聯繫你,審核並邀請入群。
沒有入群的也可以持續關注本系列,每周會更新讀書會內容和代碼。本期內容有兩個open issue,歡迎貢獻案例。
本項目Github代碼地址:《深度學習》中譯版讀書筆記:GitHub項目等你來Fork&Commit
歷史文章
星小環的AI讀書會—深度學習系列01開篇
星小環的AI讀書會—深度學習系列02數學基礎
星小環的AI讀書會—深度學習系列03機器學習基礎與實踐
星小環的AI讀書會—深度學習系列04深度前饋網路
《深度學習》中譯版讀書筆記:GitHub項目等你來Fork&Commit
推薦閱讀:
TAG:深度學習DeepLearning | 人工智慧 |