机器学习名词解释
1. 損失函數(shù)
損失函數(shù)是用來估量你模型的預(yù)測值f(x)與真實值Y的不一致程度,它是一個非負(fù)實值函數(shù),通常使用L(Y, f(x))來表示,損失函數(shù)越小,模型的魯棒性就越好。損失函數(shù)是經(jīng)驗風(fēng)險函數(shù)的核心部分,也是結(jié)構(gòu)風(fēng)險函數(shù)重要組成部分。
經(jīng)驗風(fēng)險:一個損失函數(shù)的函數(shù)
結(jié)構(gòu)風(fēng)險:可簡單理解為經(jīng)驗風(fēng)險(一種損失函數(shù)的函數(shù))+λ正則化項。
模型的結(jié)構(gòu)風(fēng)險函數(shù)包括了經(jīng)驗風(fēng)險項和正則項,通常可以表示成如下式子:
其中,前面的均值函數(shù)表示的是經(jīng)驗風(fēng)險函數(shù),L代表的是損失函數(shù),后面的Φ是正則化項或者叫懲罰項,它可以是L1,也可以是L2,或者其他的正則函數(shù)。整個式子表示的意思是找到使目標(biāo)函數(shù)最小時的θ值。常見的損失函數(shù)有:
n?log對數(shù)損失函數(shù)(邏輯回歸)
n?平方損失函數(shù)(最小二乘法)
n?指數(shù)損失函數(shù)(Adaboost)
n?Hinge損失函數(shù)(SVM)
n?0-1損失
n?絕對值損失
正則化項或者叫懲罰項:
??含義就是把整個模型中的所有權(quán)重w的絕對值加起來除以樣本數(shù)量,其中是一個懲罰的權(quán)重,可以稱為正則化系數(shù)或者懲罰系數(shù),表示對懲罰的重視程度。如果很重視結(jié)構(gòu)風(fēng)險,即不希望結(jié)構(gòu)風(fēng)險太大,我們就加大,迫使整個損失函數(shù)向著權(quán)值w減小的方向移動,換句話說,w的值越多、越大,整個因子的值就越大,也就是越不簡潔,剛才這種正則化因子叫做L1正則化項,常用的還有一種叫帶有L2正則化項的損失函數(shù)。
將w做了平方后取加和。
2. 泛化能力
欠擬合和過擬合概念
欠擬合就是擬合效果非常差,比如一個一元二次方程,卻用一元一次方程去擬合,這樣的擬合效果肯定會很差。過擬合則是模型過于復(fù)雜,將訓(xùn)練數(shù)據(jù)擬合的十分到位,這樣就容易擬合上許多噪音數(shù)據(jù),這樣對于訓(xùn)練數(shù)據(jù)他的誤差會很小,但是對于預(yù)測數(shù)據(jù)即一些從來沒有碰到過的數(shù)據(jù),他的預(yù)測效果會特別差。對于未知數(shù)據(jù)的預(yù)測好壞通常叫做泛化能力。
如何判定模型是過擬合還是欠擬合
通常的辦法是將訓(xùn)練數(shù)據(jù)分成2部分,一部分用來訓(xùn)練,讓另一部分作為測試數(shù)據(jù),檢查他的泛化能力,如果泛化能力很差就是欠擬合,如果訓(xùn)練數(shù)據(jù)預(yù)測的很好,但是測試數(shù)據(jù)的精度卻很差就是過擬合,我們可以通過學(xué)習(xí)曲線來將他可視化。
學(xué)習(xí)曲線
學(xué)習(xí)曲線其實就是把訓(xùn)練數(shù)據(jù)集取前i個樣本(i 從1到訓(xùn)練數(shù)據(jù)樣本總數(shù))把模型的訓(xùn)練誤差與預(yù)測誤差都給表示出來,從而看誤差的走勢以及兩者誤差之間的關(guān)系,會發(fā)現(xiàn)最后誤差一般都趨于穩(wěn)定,如果模型較好,兩者之間的差距也比較小。
3. 張量
想要了解張量(Tensor),首先需要對向量(Vector)有一個清晰的了解,向量通常都是這樣一個箭頭……用來表示一個既有幅度(magnitude)又有方向(direction)的物理量,比如重力、磁力或者一個粒子的速度。這個箭頭的長度表示幅度,箭頭的指向表示方向。
此外,向量還可以用來表示一個平面,表示方法就是讓向量代表垂直于這個平面的方向(法線方向)。
這么看來,向量可以表示很多東西:表示力、速度甚至平面,不過仔細(xì)想想向量也只表示了幅度(magnitude)與方向(direction)兩個要素而已。
還有很多物理量用向量是沒法表示的(后面會提到),向量其實是一個更廣泛的表示方法的特例。對的,你猜對了,這個更廣泛的方法就是張量(Tensor)。為了更好的解釋張量是什么,有兩個概念需要先搞清楚: 分量 (Components) 與基向量 (Basis Vectors)。張量是一種表示物理量的方式,這個方式就是用基向量與分量組合表示物理量(Combination of basis vector and component)。
張量是多維數(shù)組,目的是把向量、矩陣推向更高的維度。
4. 數(shù)據(jù)預(yù)處理之獨熱編碼(One-Hot)
One-Hot編碼,又稱為一位有效編碼,主要是采用N位狀態(tài)寄存器來對N個狀態(tài)進(jìn)行編碼,每個狀態(tài)都由他獨立的寄存器位,并且在任意時候只有一位有效。
One-Hot編碼是分類變量作為二進(jìn)制向量的表示。這首先要求將分類值映射到整數(shù)值。然后,每個整數(shù)值被表示為二進(jìn)制向量,除了整數(shù)的索引之外,它都是零值,它被標(biāo)記為1。
為什么使用one-hot編碼來處理離散型特征?
在回歸,分類,聚類等機器學(xué)習(xí)算法中,特征之間距離的計算或相似度的計算是非常重要的,而我們常用的距離或相似度的計算都是在歐式空間的相似度計算,計算余弦相似性,基于的就是歐式空間。
而我們使用one-hot編碼,將離散特征的取值擴(kuò)展到了歐式空間,離散特征的某個取值就對應(yīng)歐式空間的某個點。
將離散型特征使用one-hot編碼,確實會讓特征之間的距離計算更加合理。
比如,有一個離散型特征,代表工作類型,該離散型特征,共有三個取值,不使用one-hot編碼,其表示分別是x_1 = (1), x_2 = (2), x_3 = (3)。兩個工作之間的距離是,(x_1, x_2) = 1, d(x_2, x_3) = 1, d(x_1, x_3) = 2。那么x_1和x_3工作之間就越不相似嗎?顯然這樣的表示,計算出來的特征的距離是不合理。那如果使用one-hot編碼,則得到x_1 = (1, 0, 0), x_2 = (0, 1, 0), x_3 = (0, 0, 1),那么兩個工作之間的距離就都是sqrt(2).即每兩個工作之間的距離是一樣的,顯得更合理。
不需要使用one-hot編碼來處理的情況
將離散型特征進(jìn)行one-hot編碼的作用,是為了讓距離計算更合理,但如果特征是離散的,并且不用one-hot編碼就可以很合理的計算出距離,那么就沒必要進(jìn)行one-hot編碼。
比如,該離散特征共有1000個取值,我們分成兩組,分別是400和600,兩個小組之間的距離有合適的定義,組內(nèi)的距離也有合適的定義,那就沒必要用one-hot 編碼。
離散特征進(jìn)行one-hot編碼后,編碼后的特征,其實每一維度的特征都可以看做是連續(xù)的特征。就可以跟對連續(xù)型特征的歸一化方法一樣,對每一維特征進(jìn)行歸一化。比如歸一化到[-1,1]或歸一化到均值為0,方差為1。
5. 交叉熵
關(guān)于交叉熵在loss函數(shù)中使用的理解
交叉熵(cross entropy)是深度學(xué)習(xí)中常用的一個概念,一般用來求目標(biāo)與預(yù)測值之間的差距。以前做一些分類問題的時候,沒有過多的注意,直接調(diào)用現(xiàn)成的庫,用起來也比較方便。當(dāng)用到了交叉熵,發(fā)現(xiàn)自己對交叉熵的理解有些模糊,不夠深入。遂花了幾天的時間從頭梳理了一下相關(guān)知識點,才算透徹的理解了,特地記錄下來,以便日后查閱。
信息論
交叉熵是信息論中的一個概念,要想了解交叉熵的本質(zhì),需要先從最基本的概念講起。
1 信息量
首先是信息量。假設(shè)我們聽到了兩件事,分別如下:?
事件A:巴西隊進(jìn)入了2018世界杯決賽圈。?
事件B:中國隊進(jìn)入了2018世界杯決賽圈。?
僅憑直覺來說,顯而易見事件B的信息量比事件A的信息量要大。究其原因,是因為事件A發(fā)生的概率很大,事件B發(fā)生的概率很小。所以當(dāng)越不可能的事件發(fā)生了,我們獲取到的信息量就越大。越可能發(fā)生的事件發(fā)生了,我們獲取到的信息量就越小。那么信息量應(yīng)該和事件發(fā)生的概率有關(guān)。
假設(shè)XX是一個離散型隨機變量,其取值集合為χχ,概率分布函數(shù)p(x)=Pr(X=x),x∈χp(x)=Pr(X=x),x∈χ,則定義事件X=x0X=x0的信息量為:
I(x0)=?log(p(x0))
I(x0)=?log(p(x0))
由于是概率所以p(x0)p(x0)的取值范圍是[0,1][0,1],繪制為圖形如下:?
?
可見該函數(shù)符合我們對信息量的直覺
2 熵
考慮另一個問題,對于某個事件,有nn種可能性,每一種可能性都有一個概率p(xi)p(xi)?
這樣就可以計算出某一種可能性的信息量。舉一個例子,假設(shè)你拿出了你的電腦,按下開關(guān),會有三種可能性,下表列出了每一種可能的概率及其對應(yīng)的信息量
序號?? ?事件?? ?概率p?? ?信息量I
A?? ?電腦正常開機?? ?0.7?? ?-log(p(A))=0.36
B?? ?電腦無法開機?? ?0.2?? ?-log(p(B))=1.61
C?? ?電腦爆炸了?? ?0.1?? ?-log(p(C))=2.30
注:文中的對數(shù)均為自然對數(shù)
我們現(xiàn)在有了信息量的定義,而熵用來表示所有信息量的期望,即:?
H(X)=?∑i=1np(xi)log(p(xi))
H(X)=?∑i=1np(xi)log(p(xi))
其中n代表所有的n種可能性,所以上面的問題結(jié)果就是?
H(X)===?[p(A)log(p(A))+p(B)log(p(B))+p(C))log(p(C))]0.7×0.36+0.2×1.61+0.1×2.300.804
H(X)=?[p(A)log(p(A))+p(B)log(p(B))+p(C))log(p(C))]=0.7×0.36+0.2×1.61+0.1×2.30=0.804
然而有一類比較特殊的問題,比如投擲硬幣只有兩種可能,字朝上或花朝上。買彩票只有兩種可能,中獎或不中獎。我們稱之為0-1分布問題(二項分布的特例),對于這類問題,熵的計算方法可以簡化為如下算式:?
H(X)==?∑i=1np(xi)log(p(xi))?p(x)log(p(x))?(1?p(x))log(1?p(x))
H(X)=?∑i=1np(xi)log(p(xi))=?p(x)log(p(x))?(1?p(x))log(1?p(x))
3 相對熵(KL散度)
相對熵又稱KL散度,如果我們對于同一個隨機變量 x 有兩個單獨的概率分布 P(x) 和 Q(x),我們可以使用 KL 散度(Kullback-Leibler (KL) divergence)來衡量這兩個分布的差異
維基百科對相對熵的定義
In the context of machine learning, DKL(P‖Q) is often called the information gain achieved if P is used instead of Q.
即如果用P來描述目標(biāo)問題,而不是用Q來描述目標(biāo)問題,得到的信息增量。
在機器學(xué)習(xí)中,P往往用來表示樣本的真實分布,比如[1,0,0]表示當(dāng)前樣本屬于第一類。Q用來表示模型所預(yù)測的分布,比如[0.7,0.2,0.1]?
直觀的理解就是如果用P來描述樣本,那么就非常完美。而用Q來描述樣本,雖然可以大致描述,但是不是那么的完美,信息量不足,需要額外的一些“信息增量”才能達(dá)到和P一樣完美的描述。如果我們的Q通過反復(fù)訓(xùn)練,也能完美的描述樣本,那么就不再需要額外的“信息增量”,Q等價于P。
KL散度的計算公式:?
DKL(p||q)=∑i=1np(xi)log(p(xi)q(xi))(3.1)
(3.1)DKL(p||q)=∑i=1np(xi)log(p(xi)q(xi))
n為事件的所有可能性。?
DKLDKL的值越小,表示q分布和p分布越接近
4 交叉熵
對式3.1變形可以得到:?
DKL(p||q)==∑i=1np(xi)log(p(xi))?∑i=1np(xi)log(q(xi))?H(p(x))+[?∑i=1np(xi)log(q(xi))]
等式的前一部分恰巧就是p的熵,等式的后一部分,就是交叉熵:?
H(p,q)=?∑i=1np(xi)log(q(xi))
H(p,q)=?∑i=1np(xi)log(q(xi))
在機器學(xué)習(xí)中,我們需要評估label和predicts之間的差距,使用KL散度剛剛好,即DKL(y||y^)DKL(y||y^),由于KL散度中的前一部分?H(y)?H(y)不變,故在優(yōu)化過程中,只需要關(guān)注交叉熵就可以了。所以一般在機器學(xué)習(xí)中直接用用交叉熵做loss,評估模型。
6. tensorflow訓(xùn)練神經(jīng)網(wǎng)絡(luò)的步驟:
(1)定義神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和前向傳播的輸出結(jié)果
(2)定義損失函數(shù),選擇反向傳播優(yōu)化的算法
(3)設(shè)定會話(tf.Session)并且在訓(xùn)練數(shù)據(jù)上反復(fù)迭代運行反向傳播優(yōu)化算法
7. 物體檢測算法常用到的概念
下面我們講解一下在物體檢測算法中常用到的幾個概念:Bbox,IoU,非極大值抑制。
Bounding Box(bbox)
bbox是包含物體的最小矩形,該物體應(yīng)在最小矩形內(nèi)部,如上圖紅色框藍(lán)色框和綠色框。
物體檢測中關(guān)于物體位置的信息輸出是一組(x,y,w,h)數(shù)據(jù),其中x,y代表著bbox的左上角(或者其他固定點,可自定義),對應(yīng)的w,h表示bbox的寬和高.一組(x,y,w,h)可以唯一的確定一個定位框。
Intersection over Union(IoU)
對于兩個區(qū)域R和R′,則兩個區(qū)域的重疊程度overlap計算如下:
O(R,R′)=|R∩R′|/|R∪R′|
在訓(xùn)練網(wǎng)絡(luò)的時候,我們常依據(jù)侯選區(qū)域和標(biāo)定區(qū)域的IoU值來確定正負(fù)樣本
非極大值抑制(Non-Maximum Suppression又稱NMS)
非極大值抑制(NMS)可以看做是局部最大值的搜索問題,NMS是許多計算機視覺算法的部分。如何設(shè)計高效的NMS算法對許多應(yīng)用是十分關(guān)鍵的,例如視頻跟蹤、數(shù)據(jù)挖掘、3D重建、物體識別以及紋理分析等。
這里我們主要針對非極大值抑制在物體檢測上的應(yīng)用,非極大值抑制就是把不是極大值的抑制掉,在物體檢測上,就是對一個目標(biāo)有多個標(biāo)定框,使用極大值抑制算法濾掉多余的標(biāo)定框。
下圖一個小貓有多個紅框標(biāo)定使用非極大值抑制算法后只有一個框。
?
總結(jié)
- 上一篇: 博弈之威佐夫
- 下一篇: 数据结构实验之查找一:二叉排序树