softmax logistic loss詳解

softmax函數–softmax layer

softmax用于多分類過程中,它將多個神經元的輸出,映射到(0,1)區間內,可以看成概率來理解,從而來進行多分類!

假設我們有一個數組z=(z1,z2,...zm),則其softmax函數定義如下:

σi(z)=exp(zi)mj=1exp(zj),i=1,2..,m

也就是softmax是個函數映射,將 z=(z1,z2,...zm)映射到 (σ1,σ2,...σm).
其中, σi=1.

如下圖,可以更清楚地表明。



在logistic回歸中,假設zi=wTix+bi是第i個類別的線性預測結果,帶入softmax中就可以得到oi=σi(z)可以解釋成觀察得到的數據x屬于類別i的概率,或者稱為似然(Likehood)。

logistic regression

Logistic Regression 的目標函數是根據最大似然原則來建立的,假設數據x所對應的類別為 y,則根據x我們剛才的計算最大似然就是要最大化oy的值

通常是使用 negative log-likelihood 而不是likelihood,也就是說最小化?log(oy)的值,這兩者結果在數學上是等價的。即min?log(oy)<=>max?oy

后面這個操作就是 caffe 文檔里說的 Multinomial Logistic Loss,具體寫出來是這個樣子:

l(y,o)=?log(oy)

從上面可以看出,計算似然損失,其實是和label一起的。這也是情理之中的,既然我們知道label是某一個,自然我們我希望對應的預測概率盡可能大一點。這就歸結于上面的log損失。

softmax logistic loss

softmax logistic loss就是將softmax與上述的log損失結合到一起,只要把oy的定義展開即可。

l^(y,z)=?log(ezymj=1ezj)

其實label(這里指y)的作用就是指定了softmax的序號,也就是告訴是哪一些最小化。

反向傳播

反向傳播,要求根據loss更新weights,需要計算loss對于weight的偏導數。
我們參考了網上的一個例子,來簡單介紹一下如何計算偏導。



a4=ez4ez4+ez5+ez6a5=ez5ez4+ez5+ez6a6=ez6ez4+ez5+ez6

好了,我們的重頭戲來了,怎么根據求梯度,然后利用梯度下降方法更新梯度!

要使用梯度下降,肯定需要一個損失函數,這里我們使用交叉熵作為我們的損失函數,為什么使用交叉熵損失函數,不是這篇文章重點,后面有時間會單獨寫一下為什么要用到交叉熵函數(這里我們默認選取它作為損失函數)
交叉熵函數形式如下:


這里寫圖片描述

其中y代表我們的真實值,a代表我們softmax求出的值。i代表的是輸出結點的標號!在上面例子,i就可以取值為4,5,6三個結點(當然我這里只是為了簡單,真實應用中可能有很多結點)

現在看起來是不是感覺復雜了,居然還有累和,然后還要求導,每一個a都是softmax之后的形式!

但是實際上不是這樣的,我們往往在真實中,如果只預測一個結果,那么在目標中只有一個結點的值為1,比如我認為在該狀態下,我想要輸出的是第四個動作(第四個結點),那么訓練數據的輸出就是a4 = 1,a5=0,a6=0,哎呀,這太好了,除了一個為1,其它都是0,那么所謂的求和符合,就是一個幌子,我可以去掉啦!
交叉熵函數形式如下:


這里寫圖片描述

這就回到了我們的softmax logistic loss,其實發現交叉熵損失與softmax logistic loss在輸出只有一個類的時候等價。

參數的形式在該例子中,總共分為w41,w42,w43,w51,w52,w53,w61,w62,w63.這些,那么比如我要求出w41,w42,w43的偏導,就需要將Loss函數求偏導傳到結點4,然后再利用鏈式法則繼續求導即可,舉個例子此時求w41的偏導為:




w51…..w63等參數的偏導同理可以求出,那么我們的關鍵就在于Loss函數對于結點4,5,6的偏導怎么求,如下:

這里分為倆種情況:


這里寫圖片描述

j=i對應例子里就是如下圖所示:

比如我選定了j為4,那么就是說我現在求導傳到4結點這!


這里寫圖片描述


這里寫圖片描述


這里寫圖片描述

這里對應我的例子圖如下,我這時對的是j不等于i,往前傳:


這里寫圖片描述


這里寫圖片描述

參考文獻

  • Softmax vs. Softmax-Loss: Numerical Stability
  • Caffe中Loss Layer原理的簡單梳理
  • Softmax 函數的特點和作用是什么?

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

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

相關文章

poj3254 Corn Fields

Description Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yummy corn for the cows on a number of squares. Regrettably, some of the squares are infertile and ca…

Android獲取程序路徑 (/data/data/appname)

Android獲取文件夾路徑 /data/data/ http://www.2cto.com/kf/201301/186614.html String printTxtPath getApplicationContext().getPackageResourcePath() "/files/" fileName;> /data/app/com.example.fileoperation-2.apk/files/printMenu.txt String print…

javascript做極簡時鐘特效,再簡單沒思路你也做不出來

點擊查看時鐘特效極簡主義&#xff0c;程序員javascript打造極簡時鐘特效對于javascript特效的學習&#xff0c;重要的是邏輯思路&#xff0c;所以這個時鐘特效不是很華麗&#xff0c;但是功能都展現出來了&#xff0c;而學習javascript并不是單純的扣代碼&#xff0c;很多人都…

ubuntu中怎么打開python_如何在Linux Ubuntu 16.04下安裝及打開PyCharm

下載安裝 PyCharm下載好的文件的名稱可能是 ‘pycharm-community-2017.2.3.tar.gz’首先打開終端&#xff0c;然后通過下面的命令進入下載文件所在的文件夾&#xff1a;cd ~/Downloads或者如果文件夾是中文cd ~/下載然后&#xff0c;通過運行下面的命令找到你下載的文件的名字&…

圖像極坐標變換及在OCR中的應用

極坐標變換定義 我們知道在二維坐標系中&#xff0c;有直角坐標系&#xff0c;也有極坐標系&#xff0c;二者的轉換關系是&#xff1a; 如下圖&#xff1a; 如圖&#xff0c;直角坐標系的圓心與極坐標系的圓心一一對應&#xff0c;且圓弧BA可以通過極坐標變換到極坐標系ρr的…

Light OJ 1406 Assassin`s Creed 減少國家DP+支撐點甚至通縮+最小路徑覆蓋

標題來源&#xff1a;Light OJ 1406 Assassins Creed 意甲冠軍&#xff1a;向圖 派出最少的人經過全部的城市 而且每一個人不能走別人走過的地方 思路&#xff1a;最少的的人能夠走全然圖 明顯是最小路徑覆蓋問題 這里可能有環 所以要縮點 可是看例子又發現 一個強連通分量可能…

bootstrap-表單控件——單選按鈕水平排列

1.運行效果如圖所示2.實現代碼如下<!DOCTYPE html> <html> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><title>表單控件——單選按鈕水平排列</title><!-- 最…

python中memoryerror_解決python報錯MemoryError

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技術人對外發布原創技術內容的最大平臺&…

MongoDB使用小結:一些常用操作分享

MongoDB使用小結&#xff1a;一些常用操作分享 本文整理了一年多以來我常用的MongoDB操作&#xff0c;涉及mongo-shell、pymongo&#xff0c;既有運維層面也有應用層面&#xff0c;內容有淺有深&#xff0c;這也就是我從零到熟練的歷程。 MongoDB的使用之前也分享過一篇&#x…

【論文閱讀】Illuminating Pedestrians via Simultaneous Detection Segmentation

論文來源 ICCV2017arXiv reportgithub代碼(caffe-matlab) 本文的主要問題是行人檢測。作者探討了如何將語義分割應用在行人檢測上&#xff0c;提高檢測率&#xff0c;同時也不損壞檢測效率。作者提出了一種語義融合網絡&#xff08;segmentation infusion networks&#xff0…

跨域獲取json電商數據

url:http://www.darlingbank.com/cutpage/index.php/promote/edit/getfun/json/源碼&#xff1a; <ul class"cf" dataurl"http://www.paipai.com/sinclude/xml/tjw/tjw2014/tjw4/tjw179255804475.js" commlen"4" commsta"1" commtp…

Python ORM框架之 Peewee入門

之前在學Django時&#xff0c;發現它的模型層非常好用&#xff0c;把對數據庫的操作映射成對類、對象的操作&#xff0c;避免了我們直接寫在Web項目中SQL語句&#xff0c;當時想&#xff0c;如果這個模型層可以獨立出來使用就好了&#xff0c;那我們平臺操作數據庫也可以這么玩…

天聯高級版客戶端_金萬維天聯高級版服務器安裝配置全流程以及客戶端登錄流程...

今天下午&#xff0c;有一個使用千江軟件的用戶&#xff0c;他想實現千江軟件的異地訪問&#xff0c;經過他朋友也是金萬維天聯高級版的客戶的介紹&#xff0c;推薦我們幫他安裝天聯高級版&#xff0c;從而實現千江軟件的異地訪問&#xff0c;千江軟件本地訪問界面如下&#xf…

[C#]async和await刨根問底

上一篇隨筆留下了幾個問題沒能解決&#xff1a; 調用IAsyncStateMachine.MoveNext方法的線程何時發起的&#xff1f; lambda的執行為何先于MoveNext方法&#xff1f; 后執行的MoveNext方法做了些什么事情&#xff1f; 那么今天就來嘗試解決它們吧~PS: 本文中部分代碼來自上一篇…

模仿QQ截圖片

兩個picturebox,一個放圖片完整代碼如下using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.OleDb; using System.Xml; namespace T…

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found錯誤的解決

轉載自&#xff1a;http://www.cnblogs.com/weinyzhou/p/4983306.html 升級cmake時&#xff0c;提示“Error when bootstrapping CMake:Problem while running initial CMake”&#xff0c;第二次運行./bootstrap時&#xff0c;直接的給出了錯誤原因&#xff1a; [rootloc…

Spring中Bean的定義繼承

以下內容引用自http://wiki.jikexueyuan.com/project/spring/bean-definition-inheritance.html&#xff1a; Bean定義繼承 bean定義可以包含很多的配置信息&#xff0c;包括構造函數的參數&#xff0c;屬性值&#xff0c;容器的具體信息例如初始化方法&#xff0c;靜態工廠方法…

python實時連接oracle_Python連接Oracle

Python連接Oracle當前環境&#xff1a;Linux Centos 71. 下載安裝包cx_Oracle由于我本地Python版本是2.7,所以選擇是2.7版本wget https://pypi.python.org/packages/e1/18/00987c6a9af9568ee87d1fcba877407684a3f1b87515e5eb82d5d5acb9ff/cx_Oracle-6.0rc1-py27-1.x86_64.rpm#m…

C語言字符串函數大全

轉載自http://www.360doc.com/content/08/0723/22/26860_1462024.shtml# C語言字符串函數大全 函數名: stpcpy 功能: 拷貝一個字符串到另一個 用法: char *stpcpy(char *destin, char *source); 程序例: #include<stdio.h> #include<string.h> int main(void) { ch…

Makefile中 -I -L -l區別

轉載自&#xff1a;http://blog.csdn.net/davion_zhang/article/details/41805641 我們用gcc編譯程序時&#xff0c;可能會用到“-I”&#xff08;大寫i&#xff09;&#xff0c;“-L”&#xff08;大寫l&#xff09;&#xff0c;“-l”&#xff08;小寫l&#xff09;等參數&am…