[轉]小白都能看懂的softmax詳解

?

1.softmax初探

?

在機器學習尤其是深度學習中,softmax是個非常常用而且比較重要的函數,尤其在多分類的場景中使用廣泛。他把一些輸入映射為0-1之間的實數,并且歸一化保證和為1,因此多分類的概率之和也剛好為1。
首先我們簡單來看看softmax是什么意思。顧名思義,softmax由兩個單詞組成,其中一個是max。對于max我們都很熟悉,比如有兩個變量a,b。如果a>b,則max為a,反之為b。用偽碼簡單描述一下就是 if a > b return a; else b
另外一個單詞為soft。max存在的一個問題是什么呢?如果將max看成一個分類問題,就是非黑即白,最后的輸出是一個確定的變量。更多的時候,我們希望輸出的是取到某個分類的概率,或者說,我們希望分值大的那一項被經常取到,而分值較小的那一項也有一定的概率偶爾被取到,所以我們就應用到了soft的概念,即最后的輸出是每個分類被取到的概率。

?

2.softmax的定義

?

首先給一個圖,這個圖比較清晰地告訴大家softmax是怎么計算的。
這里寫圖片描述
(圖片來自網絡)

?

假設有一個數組V,ViVi 表示V中的第i個元素,那么這個元素的softmax值為:

Si=eijejSi=ei∑jej


該元素的softmax值,就是該元素的指數與所有元素指數和的比值。

?

?

這個定義可以說很簡單,也很直觀。那為什么要定義成這個形式呢?原因主要如下。
1.softmax設計的初衷,是希望特征對概率的影響是乘性的。
2.多類分類問題的目標函數常常選為cross-entropy。即L=?ktk?lnP(y=k)L=?∑ktk?lnP(y=k) ,其中目標類的tktk 為1,其余類的tktk 為0。
在神經網絡模型中(最簡單的logistic regression也可看成沒有隱含層的神經網絡),輸出層第i個神經元的輸入為ai=dwidxdai=∑dwidxd
神經網絡是用error back-propagation訓練的,這個過程中有一個關鍵的量是?L/?αi?L/?αi 。后面我們會進行詳細推導。

?

3.softmax求導

?

前面提到,在多分類問題中,我們經常使用交叉熵作為損失函數

Loss=?itilnyiLoss=?∑itilnyi


其中,titi 表示真實值,yiyi 表示求出的softmax值。當預測第i個時,可以認為ti=1ti=1 。此時損失函數變成了:

Lossi=?lnyiLossi=?lnyi


接下來對Loss求導。根據定義:

yi=eijejyi=ei∑jej


我們已經將數值映射到了0-1之間,并且和為1,則有:

eijej=1?jiejjejei∑jej=1?∑j≠iej∑jej

?

?

接下來開始求導

?Lossi?i=??lnyi?i=?(?lneijej)?i=?1eijej??(eijej)?i=?jejei??(1?jiejjej)?i=?jejei?(?jiej)??(1jej)?i=jej?jiejei??ei(jej)2=jiejjej=?(1?eijej)=yi?1?Lossi?i=??lnyi?i=?(?lnei∑jej)?i=?1ei∑jej??(ei∑jej)?i=?∑jejei??(1?∑j≠iej∑jej)?i=?∑jejei?(?∑j≠iej)??(1∑jej)?i=∑jej?∑j≠iejei??ei(∑jej)2=∑j≠iej∑jej=?(1?ei∑jej)=yi?1

?

?

上面的結果表示,我們只需要正想求出yiyi ,將結果減1就是反向更新的梯度,導數的計算是不是非常簡單!

?

4.softmax VS k個二元分類器

?

如果你在開發一個音樂分類的應用,需要對k種類型的音樂進行識別,那么是選擇使用 softmax 分類器呢,還是使用 logistic 回歸算法建立 k 個獨立的二元分類器呢?
這一選擇取決于你的類別之間是否互斥,例如,如果你有四個類別的音樂,分別為:古典音樂、鄉村音樂、搖滾樂和爵士樂,那么你可以假設每個訓練樣本只會被打上一個標簽(即:一首歌只能屬于這四種音樂類型的其中一種),此時你應該使用類別數 k = 4 的softmax回歸。(如果在你的數據集中,有的歌曲不屬于以上四類的其中任何一類,那么你可以添加一個“其他類”,并將類別數 k 設為5。)
如果你的四個類別如下:人聲音樂、舞曲、影視原聲、流行歌曲,那么這些類別之間并不是互斥的。例如:一首歌曲可以來源于影視原聲,同時也包含人聲 。這種情況下,使用4個二分類的 logistic 回歸分類器更為合適。這樣,對于每個新的音樂作品 ,我們的算法可以分別判斷它是否屬于各個類別。
現在我們來看一個計算視覺領域的例子,你的任務是將圖像分到三個不同類別中。(i) 假設這三個類別分別是:室內場景、戶外城區場景、戶外荒野場景。你會使用sofmax回歸還是 3個logistic 回歸分類器呢? (ii) 現在假設這三個類別分別是室內場景、黑白圖片、包含人物的圖片,你又會選擇 softmax 回歸還是多個 logistic 回歸分類器呢?
在第一個例子中,三個類別是互斥的,因此更適于選擇softmax回歸分類器 。而在第二個例子中,建立三個獨立的 logistic回歸分類器更加合適。

?

參考文獻:
1.https://www.zhihu.com/question/40403377
2.http://deeplearning.stanford.edu/wiki/index.php/Softmax回歸


---------------------
作者:bitcarmanlee
來源:CSDN
原文:https://blog.csdn.net/bitcarmanlee/article/details/82320853
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285335.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285335.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285335.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MAUI 入門教程系列(5.XAML及頁面介紹)

前言作為微軟的UI框架,除了Winform以外,多數是以創建XAML文件的方式來編寫前端的頁面,盡管你也可以通過C#代碼來編寫你的用戶界面,與Xamarin.Forms相同,在MAUI上編寫XAML的聲明方式與其相同,重構了底層部分…

藍牙mesh網絡基礎

藍牙mesh網絡基礎轉載于:https://blog.51cto.com/11534544/2044130

Linux系統開機自啟流程

第一步:POST(Power On Safe Test)加電自檢當按下電源鍵以后,CPU因為有電流通過便開始對自身、I/O設備、內存等硬件進行檢驗。那么CPU如何得知這些自檢指令?我們知道指令存在于內存當中,尋找內存也需要指令。…

ArcGIS空間數據:矢量和柵格數據結構詳解

文章目錄 矢量數據結構矢量數據簡介Shapefile矢量格式柵格數據結構地理數據庫中的柵格柵格管理策略柵格數據的地理屬性柵格的地理屬性通常包括地理數據集中的柵格塊表實體柵格表示矢量數據結構 矢量數據簡介 基于矢量數據模型的數據結構簡稱矢量數據結構,是通過記錄實體坐標…

C語言試題130之有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中 分析:先判…

[轉]一文讀懂目標檢測:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/kwame211/article/details/88016151 一、目標檢測常見算法 object detection,就是在給定的圖片中精確找到物體所在位置,并標注出物體的類別。所以&a…

在代碼中使用度量單位,從而生活更美好

在我們的應用軟件中,涉及到物理化學計算時,只有 Frink 、F#、Modelica 少數語言變量是自帶單位的,大部分語言變量僅包含數值,單位轉換需要在變量進行公式計算之前完成,計算后再把結果單位轉換為輸出單位,單…

C#(Sharp)進階篇:文件操作

文章目錄 8.1 文件系統概述8.2 驅動器、目錄和文件8.2.1 與IO操作相關的枚舉8.2.2 驅動器8.2.3 目錄8.2.4 文件8.3 文件流和數據流8.3.1 抽象類Stream8.3.2 文件流FileStream8.3.3 流的文本讀寫器8.3.4 流的二進制讀寫器8.3.5 常用的其他流對象8.4 應用實例8.1 文件系統概述

shell中字符串操作【轉】

轉自:http://blog.chinaunix.net/uid-29091195-id-3974751.html 我們所遇到的編程語言中(匯編除外)都少不了字符串處理函數吧, 當然shell編程也不例外咯,那么下面我們一起來看下shell中字符串 處理的相關操作吧。大概下面的字符串操作可以分為…

如何提高上傳帶寬

參考文章:http://jingyan.baidu.com/article/db55b609af631b4ba30a2f23.html 1、已管理員身份運行:netsh interface tcp set global autotuningdisabled 2、 打開注冊表 找到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\A FD\Parameters 3、創建新…

[轉]神經網絡框架

Pytorch上手使用 近期學習了另一個深度學習框架庫Pytorch,對學習進行一些總結,方便自己回顧。 Pytorch是torch的python版本,是由Facebook開源的神經網絡框架。與Tensorflow的靜態計算圖不同,pytorch的計算圖是動態的,可…

Eclipse啟動時布局不合理調整

1. 關掉 啟動頁 2. 關掉InstSearch頁 3.修正InSearch布局 3.1 默認InstSearch不合理,影響使用。 3.2 Inst 搜索一次,然后最小化InstSearch框,再從右側點擊,即可。轉載于:https://www.cnblogs.com/jhj117/p/6121298.html

10分鐘實現dotnet程序在linux下的持續部署

背景 一直以來,程序署都是非常麻煩且無聊的事情,在公司一般都會有 devops 方案,整個 cicd 過程涉及的工具還是挺多的,搭建起來比較麻煩。那么對于一些自己的小型項目,又不想搭建一套這樣的環境,怎么辦呢。。…

C語言試題131之將一個數組逆序輸出。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:將一個數組逆序輸出。 分析:…

【錯誤異常大全】:無法加載 DLL“ArcGISVersion.dll”: 找不到指定的模塊。 (異常來自 HRESULT:0x8007007E)。

文章目錄 錯誤異常解決方案錯誤異常 無法加載 DLL“ArcGISVersion.dll”: 找不到指定的模塊。 (異常來自 HRESULT:0x8007007E)。 解決方案 將目標平臺改為x86,具體步驟如下: 點擊【配置管理器】。 下拉活動解決方案平臺,點擊【新建】。 選擇x86,點擊【確定】。

Go語言之反射

和Java語言一樣,Go也實現運行時反射,這為我們提供一種可以在運行時操作任意類型對象的能力。比如我們可以查看一個接口變量的具體類型,看看一個結構體有多少字段,如何修改某個字段的值等。TypeOf和ValueOf在Go的反射定義中&#x…

博客即簡歷

本文轉載自:http://www.cnblogs.com/stoneniqiu/p/5271248.html。 我個人也是在一直堅持寫博客,每月至少一篇,并慢慢地將其變成了自己的習慣。一些想法與本文不謀而合,所以決定轉載此文。 --------------------------------------…

C語言試題132之取一個整數 a 從右端開始的 4~7 位。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:取一個整數 a 從右端開始的 …

【錯誤異常大全】:ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS

文章目錄 問題描述解決方法問題描述 ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS components. 解決方法 打開program.cs,把ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop); 放到Application…

統一建模語言 UML

目錄 統一建模語言 UMLUML定義了5類10種模型圖一用例圖用于建立需求模型二靜態圖主要描述系統的靜態表示和關系包括類圖包圖對象圖三行為圖描述系統動態模型和對象組成的交換關系包括狀態圖和活動圖四交互圖用于描述對象間的交互關系由一組對象和它們之間的關系組成包含它們之間…