日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

范数和机器学习中的范数

發布時間:2025/3/19 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 范数和机器学习中的范数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是范數?

我們知道距離的定義是一個寬泛的概念,只要滿足非負、自反、三角不等式就可以稱之為距離。范數是一種強化了的距離概念,它在定義上比距離多了一條數乘的運算法則。有時候為了便于理解,我們可以把范數當作距離來理解。

在數學上,范數包括向量范數和矩陣范數,向量范數表征向量空間中向量的大小,矩陣范數表征矩陣引起變化的大小。一種非嚴密的解釋就是,對應向量范數,向量空間中的向量都是有大小的,這個大小如何度量,就是用范數來度量的,不同的范數都可以來度量這個大小,就好比米和尺都可以來度量遠近一樣;對于矩陣范數,學過線性代數,我們知道,通過運算AX=BAX=BAX=B,可以將向量X變化為B,矩陣范數就是來度量這個變化大小的。

L-P范數

與閔可夫斯基距離的定義一樣,L-P范數不是一個范數,而是一組范數,其定義如下:

??????????Lp=∑1nxipp,x=(x1,x2,? ,xn)Lp=\sqrt[p]{\sum\limits_{1}^n x_i^p},x=(x_1,x_2,\cdots,x_n)Lp=p1n?xip??x=(x1?,x2?,?,xn?)

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

上圖表示了p從無窮到0變化時,三維空間中到原點的距離(范數)為1的點構成的圖形的變化情況。以常見的L-2范數(p=2)為例,此時的范數也即歐氏距離,空間中到原點的歐氏距離為1的點構成了一個球面。

實際上,在0≤p&lt;10≤p&lt;10p<1時,Lp并不滿足三角不等式的性質,也就不是嚴格意義下的范數(范數用于表示距離)。以p=0.5,二維坐標(1,4)、(4,1)、(1,9)為例,(1+4)0.5+(4+1)0.5&lt;(1+9)0.5\sqrt[0.5]{(1+\sqrt{4})}+\sqrt[0.5]{(\sqrt{4}+1)}&lt;\sqrt[0.5]{(1+\sqrt{9})}0.5(1+4?)?+0.5(4?+1)?<0.5(1+9?)?。因此這里的L-P范數只是一個概念上的寬泛說法。

L0范數

當P=0時,也就是L0范數,由上面可知,L0范數并不是一個真正的范數,它主要被用來度量向量中非零元素的個數。
定義:??????????∣∣x∣∣=∑1nxi00,x=(x1,x2,?&ThinSpace;,xn)||x||=\sqrt[0]{\sum\limits_1^nx_i^0},x=(x_1,x_2,\cdots,x_n)x=01n?xi0??x=(x1?,x2?,?,xn?)
對于L0范數,其優化問題為:
????????????min∣∣x∣∣0min||x||_0minx0?
????????????s.t. Ax=b
在實際應用中,由于L0范數本身不容易有一個好的數學表示形式,給出上面問題的形式化表示是一個很難的問題,故被人認為是一個NP難問題。所以在實際情況中,L0的最優問題會被放寬到L1或L2下的最優化。

L1范數

定義:
????????????∣∣x∣∣1=∑i∣xi∣||x||_1=\sum_i|x_i|x1?=i?xi?

表示向量x中非零元素的絕對值之和。

L1范數有很多的名字,例如我們熟悉的曼哈頓距離、最小絕對誤差等。使用L1范數
可以度量兩個向量間的差異,如絕對誤差和(Sum of Absolute Difference):

????????????SAD(x1,x2)=∑i∣x1i?x2i∣SAD(x_1,x_2)=\sum_i|x_{1i}-x_{2i}|SAD(x1?,x2?)=i?x1i??x2i?

對于L1范數,它的優化問題如下:
????????????min∣∣x∣∣1min||x||_1minx1?
????????????s.t. Ax=b
由于L1范數的天然性質,對L1優化的解是一個稀疏解,因此L1范數也被叫做稀疏規則算子。通過L1可以實現特征的稀疏,去掉一些沒有信息的特征,例如在對用戶的電影愛好做分類的時候,用戶有100個特征,可能只有十幾個特征是對分類有用的,大部分特征如身高體重等可能都是無用的,利用L1范數就可以過濾掉。

L2范數

L2范數是我們最常見最常用的范數了,我們用的最多的度量距離歐氏距離就是一種L2范數,它的定義如下:
????????????∣∣x∣∣2=∑ixi2||x||_2=\sqrt{\sum_ix_i^2}x2?=i?xi2??

L2范數通常會被用來做優化目標函數的正則化項,防止模型為了迎合訓練集而過于
復雜造成過擬合的情況,從而提高模型的泛化能力。

機器學習中的范數

1.機器學習中為什么要使用范數

??監督機器學習問題無非就是“minimizeyour error while regularizing your parameters”,也就是在規則化參數的同時最小化誤差。最小化誤差是為了讓我們的模型擬合我們的訓練數據,而規則化參數是防止我們的模型過分擬合我們的訓練數據。多么簡約的哲學啊!
??因為參數太多,會導致我們的模型復雜度上升,容易過擬合,也就是我們的訓練誤差會很小。但訓練誤差小并不是我們的最終目標,我們的目標是希望模型的測試誤差小,也就是能準確的預測新的樣本。所以,我們需要保證模型“簡單”的基礎上最小化訓練誤差,這樣得到的參數才具有好的泛化性能(也就是測試誤差也小).
??而模型“簡單”就是通過規則函數來實現的。另外,規則項的使用還可以約束我們的模型的特性。這樣就可以將人對這個模型的先驗知識融入到模型的學習當中,強行地讓學習到的模型具有人想要的特性,例如稀疏、低秩、平滑等等。要知道,有時候人的先驗是非常重要的。前人的經驗會讓你少走很多彎路,這就是為什么我們平時學習最好找個大牛帶帶的原因。一句點撥可以為我們撥開眼前烏云,還我們一片晴空萬里,醍醐灌頂。對機器學習也是一樣,如果被我們人稍微點撥一下,它肯定能更快的學習相應的任務。只是由于人和機器的交流目前還沒有那么直接的方法,目前這個媒介只能由規則項來擔當了。
??還有幾種角度來看待規則化的。規則化符合奧卡姆剃刀(Occam’s razor)原理。這名字好霸氣,razor!不過它的思想很平易近人:在所有可能選擇的模型中,我們應該選擇能夠很好地解釋已知數據并且十分簡單的模型。從貝葉斯估計的角度來看,規則化項對應于模型的先驗概率。民間還有個說法就是,規則化是結構風險最小化策略的實現,是在經驗風險上加一個正則化項(regularizer)或懲罰項(penalty term)。

2.常見的范數

2.1 L0范數與L1范數

L0范數是指向量中非0的元素的個數。如果我們用L0范數來規則化一個參數矩陣W的話,就是希望W的大部分元素都是0。這太直觀了,太露骨了吧,換句話說,讓參數W是稀疏的。OK,看到了“稀疏”二字,大家都應該從當下風風火火的“壓縮感知”和“稀疏編碼”中醒悟過來,原來用的漫山遍野的“稀疏”就是通過這玩意來實現的。但你又開始懷疑了,是這樣嗎?看到的papers世界中,稀疏不是都通過L1范數來實現嗎?腦海里是不是到處都是||W||1影子呀!幾乎是抬頭不見低頭見。沒錯,這就是這節的題目把L0和L1放在一起的原因,因為他們有著某種不尋常的關系。那我們再來看看L1范數是什么?它為什么可以實現稀疏?為什么大家都用L1范數去實現稀疏,而不是L0范數呢?
L1范數是指向量中各個元素絕對值之和,也有個美稱叫“稀疏規則算子”(Lasso regularization)。現在我們來分析下這個價值一個億的問題:為什么L1范數會使權值稀疏?有人可能會這樣給你回答“它是L0范數的最優凸近似”。實際上,還存在一個更美的回答:任何的規則化算子,如果他在Wi=0的地方不可微,并且可以分解為一個“求和”的形式,那么這個規則化算子就可以實現稀疏。這說是這么說,W的L1范數是絕對值,|w|在w=0處是不可微。后面會將L1和L2進行對比分析得出為什么L1可以實現稀疏。
對了,上面還有一個問題:既然L0可以實現稀疏,為什么不用L0,而要用L1呢?上面也提到了一是因為L0范數很難優化求解(NP難問題),二是L1范數是L0范數的最優凸近似,而且它比L0范數要容易優化求解。所以大家才把目光和萬千寵愛轉于L1范數。
OK,來個一句話總結:L1范數和L0范數可以實現稀疏,L1因具有比L0更好的優化求解特性而被廣泛應用。

好,到這里,我們大概知道了L1可以實現稀疏,但我們會想呀,為什么要稀疏?讓我們的參數稀疏有什么好處呢?這里扯兩點
1)特征選擇(Feature Selection):
大家對稀疏規則化趨之若鶩的一個關鍵原因在于它能實現特征的自動選擇。一般來說,xi的大部分元素(也就是特征)都是和最終的輸出yi沒有關系或者不提供任何信息的,在最小化目標函數的時候考慮xi這些額外的特征,雖然可以獲得更小的訓練誤差,但在預測新的樣本時,這些沒用的信息反而會被考慮,從而干擾了對正確yi的預測。稀疏規則化算子的引入就是為了完成特征自動選擇的光榮使命,它會學習地去掉這些沒有信息的特征,也就是把這些特征對應的權重置為0。

2)可解釋性(Interpretability):
另一個青睞于稀疏的理由是,模型更容易解釋。例如患某種病的概率是y,然后我們收集到的數據x是1000維的,也就是我們需要尋找這1000種因素到底是怎么影響患上這種病的概率的。假設我們這個是個回歸模型:y=w1x1+w2x2+…+w1000x1000+b(當然了,為了讓y限定在[0,1]的范圍,一般還得加個Logistic函數)。通過學習,如果最后學習到的w就只有很少的非零元素,例如只有5個非零的wi,那么我們就有理由相信,這些對應的特征在患病分析上面提供的信息是巨大的,決策性的。也就是說,患不患這種病只和這5個因素有關,那醫生就好分析多了。但如果1000個wi都非0,醫生面對這1000種因素,累覺不愛。

2.2 L2范數

除了L1范數,還有一種更受寵幸的規則化范數是L2范數: ||W||2(L0范數:||W||0、 L1范數:||W||1)。它也不遜于L1范數,它有兩個美稱,在回歸里面,有人把有它的回歸叫“嶺回歸”(Ridge Regression),有人也叫它“權值衰減weight decay”。這用的很多吧,因為它的強大功效是改善機器學習里面一個非常重要的問題:過擬合。 ?至于過擬合是什么,上面也解釋了,就是模型訓練時候的誤差很小,但在測試的時候誤差很大,也就是我們的模型復雜到可以擬合到我們的所有訓練樣本了,但在實際預測新的樣本的時候,糟糕的一塌糊涂。通俗的講就是應試能力很強,實際應用能力很差。擅長背誦知識,卻不懂得靈活利用知識。
OK,那現在到我們非常關鍵的問題了,為什么L2范數可以防止過擬合?
們讓L2范數的規則項||W||2最小,可以使得W的每個元素都很小,都接近于0,但與L1范數不同,它不會讓它等于0,而是接近于0,這里是有很大的區別的哦。而越小的參數說明模型越簡單,越簡單的模型則越不容易產生過擬合現象。為什么越小的參數說明模型越簡單?

這里也一句話總結下:通過L2范數,我們可以實現了對模型空間的限制,從而在一定程度上避免了過擬合。

L2范數的好處是什么呢?這里也扯上兩點:
1)學習理論的角度:
從學習理論的角度來說,L2范數可以防止過擬合,提升模型的泛化能力。
2)優化計算的角度:
從優化或者數值計算的角度來說,L2范數有助于處理 condition number不好的情況下矩陣求逆很困難的問題。

另外再從圖像上對比一下L1和L2

參考

https://blog.csdn.net/shijing_0214/article/details/51757564
https://blog.csdn.net/bitcarmanlee/article/details/51932055
https://blog.csdn.net/eric41050808/article/details/24365765

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的范数和机器学习中的范数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。