學習筆記:深度學習中的正則化
一、正則化介紹
問題:為什麼要正則化?
NFL(沒有免費的午餐)定理:
沒有一種ML演算法總是比別的好
好演算法和壞演算法的期望值相同,甚至最優演算法跟隨機猜測一樣
前提:所有問題等概率出現且同等重要
實際並非如此,具體情況具體分析,把當前問題解決好就行了
不要指望找到放之四海而皆準的萬能演算法!
方差和偏差:
過擬合與欠擬合:
訓練集和測試集
機器學習目標:
特定任務上表現良好的演算法
泛化能力強-->驗證集上的誤差小,訓練集上的誤差不大(不必追求完美,否則可能會導致過擬合)即可。
如何提升泛化能力:
(1)資料
資料和特徵是上限,而模型和演算法只是在逼近這個上限而已
預處理:離散化、異常值、缺失值等
特徵選擇
特徵提取:pca
構造新的資料:平移不變性
(2)模型
資料中加入噪音
正則化項:減少泛化誤差(非訓練誤差)
整合方法
幾種訓練情形:
(1)不管真實資料的生成過程---欠擬合,偏差大
(2)匹配真實資料的生成過程---剛剛好
(3)不止真實資料的生成過程,還包含其他生成過程---過擬合,方差大
正則的目標:
從(3)--->(2),偏差換方差,提升泛化能力
注:
永遠不知道訓練出來的模型是否包含資料生成過程!
深度學習應用領域極為複雜,影像、語音、文字等,生成過程難以琢磨
事實上,最好的模型總是適當正則化的大型模型
正則化是不要的!!!
XTX不一定可逆(奇異),導致無法求逆(PCA)
解決:加正則,XTX--->XTX+αI(一定可逆),說明:α--阿爾法,I--大寫的i,即單位陣。
大多數正則化能保證欠定(不可逆)問題的迭代方法收斂
注:偽逆
二、深度網路正則化
深度網路中的正則化策略有哪些?——傳統ML方法的擴充套件
方法:
增加硬約束(引數範數懲罰):限制引數,如L1,L2
增加軟約束(約束範數懲罰):懲罰目標函式
整合方法
其他
約束和懲罰的目的
植入先驗知識
偏好簡單模型
三、引數範數懲罰
從線性模型說起:
形式:y=Wx+b
W:兩變數間的相互作用——重點關注
b:單變數——容易欠擬合,次要
仿射變換=線性變換+平移變換
引數範數懲罰:
通常只懲罰權重W,不管b——b是單變數,且容易過擬合
θ=(W;b)≈(W)
α是懲罰力度,Ω是正則項。
最常見,L2引數範數懲罰:
權重衰減(weight decay)
嶺迴歸,Tikhonov正則
形式:
效果:
正則項Ω擠佔原始目標J的空間,逼迫J
權重接近於原點(或任意點)
詳細推導過程見P142-P143
L2正則能讓演算法“感知”到較高方差的輸入x
線性縮放每個wi
L1引數範數懲罰:LASSO
形式:
效果:
L1與L2大不一樣:線性縮放wi-->增加wi同號的常數
某些wi=0,產生稀疏解,常用於特徵選擇
除了L1,稀疏解的其他方法?
Student-t先驗匯出的懲罰
KL散度懲罰
注:不同於L1懲罰引數,懲罰啟用單元
約束範數懲罰:
本質:約束問題--> 無約束問題
形式:
引數範數懲罰:
約束範數懲罰:
五、資料增強
提升泛化能力的最好辦法:
資料增強:創造假資料
方法:
(1)資料造假:平移、旋轉、縮放——不能改變類別
影像,語音
(2)注入噪聲
輸入層≈權重引數懲罰
隱含層:去噪編碼器、dropout
權重:RNN
輸出層:標籤平滑(反例)
softmax永遠無法真正預測0或1,需要做平滑,防止走極端
噪聲魯棒性:
注入噪聲遠比簡單收縮引數強大,特別是加入隱含層
六、早停止
問題
隨著時間推移,訓練集誤差逐漸減少,而驗證集誤差再次上升
能不能在轉折點處提前終止呢?
早停止
當驗證集誤差在指定步數內沒有改進,就停止
有效,簡單,高效的超參選擇演算法
訓練步數是唯一跑一次就能嘗試很多值的超參
第二輪訓練策略(驗證集)
(1)再次初始化模型,使用所有資料再次訓練
使用第一輪步數
(2)保持第一輪引數,使用全部資料繼續訓練
避免重新訓練高成本,但表現沒那麼好,不保證終止
早停止為何有正則化效果?
表象:驗證集誤差曲線呈U型
本質:將引數空間限制在初始引數θ0的小鄰域內(εt)
εt等效於權重衰減係數的倒數
相當於L2正則,但更具優勢
自動確定正則化的正確量
七、引數繫結和引數共享
引數範數懲罰:
對偏離0(或固定區域)的引數進行懲罰,使用引數彼此接近
一種方式,還有嗎?
引數共享:
強迫某些引數相等
優勢:只有引數子集需要儲存,節省記憶體。如CNN
八、整合方法
整合方法:
集合幾個模型降低泛化誤差的技術
模型平均:強大可靠
kaggle比賽中前三甲基本都是整合方法
Bagging:
有放回抽樣,覆蓋2/3
多個網路的整合
偏差換方差
Boosting:
單個網路的整合
方差換偏差
Dropout:
整合大量深層網路的bagging方法
多個弱模型組成一個強模型
施加到隱含層的掩掩碼噪聲
一般5-10個網路,太多會很難處理
示例:
2個輸入,1個輸出,2個隱含層
一共24=64種情形
問題:大部分沒有輸入,輸入到輸出的路徑
網路越寬,這種問題概率越來越小
注:
不同於bagging,模型獨立
dropout所有模型共享引數
推斷:對所有成員累計投票做預測
效果:
Dropout比其他標準正則化方法更有效
權重衰減、過濾器範數約束、稀疏啟用
可以跟其他形式正則一起使用
優點:
計算量小
不限制模型和訓練過程
注:
隨機性對dropout方法不必要,也不充分
九、對抗訓練
人類不易察覺對抗樣本與原始樣本的差異,但網路可以
小擾動導致資料點流行變化
再次附上:
喜歡文章,點個在看
相關文章
- 深度學習——正則化深度學習
- 正則學習筆記筆記
- JavaScript正則學習筆記JavaScript筆記
- 正則學習小記
- 深度學習中的正則化技術(附Python程式碼)深度學習Python
- 學習筆記——正則匹配方法整理筆記
- 深度學習——loss函式的學習筆記深度學習函式筆記
- ES6學習筆記(四)【正則,集合】筆記
- 正規表示式學習筆記(1)-認識正則筆記
- 深度學習框架Pytorch學習筆記深度學習框架PyTorch筆記
- 深度學習keras筆記深度學習Keras筆記
- 深度學習 筆記一深度學習筆記
- 資料庫的正規化學習筆記資料庫筆記
- 深度學習 DEEP LEARNING 學習筆記(一)深度學習筆記
- 深度學習 DEEP LEARNING 學習筆記(二)深度學習筆記
- HexMap學習筆記(四)——不規則化筆記
- 強化學習-學習筆記3 | 策略學習強化學習筆記
- JS 正則學習JS
- 【深度學習】大牛的《深度學習》筆記,Deep Learning速成教程深度學習筆記
- Deep Learning(深度學習)學習筆記整理系列深度學習筆記
- 深度學習(二十九)Batch Normalization 學習筆記深度學習BATORM筆記
- 學習筆記----圖論學習中筆記圖論
- 深度學習+深度強化學習+遷移學習【研修】深度學習強化學習遷移學習
- 強化學習-學習筆記2 | 價值學習強化學習筆記
- python 中的正規表示式學習筆記Python筆記
- Java學習筆記:資料庫中的正規化和反正規化Java筆記資料庫
- 強化學習-學習筆記5 | AlphaGo強化學習筆記Go
- 基於深度學習的醫學影像配準學習筆記2深度學習筆記
- 深度學習及深度強化學習研修深度學習強化學習
- 深度學習——學習目錄——學習中……深度學習
- 學習筆記【深度學習2】:AI、機器學習、表示學習、深度學習,第一次大衰退筆記深度學習AI機器學習
- 深度學習與神經網路學習筆記一深度學習神經網路筆記
- 正規表示式學習筆記筆記
- 強化學習-學習筆記13 | 多智慧體強化學習強化學習筆記智慧體
- 強化學習-學習筆記14 | 策略梯度中的 Baseline強化學習筆記梯度
- numpy的學習筆記\pandas學習筆記筆記
- 【深度學習筆記】Batch Normalization (BN)深度學習筆記BATORM
- 強化學習筆記強化學習筆記