色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Softmax如何把CNN的輸出轉(zhuǎn)變成概率?交叉熵如何為優(yōu)化過(guò)程提供度量?

8g3K_AI_Thinker ? 來(lái)源:未知 ? 作者:易水寒 ? 2018-07-29 11:21 ? 次閱讀

如果你稍微了解一點(diǎn)深度學(xué)習(xí)的知識(shí)或者看過(guò)深度學(xué)習(xí)的在線課程,你就一定知道最基礎(chǔ)的多分類問(wèn)題。當(dāng)中,老師一定會(huì)告訴你在全連接層后面應(yīng)該加上 Softmax 函數(shù),如果正常情況下(不正常情況指的是類別超級(jí)多的時(shí)候)用交叉熵函數(shù)作為損失函數(shù),你就一定可以得到一個(gè)讓你基本滿意的結(jié)果。而且,現(xiàn)在很多開(kāi)源的深度學(xué)習(xí)框架,直接就把各種損失函數(shù)寫(xiě)好了(甚至在 Pytorch中 CrossEntropyLoss 已經(jīng)把 Softmax函數(shù)集合進(jìn)去了),你根本不用操心怎么去實(shí)現(xiàn)他們,但是你真的理解為什么要這么做嗎?這篇小文就將告訴你:Softmax 是如何把 CNN 的輸出轉(zhuǎn)變成概率,以及交叉熵是如何為優(yōu)化過(guò)程提供度量。為了讓讀者能夠深入理解,我們將會(huì)用 Python 一一實(shí)現(xiàn)他們。

▌Softmax函數(shù)

Softmax 函數(shù)接收一個(gè) 這N維向量作為輸入,然后把每一維的值轉(zhuǎn)換成(0,1)之間的一個(gè)實(shí)數(shù),它的公式如下面所示:

正如它的名字一樣,Softmax 函數(shù)是一個(gè)“軟”的最大值函數(shù),它不是直接取輸出的最大值那一類作為分類結(jié)果,同時(shí)也會(huì)考慮到其它相對(duì)來(lái)說(shuō)較小的一類的輸出。

說(shuō)白了,Softmax 可以將全連接層的輸出映射成一個(gè)概率的分布,我們訓(xùn)練的目標(biāo)就是讓屬于第k類的樣本經(jīng)過(guò) Softmax 以后,第 k 類的概率越大越好。這就使得分類問(wèn)題能更好的用統(tǒng)計(jì)學(xué)方法去解釋了。

使用 Python,我們可以這么去實(shí)現(xiàn) Softmax 函數(shù):

我們需要注意的是,在 numpy 中浮點(diǎn)類型是有數(shù)值上的限制的,對(duì)于float64,它的上限是。對(duì)于指數(shù)函數(shù)來(lái)說(shuō),這個(gè)限制很容易就會(huì)被打破,如果這種情況發(fā)生了 python 便會(huì)返回?nan。

為了讓 Softmax 函數(shù)在數(shù)值計(jì)算層面更加穩(wěn)定,避免它的輸出出現(xiàn)nan這種情況,一個(gè)很簡(jiǎn)單的方法就是對(duì)輸入向量做一步歸一化操作,僅僅需要在分子和分母上同乘一個(gè)常數(shù)C,如下面的式子所示

理論上來(lái)說(shuō),我們可以選擇任意一個(gè)值作為,但是一般我們會(huì)選擇

通過(guò)這種方法就使得原本非常大的指數(shù)結(jié)果變成0,避免出現(xiàn)?nan的情況。

同樣使用 Python,改進(jìn)以后的 Softmax 函數(shù)可以這樣寫(xiě):

▌Softmax 函數(shù)的導(dǎo)數(shù)推倒過(guò)程

通過(guò)上文我們了解到,Softmax 函數(shù)可以將樣本的輸出轉(zhuǎn)變成概率密度函數(shù),由于這一很好的特性,我們就可以把它加裝在神經(jīng)網(wǎng)絡(luò)的最后一層,隨著迭代過(guò)程的不斷深入,它最理想的輸出就是樣本類別的 One-hot 表示形式。進(jìn)一步我們來(lái)了解一下如何去計(jì)算 Softmax 函數(shù)的梯度(雖然有了深度學(xué)習(xí)框架這些都不需要你去一步步推導(dǎo),但為了將來(lái)能設(shè)計(jì)出新的層,理解反向傳播的原理還是很重要的),對(duì) Softmax 的參數(shù)求導(dǎo):

根據(jù)商的求導(dǎo)法則,對(duì)于其導(dǎo)數(shù)為?

。在中,一直都是?但是在?中,當(dāng)且僅當(dāng)?的時(shí)候,才為。具體的過(guò)程,我們看一下下面的步驟:

如果

如果

所以 Softmax 函數(shù)的導(dǎo)數(shù)如下面所示:

▌交叉熵?fù)p失函數(shù)

下面我們來(lái)看一下對(duì)模型優(yōu)化真正起到作用的損失函數(shù)——交叉熵?fù)p失函數(shù)。交叉熵函數(shù)體現(xiàn)了模型輸出的概率分布和真實(shí)樣本的概率分布的相似程度。它的定義式就是這樣:

在分類問(wèn)題中,交叉熵函數(shù)已經(jīng)大范圍的代替了均方誤差函數(shù)。也就是說(shuō),在輸出為概率分布的情況下,就可以使用交叉熵函數(shù)作為理想與現(xiàn)實(shí)的度量。這也就是為什么它可以作為有 Softmax 函數(shù)激活的神經(jīng)網(wǎng)絡(luò)的損失函數(shù)。

我們來(lái)看一下,在 Python 中是如何實(shí)現(xiàn)交叉熵函數(shù)的:

▌交叉熵?fù)p失函數(shù)的求導(dǎo)過(guò)程

就像我們之前所說(shuō)的,Softmax 函數(shù)和交叉熵?fù)p失函數(shù)是一對(duì)好兄弟,我們用上之前推導(dǎo) Softmax 函數(shù)導(dǎo)數(shù)的結(jié)論,配合求導(dǎo)交叉熵函數(shù)的導(dǎo)數(shù):

加上 Softmax 函數(shù)的導(dǎo)數(shù):

y 代表標(biāo)簽的 One-hot 編碼,因此因此我們就可以得到:

可以看到,這個(gè)結(jié)果真的太簡(jiǎn)單了,不得不佩服發(fā)明它的大神們!最后,我們把它轉(zhuǎn)換成代碼:

▌小結(jié)

需要注意的是,正如我之前提到過(guò)的,在許多開(kāi)源的深度學(xué)習(xí)框架中,Softmax 函數(shù)被集成到所謂的 CrossEntropyLoss 函數(shù)中。比如 Pytorch 的說(shuō)明文檔,就明確地告訴讀者 CrossEntropyLoss 這個(gè)損失函數(shù)是 Log-Softmax 函數(shù)和負(fù)對(duì)數(shù)似然函數(shù)(NLLoss)的組合,也就是說(shuō)當(dāng)你使用它的時(shí)候,沒(méi)有必要再在全連接層后面加入 Softmax 函數(shù)。還有許多文章中會(huì)提到 SoftmaxLoss,其實(shí)它就是 Softmax 函數(shù)和交叉熵函數(shù)的組合,跟我們說(shuō)的 CrossEntropyLoss 函數(shù)是一個(gè)意思,這點(diǎn)需要讀者自行分辨即可。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4792

    瀏覽量

    84628
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5500

    瀏覽量

    121113
  • cnn
    cnn
    +關(guān)注

    關(guān)注

    3

    文章

    352

    瀏覽量

    22203

原文標(biāo)題:Softmax和交叉熵的深度解析和Python實(shí)現(xiàn)

文章出處:【微信號(hào):AI_Thinker,微信公眾號(hào):人工智能頭條】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如果將正脈沖方波轉(zhuǎn)變成正負(fù)脈沖?

    請(qǐng)教,如果將正脈沖方波轉(zhuǎn)變成正負(fù)脈沖?非常感謝!
    發(fā)表于 07-14 16:15

    在Quartus II中能否電路圖輸入轉(zhuǎn)變成Verilog語(yǔ)句

    各位大俠請(qǐng)教一下:在Quartus II中能否電路圖輸入轉(zhuǎn)變成Verilog語(yǔ)句?
    發(fā)表于 11-27 08:45

    代碼:利用STM32將一串ASCII碼轉(zhuǎn)變成周期固定占空比不同PWM波

    本帖最后由 1563661808 于 2014-4-8 13:46 編輯 能不能利用STM32將一串ASCII碼轉(zhuǎn)變成周期固定,占空比不一樣的PWM波?跪求代碼{:4:}
    發(fā)表于 03-17 17:14

    TF之CNNCNN實(shí)現(xiàn)mnist數(shù)據(jù)集預(yù)測(cè)

    TF之CNNCNN實(shí)現(xiàn)mnist數(shù)據(jù)集預(yù)測(cè) 96%采用placeholder用法+2層C及其max_pool法+隱藏層dropout法+輸出softmax法+目標(biāo)函數(shù)cross_e
    發(fā)表于 12-19 17:02

    什么是交叉?

    2018-04-22 開(kāi)胃學(xué)習(xí)數(shù)學(xué)系列 - 交叉
    發(fā)表于 03-21 11:08

    交叉的作用原理

    交叉作為損失函數(shù)在神經(jīng)網(wǎng)絡(luò)中的作用和幾種常用的交叉損失函數(shù)
    發(fā)表于 06-03 09:10

    如何將開(kāi)關(guān)的開(kāi)/斷狀態(tài)轉(zhuǎn)變成Arduino能夠讀取的高/低電平

    如何將開(kāi)關(guān)的開(kāi)/斷狀態(tài)轉(zhuǎn)變成Arduino能夠讀取的高/低電平。解決的辦法是通過(guò)上 /下拉電阻,按照電路的不同通常又可以分為正邏輯(Positive Logic)和負(fù)邏輯(Inverted Logic)兩種...
    發(fā)表于 01-17 08:35

    介紹一種解決overconfidence簡(jiǎn)潔但有效的方法

    Logit歸一化(LogitNorm)來(lái)緩解——交叉損失的一個(gè)簡(jiǎn)單修復(fù)——通過(guò)在訓(xùn)練中對(duì)Logit執(zhí)行恒定向量范數(shù)。我們的方法的動(dòng)機(jī)是分析logit的規(guī)范在訓(xùn)練過(guò)程中不斷增加,導(dǎo)致過(guò)度自信的
    發(fā)表于 08-24 15:11

    模擬輸入信號(hào)轉(zhuǎn)變成數(shù)字比特流的過(guò)程

    輸入信號(hào)轉(zhuǎn)變成數(shù)字比特流的過(guò)程。當(dāng)客戶在Σ-Δ調(diào)制器中繪制量化噪聲的頻譜時(shí),將看到頻率越高時(shí)量化噪聲越密集。這是Σ-Δ ADC為眾人所知的臭名昭著的噪聲整形。為了降低量化噪聲,客戶將調(diào)制器輸出饋至低通濾波器。…
    發(fā)表于 11-16 07:43

    光纖傳輸是電信號(hào)轉(zhuǎn)變成光信號(hào)傳輸?shù)膯幔?/a>

    光纖傳輸是電信號(hào)轉(zhuǎn)變成光信號(hào)傳輸?shù)膯幔?
    發(fā)表于 05-16 17:32

    自己寫(xiě)的c代碼怎么轉(zhuǎn)變成sigmastudio識(shí)別的圖像語(yǔ)言?

    我自己寫(xiě)的c代碼怎么轉(zhuǎn)變成sigmastudio識(shí)別的圖像語(yǔ)言
    發(fā)表于 11-30 08:01

    基于直覺(jué)模糊的證據(jù)沖突度量方法

    針對(duì)證據(jù)理論中證據(jù)沖突度量這一關(guān)鍵問(wèn)題,提出了一種基于模糊的沖突度量方法,首先引入直覺(jué)模糊表示證據(jù)間的差異性,然后對(duì)傳統(tǒng)的沖突系數(shù)進(jìn)行了修正,使其能夠反映由于
    發(fā)表于 11-14 15:30 ?0次下載

    基于鄰域信息度量數(shù)值屬性快速約簡(jiǎn)算法

    闡述鄰域粗糙集和鄰域信息的基本定義及性質(zhì),為避免數(shù)值屬性信息系統(tǒng)屬性約簡(jiǎn)過(guò)程中,屬性離散化造成特征信息的丟失,提出一種新的基于鄰域信息度量數(shù)值屬性約簡(jiǎn)算法。擴(kuò)展鄰域信息系統(tǒng)核屬性集
    發(fā)表于 12-05 17:19 ?0次下載

    lm317能把不穩(wěn)定的輸出電壓轉(zhuǎn)變成穩(wěn)定的電壓?jiǎn)幔?/a>

    lm317能把不穩(wěn)定的輸出電壓轉(zhuǎn)變成穩(wěn)定的電壓?jiǎn)幔?是的,LM317能夠?qū)⒉环€(wěn)定的輸出電壓轉(zhuǎn)變成穩(wěn)定的電壓。LM317是一種可變正電壓調(diào)節(jié)器,可以根據(jù)需要
    的頭像 發(fā)表于 10-26 15:57 ?756次閱讀

    RNN的損失函數(shù)與優(yōu)化算法解析

    函數(shù)有以下幾種: 交叉損失函數(shù) :交叉(Cross Entropy)是一種評(píng)估兩個(gè)概率分布之間差異的
    的頭像 發(fā)表于 11-15 10:16 ?370次閱讀
    主站蜘蛛池模板: 麻豆最新免费版| poronovideos动物狗猪| 精品视频免费在线| 亚洲精品久久久久久久蜜臀老牛 | 亚洲色图在线播放| 精品国产成a人在线观看| 亚洲欧美一区二区成人片| 激情床戏揉胸吃胸视频| 亚洲免费无l码中文在线视频| 狠狠色狠狠色综合系列| 亚洲欧美自拍清纯中文字幕| 精品亚洲午夜久久久久| 伊人久久大香线蕉综合色啪| 久久久久久极精品久久久| 纵欲(高H)| 欧美18videosex初次| xxx免费观看| 色妞色视频一区二区三区四区| 高清国产mv视频在线观看| 我的年轻漂亮继坶三级| 国产香蕉视频| 一个人免费观看HD完整版| 久久影院午夜理论片无码| 99精品国产第一福利网站| 欧美亚洲精品真实在线| 成在线人免费视频| 午夜伦理电影在线观免费| 韩国无遮羞禁动漫在线观看96 | 国产精品嫩草影院在线观看免费| 亚瑟天堂久久一区二区影院| 精品日韩欧美一区二区三区| 姉调无修版ova国语版| 欧美黑人巨大videos免费| 古代荡乳尤物H妓女调教| 香港成人社区| 久久精品视频免费| 99视频在线观看视频| 少妇厨房愉情理9伦片视频| 国产一区内射最近更新| 重口味av| 日韩 亚洲 欧美 中文 高清|