欧几里得范数_机器学习中的范数究竟是个什么鬼?
今天說(shuō)一個(gè)深度學(xué)習(xí)和機(jī)器學(xué)習(xí)里面經(jīng)常出現(xiàn),但是未必人人都能 get 到直觀感受的概念:范數(shù),英文名叫 norm。
1、直觀感受
本質(zhì)上來(lái)講,范數(shù)是用來(lái)衡量一個(gè)向量(vector)的規(guī)模的,我個(gè)人覺(jué)得中文中的「體量」這個(gè)詞翻譯它更形象。
什么叫規(guī)模,舉個(gè)例子,x 和 y 兩個(gè)向量分別如下:
x:tensor([[1., 1., 1.],[1., 1., 1.],[1., 1., 1.]])y:tensor([0., 0.])他們的 size 分別是:
x: torch.Size([3,?3])y: torch.Size([2])x 的規(guī)模是 3 維的,而且每個(gè)維度有 3 個(gè)取值,值的數(shù)值都為1;y 的規(guī)模是 1 維的, 每個(gè)維度只有 2 個(gè)取值,數(shù)值為0;
無(wú)論是維度還是數(shù)值大小,x 都毫無(wú)疑問(wèn)比 y 大。如果現(xiàn)在問(wèn)你,這兩個(gè)向量的規(guī)模哪個(gè)大一些,相信你能很直觀且不違背直覺(jué)地得出結(jié)論:x 的規(guī)模更大,即「體量」更大。
當(dāng)然,還有一種比較親民的理解方法,你可以把一個(gè)向量的范式衡量了這個(gè)向量指向的終點(diǎn)距離原點(diǎn)的距離。 ?這樣一來(lái),維度很高且各維度上取值都很大的向量指向的點(diǎn),肯定就比維度低且取值小的點(diǎn),距離原點(diǎn)更遠(yuǎn)些。所以前者的范數(shù)更大。
那么在數(shù)學(xué)上具體是怎么定義范式的呢?
2. 數(shù)學(xué)定義
嚴(yán)格來(lái)說(shuō),范式是一個(gè)可以由一個(gè)向量映射到一個(gè)數(shù)值的函數(shù)。這個(gè)函數(shù)遵從下面幾條規(guī)則:
范式是非負(fù)的,當(dāng)你把它理解為長(zhǎng)度的時(shí)候,就不難理解這個(gè)限制,因?yàn)殚L(zhǎng)度是非負(fù)的。
當(dāng)且僅當(dāng)向量為零向量時(shí),這個(gè)向量的范數(shù)才為零。
范數(shù)遵循三角定律。兩個(gè)向量相加以后求范式 <= 兩個(gè)向量求范式以后再相加。
向量乘以標(biāo)量以后求范式 = 向量求范式以后再乘以標(biāo)量。
也就說(shuō),只要滿足上面四條規(guī)律的函數(shù),不限形式,都可以作為范式函數(shù)。用這個(gè)函數(shù)可以求得一個(gè)向量的范式值,去描述一個(gè)向量的規(guī)模。
實(shí)際應(yīng)用中,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)常常用到下面這種范式函數(shù),LP 范式。
向量 x 的 LP范式定義為:其中,?p∈N? ,且?P >= 1。特別地,當(dāng) P?為 1 時(shí),稱為向量的 L1 范式;P?取 2 時(shí),為 L2 范式。
特別要說(shuō)明的是,嚴(yán)格來(lái)說(shuō),并不存在 L0 范式! 這是一個(gè)繆語(yǔ)。只不過(guò),在實(shí)際操作中,通常會(huì)把一個(gè)向量的非零元素的個(gè)數(shù)稱為 L0 范式。但是讀者需要明白地是,如果計(jì)算一個(gè)向量的非零元素的個(gè)數(shù)能夠作為范式的話,那這個(gè)映射規(guī)則明顯是不符合上述第 4 條規(guī)則的:把一個(gè)具有 n 個(gè) 0 值的向量乘以一個(gè)標(biāo)量 k 以后,它的非零元素的個(gè)數(shù)還是 n,而不是 k*n。
3. L1 范式和 L2 范式的比較
當(dāng) p 取 1 時(shí),叫 L1 范式,很簡(jiǎn)單,就是向量所有元素值的絕對(duì)值求和:當(dāng) p 取 2 時(shí),叫 L2 范式,即?Euclidean norm,歐幾里得范式:
這么親切的名字,喻示著,L2 范式相當(dāng)于求歐式距離。舉個(gè)例子:如果一個(gè)向量 u 為:那么,它的 L2 范式就是這么求的,向量 u 的 L2 范式值就是 5:很簡(jiǎn)單吧!
numpy 里面用 linalg.norm 函數(shù)就可以求 L2 范式:
np.linalg.norm([3, 4])5因?yàn)?L2 范式是最常用的范式,所以有時(shí)候,會(huì)把簡(jiǎn)寫為;而?L1 范式記為。
那么到底哪種范式用得最多呢?
實(shí)踐過(guò)程中,常常會(huì)用到 L2 范式的平方(squared L2 norm,以下簡(jiǎn)稱為 “平方 L2“。):,實(shí)際計(jì)算公式為:
平方 L2 擺脫了根號(hào)以后變得十分可愛(ài)了,因?yàn)樗褪窍蛄克性氐钠椒胶投选?strong>在損失函數(shù)的優(yōu)化過(guò)程中,關(guān)于單個(gè)變量的求導(dǎo)變得容易很多。 具體來(lái)說(shuō),如果向量 μ為:那么,它的 L2 范式關(guān)于各項(xiàng)元素的求導(dǎo)為:
如果是 平方 L2 關(guān)于各元素求導(dǎo)呢:通過(guò)對(duì)比可以看到,L2 求導(dǎo),每個(gè)元素的偏導(dǎo)與整個(gè)向量所有的元素有關(guān),而平方 L2 求導(dǎo),每個(gè)元素的偏導(dǎo)只與這個(gè)元素自己的取值有關(guān)。 這樣一來(lái),求導(dǎo)過(guò)程瞬間簡(jiǎn)單很多!
上面是平方 L2 的優(yōu)點(diǎn),下面再來(lái)說(shuō)一下它的不足。
以二維向量的 norm 為例,由于函數(shù)增長(zhǎng)特性,平方 L2 在元素值接近于零的時(shí)候,其范式增長(zhǎng)速度非常緩慢。看下圖:
左邊 L2 范式,右邊平方 L2 范式 |?x,y 軸為兩個(gè)參數(shù),z 軸為 norm
可以看到,右邊的平方 L2 在 x,y 接近于 0 的取值時(shí),較之于左邊的 L2,增長(zhǎng)非常平緩。所以在某些需要明確區(qū)分零值與非零值的應(yīng)用中,用平方 L2 則顯得不夠明智。而機(jī)器學(xué)習(xí)中,對(duì)接近零值區(qū)域比較敏感的情況下,L1 范式是用的最多的,如下圖:
L1 范式
在 L1 范式中,一個(gè)向量的單個(gè)元素從零增加 ?,則 L1 范式值也增加 ?,而不是像平方 L2 一樣幾近無(wú)增長(zhǎng)。
4. 其他種類的范式
除了上述的 LP范式,機(jī)器學(xué)習(xí)中還很常見(jiàn)的一個(gè)范式是范式(max norm),我們叫它最大范式吧。顧名思義,最大范式為求這個(gè)向量所有元素值的最大絕對(duì)值,也是很簡(jiǎn)單的概念。
此外,深度學(xué)習(xí)中有時(shí)需要衡量一個(gè)矩陣的體量的時(shí)候,會(huì)用到 Frobenius 范式(Frobenius norm),公式為:這個(gè)計(jì)算方法相當(dāng)于,對(duì)矩陣進(jìn)行平滑操作(flatten)后的一維向量求 L2 范式。
兩個(gè)向量的點(diǎn)乘可以利用 L2 范式來(lái)求:
以 x, y 兩個(gè)向量為例:
那么,等式左邊:等式右邊:
關(guān)于范式的初步說(shuō)明今天先到此為止,后續(xù)有時(shí)間會(huì)補(bǔ)充說(shuō)明為什么需要搞出這個(gè)所謂的范數(shù),以及怎樣選擇范數(shù)。
關(guān)于為什么要用到范數(shù)這個(gè)東西,先給一個(gè)直觀的例子來(lái)解釋一下:假設(shè)說(shuō)騰訊公司總共有 20 個(gè)部門,每個(gè)部門平均 1000 個(gè)人;隔壁老王的創(chuàng)業(yè)公司總共有 2 個(gè)部門,每個(gè)部門就一個(gè)人,他跟他老婆。那么現(xiàn)在問(wèn)題來(lái)了,如果現(xiàn)在限制這兩個(gè)公司每天的日常開(kāi)銷不能超過(guò)一萬(wàn)塊,那么很明顯,騰訊的每個(gè)員工平均能支配的就只有 5 毛錢,而老王的公司就美滋滋了,兩個(gè)人一天的開(kāi)銷一萬(wàn)塊,怎么花都行。也就是說(shuō),當(dāng)你的范式(體量)達(dá)到一定程度的時(shí)候,一旦對(duì)你的某個(gè)指標(biāo)的大小做一個(gè)限制,那么形成范式(體量)的每個(gè)元素都會(huì)被迫縮減自己的量值,以此達(dá)到不超標(biāo)。
如果指標(biāo)小的不能再小呢?咳咳,我這就不展開(kāi)說(shuō)了,大家自行腦補(bǔ)吧。
Reference:https://zh.wikipedia.org/zh-hans/范數(shù)
你點(diǎn)的每個(gè)好看,我都認(rèn)真當(dāng)成了喜歡總結(jié)
以上是生活随笔為你收集整理的欧几里得范数_机器学习中的范数究竟是个什么鬼?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: webstorm代码行数统计_【Rust
- 下一篇: unity 实现文本选中_Unity中如