人臉識別:損失函式之softmax loss和cross entropy Loss
轉載blog:http://blog.csdn.net/u014380165/article/details/77284921
我們知道卷積神經網路(CNN)在影象領域的應用已經非常廣泛了,一般一個CNN網路主要包含卷積層,池化層(pooling),全連線層,損失層等。雖然現在已經開源了很多深度學習框架(比如MxNet,Caffe等),訓練一個模型變得非常簡單,但是你對這些層具體是怎麼實現的瞭解嗎?你對softmax,softmax loss,cross entropy瞭解嗎?相信很多人不一定清楚。雖然網上的資料很多,但是質量參差不齊,常常看得眼花繚亂。為了讓大家少走彎路,特地整理了下這些知識點的來龍去脈,希望不僅幫助自己鞏固知識,也能幫到他人理解這些內容。
這一篇主要介紹全連線層和損失層的內容,算是網路裡面比較基礎的一塊內容。先理清下從全連線層到損失層之間的計算。來看下面這張圖,來自參考資料1(自己實在懶得畫圖了)。
這張圖的等號左邊部分就是全連線層做的事,W是全連線層的引數,我們也稱為權值,X是全連線層的輸入,也就是特徵。從圖上可以看出特徵X是N*1的向量,這是怎麼得到的呢?這個特徵就是由全連線層前面多個卷積層和池化層處理後得到的,假設全連線層前面連線的是一個卷積層,這個卷積層的輸出是100個特徵(也就是我們常說的feature map的channel為100),每個特徵的大小是4*4,那麼在將這些特徵輸入給全連線層之前會將這些特徵flat成N*1的向量(這個時候N就是100*4*4=1600)
現在你知道softmax的輸出向量是什麼意思了,就是概率,該樣本屬於各個類的概率!
那麼softmax執行了什麼操作可以得到0到1的概率呢?先來看看softmax的公式(以前自己看這些內容時候對公式也很反感,不過靜下心來看就好了):
公式非常簡單,前面說過softmax的輸入是WX,假設模型的輸入樣本是I,討論一個3分類問題(類別用1,2,3表示),樣本I的真實類別是2,那麼這個樣本I經過網路所有層到達softmax層之前就得到了WX,也就是說WX是一個3*1的向量,那麼上面公式中的aj就表示這個3*1的向量中的第j個值(最後會得到S1,S2,S3);而分母中的ak則表示3*1的向量中的3個值,所以會有個求和符號(這裡求和是k從1到T,T和上面圖中的T是對應相等的,也就是類別數的意思,j的範圍也是1到T)。因為e^x恆大於0,所以分子永遠是正數,分母又是多個正數的和,所以分母也肯定是正數,因此Sj是正數,而且範圍是(0,1)。如果現在不是在訓練模型,而是在測試模型,那麼當一個樣本經過softmax層並輸出一個T*1的向量時,就會取這個向量中值最大的那個數的index作為這個樣本的預測標籤。
因此我們訓練全連線層的W的目標就是使得其輸出的WX在經過softmax層計算後其對應於真實標籤的預測概率要最高。
舉個例子:假設你的WX=[1,2,3],那麼經過softmax層後就會得到[0.09,0.24,0.67],這三個數字表示這個樣本屬於第1,2,3類的概率分別是0.09,0.24,0.67。
————————————————————————華麗的分割線———————————————————————-
弄懂了softmax,就要來說說softmax loss了。
那softmax loss是什麼意思呢?如下:
首先L是損失。Sj是softmax的輸出向量S的第j個值,前面已經介紹過了,表示的是這個樣本屬於第j個類別的概率。yj前面有個求和符號,j的範圍也是1到類別數T,因此y是一個1*T的向量,裡面的T個值,而且只有1個值是1,其他T-1個值都是0。那麼哪個位置的值是1呢?答案是真實標籤對應的位置的那個值是1,其他都是0。所以這個公式其實有一個更簡單的形式:
當然此時要限定j是指向當前樣本的真實標籤。
來舉個例子吧。假設一個5分類問題,然後一個樣本I的標籤y=[0,0,0,1,0],也就是說樣本I的真實標籤是4,假設模型預測的結果概率(softmax的輸出)p=[0.2,0.3,0.4,0.6,0.5],可以看出這個預測是對的,那麼對應的損失L=-log(0.6),也就是當這個樣本經過這樣的網路引數產生這樣的預測p時,它的損失是-log(0.6)。那麼假設p=[0.2,0.3,0.4,0.1,0.5],這個預測結果就很離譜了,因為真實標籤是4,而你覺得這個樣本是4的概率只有0.1(遠不如其他概率高,如果是在測試階段,那麼模型就會預測該樣本屬於類別5),對應損失L=-log(0.1)。那麼假設p=[0.2,0.3,0.4,0.3,0.5],這個預測結果雖然也錯了,但是沒有前面那個那麼離譜,對應的損失L=-log(0.3)。我們知道log函式在輸入小於1的時候是個負數,而且log函式是遞增函式,所以-log(0.6) < -log(0.3) < -log(0.1)。簡單講就是你預測錯比預測對的損失要大,預測錯得離譜比預測錯得輕微的損失要大。
———————————————————————-華麗的分割線—————————————————————————-
理清了softmax loss,就可以來看看cross entropy了。
corss entropy是交叉熵的意思,它的公式如下:
是不是覺得和softmax loss的公式很像。當cross entropy的輸入P是softmax的輸出時,cross entropy等於softmax loss。Pj是輸入的概率向量P的第j個值,所以如果你的概率是通過softmax公式得到的,那麼cross entropy就是softmax loss。這是我自己的理解,如果有誤請糾正。
相關推薦
人臉識別:損失函式之softmax loss和cross entropy Loss
轉載blog:http://blog.csdn.net/u014380165/article/details/77284921 我們知道卷積神經網路(CNN)在影象領域的應用已經非常廣泛了,一般一個CNN網路主要包含卷積層,池化層(pooling),全連線層,損失層等。
卷積神經網路系列之softmax,softmax loss和cross entropy loss的講解
我們知道卷積神經網路(CNN)在影象領域的應用已經非常廣泛了,一般一個CNN網路主要包含卷積層,池化層(pooling),全連線層,損失層等。雖然現在已經開源了很多深度學習框架(比如MxNet,Caffe等),訓練一個模型變得非常簡單,但是你對這些層具體是怎麼實現的瞭解嗎?你對softmax,sof
人臉識別sphereface,損失函式,論文詳解 SphereFace論文學習
原 SphereFace論文學習 2018年02月07日 14:00:30 cdknight_happy 閱讀數:2187
faster rcnn中 損失函式(一)——softmax,softmax loss和cross entropy的講解
先理清下從全連線層到損失層之間的計算。來看下面這張圖,(非常好的圖)。 T類 N表示前一層特徵層flatten後的數字 fltten後的特徵 無限大小的T類 從0-1的T類向量
卷積神經網絡系列之softmax,softmax loss和cross entropy的講解
caff 這一 卷積神經網絡 bsp rop 技術分享 有一個 技術 位置 我們知道卷積神經網絡(CNN)在圖像領域的應用已經非常廣泛了,一般一個CNN網絡主要包含卷積層,池化層(pooling),全連接層,損失層等。雖然現在已經開源了很多深度學習框架(比如MxNet,Ca
機器學習經典損失函式之交叉熵和均方差
技術交流qq群: 659201069損失函式是用來評估預測模型效果的,即model的預測值與實真實值的差距。不用的機器學習模型有不同的損失函式來評估。本篇博文主要講用於分類問題的交叉熵和迴歸問題的均方差。先來說下分類和迴歸的區別。機器學習或深度學習領域常見的就是分類和迴歸,通
卷積神經網路系列之softmax,softmax loss和cross entropy的講解
我們知道卷積神經網路(CNN)在影象領域的應用已經非常廣泛了,一般一個CNN網路主要包含卷積層,池化層(pooling),全連線層,損失層等。雖然現在已經開源了很多深度學習框架(比如MxNet,Caffe等),訓練一個模型變得非常簡單,但是你對這些層具體是怎麼實
關於Logistic Regression、Softmax Loss和Cross-entropy的隨筆
最近看深度學習影象分類的相關知識的時候,發現對於Softmax損失函式的相關概念沒有搞明白,因此講設計到的相關知識一些梳理,供大家參考。 本文以CIFAR-10資料集圖片分類任務為例展開,定義第i 個輸入樣本xi ,輸出yi ,圖片共有10類(k=0,1
人臉識別:Loss函式總結
基於深度學習的人臉識別發展,從deepid開始,到今年(或者說去年),已經基本趨於成熟。凡是基於識別的,總是離不開三個東西:資料,網路,以及loss。資料方面,目前的公開資料集中有主打類別數的MS_celeb_1M,有主打各種姿態角與年齡的VggFace2;也有一些主打高質量
人臉識別:《Arcface》論文詳解,對損失層的改進有較為詳細的講解 人臉識別:《Arcface》論文詳解
轉 人臉識別:《Arcface》論文詳解 2018年08月27日 11:18:20 shentanyue 閱讀數:670
人臉識別:Contrastive loss和梯度推到
Contrastive loss 最初源於 Yann LeCun “Dimensionality Reduction by Learning an Invariant Mapping” CVPR 2016。 該損失函式主要是用於降維中,即本來相似的樣本,在經過降維(特徵提
人臉識別:coco loss-Rethinking Feature Discrimination and Polymerization for Large-scale Recognition
nips的一篇做分類和識別的工作,其中在人臉識別任務上也做了實驗,Rethinking Feature Discrimination and Polymerization for Large-scale Recognition.Yu Liu, Hongyang
人臉識別-arcface損失函數
-s bsp 類別 一個 tro 就是 face 向量 問題 softmax loss: N是樣本的數量,i代表第i個樣本,j代表第j個類別,fyi代表著第i個樣本所屬的類別的分數 fyi是全連接層的輸出,代表著每一個類別的分數, 每一個分數即為權重W和特征向量X的
人臉識別:ArcFace/Insight Face(轉)
mark一下,感謝作者分享 https://blog.csdn.net/fire_light_/article/details/79602705 作者開原始碼:https://github.com/deepinsight/insightface 這篇論文原名是ArcFace,但是由於
人臉識別:掃臉
import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException
【AI實戰】快速掌握TensorFlow(四):損失函式
在前面的文章中,我們已經學習了TensorFlow激勵函式的操作使用方法(見文章:快速掌握TensorFlow(三)),今天我們將繼續學習TensorFlow。 本文主要是學習掌握TensorFlow的損失函式。 一、什麼是損失函式 損失函式(loss function)是機器學習
tensorflow學習(4):損失函式+優化方法
一、損失函式 提起損失函式,大概最常用的就是交叉熵和均方誤差了。 1.交叉熵損失函式:針對分類問題 假設某個樣例的正確答案是(1,0,0),預測值是[0.5,0.4,0.1] 那麼其交叉熵為H((1,0,0),(0.5,0.4,0.1))=-(1log0.5+0log0.4+0*log
[Xcode10 實際操作]九、實用進階-(18)影象人臉識別:對圖片中的人像進行面部檢測
本文將演示對圖片中的人像,進行面部檢測。 在專案導航區,開啟檢視控制器的程式碼檔案【ViewController.swift】 1 import UIKit 2 //匯入要使用的CoreImage框架 3 //該框架提供了強大和高效的圖片處理功能。 4 //用來對基於畫素的影象進行分析
人臉識別:NormFace
提出問題 之前的人臉識別工作,在特徵比較階段,通常使用的都是特徵的餘弦距離 而餘弦距離等價於L2歸一化後的內積,也等價L2歸一化後的歐式距離(歐式距離表示超球面上的弦長,兩個向量之間的夾角越大,弦長也越大) 然而,在實際上訓練的時候用的都是沒有L2歸一化的內積
tensorflow+faster rcnn程式碼理解(三):損失函式構建
前面兩篇部落格已經敘述了基於vgg模型構建faster rcnn的過程: tensorflow+faster rcnn程式碼理解(一):構建vgg前端和RPN網路 tensorflow+faster rcnn程式碼解析(二):anchor_target_layer、proposal_targ