機器學習之正則化

2021-01-11 程式設計師觀察

沒時間看文章學算法?

小編每天為你遴選好算法、好文章,整理知識點。

三分鐘學習開始啦~

----

正則化是一種為了減小測試誤差的行為。

當利用複雜的模型擬合數據,過擬合現象的出現導致模型的泛化能力下降時,使用正則化的適用可以降低模型的複雜度。

這次為大家總結了正則化的相關知識點,幫助更好的理解正則化這一概念。

正則化的本質就是對某一問題加以先驗的限制或約束以達到特定目的的一種手段或操作。

LP範數

範數是為用來表徵向量空間中的距離,而距離的定義很抽象,只要滿足非負、自反、三角不等式就可以稱之為距離。LP範數不是一個範數,而是一組範數,其定義如下:

p是[1,∞)[1,∞)。p在(0,1)(0,1)範圍內定義的並不是範數,因為違反了三角不等式。

根據pp的變化,範數也有著不同的變化,借用一個經典的有關P範數的變化圖如下:

上圖表示了pp從0到正無窮變化時,單位球(unit ball)的變化情況。在P範數下定義的單位球都是凸集,但是當0<p<10<p<1時,在該定義下的unit ball並不是凸集(這個我們之前提到,當0<p<10<p<1時並不是範數)。

L0範數表示向量中非零元素的個數,用公式表示如下:

最小化L0範數可以來尋找最少最優的稀疏特徵項。但是,L0範數的最優化問題是一個NP hard問題(L0範數同樣是非凸的)。因此,在實際應用中我們經常對L0進行凸鬆弛,理論上有證明,L1範數是L0範數的最優凸近似,因此通常使用L1範數來代替直接優化L0範數。

L1範數

根據LP範數的定義我們可以很輕鬆的得到L1範數的數學形式:

通過上式可以看到,L1範數就是向量各元素的絕對值之和,也被稱為是"稀疏規則算子"(Lasso regularization)。那麼問題來了,為什麼我們希望稀疏化?稀疏化有很多好處,最直接的兩個:

特徵選擇可解釋性L2範數

L2範數是最熟悉的,就是歐幾裡得距離,公式如下:

L2範數有很多名稱,有人把它的回歸叫「嶺回歸」(Ridge Regression),也有人叫它「權值衰減」(Weight Decay)。以L2範數作為正則項可以得到稠密解,即每個特徵對應的參數ww都很小,接近於0但是不為0;此外,L2範數作為正則化項,可以防止模型為了迎合訓練集而過於複雜造成過擬合的情況,從而提高模型的泛化能力。

L1範數和L2範數的區別

引入PRML一個經典的圖來說明下L1和L2範數的區別,如下圖所示:

如上圖所示,藍色的圓圈表示問題可能的解範圍,橘色的表示正則項可能的解範圍。而整個目標函數(原問題+正則項)有解若且唯若兩個解範圍相切。從上圖可以很容易地看出,由於L2範數解範圍是圓,所以相切的點有很大可能不在坐標軸上,而由於L1範數是菱形(頂點是凸出來的),其相切的點更可能在坐標軸上,而坐標軸上的點有一個特點,其只有一個坐標分量不為零,其他坐標分量為零,即是稀疏的。所以有如下結論,L1範數可以導致稀疏解,L2範數導致稠密解。

從貝葉斯先驗的角度看,當訓練一個模型時,僅依靠當前的訓練數據集是不夠的,為了實現更好的泛化能力,往往需要加入先驗項,而加入正則項相當於加入了一種先驗。

L1範數相當於加入了一個Laplacean先驗;L2範數相當於加入了一個Gaussian先驗。如下圖所示:

Dropout

Dropout是深度學習中經常採用的一種正則化方法。

具體做法:在DNNs訓練的過程中以概率p丟棄部分神經元,即使得被丟棄的神經元輸出為0。Dropout可以實例化的表示為下圖:

我們可以從兩個方面去直觀地理解Dropout的正則化效果:

在Dropout每一輪訓練過程中隨機丟失神經元的操作相當於多個DNNs進行取平均,因此用於預測時具有vote的效果。減少神經元之間複雜的共適應性。當隱藏層神經元被隨機刪除之後,使得全連接網絡具有了一定的稀疏化,從而有效地減輕了不同特徵的協同效應。也就是說,有些特徵可能會依賴於固定關係的隱含節點的共同作用,而通過Dropout的話,就有效地組織了某些特徵在其他特徵存在下才有效果的情況,增加了神經網絡的魯棒性。Batch Normalization

批規範化(Batch Normalization)主要用於加速網絡的收斂,但也具有一定程度的正則化效果。這裡引用下魏秀參博士的知乎回答中對covariate shift的解釋(https://www.zhihu.com/question/38102762)。

大家都知道在統計機器學習中的一個經典假設是「源空間(source domain)和目標空間(target domain)的數據分布(distribution)是一致的」。如果不一致,那麼就出現了新的機器學習問題,如transfer learning/domain adaptation等。而covariate shift就是分布不一致假設之下的一個分支問題,它是指源空間和目標空間的條件概率是一致的,但是其邊緣概率不同。大家細想便會發現,的確,對於神經網絡的各層輸出,由於它們經過了層內操作作用,其分布顯然與各層對應的輸入信號分布不同,而且差異會隨著網絡深度增大而增大,可是它們所能「指示」的樣本標記(label)仍然是不變的,這便符合了covariate shift的定義。BN的基本思想其實相當直觀,因為神經網絡在做非線性變換前的激活輸入值(X=WU+BX=WU+B,UU是輸入)隨著網絡深度加深,其分布逐漸發生偏移或者變動(即上述的covariate shift)。之所以訓練收斂慢,一般是整體分布逐漸往非線性函數的取值區間的上下限兩端靠近(對於Sigmoid函數來說,意味著激活輸入值X=WU+BX=WU+B是大的負值或正值),所以這導致後向傳播時低層神經網絡的梯度消失,這是訓練深層神經網絡收斂越來越慢的本質原因。而BN就是通過一定的規範化手段,把每層神經網絡任意神經元這個輸入值的分布強行拉回到均值為0方差為1的標準正態分布,避免因為激活函數導致的梯度彌散問題。所以與其說BN的作用是緩解covariate shift,倒不如說BN可緩解梯度彌散問題。

歸一化、標準化 & 正則化

歸一化和標準化是兩個容易和正則化相混淆的概念。

歸一化(Normalization):歸一化的目標是找到某種映射關係,將原數據映射到[a,b]區間上。一般a,b會取[1,1],[0,1]這些組合。常用min-max normalization:

一般有兩種應用場景:把數變為(0, 1)之間的小數把有量綱的數轉化為無量綱的數標準化(Standardization):用大數定理將數據轉化為一個標準正態分布,標準化公式為:

標準化

歸一化和標準化的區別:

歸一化的縮放是「擠壓」統一到區間(僅由極值決定),而標準化的縮放是更加「彈性」和「動態」的,和整體樣本的分布有很大的關係。

歸一化:縮放僅僅跟最大、最小值的差別有關。標準化:縮放和每個點都有關係,通過方差(variance)體現出來。與歸一化對比,標準化中所有數據點都有貢獻(通過均值和標準差造成影響)。標準化和歸一化的優勢

歸一化使得不同維度之間的特徵在數值上有一定比較性,可以大大提高分類器的準確性——提升模型精度標準化將使得最優解的尋優過程平緩,更容易正確的收斂到最優解。——加速模型收斂

標準化尋優過程

-

不要錯過一個三分鐘學習的機會~

快點擊關注吧~

相關焦點

  • 在深度學習中對正則化的直觀認識
    獲得對正則化的直觀認識在機器學習中,正則化是一種用來對抗高方差的方法——換句話說,就是模型學習再現數據的問題,而不是關於問題的潛在語義。與人類學習類似,我們的想法是構建家庭作業問題來測試和構建知識,而不是簡單的死記硬背:例如,學習乘法表,而不是學習如何乘。
  • TensorFlow(Keras)中的正則化技術及其實現(附代碼)
    這可能導致機器學習算法無法準確地推廣到看不見的數據。如果訓練數據不能準確表示測試數據的分布,則可能會發生過度擬合。可以通過減少訓練數據中的特徵數量並通過各種技術降低網絡的複雜性來解決過度擬合問題正則化技術通過限制網絡內權重值所保持的值範圍來減少神經網絡過度擬合的可能性(稍後會對此進行更多介紹)。
  • 吳恩達深度學習筆記(34)-你不知道的其他正則化方法
    其他正則化方法(Other regularization methods)除了L2正則化和隨機失活(dropout)正則化,還有幾種方法可以減少神經網絡中的過擬合:一.數據擴增假設你正在擬合貓咪圖片分類器,如果你想通過擴增訓練數據來解決過擬合,但擴增數據代價高,而且有時候我們無法擴增數據,但我們可以通過添加這類圖片來增加訓練集
  • StatQuest - 正則化之嶺回歸_Ridge Regression
    StatQuest - 正則化之嶺回歸_Ridge Regression微信公眾號:生信小知識關注可了解更多的教程及單細胞知識。關於交叉驗證:StatQuest - 機器學習——交叉驗證對於離散型數據前面的數據都是連續型數據,Ridge Regression也可以用在離散型數據數據中。
  • 一文概覽深度學習中的五大正則化方法和七大優化策略
    選自arXiv 機器之心編譯 深度學習中的正則化與優化策略一直是非常重要的部分,它們很大程度上決定了模型的泛化與收斂等性能。本文主要以深度卷積網絡為例,探討了深度學習中的五項正則化與七項優化策略,並重點解釋了當前最為流行的 Adam 優化算法。
  • 你了解機器學習中的線性回歸嗎
    你了解機器學習中的線性回歸嗎 AI科技大本營 發表於 2020-02-24 14:03:34 機器學習中的線性回歸是一種來源於經典統計學的有監督學習技術。
  • 谷歌今日上線基於TensorFlow的機器學習速成課程
    谷歌官方描述為機器學習熱愛者的自學指南,且課程資料都是中文書寫,課程視頻都由機器學習技術轉述為中文音頻。這對於中文讀者來說將會有很大的幫助,當然我們也能選擇英文語音以更精確地學習內容。此外,據機器之心了解,這曾是谷歌內部培訓工程師的課程,有近萬名谷歌員工參與並將學到的東西用在產品的優化和增強上課程地址:https://developers.google.cn/machine-learning/crash-course/按照該課程所述,讀者可能需要初級代數知識,如變量與係數、線性方程組和函數曲線等以理解基本的機器學習模型
  • 深度學習和機器學習的線性代數入門
    正確理解機器學習和深度學習的概念,掌握以下這些數學領域至關重要:機器學習和深度學習中的線性代數在機器學習中,很多情況下需要向量化處理,為此,掌握線性代數的知識至關重要。通過線性代數可以處理大量數據,可以這麼說,「線性代數是數據科學的基本數學。」在
  • 谷歌工程師講解ML和DL中的正則化技術
    概述:現在,隨著行業開始接受「人工智慧」作為預測公司成功的重要組成部分,機器學習和深度學習技術正在進入公司的職位清單。但是通常可以看到,公司中的實際決策者(做主的人:CxO)對這些技術可以做什麼以及如何使他們的公司受益的觀念非常誤導。
  • 機器學習之sklearn基礎教程!
    公眾號關注 「Python遇見機器學習」設為「星標」,第一時間知曉最新乾貨~本次分享是基於scikit-learn工具包的基本分類方法,包括常見的Logisitic Regression、支持向量機、決策樹、隨機森林以及K近鄰方法KNN。
  • 重磅乾貨 | 從連續的視角看機器學習
    英文論文PDF文件下載請在本公眾號回復關鍵詞「機器學習連續視角」。摘要 在經典數值分析的影響下,我們提出了一個連續的機器學習形式,將其作為變分法和微分積分方程中的一個問題。我們證明了傳統的機器學習模型和算法,如隨機特徵模型、兩層神經網絡模型和殘差神經網絡模型,都可以表示成(以比例形式)對應連續形式的離散化的特例。我們還提供了從這種連續形式自然產生的新模型,例如基於流的隨機特徵模型,以及新算法,例如平滑粒子方法和譜方法。我們討論了如何在這個框架下研究泛化誤差和隱式正則化問題。
  • 數據科學家應該知道的頂級機器學習算法
    機器學習算法簡介有兩種方法可以對您可能在現場遇到的機器學習算法進行分類。首先是按照學習風格對算法進行分組。第二個是通過形式或功能上的相似性對算法進行分組。通常,兩種方法都是有用的。但是,我們將專注於通過相似性進行算法分組,並瀏覽各種不同的算法類型。
  • 手把手:基於概率編程Pyro的金融預測,讓正則化結果更有趣!
    如果你讀過那些教程,你一定會注意到,當你試圖在「隨機」數據上用一些機器學習模型並且希望找到隱藏模式時,你其實正逐漸對訓練集進行過擬合。我們使用不同的正則化方法和補充數據來解決這個問題,但是這非常耗時間並且有點盲目搜索了。今天我想介紹一種稍微不同的方法來用於相同的算法。
  • TensorFlow Lattice:靈活、可控、可解釋的機器學習
    字幕組雙語原文:TensorFlow Lattice:靈活、可控、可解釋的機器學習英語原文:TensorFlow Lattice: Flexible, controlled and interpretable ML翻譯:雷鋒字幕組(ZeroJ)大多數的機器學習實踐者都曾遇到過訓練數據和實際運行時用以評估模型的樣本差別很大的情況。
  • 陳天奇做的XGBoost為什麼能橫掃機器學習競賽平臺?
    ,堪稱機器學習算法中的新女王!XGBoost號稱「比賽奪冠的必備大殺器」,橫掃機器學習競賽罕逢敵手。最近甚至有一位大數據/機器學習主管被XGBoost在項目中的表現驚豔到,盛讚其為「機器學習算法中的新女王」!XGBoost最初由陳天奇開發。陳天奇是華盛頓大學計算機系博士生,研究方向為大規模機器學習。
  • 機器學習算法盤點:人工神經網絡、深度學習
    機器學習算法盤點:人工神經網絡、深度學習 佚名 發表於 2016-08-01 16:26:33   機器學習無疑是當前數據分析領域的一個熱點內容。很多人在平時的工作中都或多或少會用到機器學習的算法。
  • 文科生都能看懂的機器學習教程:梯度下降、線性回歸、邏輯回歸
    現在,機器學習這麼火,想入行的人越來越多,然而被搞糊塗的人也越來越多。因為大眾很難理解機器學習是幹嗎的?那些神秘拗口的概念,比如邏輯回歸、梯度下降到底是什麼?j  一個23歲的藥物學專業的學生說,當他去參加機器學習培訓課程的時候,感覺自己就家裡那位不懂現代科技的奶奶。
  • 機器學習算法中的概率方法
    本文不省略任何推導步驟,適時補充背景知識,力圖使本節內容是自足的,使機器學習的初學者也能理解本文內容。(c). 機器學習近年來發展極其迅速,已成為一個非常廣袤的領域。本文無法涵蓋機器學習領域的方方面面,僅就一些關鍵的機器學習流派的方法進行介紹。(d). 為了幫助讀者鞏固本文內容,或引導讀者擴展相關知識,文中穿插了許多問題,並在最後一節進行問題的「快問快答」。
  • 極簡機器學習課程:使用Python構建和訓練一個完整的人工神經網絡
    1.數據+架構要想使用一種機器學習的方法,我們首先需要數據。獲取到數據後,我們會使用程式語言Python,在二維numpy庫裡存儲數據。數據準備好後,就可以用它訓練一個模型了。機器學習中有大量的模型,本文訓練的是當前特別火的人工神經網絡。
  • 詳細解讀,8000字線性代數知識點長文,帶你入門深度學習/機器學習
    本文目錄:引言機器學習和深度學習建立在數學原理和概念之上,因此AI學習者需要了解基本數學原理。在模型構建過程中,我們經常設計各種概念,例如維數災難、正則化、二進位、多分類、有序回歸等。神經元是深度學習的基本單位,該結構完全基於數學概念,即輸入和權重的乘積和。至於Sigmoid,ReLU等等激活函數也依賴於數學原理。