softmax logistic loss详解
softmax函數(shù)–softmax layer
softmax用于多分類過程中,它將多個(gè)神經(jīng)元的輸出,映射到(0,1)區(qū)間內(nèi),可以看成概率來理解,從而來進(jìn)行多分類!
假設(shè)我們有一個(gè)數(shù)組z=(z1,z2,...zm),則其softmax函數(shù)定義如下:
也就是softmax是個(gè)函數(shù)映射,將 z=(z1,z2,...zm)映射到 (σ1,σ2,...σm).
其中, ∑σi=1.
如下圖,可以更清楚地表明。
在logistic回歸中,假設(shè)zi=wTix+bi是第i個(gè)類別的線性預(yù)測結(jié)果,帶入softmax中就可以得到oi=σi(z)可以解釋成觀察得到的數(shù)據(jù)x屬于類別i的概率,或者稱為似然(Likehood)。
logistic regression
Logistic Regression 的目標(biāo)函數(shù)是根據(jù)最大似然原則來建立的,假設(shè)數(shù)據(jù)x所對(duì)應(yīng)的類別為 y,則根據(jù)x我們剛才的計(jì)算最大似然就是要最大化oy的值
通常是使用 negative log-likelihood 而不是likelihood,也就是說最小化?log(oy)的值,這兩者結(jié)果在數(shù)學(xué)上是等價(jià)的。即min?log(oy)<=>max?oy
后面這個(gè)操作就是 caffe 文檔里說的 Multinomial Logistic Loss,具體寫出來是這個(gè)樣子:
從上面可以看出,計(jì)算似然損失,其實(shí)是和label一起的。這也是情理之中的,既然我們知道label是某一個(gè),自然我們我希望對(duì)應(yīng)的預(yù)測概率盡可能大一點(diǎn)。這就歸結(jié)于上面的log損失。
softmax logistic loss
softmax logistic loss就是將softmax與上述的log損失結(jié)合到一起,只要把oy的定義展開即可。
其實(shí)label(這里指y)的作用就是指定了softmax的序號(hào),也就是告訴是哪一些最小化。
反向傳播
反向傳播,要求根據(jù)loss更新weights,需要計(jì)算loss對(duì)于weight的偏導(dǎo)數(shù)。
我們參考了網(wǎng)上的一個(gè)例子,來簡單介紹一下如何計(jì)算偏導(dǎo)。
a4=ez4ez4+ez5+ez6,a5=ez5ez4+ez5+ez6,a6=ez6ez4+ez5+ez6
好了,我們的重頭戲來了,怎么根據(jù)求梯度,然后利用梯度下降方法更新梯度!
要使用梯度下降,肯定需要一個(gè)損失函數(shù),這里我們使用交叉熵作為我們的損失函數(shù),為什么使用交叉熵?fù)p失函數(shù),不是這篇文章重點(diǎn),后面有時(shí)間會(huì)單獨(dú)寫一下為什么要用到交叉熵函數(shù)(這里我們默認(rèn)選取它作為損失函數(shù))
交叉熵函數(shù)形式如下:
其中y代表我們的真實(shí)值,a代表我們softmax求出的值。i代表的是輸出結(jié)點(diǎn)的標(biāo)號(hào)!在上面例子,i就可以取值為4,5,6三個(gè)結(jié)點(diǎn)(當(dāng)然我這里只是為了簡單,真實(shí)應(yīng)用中可能有很多結(jié)點(diǎn))
現(xiàn)在看起來是不是感覺復(fù)雜了,居然還有累和,然后還要求導(dǎo),每一個(gè)a都是softmax之后的形式!
但是實(shí)際上不是這樣的,我們往往在真實(shí)中,如果只預(yù)測一個(gè)結(jié)果,那么在目標(biāo)中只有一個(gè)結(jié)點(diǎn)的值為1,比如我認(rèn)為在該狀態(tài)下,我想要輸出的是第四個(gè)動(dòng)作(第四個(gè)結(jié)點(diǎn)),那么訓(xùn)練數(shù)據(jù)的輸出就是a4 = 1,a5=0,a6=0,哎呀,這太好了,除了一個(gè)為1,其它都是0,那么所謂的求和符合,就是一個(gè)幌子,我可以去掉啦!
交叉熵函數(shù)形式如下:
這就回到了我們的softmax logistic loss,其實(shí)發(fā)現(xiàn)交叉熵?fù)p失與softmax logistic loss在輸出只有一個(gè)類的時(shí)候等價(jià)。
參數(shù)的形式在該例子中,總共分為w41,w42,w43,w51,w52,w53,w61,w62,w63.這些,那么比如我要求出w41,w42,w43的偏導(dǎo),就需要將Loss函數(shù)求偏導(dǎo)傳到結(jié)點(diǎn)4,然后再利用鏈?zhǔn)椒▌t繼續(xù)求導(dǎo)即可,舉個(gè)例子此時(shí)求w41的偏導(dǎo)為:
w51…..w63等參數(shù)的偏導(dǎo)同理可以求出,那么我們的關(guān)鍵就在于Loss函數(shù)對(duì)于結(jié)點(diǎn)4,5,6的偏導(dǎo)怎么求,如下:
這里分為倆種情況:
j=i對(duì)應(yīng)例子里就是如下圖所示:
比如我選定了j為4,那么就是說我現(xiàn)在求導(dǎo)傳到4結(jié)點(diǎn)這!
這里對(duì)應(yīng)我的例子圖如下,我這時(shí)對(duì)的是j不等于i,往前傳:
參考文獻(xiàn)
- Softmax vs. Softmax-Loss: Numerical Stability
- Caffe中Loss Layer原理的簡單梳理
- Softmax 函數(shù)的特點(diǎn)和作用是什么?
總結(jié)
以上是生活随笔為你收集整理的softmax logistic loss详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: adblock android插件,ad
- 下一篇: 链表逆序(JAVA实现)