<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          從最優(yōu)化的角度看待Softmax損失函數(shù)

          共 3170字,需瀏覽 7分鐘

           ·

          2022-06-09 21:20

          點(diǎn)擊上方小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時(shí)間送達(dá)

          來(lái)自 | 知乎? ?作者 |?王峰
          鏈接丨h(huán)ttps://zhuanlan.zhihu.com/p/45014864
          僅作學(xué)術(shù)交流,如有侵權(quán),請(qǐng)聯(lián)系刪除

          ? ?導(dǎo)讀


          作者按:最近博士畢業(yè)論文寫(xiě)完了,這段時(shí)間比較閑,準(zhǔn)備把我博士畢業(yè)論文里比較有意思的一些章節(jié)拿出來(lái)寫(xiě)成博客,有空就寫(xiě)點(diǎn),不定期更新。

          Softmax交叉熵?fù)p失函數(shù)應(yīng)該是目前最常用的分類(lèi)損失函數(shù)了,在大部分文章中,Softmax交叉熵?fù)p失函數(shù)都是從概率角度來(lái)解釋的(請(qǐng)讀者自行搜索),本文將嘗試從最優(yōu)化的角度來(lái)推導(dǎo)出Softmax交叉熵?fù)p失函數(shù),希望能夠啟發(fā)出更多的研究思路。

          ???從最優(yōu)化的角度看Softmax損失函數(shù)

          ?

          一般而言,最優(yōu)化的問(wèn)題通常需要構(gòu)造一個(gè)目標(biāo)函數(shù),然后尋找能夠使目標(biāo)函數(shù)取得最大/最小值的方法。目標(biāo)函數(shù)往往難以?xún)?yōu)化,所以有了各種relax、smooth的方法,例如使用L1范數(shù)取代L0范數(shù)、使用sigmoid取代階躍函數(shù)等等。

          那么我們就要思考一個(gè)問(wèn)題:使用神經(jīng)網(wǎng)絡(luò)進(jìn)行多分類(lèi)(假設(shè)為??類(lèi))時(shí)的目標(biāo)函數(shù)是什么?神經(jīng)網(wǎng)絡(luò)的作用是學(xué)習(xí)一個(gè)非線性函數(shù)??,將輸入轉(zhuǎn)換成我們希望的輸出。這里我們不考慮網(wǎng)絡(luò)結(jié)構(gòu),只考慮分類(lèi)器(也就是損失函數(shù))的話,最簡(jiǎn)單的方法莫過(guò)于直接輸出一維的類(lèi)別序號(hào)??。而這個(gè)方法的缺點(diǎn)顯而易見(jiàn):我們事先并不知道這些類(lèi)別之間的關(guān)系,而這樣做默認(rèn)了相近的整數(shù)的類(lèi)是相似的,為什么第2類(lèi)的左右分別是第1類(lèi)和第3類(lèi),也許第2類(lèi)跟第5類(lèi)更為接近呢?

          為了解決這個(gè)問(wèn)題,可以將各個(gè)類(lèi)別的輸出獨(dú)立開(kāi)來(lái),不再只輸出1個(gè)數(shù)而是輸出??個(gè)分?jǐn)?shù)(某些文章中叫作logit[1],但我感覺(jué)這個(gè)詞用得沒(méi)什么道理,參見(jiàn)評(píng)論),每個(gè)類(lèi)別占據(jù)一個(gè)維度,這樣就沒(méi)有誰(shuí)與誰(shuí)更近的問(wèn)題了。那么如果讓一個(gè)樣本的真值標(biāo)簽(ground-truth label)所對(duì)應(yīng)的分?jǐn)?shù)比其他分?jǐn)?shù)更大,就可以通過(guò)比較??個(gè)分?jǐn)?shù)的大小來(lái)判斷樣本的類(lèi)別了。這里沿用我的論文[2]使用的名詞,稱(chēng)真值標(biāo)簽對(duì)應(yīng)的類(lèi)別分?jǐn)?shù)為目標(biāo)分?jǐn)?shù)(target score),其他的叫非目標(biāo)分?jǐn)?shù)(non-target score)。

          這樣我們就得到了一個(gè)優(yōu)化目標(biāo):

          輸出C個(gè)分?jǐn)?shù),使目標(biāo)分?jǐn)?shù)比非目標(biāo)分?jǐn)?shù)更大。

          換成數(shù)學(xué)描述,設(shè)??、?為真值標(biāo)簽的序號(hào),那優(yōu)化目標(biāo)即為:

          ?。

          得到了目標(biāo)函數(shù)之后,就要考慮優(yōu)化問(wèn)題了。我們可以給??一個(gè)負(fù)的梯度,給其他所有?一個(gè)正的梯度,經(jīng)過(guò)梯度下降法,即可使??升高而??下降。為了控制整個(gè)神經(jīng)網(wǎng)絡(luò)的幅度,不可以讓??無(wú)限地上升或下降,所以我們利用max函數(shù),讓在??剛剛超過(guò)??時(shí)就停止上升:

          ?。

          然而這樣做往往會(huì)使模型的泛化性能比較差,我們?cè)谟?xùn)練集上才剛剛讓?超過(guò)?,那測(cè)試集很可能就不會(huì)超過(guò)。借鑒svm里間隔的概念,我們添加一個(gè)參數(shù),讓??比??大過(guò)一定的數(shù)值才停止:

          ?。

          這樣我們就推導(dǎo)出了hinge loss...唔,好像跑題了,我們本來(lái)不是要說(shuō)Softmax的么...不過(guò)既然跑題了就多說(shuō)點(diǎn),為什么hinge loss在SVM時(shí)代大放異彩,但在神經(jīng)網(wǎng)絡(luò)時(shí)代就不好用了呢?主要就是因?yàn)閟vm時(shí)代我們用的是二分類(lèi),通過(guò)使用一些小技巧比如1 vs 1、1 vs n等方式來(lái)做多分類(lèi)問(wèn)題。而如論文[3]這樣直接把hinge loss應(yīng)用在多分類(lèi)上的話,當(dāng)類(lèi)別數(shù)??特別大時(shí),會(huì)有大量的非目標(biāo)分?jǐn)?shù)得到優(yōu)化,這樣每次優(yōu)化時(shí)的梯度幅度不等且非常巨大,極易梯度爆炸。

          其實(shí)要解決這個(gè)梯度爆炸的問(wèn)題也不難,我們把優(yōu)化目標(biāo)換一種說(shuō)法:

          輸出C個(gè)分?jǐn)?shù),使目標(biāo)分?jǐn)?shù)比最大的非目標(biāo)分?jǐn)?shù)更大。

          跟之前相比,多了一個(gè)限制詞“最大的”,但其實(shí)我們的目標(biāo)并沒(méi)有改變,“目標(biāo)分?jǐn)?shù)比最大的非目標(biāo)分?jǐn)?shù)更大”實(shí)際上等價(jià)于“目標(biāo)分?jǐn)?shù)比所有非目標(biāo)分?jǐn)?shù)更大”。這樣我們的損失函數(shù)就變成了:

          ?。

          在優(yōu)化這個(gè)損失函數(shù)時(shí),每次最多只會(huì)有一個(gè)+1的梯度和一個(gè)-1的梯度進(jìn)入網(wǎng)絡(luò),梯度幅度得到了限制。但這樣修改每次優(yōu)化的分?jǐn)?shù)過(guò)少,會(huì)使得網(wǎng)絡(luò)收斂極其緩慢,這時(shí)就又要祭出smooth大法了。那么max函數(shù)的smooth版是什么?有同學(xué)會(huì)脫口而出:softmax!恭喜你答錯(cuò)了...

          這里出現(xiàn)了一個(gè)經(jīng)典的歧義,softmax實(shí)際上并不是max函數(shù)的smooth版,而是one-hot向量(最大值為1,其他為0)的smooth版。其實(shí)從輸出上來(lái)看也很明顯,softmax的輸出是個(gè)向量,而max函數(shù)的輸出是一個(gè)數(shù)值,不可能直接用softmax來(lái)取代max。max函數(shù)真正的smooth版本是LogSumExp函數(shù)。

          使用LogSumExp函數(shù)取代max函數(shù):

          ?,

          LogSumExp函數(shù)的導(dǎo)數(shù)恰好為softmax函數(shù):

          ?。

          經(jīng)過(guò)這一變換,給予非目標(biāo)分?jǐn)?shù)的1的梯度將會(huì)通過(guò)LogSumExp函數(shù)傳播給所有的非目標(biāo)分?jǐn)?shù),各個(gè)非目標(biāo)分?jǐn)?shù)得到的梯度是通過(guò)softmax函數(shù)進(jìn)行分配的,較大的非目標(biāo)分?jǐn)?shù)會(huì)得到更大的梯度使其更快地下降。這些非目標(biāo)分?jǐn)?shù)的梯度總和為1,目標(biāo)分?jǐn)?shù)得到的梯度為-1,總和為0,絕對(duì)值和為2,這樣我們就有效地限制住了梯度的總幅度。

          LogSumExp函數(shù)值是大于等于max函數(shù)值的,而且等于取到的條件也是非常苛刻的(具體情況還是得看我的博士論文,這里公式已經(jīng)很多了,再寫(xiě)就沒(méi)法看了),所以使用LogSumExp函數(shù)相當(dāng)于變相地加了一定的??。但這往往還是不夠的,我們可以選擇跟hinge loss一樣添加一個(gè)??,那樣效果應(yīng)該也會(huì)不錯(cuò),不過(guò)softmax交叉熵?fù)p失走的是另一條路:繼續(xù)smooth。

          注意到ReLU函數(shù)??也有一個(gè)smooth版,即softplus函數(shù)??。使用softplus函數(shù)之后,即使??超過(guò)了LogSumExp函數(shù),仍會(huì)得到一點(diǎn)點(diǎn)梯度讓??繼續(xù)上升,這樣其實(shí)也是變相地又增加了一點(diǎn)??,使得泛化性能有了一定的保障。替換之后就可以得到:

          這個(gè)就是大家所熟知的softmax交叉熵?fù)p失函數(shù)了。在經(jīng)過(guò)兩步smooth化之后,我們將一個(gè)難以收斂的函數(shù)逐步改造成了softmax交叉熵?fù)p失函數(shù),解決了原始的目標(biāo)函數(shù)難以?xún)?yōu)化的問(wèn)題。從這個(gè)推導(dǎo)過(guò)程中我們可以看出smooth化不僅可以讓優(yōu)化更暢通,而且還變相地在類(lèi)間引入了一定的間隔,從而提升了泛化性能。

          至于如何利用這個(gè)推導(dǎo)來(lái)對(duì)損失函數(shù)進(jìn)行修改和一些進(jìn)一步的分析,未完待續(xù)...

          好消息!?

          小白學(xué)視覺(jué)知識(shí)星球

          開(kāi)始面向外開(kāi)放啦??????




          下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
          在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺(jué)、目標(biāo)跟蹤、生物視覺(jué)、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目52講
          小白學(xué)視覺(jué)公眾號(hào)后臺(tái)回復(fù):Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目即可下載包括圖像分割、口罩檢測(cè)、車(chē)道線檢測(cè)、車(chē)輛計(jì)數(shù)、添加眼線、車(chē)牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺(jué)實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺(jué)。

          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺(jué)公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

          交流群


          歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱(chēng)+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~



          瀏覽 32
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  秘 韩国免费网站18禁 | 黄色视频观看免费 | 国产伦精品一区二区三区免费下载 | 五月婷婷丁香花 | 国产精品黄视频 |