原理就是這么簡單 Softmax 分類

Date: 04/01/2018

一般的神經(jīng)網(wǎng)絡(luò)課程在講述BP算法的時(shí)候都會(huì)用sigmoid 函數(shù)來作為最后一層的激活函數(shù)來實(shí)現(xiàn)二分類,這是因?yàn)槠鋝igmoid求導(dǎo)的便利,非常適合用來講課(吳大大的課也是如此)。

但是對于多分類的問題很多小伙伴表示喜歡直接調(diào)庫。其實(shí)了解softmax反向傳播原理,或者可以自己手推一遍softmax的BP算法,才能彰顯一個(gè)AI從業(yè)人員的內(nèi)功。

此文會(huì)通過一個(gè)案例為大家一步一步講解softmax 反向傳播的多個(gè)知識點(diǎn),只要仔細(xì)看完此文你會(huì)對整個(gè)流程豁然開朗。

現(xiàn)有如下的分類問題,可以通過動(dòng)物的4個(gè)特征來區(qū)分此動(dòng)物到底是什么種類(貓,狗,人 3個(gè)類別)

我們可以建立如下NN模型來解決這個(gè)問題:

image

在開始講解之前,首先定義一下此文的統(tǒng)一符號命名,(很重要)

紅色的是Input 簡寫為

藍(lán)色的是Output 簡寫為 O

紅色和藍(lán)色之間的是權(quán)重矩陣 簡寫為 W

綠色的是Output經(jīng)過Softmax之后的結(jié)果 簡寫為 yhat

1 、正向傳播:

O = X W

yhat = Softmax(O)

@
image

此時(shí)softmax 有三個(gè)神經(jīng)元輸出 m = 3

重要

X (Shape 為(1,4)的向量)

W (Shape為(4,3)的矩陣)

yhat (Shape 為(1,3)的向量)

2、反向傳播

1) 求損失

因?yàn)槭欠诸悊栴},我們采用交叉熵作為 loss function(關(guān)于為什么交叉熵可以作為損失函數(shù)我會(huì)在后期寫一篇文章進(jìn)行介紹,敬請期待), 如下:

image

2) 求梯度

我先給出梯度公式也就是項(xiàng)目中的error-term :

?x?(yhat?y) **

想必各位想知道這個(gè)公式到底怎么推導(dǎo)得到的呢?

接下來我會(huì)講解此文的重點(diǎn)

重要 求權(quán)重的梯度需要運(yùn)用鏈?zhǔn)角髮?dǎo)法則,如下:

image

我們來分別計(jì)算后面的三項(xiàng):

第一項(xiàng):

image

第二項(xiàng):

稍微有點(diǎn)復(fù)雜。

為什么yhat下標(biāo)為i 而O下標(biāo)為j 呢?

這是由于softmax 函數(shù)的分母有多個(gè)輸出,但是針對yhati 需要計(jì)算所有的softmax

由于softmax有多個(gè)輸出,所以需要考慮 i = j 與 i != j 兩種情形。

當(dāng) i != j 時(shí):

image

所以可得結(jié)果為:
image

當(dāng) i = j 時(shí):

將 j 替換為 i如下

image

所以可得 結(jié)果為:
image

第三項(xiàng):

image

第三項(xiàng)非常簡單,我們先來算前兩項(xiàng)

image

到這里別忘了 我們經(jīng)過softmax 的輸出只有一個(gè)類別也就是 yi = 1, 其他的都等于0

所以前兩項(xiàng)的結(jié)果為:
image

最終我們就得到了結(jié)果:

image

但是Error - term 為 ?x?(yhat?y) **

這里為什么有個(gè)負(fù)號?

是因?yàn)槟P蛻?yīng)該朝著負(fù)梯度的方向優(yōu)化,所以加了一個(gè)負(fù)號。

到此softmax 的正向與反向傳播都講清楚了,歡迎支持 《原理就是這么簡單系列》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容