sigmoid函数求导_交叉熵损失函数的求导(Logistic回归)
目錄
前言
最近有遇到些同學(xué)找我討論sigmoid訓(xùn)練多標(biāo)簽或者用在目標(biāo)檢測(cè)中的問(wèn)題,我想寫一些他們的東西,想到以前的博客里躺著這篇文章(2015年讀研時(shí)機(jī)器學(xué)課的作業(yè))感覺(jué)雖然不夠嚴(yán)謹(jǐn),但是很多地方還算直觀,就先把它放過(guò)來(lái)吧。
說(shuō)明: 本文只討論Logistic回歸的交叉熵,對(duì)Softmax回歸的交叉熵類似(Logistic回歸和Softmax回歸兩者本質(zhì)是一樣的,后面我會(huì)專門有一篇文章說(shuō)明兩者關(guān)系,先在這里挖個(gè)坑)。 首先,我們二話不說(shuō),先放出邏輯回歸交叉熵的公式:
以及
對(duì)參數(shù) 的偏導(dǎo)數(shù)(用于諸如梯度下降法等優(yōu)化算法的參數(shù)更新),如下:但是在大多論文或數(shù)教程中,也就是直接給出了上面兩個(gè)公式,而未給出推導(dǎo)過(guò)程,這就給初學(xué)者造成了一定的困惑。交叉熵的公式可以用多種解釋得到,甚至不同領(lǐng)域也會(huì)有不同,比如數(shù)學(xué)系的用極大似然估計(jì),信息工程系的的從信息編碼角度,當(dāng)然更多是聯(lián)合KL散度來(lái)解釋。但是我這里假設(shè)那些你都不了解的情況下如何用一個(gè)更加直白和直觀的解釋來(lái)得到Logistic Regression的交叉熵?fù)p失函數(shù),說(shuō)清楚它存在的合理性就可以解惑(關(guān)于交叉熵的所謂"正統(tǒng)"解釋后續(xù)我會(huì)專門寫一篇文章來(lái)總結(jié),先挖個(gè)坑)。因水平有限,如有錯(cuò)誤,歡迎指正。
廢話不說(shuō),下文將介紹一步步得到Logistic Regression的交叉熵?fù)p失函數(shù),并推導(dǎo)出其導(dǎo)數(shù),同時(shí)給出簡(jiǎn)潔的向量形式及其導(dǎo)數(shù)推導(dǎo)過(guò)程。
交叉熵?fù)p失函數(shù)(Logistic Regression代價(jià)函數(shù))
我們一共有
組已知樣本( ), 表示第 組數(shù)據(jù)及其對(duì)應(yīng)的類別標(biāo)記。其中 為 維向量(考慮偏置項(xiàng)), 則為表示類別的一個(gè)數(shù):- logistic回歸(是非問(wèn)題)中, 取0或者1;
- softmax回歸 (多分類問(wèn)題)中, 取1,2...k中的一個(gè)表示類別標(biāo)號(hào)的一個(gè)數(shù)(假設(shè)共有k類)。
這里,只討論logistic回歸,輸入樣本數(shù)據(jù)
,模型的參數(shù)為 ,因此有二元問(wèn)題中常用sigmoid作為假設(shè)函數(shù)(hypothesis function),定義為:
因?yàn)長(zhǎng)ogistic回歸問(wèn)題就是0/1的二分類問(wèn)題,可以有
現(xiàn)在,我們不考慮“熵”的概念,根據(jù)下面的說(shuō)明,從簡(jiǎn)單直觀角度理解,就可以得到我們想要的損失函數(shù):我們將概率取對(duì)數(shù),其單調(diào)性不變,有
那么對(duì)于第
組樣本,假設(shè)函數(shù)表征正確的組合對(duì)數(shù)概率為:其中,
和 為示性函數(shù)(indicative function),簡(jiǎn)單理解為{ }內(nèi)條件成立時(shí),取1,否則取0,這里不贅言。 那么對(duì)于一共 組樣本,我們就可以得到模型對(duì)于整體訓(xùn)練樣本的表現(xiàn)能力:由以上表征正確的概率含義可知,我們希望其值越大,模型對(duì)數(shù)據(jù)的表達(dá)能力越好。而我們?cè)趨?shù)更新或衡量模型優(yōu)劣時(shí)是需要一個(gè)能充分反映模型表現(xiàn)誤差的損失函數(shù)(Loss function)或者代價(jià)函數(shù)(Cost function)的,而且我們希望損失函數(shù)越小越好。由這兩個(gè)矛盾,那么我們不妨領(lǐng)代價(jià)函數(shù)為上述組合對(duì)數(shù)概率的相反數(shù):
上式即為大名鼎鼎的交叉熵?fù)p失函數(shù)。(說(shuō)明:如果熟悉“信息熵"的概念
,那么可以有助理解叉熵?fù)p失函數(shù))交叉熵?fù)p失函數(shù)的求導(dǎo)
這步需要用到一些簡(jiǎn)單的對(duì)數(shù)運(yùn)算公式,這里先以編號(hào)形式給出,下面推導(dǎo)過(guò)程中使用特意說(shuō)明時(shí)都會(huì)在該步驟下腳標(biāo)標(biāo)出相應(yīng)的公式編號(hào),以保證推導(dǎo)的連貫性。
①
②
③
(為了方便這里 指 ,即 ,其他底數(shù)如2,10等,由換底公式可知,只是前置常數(shù)系數(shù)不同,對(duì)結(jié)論毫無(wú)影響)另外,值得一提的是在這里涉及的求導(dǎo)均為矩陣、向量的導(dǎo)數(shù)(矩陣微商),這里有一篇教程總結(jié)得精簡(jiǎn)又全面,非常棒,推薦給需要的同學(xué)。
下面開(kāi)始推導(dǎo):
交叉熵?fù)p失函數(shù)為:
其中,
由此,得到
這次再計(jì)算
對(duì)第 個(gè)參數(shù)分量 求偏導(dǎo):這就是交叉熵對(duì)參數(shù)的導(dǎo)數(shù):
向量形式
前面都是元素表示的形式,只是寫法不同,過(guò)程基本都是一樣的,不過(guò)寫成向量形式會(huì)更清晰,這樣就會(huì)把
和求和符號(hào) 省略掉了。我們不妨忽略前面的固定系數(shù)項(xiàng) ,交叉墑的損失函數(shù)(1)則可以寫成下式:將
帶入,得到:再對(duì)
求導(dǎo),前面的負(fù)號(hào)直接削掉了,轉(zhuǎn)載請(qǐng)注明出處Jason Zhao的知乎專欄“人工+智能“,文章鏈接:
Jason Zhao:交叉熵?fù)p失函數(shù)的求導(dǎo)(Logistic回歸)
總結(jié)
以上是生活随笔為你收集整理的sigmoid函数求导_交叉熵损失函数的求导(Logistic回归)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python爬虫利器p_Python爬虫
- 下一篇: python ssd目标检测_解读目标检