softmax函数与交叉熵损失函数
本文主要介紹了當(dāng)前機(jī)器學(xué)習(xí)模型中廣泛應(yīng)用的交叉熵?fù)p失函數(shù)與softmax激勵(lì)函數(shù)。
這個(gè)損失函數(shù)主要應(yīng)用于多分類問題,用于衡量預(yù)測值與實(shí)際值之間的相似程度。
交叉熵?fù)p失函數(shù)定義如下: LCE(y^,y?)=?∑i=1Nclassesyi?log(yi^)L_{CE}(\hat{y}, y^*) = - \sum_{i=1}^{Nclasses} y_i^*log(\hat{y_i})LCE?(y^?,y?)=?i=1∑Nclasses?yi??log(yi?^?)
其中 y^\hat{y}y^? 為預(yù)測向量,y?y^*y?為真實(shí)標(biāo)簽向量。在多分類問題機(jī)器學(xué)習(xí)中,y?y^*y? 一般使用獨(dú)熱編碼。例如,在一個(gè)三分類問題中, y?y^*y?向量的維度就是三維,對應(yīng)屬于某一類則該位為1,其余位為0。第一類對應(yīng)的真實(shí)標(biāo)簽向量即為[1,0,0]T[1, 0, 0]^T[1,0,0]T,第二類對應(yīng)的真實(shí)標(biāo)簽向量為[0,1,0][0,1,0][0,1,0] 等等以此類推。
很顯然,對于這個(gè)損失函數(shù)而言,取到最小值的時(shí)候就是當(dāng)求和部分取得最大值,即預(yù)測向量與標(biāo)簽向量相似度最大時(shí),其乘積也最大。以下圖為例,例如該類真實(shí)標(biāo)簽為Class2,當(dāng)向量y^\hat{y}y^?的第二項(xiàng)趨向于于1,此時(shí)損失函數(shù)取得最小值,我們也保證了預(yù)測值與真實(shí)值之間的誤差最小了。
很顯然,這里我們有兩個(gè)問題,其一是為什么要使用預(yù)測值的log函數(shù)值與真實(shí)的標(biāo)簽相乘而不直接使用兩者原始值相乘。其原因在于,由于我們的概率范圍總是在0-1之間,直接獲取乘積往往會使得不同的損失之間的差別不大,不利于我們進(jìn)一步通過這個(gè)誤差來優(yōu)化我們的模型。
第二個(gè)問題是,如何保證預(yù)測向量滿足概率分布。我們都知道標(biāo)簽向量y?y^*y? 由于使用了獨(dú)熱編碼,因此他永遠(yuǎn)滿足概率分布即∑p(x)=1\sum p(x) = 1∑p(x)=1,但是我們的預(yù)測向量 y^\hat{y}y^? 卻不一定。這里就要用到我們的softmax激勵(lì)函數(shù)了。簡單的來說,softmax函數(shù)就幫助我們將一個(gè)隨機(jī)數(shù)值的向量,轉(zhuǎn)化為了一個(gè)所有值在0-1之間,且和為1的向量,以滿足概率分布關(guān)系。softmax函數(shù)的定義如下: yt,k=e(yt,k)∑ke(yt,k)y_{t,k} = \frac{e^{(y_{t,k})}}{\sum_ke^{(y_{t,k})}}yt,k?=∑k?e(yt,k?)e(yt,k?)?
其中下標(biāo)t對應(yīng)第t個(gè)樣本,k對應(yīng)輸出層的第k個(gè)神經(jīng)元。softmax函數(shù)首先將所有輸出層神經(jīng)元對應(yīng)的值通過指數(shù)函數(shù)轉(zhuǎn)換為正值,再通過歸一化處理,除以他們的指數(shù)函數(shù)值之和,以保證所有項(xiàng)對應(yīng)的值之和為1。
通過softmax函數(shù)構(gòu)建概率分布再通過交叉熵,我們就構(gòu)建了交叉熵?fù)p失函數(shù)。
總結(jié)
以上是生活随笔為你收集整理的softmax函数与交叉熵损失函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交叉验证 cross validatio
- 下一篇: unity如何让物体与特定物体之间不发生