向量範數是定義了向量的相似於長度的性質,知足正定,齊次,三角不等式的關係就稱做範數。html
通常分爲L0、L一、L2與L_infinity範數。vim
1. 監督機器學習問題無非就是「minimizeyour error while regularizing your parameters」,也就是在規則化參數的同時最小化偏差。最小化偏差是爲了讓咱們的模型擬合咱們的訓練數據,而規則化參數是防止咱們的模型過度擬合咱們的訓練數據。機器學習
2. 由於參數太多,會致使咱們的模型複雜度上升,容易過擬合,也就是咱們的訓練偏差會很小。但訓練偏差小並非咱們的最終目標,咱們的目標是但願模型的測試偏差小,也就是能準確的預測新的樣本。因此,咱們須要保證模型「簡單」的基礎上最小化訓練偏差,這樣獲得的參數才具備好的泛化性能(也就是測試偏差也小),而模型「簡單」就是經過規則函數來實現的。另外,規則項的使用還能夠約束咱們的模型的特性。這樣就能夠將人對這個模型的先驗知識融入到模型的學習當中,強行地讓學習到的模型具備人想要的特性,例如稀疏、低秩、平滑等等。要知道,有時候人的先驗是很是重要的。前人的經驗會讓你少走不少彎路,這就是爲何咱們平時學習最好找個大牛帶帶的緣由。一句點撥能夠爲咱們撥開眼前烏雲,還咱們一片晴空萬里,醍醐灌頂。對機器學習也是同樣,若是被咱們人稍微點撥一下,它確定能更快的學習相應的任務。只是因爲人和機器的交流目前尚未那麼直接的方法,目前這個媒介只能由規則項來擔當了。函數
3. 知識點2的主要內容就是闡述了正則化或者是規則項的做用:post
通常來講,監督學習能夠看作最小化下面的目標函數:性能
L(yi,f(xi;w)) :衡量咱們的模型(分類或者回歸)對第i個樣本的預測值f(xi;w)和真實的標籤yi以前的偏差。由於咱們的模型是要擬合咱們的訓練樣本的嘛,因此咱們要求這一項最小,也就是要求咱們的模型儘可能的擬合咱們的訓練數據。學習
:但正如上面說言,咱們不只要保證訓練偏差最小,咱們更但願咱們的模型測試偏差小,因此咱們須要加上第二項,也就是對參數w的規則化函數Ω(w)去約束咱們的模型儘可能的簡單。測試
OK,到這裏,若是你在機器學習浴血奮戰多年,你會發現,哎喲喲,機器學習的大部分帶參模型都和這個不但形似,並且神似。是的,其實大部分無非就是變換這兩項而已。優化
規則化函數Ω(w)也有不少種選擇,通常是模型複雜度的單調遞增函數,模型越複雜,規則化值就越大。好比,規則化項能夠是模型參數向量的範數。然而,不一樣的選擇對參數w的約束不一樣,取得的效果也不一樣,但咱們在論文中常見的都彙集在:零範數、一範數、二範數、跡範數、Frobenius範數和核範數等等。這麼多範數,到底它們表達啥意思?具備啥能力?何時才能用?何時須要用呢?今天就讓咱們瞭解一下L0、L一、L2這3個最多見的範數以及他們的做用。編碼
OK,來個一句話總結:L1範數和L0範數能夠實現稀疏,L1因具備比L0更好的優化求解特性而被普遍應用。
你們對稀疏規則化趨之若鶩的一個關鍵緣由在於它能實現特徵的自動選擇。通常來講,xi的大部分元素(也就是特徵)都是和最終的輸出yi沒有關係或者不提供任何信息的,在最小化目標函數的時候考慮xi這些額外的特徵,雖然能夠得到更小的訓練偏差,但在預測新的樣本時,這些沒用的信息反而會被考慮,從而干擾了對正確yi的預測。稀疏規則化算子的引入就是爲了完成特徵自動選擇的光榮使命,它會學習地去掉這些沒有信息的特徵,也就是把這些特徵對應的權重置爲0。
另外一個青睞於稀疏的理由是,模型更容易解釋。例如患某種病的機率是y,而後咱們收集到的數據x是1000維的,也就是咱們須要尋找這1000種因素究竟是怎麼影響患上這種病的機率的。假設咱們這個是個迴歸模型:y=w1*x1+w2*x2+…+w1000*x1000+b(固然了,爲了讓y限定在[0,1]的範圍,通常還得加個Logistic函數)。經過學習,若是最後學習到的w*就只有不多的非零元素,例如只有5個非零的wi,那麼咱們就有理由相信,這些對應的特徵在患病分析上面提供的信息是巨大的,決策性的。也就是說,患不患這種病只和這5個因素有關,那醫生就好分析多了。但若是1000個wi都非0,醫生面對這1000種因素,累覺不愛。
1. L2範數(歐式距離):指向量各元素的平方和而後求平方根。
它也不遜於L1範數,它有兩個美稱,在迴歸裏面,有人把有它的迴歸叫「嶺迴歸」(Ridge Regression),有人也叫它「權值衰減weight decay」。這用的不少吧,由於它的強大功效是改善機器學習裏面一個很是重要的問題:過擬合。至於過擬合是什麼,上面也解釋了,就是模型訓練時候的偏差很小,但在測試的時候偏差很大,也就是咱們的模型複雜到能夠擬合到咱們的全部訓練樣本了,但在實際預測新的樣本的時候,糟糕的一塌糊塗。通俗的講就是應試能力很強,實際應用能力不好。擅長背誦知識,卻不懂得靈活利用知識。例以下圖所示(來自Ng的course):
上面的圖是線性迴歸,下面的圖是Logistic迴歸,也能夠說是分類的狀況。從左到右分別是欠擬合(underfitting,也稱High-bias)、合適的擬合和過擬合(overfitting,也稱High variance)三種狀況。能夠看到,若是模型複雜(能夠擬合任意的複雜函數),它可讓咱們的模型擬合全部的數據點,也就是基本上沒有偏差。對於迴歸來講,就是咱們的函數曲線經過了全部的數據點,如上圖右。對分類來講,就是咱們的函數曲線要把全部的數據點都分類正確,以下圖右。這兩種狀況很明顯過擬合了。
2. 爲何L2範數能夠防止過擬合?
3. L2範數的益處
從學習理論的角度來講,L2範數能夠防止過擬合,提高模型的泛化能力。
從優化或者數值計算的角度來講,L2範數有助於處理 condition number很差的狀況下矩陣求逆很困難的問題。
L2範數如何解救病態矩陣?如何加速病態矩陣的求解?L2範數之解救矩陣病態
4. 來個一句話總結:L2範數不但能夠防止過擬合,提高模型的泛化能力,還可讓咱們的優化求解變得穩定和快速。
使用機器學習方法解決實際問題時,咱們一般要用L1或L2範數作正則化(regularization),從而限制權值大小,減小過擬合風險。特別是在使用梯度降低來作目標函數優化時,很常見的說法是, L1正則化產生稀疏的權值, L2正則化產平生滑的權值。
這個角度從權值的更新公式來看權值的收斂結果。
首先來看看L1和L2的梯度(導數的反方向):
因此(不失通常性,咱們假定:wi等於不爲0的某個正的浮點數,學習速率η 爲0.5):
L1的權值更新公式爲wi = wi - η * 1 = wi - 0.5 * 1,也就是說權值每次更新都固定減小一個特定的值(好比0.5),那麼通過若干次迭代以後,權值就有可能減小到0。
L2的權值更新公式爲wi = wi - η * wi = wi - 0.5 * wi,也就是說權值每次都等於上一次的1/2,那麼,雖然權值不斷變小,可是由於每次都等於上一次的一半,因此很快會收斂到較小的值但不爲0。
下面的圖很直觀的說明了這個變化趨勢:
L1能產生等於0的權值,即可以剔除某些特徵在模型中的做用(特徵選擇),即產生稀疏的效果。
L2能夠得迅速獲得比較小的權值,可是難以收斂到0,因此產生的不是稀疏而是平滑的效果。
這個角度從幾何位置關係來看權值的取值狀況。
直接來看下面這張圖: