在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Softmax如何把CNN的輸出轉變成概率?交叉熵如何為優化過程提供度量?

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

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

▌Softmax函數

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

正如它的名字一樣,Softmax 函數是一個“軟”的最大值函數,它不是直接取輸出的最大值那一類作為分類結果,同時也會考慮到其它相對來說較小的一類的輸出。

說白了,Softmax 可以將全連接層的輸出映射成一個概率的分布,我們訓練的目標就是讓屬于第k類的樣本經過 Softmax 以后,第 k 類的概率越大越好。這就使得分類問題能更好的用統計學方法去解釋了。

使用 Python,我們可以這么去實現 Softmax 函數:

我們需要注意的是,在 numpy 中浮點類型是有數值上的限制的,對于float64,它的上限是。對于指數函數來說,這個限制很容易就會被打破,如果這種情況發生了 python 便會返回?nan。

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

理論上來說,我們可以選擇任意一個值作為,但是一般我們會選擇

通過這種方法就使得原本非常大的指數結果變成0,避免出現?nan的情況。

同樣使用 Python,改進以后的 Softmax 函數可以這樣寫:

▌Softmax 函數的導數推倒過程

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

根據商的求導法則,對于其導數為?

。在中,一直都是?但是在?中,當且僅當?的時候,才為。具體的過程,我們看一下下面的步驟:

如果

如果

所以 Softmax 函數的導數如下面所示:

▌交叉熵損失函數

下面我們來看一下對模型優化真正起到作用的損失函數——交叉熵損失函數。交叉熵函數體現了模型輸出的概率分布和真實樣本的概率分布的相似程度。它的定義式就是這樣:

在分類問題中,交叉熵函數已經大范圍的代替了均方誤差函數。也就是說,在輸出為概率分布的情況下,就可以使用交叉熵函數作為理想與現實的度量。這也就是為什么它可以作為有 Softmax 函數激活的神經網絡的損失函數。

我們來看一下,在 Python 中是如何實現交叉熵函數的:

▌交叉熵損失函數的求導過程

就像我們之前所說的,Softmax 函數和交叉熵損失函數是一對好兄弟,我們用上之前推導 Softmax 函數導數的結論,配合求導交叉熵函數的導數:

加上 Softmax 函數的導數:

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

可以看到,這個結果真的太簡單了,不得不佩服發明它的大神們!最后,我們把它轉換成代碼:

▌小結

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4825

    瀏覽量

    86347
  • 深度學習
    +關注

    關注

    73

    文章

    5557

    瀏覽量

    122566
  • cnn
    cnn
    +關注

    關注

    3

    文章

    354

    瀏覽量

    22665

原文標題:Softmax和交叉熵的深度解析和Python實現

文章出處:【微信號:AI_Thinker,微信公眾號:人工智能頭條】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    如果將正脈沖方波轉變成正負脈沖?

    請教,如果將正脈沖方波轉變成正負脈沖?非常感謝!
    發表于 07-14 16:15

    現在有一個三維數組rgb,怎么通過k230轉變成圖片顯示出來?

    現在有一個三維數組rgb,怎么通過k230轉變成圖片顯示出來
    發表于 06-10 08:17

    在Quartus II中能否電路圖輸入轉變成Verilog語句

    各位大俠請教一下:在Quartus II中能否電路圖輸入轉變成Verilog語句?
    發表于 11-27 08:45

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

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

    TF之CNNCNN實現mnist數據集預測

    TF之CNNCNN實現mnist數據集預測 96%采用placeholder用法+2層C及其max_pool法+隱藏層dropout法+輸出softmax法+目標函數cross_e
    發表于 12-19 17:02

    什么是交叉

    2018-04-22 開胃學習數學系列 - 交叉
    發表于 03-21 11:08

    交叉的作用原理

    交叉作為損失函數在神經網絡中的作用和幾種常用的交叉損失函數
    發表于 06-03 09:10

    介紹一種解決overconfidence簡潔但有效的方法

    Logit歸一化(LogitNorm)來緩解——交叉損失的一個簡單修復——通過在訓練中對Logit執行恒定向量范數。我們的方法的動機是分析logit的規范在訓練過程中不斷增加,導致過度自信的
    發表于 08-24 15:11

    模擬輸入信號轉變成數字比特流的過程

    輸入信號轉變成數字比特流的過程。當客戶在Σ-Δ調制器中繪制量化噪聲的頻譜時,將看到頻率越高時量化噪聲越密集。這是Σ-Δ ADC為眾人所知的臭名昭著的噪聲整形。為了降低量化噪聲,客戶將調制器輸出饋至低通濾波器?!?/div>
    發表于 11-16 07:43

    光纖傳輸是電信號轉變成光信號傳輸的嗎?

    光纖傳輸是電信號轉變成光信號傳輸的嗎?
    發表于 05-16 17:32

    自己寫的c代碼怎么轉變成sigmastudio識別的圖像語言?

    我自己寫的c代碼怎么轉變成sigmastudio識別的圖像語言
    發表于 11-30 08:01

    基于直覺模糊的證據沖突度量方法

    針對證據理論中證據沖突度量這一關鍵問題,提出了一種基于模糊的沖突度量方法,首先引入直覺模糊表示證據間的差異性,然后對傳統的沖突系數進行了修正,使其能夠反映由于
    發表于 11-14 15:30 ?0次下載

    基于鄰域信息度量數值屬性快速約簡算法

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

    lm317能把不穩定的輸出電壓轉變成穩定的電壓嗎?

    lm317能把不穩定的輸出電壓轉變成穩定的電壓嗎? 是的,LM317能夠將不穩定的輸出電壓轉變成穩定的電壓。LM317是一種可變正電壓調節器,可以根據需要
    的頭像 發表于 10-26 15:57 ?1083次閱讀

    RNN的損失函數與優化算法解析

    函數有以下幾種: 交叉損失函數 :交叉(Cross Entropy)是一種評估兩個概率分布之間差異的
    的頭像 發表于 11-15 10:16 ?1303次閱讀
    主站蜘蛛池模板: 免费h视频网站 | 九九九精品视频免费 | 亚洲人成网站色7799在线观看 | 开心激情小说 | 国产手机免费视频 | 天天干天天干天天操 | 成年大片免费播放视频人 | 丁香五六月婷婷 | 97天天操 | 插菊综合网 | 日韩一级在线观看 | 黄黄的网站 | 久久青草国产手机看片福利盒子 | 完全免费在线视频 | 三级黄色一级视频 | 天天色综合6 | 夜夜澡人人爽人人喊_欧美 夜夜综合网 | 狠狠色婷婷 | 欧美区在线播放 | 在线观看免费av网站 | 免费的日本网站 | aaa亚洲| 成人a毛片免费全部播放 | 一级毛片a | 91久久夜色精品国产网站 | 国产成人一级片 | 米奇久久| 国产精品成人观看视频国产奇米 | 小泽玛利亚厕所大喷水 | 亚洲综合色就色手机在线观看 | aaa大片| 巨臀中文字幕一区二区翘臀 | 四虎影永久在线观看网址 | 国产美女特级嫩嫩嫩bbb | 日本免费性 | 在线视频综合网 | 国产精品美女一区二区三区 | 欧美色炮 | 久久精品免费视频观看 | 亚洲天天 | 91久久婷婷国产综合精品青草 |