機器學習中的損失函數(交叉熵損失、Hinge loss)

損失函數

1 交叉熵損失

1.1 從最大似然估計到交叉熵損失

概率論中的MLE

最大似然估計用於估計能得到當前數據(分佈)的最好的參數組合。對於最簡單的x爲一維的概率分佈我們有
θ^MLE=argmaxθ fX(x1,x2,...,xn;θ)=argmaxθi fX(xi;θ) \hat\theta_{MLE}=\underset{\theta}{\mathrm{argmax}}\ f_X(x_1,x_2,...,x_n;\theta)=\underset{\theta}{\mathrm{argmax}}\prod_i\ f_X(x_i;\theta)
**maximum likelihood estimate (MLE)**是要找使得似然函數最大的參數,而似然函數是數據的pdf即概率密度函數的乘積。我們希望找到這樣的參數使得出現我們現在拿到的這一組數據{x1,x2,...,xn}\{x_1,x_2,...,x_n\}的可能性最大,這裏可能性我們用pdf來衡量。

PDF:概率密度函數(probability density function), 連續型隨機變量的概率密度函數是一個描述某個確定的取值點附近的可能性的函數。

機器學習中的MLE

機器學習中的二分類任務,對於有**真實標籤y1,y2,...,yn,yi{0,1}y_1,y_2,...,y_n,y_i\in\{0,1\}**的數據{x1,x2,...,xn}\{x_1,x_2,...,x_n\},我們可以將這些數據看成來自不同伯努利分佈的數據,即yiB(1,pi)y_i\sim B(1,p_i),我們獲得儘量準確的每個數據xix_i來自類別1的努利分佈概率,也即找到所有參數p1,p2,...,pnp_1,p_2,...,p_n,使得在這樣的分佈下,出現y1,y2,...,yn,yi{0,1}y_1,y_2,...,y_n,y_i\in\{0,1\}這種真實數據的情況的可能性最大(可能性最大這裏即是“似然”的思想)。
p^1,p^2,...,p^n=argmaxp1,p2,...,pn fX(y1,y2,...,yn;p1,p2,...,pn)=argmaxp1,p2,...,pni fX(yi;pi)=argmaxp1,p2,...,pni piyi(1pi)1yi \hat p_1,\hat p_2,...,\hat p_n=\underset{p_1,p_2,...,p_n}{\mathrm{argmax}}\ f_X(y_1,y_2,...,y_n;p_1,p_2,...,p_n)\\ =\underset{p_1,p_2,...,p_n}{\mathrm{argmax}}\prod_i\ f_X(y_i;p_i)\\ =\underset{p_1,p_2,...,p_n}{\mathrm{argmax}}\prod_i\ p_i^{y_i}(1-p_i)^{1-y_i}
而每個數據xix_i來自類別1的概率pip_i,則與通過其他方法得到的yiy_i的預測值y^i\hat y_i有關,即對於每個數據xix_i,我們會得到預測值y^i\hat y_i對應爲兩類別的概率,即
P[y^i=1]=piP[y^i=0]=1pi \Bbb P[\hat y_i=1]=p_i\\ \Bbb P[\hat y_i=0]=1-p_i
所以現在問題其實變化成了我們要去找到最好的預測結果{y^i,y^2,...,y^n}\{\hat y_i,\hat y_2,...,\hat y_n\},這也就是機器學習方法的“打標籤”的目標
y^i,y^2,...,y^n=argmaxy^i,y^2,...,y^ni (P[y^i=1])yi(1P[y^i=1])1yi \hat y_i,\hat y_2,...,\hat y_n=\underset{\hat y_i,\hat y_2,...,\hat y_n}{\mathrm{argmax}}\prod_i\ (\Bbb P[\hat y_i=1])^{y_i}(1-\Bbb P[\hat y_i=1])^{1-y_i}
記似然函數爲
L=i (P[y^i=1])yi(1P[y^i=1])1yilogL=i yilog(P[y^i=1])+(1yi)log(1P[y^i=1]) \mathcal L=\prod_i\ (\Bbb P[\hat y_i=1])^{y_i}(1-\Bbb P[\hat y_i=1])^{1-y_i} \\ \Rightarrow \log\mathcal L=\sum_i\ {y_i}\log(\Bbb P[\hat y_i=1])+(1-y_i)\log(1-\Bbb P[\hat y_i=1]) \\
則我們的目標是要最大化logL\log\mathcal L.

在這個基礎上,考慮我們機器學習中的方法常常表述爲“最小化loss損失”,所以我們對似然函數取負號,得到loss的形式
loss=i yilog(P[y^i=1])+(1yi)log(1P[y^i=1]) loss=-\sum_i\ {y_i}\log(\Bbb P[\hat y_i=1])+(1-y_i)\log(1-\Bbb P[\hat y_i=1])
另外常常需要對結果作一個歸一化,所以除以總的樣本數,得到
loss=1nin yilog(P[y^i=1])+(1yi)log(1P[y^i=1])loss=1nin yilog(pi)+(1yi)log(1pi) loss=-\frac{1}{n}\sum_i^n\ {y_i}\log(\Bbb P[\hat y_i=1])+(1-y_i)\log(1-\Bbb P[\hat y_i=1])\\ loss=-\frac{1}{n}\sum_i^n\ {y_i}\log(p_i)+(1-y_i)\log(1-p_i)

可以發現,對於單個樣本ii,如果真實標籤yi=1y_i=1,其 loss=log(P[y^i=1])loss=-\log(\Bbb P[\hat y_i=1])P[y^i=1]\Bbb P[\hat y_i=1]增大而減小;如果真實標籤yi=0y_i=0,其 loss=log(1P[y^i=1])loss=-\log(1-\Bbb P[\hat y_i=1])P[y^i=0]\Bbb P[\hat y_i=0]增大而減小。

有時將pi=P[y^i=1]p_i=\Bbb P[\hat y_i=1]記爲y^i\hat y_i,則變爲
loss=1nin yilog(y^i)+(1yi)log(1y^i) loss=-\frac{1}{n}\sum_i^n\ {y_i}\log(\hat y_i)+(1-y_i)\log(1-\hat y_i)

交叉熵損失

信息熵的定義爲
H(X)=xXp(x)logp(x) H(X)=-\sum_{x\in \mathcal X}p(x)\log p(x)
現在再來看交叉熵的公式,它表示分佈在共同空間X\mathcal X的兩個概率分佈p,qp,q之間的差異
H(p,q)=xXp(x)logq(x) H(p,q) = -\sum_{x\in \mathcal X}p(x)logq(x)
我們想借用交叉熵的概念,來衡量真實數據標籤分佈y1,y2,...,yny_1,y_2,...,y_n和預測的標籤分佈y^i,y^2,...,y^n\hat y_i,\hat y_2,...,\hat y_n之間的差異,並把它稱爲交叉熵損失。注意它們要麼都是連續分佈,要不都是離散分佈,考慮到真實數據標籤是離散分佈,即每個yiy_i要麼等於1的概率爲1,要麼等於0的概率爲1,故預測數據標籤也應該是離散分佈,即每個y^i\hat y_i等於1、等於0的概率都在0到1之間,即這裏共同的空間Y={0,1}\mathcal Y=\{0,1\}

舉例如下表:

真實標籤yiY={0,1}y_i\in\mathcal Y =\{0,1\} y1y_1 y2y_2 y3y_3
P[yi=1]\Bbb P[y_i=1] 1 1 0
P[yi=0]\Bbb P[y_i=0] 0 0 1
預測標籤y^iY={0,1}\hat y_i\in\mathcal Y =\{0,1\} y1y_1 y2y_2 y3y_3
P[y^i=1]\Bbb P[\hat y_i=1] 0.7 0.9 0.2
P[y^i=0]\Bbb P[\hat y_i=0] 0.3 0.1 0.8

則在這個空間下每個樣本的兩個分佈p(yi),q(y^i)p(y_i),q(\hat y_i)的交叉熵爲
H(p(yi),q(y^i))=yi,y^iYp(yi)log(q(y^i))=yi,y^i{0,1}p(yi)log(q(y^i))=P[yi=1]log(P[y^i=1])P[yi=0]log(P[y^i=0])={log(P[y^i=1])=logpi,if yi=1 log(P[y^i=0])=log(1pi),if yi=0  H\Big(p(y_i),q(\hat y_i)\Big)= -\sum_{y_i,\hat y_i\in \mathcal Y}p(y_i)log(q(\hat y_i)) =-\sum_{y_i,\hat y_i\in \{0,1\}}p(y_i)log(q(\hat y_i))\\ =-\Bbb P[y_i=1]\log(\Bbb P[\hat y_i=1]) -\Bbb P[y_i=0]\log(\Bbb P[\hat y_i=0]) \\ =\begin{cases} -\log(\Bbb P[\hat y_i=1])=-\log p_i, & \text {if $y_i=1$ } \\ -\log(\Bbb P[\hat y_i=0])=-\log (1-p_i), & \text{if $y_i=0$ } \end{cases}

則整體樣本的交叉熵爲
H=inyilogpi+(1yi)log(1pi) H=-\sum_i^n y_i\log p_i +(1-y_i)\log (1-p_i)\\
加上除以樣本數
loss=1nin yilog(pi)+(1yi)log(1pi) loss=-\frac{1}{n}\sum_i^n\ {y_i}\log(p_i)+(1-y_i)\log(1-p_i)
至此,我們發現二分類問題從MLE推出的損失函數,和交叉熵是一樣的,這種損失函數我們稱之爲交叉熵損失函數

1.2 多分類的交叉熵損失函數

舉例如下表:

真實標籤yiY={1,2,3}y_i\in\mathcal Y =\{1,2,3\} y1y_1 y2y_2 y3y_3
P[yi=1]\Bbb P[y_i=1] 1 0 0
P[yi=2]\Bbb P[y_i=2] 0 0 1
P[yi=3]\Bbb P[y_i=3] 0 1 0
預測標籤y^iY={1,2,3}\hat y_i\in\mathcal Y =\{1,2,3\} y1y_1 y2y_2 y3y_3
P[y^i=1]\Bbb P[\hat y_i=1] 0.7 0 0.1
P[y^i=2]\Bbb P[\hat y_i=2] 0.1 0.1 0.8
P[y^i=3]\Bbb P[\hat y_i=3] 0.2 0.9 0.1
  • 從交叉熵來看,若共CC個類別

H(p(yi),q(y^i))=yi,y^i{1,2,...,C}p(yi)log(q(y^i))=P[yi=1]log(P[y^i=1])P[yi=2]log(P[y^i=2])P[yi=C]log(P[y^i=C]) H\Big(p(y_i),q(\hat y_i)\Big) =-\sum_{y_i,\hat y_i\in \{1,2,...,C\}}p(y_i)log(q(\hat y_i))\\ =-\Bbb P[y_i=1]\log(\Bbb P[\hat y_i=1])-\Bbb P[y_i=2]\log(\Bbb P[\hat y_i=2])-\cdots-\Bbb P[y_i=C]\log(\Bbb P[\hat y_i=C])
故可以推導出交叉熵損失爲
loss=1niH(p(yi),q(y^i))=1nink=1C1(yi=k)logP[y^i=k] \Rightarrow loss=-\frac{1}{n}\sum_i H\Big(p(y_i),q(\hat y_i)\Big) \\ =-\frac{1}{n}\sum_i^n \sum_{k=1}^C {1}(y_i=k)\log\Bbb P[\hat y_i=k]

  • 從MLE看同樣可以得到類似的結果

現在是多分類不再是伯努利分佈,而是多項式分佈(Multinomial distribution,投骰子問題) yiP(pi1,pi2,...,piC)y_i\sim P(p_i^1,p_i^2,...,p_i^C),這裏yiy_i表示one-hot的一種情況[yi1,yi2,...,yiC]=[0,0,...,1,...,0][y_i^1,y_i^2,...,y_i^C]=[0,0,...,1,...,0],即yik=1y_i^k=1時表示爲第kk類,預測值爲[y^i1,y^i2,...,y^iC]=[0.1,0.2,...,0.7,...,0][\hat y_i^1,\hat y_i^2,...,\hat y_i^C]=[0.1,0.2,...,0.7,...,0]。其實二分類也可以表示成這種形式,[yi1,yi2]=[0,1],[y^i1,y^i2]=[0.1,0.9][y_i^1,y_i^2]=[0,1],[\hat y_i^1,\hat y_i^2]=[0.1,0.9]

對二分類的稍作變換
argmaxipiyi(1pi)1yi=argmaxipi1{yi=1}(1pi)1{yi=0} {\mathrm{argmax}}\prod_i p_i^{y_i}(1-p_i)^{1-y_i}={\mathrm{argmax}}\prod_i p_i^{1\{y_i=1\}}(1-p_i)^{1\{y_i=0\}}\\
得到多分類
argmaxi(pi1)1{yi=1}(pi2)1{yi=2}(piC)1{yi=C}=argmaxinkC(pik)1{yi=k}logL=loginkC(pik)1{yi=k}=inlogkC(pik)1{yi=k}=inkC1{yi=k}log(pik) \Rightarrow \\ {\mathrm{argmax}}\prod_i (p_i^1)^{1\{y_i=1\}}(p_i^2)^{1\{y_i=2\}}\cdots(p_i^C)^{1\{y_i=C\}}={\mathrm{argmax}}\prod_i^n \prod_k^C (p_i^k)^{1\{y_i=k\}}\\ \Rightarrow \\ \log \mathcal L=\log \prod_i^n \prod_k^C (p_i^k)^{1\{y_i=k\}}=\sum_i^n\log\prod_k^C (p_i^k)^{1\{y_i=k\}}=\sum_i^n\sum_k^C {1\{y_i=k\}}\log(p_i^k)\\
故可以推導出損失爲和前面交叉熵導出的相同
loss=1ninkC1{yi=k}log(pik)=1ninkC1{yi=k}logP[y^i=k] loss=-\frac{1}{n}\sum_i^n\sum_k^C {1\{y_i=k\}}\log(p_i^k)=-\frac{1}{n}\sum_i^n\sum_k^C {1\{y_i=k\}}\log\Bbb P[\hat y_i=k]

1.3 比較

二分類 多分類
MLE形式argmax argmaxp1,p2,...,pni piyi(1pi)1yi\underset{p_1,p_2,...,p_n}{\mathrm{argmax}}\prod_i\ p_i^{y_i}(1-p_i)^{1-y_i} argmaxi(pi1)1{yi=1}(pi2)1{yi=2}(piC)1{yi=C}{\mathrm{argmax}}\prod_i (p_i^1)^{1\{y_i=1\}}(p_i^2)^{1\{y_i=2\}}\cdots(p_i^C)^{1\{y_i=C\}}
單個樣本交叉熵表達式 H(p(yi),q(y^i)=yi,y^i{0,1}p(yi)log(q(y^i))H(p(y_i),q(\hat y_i)=-\sum_{y_i,\hat y_i\in \{0,1\}}p(y_i)log(q(\hat y_i)) H(p(yi),q(y^i))=yi,y^i{1,2,...,C}p(yi)log(q(y^i))H(p(y_i),q(\hat y_i))=-\sum_{y_i,\hat y_i\in \{1,2,...,C\}}p(y_i)log(q(\hat y_i))
交叉熵損失 1nin yilog(P[y^i=1])+(1yi)log(P[y^i=0])-\frac{1}{n}\sum\limits_i^n\ {y_i}\log(\Bbb P[\hat y_i=1])+(1-y_i)\log(\Bbb P[\hat y_i=0]) 1ninkC1{yi=k}logP[y^i=k]-\frac{1}{n}\sum\limits_i^n\sum\limits_k^C {1\{y_i=k\}}\log\Bbb P[\hat y_i=k]

2. Hinge loss 鉸鏈損失

Ref:
https://blog.csdn.net/hustqb/article/details/78347713
wiki

在機器學習中,hinge loss作爲一個損失函數(loss function),通常被用於最大間隔算法(maximum-margin),而最大間隔算法又是SVM(支持向量機support vector machines)用到的重要算法(注意:SVM的學習算法有兩種解釋:1. 間隔最大化與拉格朗日對偶;2. Hinge Loss)。

Hinge loss專用於二分類問題,標籤值y=±1y = ±1,預測值y^=wx+bR\hat y=wx+b\in \Bbb R.

對任意一個樣本,hinge loss定義爲
L(xi,yi)=max{0,1yiy^i}=max{0,1yi(wxi+b)} \mathcal L(\mathbf x_i,y_i)=\max\{0,1-y_i\cdot \hat y_i\}=\max\{0,1-y_i(\mathbf w \mathbf x_i+b)\}
注意這裏的y^i=wxi+b\hat y_i=\mathbf w \mathbf x_i+b是沒有經過sign等激活函數的,是直接在數據平面上經過變換後的值。可以取任意值。

y^i=wxi+b>0\hat y_i=\mathbf w \mathbf x_i+b>0表示一類,y^i=wxi+b<0\hat y_i=\mathbf w \mathbf x_i+b<0表示另一類。

yiy^i>1y_i\cdot \hat y_i>1時,L(xi,yi)=0\mathcal L(\mathbf x_i,y_i)=0;

yiy^i<1y_i\cdot \hat y_i<1時,L(xi,yi)=1yiy^i=1yi(wxi+b)\mathcal L(\mathbf x_i,y_i)=1-y_i\cdot \hat y_i=1-y_i\cdot (\mathbf w \mathbf x_i+b).

對比感知機的loss爲:

yi(wxi+b)>0y_i(\mathbf w \mathbf x_i+b)>0時,L(xi,yi)=0\mathcal L(\mathbf x_i,y_i)=0;

yi(wxi+b)<0y_i(\mathbf w \mathbf x_i+b)<0時,L(xi,yi)=yi(wxi+b)\mathcal L(\mathbf x_i,y_i)=-y_i\cdot (\mathbf w \mathbf x_i+b).

如下圖:

在這裏插入圖片描述
hinge loss相對於感知機的loss向右平移了一個單位,相當於不再單單要求分類正確,還對每個點離分類平面的距離有一定的要求。這其實就是SVM中,從最優化求幾何間隔最大的分離超平面,到最優化函數間隔最大的分離超平面,再到約定的函數間隔的值對優化求解超平面沒有影響,優化問題是等價的,故而直接取了函數間隔爲1,得到約束條件
yi(wxi+b)1yi(wxi+b)10 y_i(\mathbf w \mathbf x_i+b)\geq 1\\ \Rightarrow \\ y_i(\mathbf w \mathbf x_i+b)- 1\geq 0
即滿足以上遠離超平面一定距離的條件,才認爲分類是正確的。這就得到了我們的hinge loss中,滿足條件的時候,分類損失爲0。可以看到,它比感知機的要求更進一步、更嚴格。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章