1. 程式人生 > >機器學習------L1、L2規範化(L1 Regularization、L1 Regularization)

機器學習------L1、L2規範化(L1 Regularization、L1 Regularization)

取自孫明的"數字影象處理與分析基礎"

1. 引入——病態問題和約束

  通過改變模型的擬合能力來避免過擬合併不是一件容易的事情,更常用的辦法是使用規範化對模型的引數進行一定的約束。下面來考慮一個非常簡單的例子,求下面方程的解:
  

2xy+2=0
  這是一個二元一次方程,有無數個解,都在下圖1a所示的這條直線上。
這裡寫圖片描述
圖1 病態方程求解和規範化

  這是一個典型的病態(ill-posed)方程,有無數個解可以滿足方程,可以通過xy代入等式左邊求出0,但是通過等式來推導xy的值卻是不可行的。病態方程除了有不可逆的性質,在數值計算上也不受歡迎,比如

x=109,y=2109+2,那麼如果xy的係數發生很小的變化,則這個變化會被放大很多到等式的右邊,在數值計算中,這常常是不穩定的。
 針對病態方程,一個常見的辦法是加入一個約束項,縮小xy的取值範圍,比如令x2+y2=0.8,如圖1b所示,則相當於約束xy在半徑為25圓上,於是相切點(-0.8,0.4)成了一個穩定的解。此外還可以令約束為|x|+|y|=1,則交點也只有一個,就是(-1,0),也是一個穩定的唯一解。

2. L2規範化

  雖然上面討論的是一個非常簡單的解方程的例子,但是和機器學習的問題有許多相似性。基於引數的機器學習模型某種程度上就是一個不可逆的問題,對於同一個損失函式值,可以對應很多種不同的引數。甚至在高維度下,極小值和最小值都很接近,所以即使是很好優化過的模型,也會對應許多不同的引數組合,而這些組合未必是數值穩定的。而且因為引數的範圍更自由,可以得到很小的訓練誤差,往往都不具有很好地泛化能力

(對訓練資料以外資料做出準確預測的能力成為泛化能力)。這時候可以考慮加入一個約束項,這種方法叫做規範化(Regularization)。具體來說就是在損失函式里加上一項,最常用的一種是L2規範化:
          這裡寫圖片描述
  其實就是L2範數,也就是歐氏距離的平方乘上一個係數。在神經網路中,L2規範化通常只應用於仿射變換中的線性變換部分,也就是wx+bw。根據公式形式,這樣一項加上之後,權重的絕對值大小就會整體傾向於減小,尤其是不會出現特別大的值。所以L2規範化還有個名字叫做權重衰減(weight decay),也有一種理解這種衰減是對權重的懲罰,所以有時候會看到文章或者書裡管這一項叫做懲罰(penalty)項。
  下面通過一個簡單的例子來形象理解下L2規範化的作用。考慮一個只有兩個引數
w1
w2的模型,其損失函式曲面如圖2所示。
這裡寫圖片描述

圖2 L2規範化對目標函式曲面的影響

  圖2a是一個目標函式,可以看到,最小值所在是一條線,整個曲面像一條山嶺倒過來一樣。這樣的曲面對應無數個引數組合,單純用梯度下降法是難以得到確定解的,可以看做是一個典型的病態問題。但是加上一項0.1(w12+w22),則曲面 變成了如圖2b所示的樣子。最小值所在從倒過來的“嶺”變成了一個“谷”。需要注意的是“谷”所在的位置並不是規範項的中心(0,0),而是根據規範化係數的大小和原來損失函式曲面共同決定的。當規範化係數α時,原來的損失函式可以忽略,則“谷”的位置趨近於(0,0);當α0時,“谷”的位置趨近於原損失函式曲面中“嶺”所在的位置。總之加上這一項之後,梯度下降法就能夠解決了。並且通過這個例子可以看出,L2規範項還起到了幫助收斂的作用。統計學裡這個方法常用來處理多重線性下的最小二乘法問題,並且有個形象的名字叫做嶺迴歸(ridge regression)。

L1規範化(L1 Regularization)

  除了L2規範化,L1規範化也是最常見的規範化方法之一,形式如下:
          這裡寫圖片描述
  其實在圖1所示的例子中已經見過,和L2的區別主要是L2項的等高線不同,二維情況的等高線畫在了圖1c中,是個旋轉45的正方形。這個性質讓L1規範化後的引數更趨向於某些維度為0,也就是稀疏性。關於這個性質的形象理解,還是來看一個二維的例子,如圖3所示。
  圖3中虛線代表的是元損失函式的等高線,實線代表的是規範化項的等高線,左邊a圖是L2的情況,右邊b圖是L1的情況。當整體函式達到最小值的時候,如圖a中點所示的位置,所以能夠很清楚看出,L2項讓整體引數都有變小的趨勢。二L1則會讓引數的方向朝著某個軸靠近,比如圖3b中,因為原始損失函式等高線的形狀,無論L1項的係數怎麼變,最終最小值一定是在橫軸上。這樣的約束可以讓有效特徵的數量變少,從而獲得稀疏性。因為這個性質,L1規範化經常被用在降噪聲和影象重建中。在統計學裡L1規範化也有另外一個名字叫做LASSO,即Least Absolute Shrinkage and Selection Operator,是對L1規範化的一個簡短概括。
這裡寫圖片描述

圖3 L2規範化和L1規範化的區別

相關推薦

機器學習------L1L2規範化L1 RegularizationL1 Regularization

取自孫明的"數字影象處理與分析基礎" 1. 引入——病態問題和約束   通過改變模型的擬合能力來避免過擬合併不是一件容易的事情,更常用的辦法是使用規範化對模型的引數進行一定的約束。下面來考慮一個非常簡單的例子,求下面方程的解:   2x−y+2=02

機器學習知識點查漏補缺樸素貝葉斯分類

平滑 http 運算 貝葉斯公式 -s 目標 bubuko 思想 指數 一、基本模型 樸素貝葉斯分類模型的基本思想就是貝葉斯公式,對以特征為條件的各類別的後驗概率。 貝葉斯公式如下: 對標樸素貝葉斯分類模型的公式如下: 分子中的第二項為每個類別的概率(實際運算即頻

機器學習】k-近鄰演算法k-nearest neighbor, k-NN

前言 kk近鄰學習是一種常用的監督學習方法。 kk近鄰法的輸入為例項的特徵向量,對應於特徵空間的點;輸出為例項的類別,可以取多類。 kk近鄰法的工作機制很簡單:給定測試樣本,基於某種距離度量(關於

python機器學習庫sklearn——Lasso迴歸L1正則化

Lasso The Lasso 是估計稀疏係數的線性模型。 它在一些情況下是有用的,因為它傾向於使用具有較少引數值的情況,有效地減少給定解決方案所依賴變數的數量。 因此,Lasso 及其變體是壓縮感知領域的基礎。 在一定條件下,它可以恢復一組非零權重的

斯坦福大學公開課機器學習: advice for applying machine learning | regularization and bais/variance機器學習中方差和偏差如何相互影響以及和算法的正則化之間的相互關系

交叉 來講 相對 同時 test 如果 開始 遞增 相互 算法正則化可以有效地防止過擬合, 但正則化跟算法的偏差和方差又有什麽關系呢?下面主要討論一下方差和偏差兩者之間是如何相互影響的、以及和算法的正則化之間的相互關系 假如我們要對高階的多項式進行擬合,為了防止過擬合現象

機器學習:評價分類結果實現混淆矩陣精準率召回率

test set 目的 mod 二分 參數 nbsp return try 一、實例  1)構造極度偏差的數據 import numpy as np from sklearn import datasets digits = datasets.load_digits

Python機器學習實踐指南 pdf 下載中文版帶書籤原書程式碼資料集

機器學習正在迅速成為資料驅動型世界的一個bi備模組。許多不同的領域,如機器人、醫學、零售和出版等,都需要依賴這門技術。通過閱讀 Python機器學習實踐指南 ,你將學習如何一步步構建真實的機器學習應用程式。  Python機器學習實踐指南 以通俗易懂,簡潔明瞭的方式,教你如何使用機器

機器學習 第一章 Python複習5pip的使用安裝虛擬環境安裝BeautifulSoup庫

1.建立虛擬環境(win10) 配置清華大學pip映象源 C:\Users\huxia\pip\pip.ini [global] timeout = 60 index-url = https://

Python機器學習依賴庫的安裝numpyscipysklearn

說到機器學習,相信大部分的研究者都是使用python來完成的,因為是實在太方便了,幾行程式碼就搞定了,比較前人做的研究都積累在那邊,所以今天我又重新安裝了python(還不是因為要做機器學習方面的實驗和luwn論文),so開始吧! 1、常用Python機器學習包 Numpy:用於科學計算的包

機器學習之python入門指南元組集合字典的使用

Python3中元組、集合、字典的使用 Python中元組的用法元組的建立與訪問 元組和列表類似,不同之處在於元組不能修改,元組使用小括號,列表使用方括號,注意元組中如果只包含以個元素需要在後面加,否則會被當作運算子使用 元組與字串類似,下標索引從0開始,可以進行擷取,取捨

斯坦福大學機器學習筆記——異常檢測演算法高斯分佈多元高斯分佈異常檢測演算法

異常檢測問題介紹: 異常檢測演算法主要用於無監督學習問題,但從某種角度看它又類似於一種有監督學習的問題,下面我們從一個例子中簡單介紹一下什麼是異常檢測問題。 比如我們有一個飛機引擎製造商,對於一個新造出的飛機引擎我們想判斷這個引擎是不是異常的。 假如我們有

Python 文字挖掘:使用機器學習方法進行情感分析特徵提取和選擇

def create_word_bigram_scores(): posdata = pickle.load(open('D:/code/sentiment_test/pos_review.pkl','r')) negdata = pickle.load(open('D:/code/senti

機器學習--手寫數字識別KNN決策樹

KNN 及決策樹演算法為監督學習中的兩種簡單演算法。 KNN KNN演算法(鄰近演算法)的核心思想是如果一個樣本在特徵空間中的k個最相鄰的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。 歐式距離的計算公式: 假設每個樣本有兩個特徵值,如 A

機器學習十三——機器學習中的矩陣方法3病態矩陣協同過濾的ALS演算法1

向量的範數(續) 範數可用符號∥x∥λ表示。常用的有: ∥x∥1=|x1|+⋯+|xn| ∥x∥2=x21+⋯+x2n−−−−−−−−−−−√ ∥x∥∞=max(|x1|,…,|xn|) 這裡不做解釋的給出如下示意圖: 其中,0範數表

機器學習演算法原理與實踐卡爾曼濾波器演算法淺析及matlab實戰

卡爾曼濾波器是一種利用線性系統狀態方程,通過系統輸入輸出觀測資料,對系統狀態進行最優估計的演算法。而且由於觀測包含系統的噪聲和干擾的影響,所以最優估計也可看做是濾波過程。 卡爾曼濾波器的核心

參評機器學習筆記——鳶尾花資料集KNN決策樹樸素貝葉斯分析

最開始選取鳶尾花資料集來了解決策樹模型時,筆者是按照學習報告的形式來寫得,在這裡將以原形式上傳。格式較為繁複,希望讀者可以耐心看完,謝謝大家。目錄 6.總結 7.問題 1、問題描述  iris是鳶尾植物,這裡儲存了其萼片和花瓣的長寬,共4個屬性,鳶尾

機器學習演算法原理與實踐感知機演算法

感知機 感知機是二分類的線性分類模型,輸入為例項的特徵向量,輸出為例項的類別(取+1和-1)。感知機對應於輸入空間中將例項劃分為兩類的分離超平面。感知機旨在求出該超平面,為求得超平面匯入了基於誤分類的損失函式,利用梯度下降法對損失函式進行最優化(最優

從零單排入門機器學習:線性回歸linear regression實踐篇

class rom enter instr function ont 線性 gin 向量 線性回歸(linear regression)實踐篇 之前一段時間在coursera看了Andrew ng的機器學習的課程,感覺還不錯,算是入門了。這次打算以該課程的作業

[轉] [機器學習] 常用數據標準化正則化的方法

機器學習 數據 評價 分享 函數 http mean 常用方法 訓練 數據正則化 目的:為了加快訓練網絡的收斂性,可以不進行歸一化處理 源地址:http://blog.sina.com.cn/s/blog_8808cae20102vg53.html 而在多指標評價體系中,

Odoo10學習筆記三:模型結構化的應用數據視圖用戶界面設計

其他 描述 用戶界面 列表 支持 字段 界面設計 允許 學習 一:模型 1:創建模型 模型屬性:模型類可以使用一些屬性來控制它們的一些行為: _name :創建odoo模型的內部標識符,必含項。 _description :當用戶界面顯示模型時,一個方便用戶的模型記錄標題。