交叉熵損失是分類任務中的經常使用損失函數,可是是否注意到二分類與多分類狀況下的交叉熵形式上的不一樣呢?網絡
這兩個都是交叉熵損失函數,可是看起來長的卻有天壤之別。爲何同是交叉熵損失函數,長的卻不同?函數
由於這兩個交叉熵損失函數對應不一樣的最後一層的輸出:
第一個對應的最後一層是softmax,第二個對應的最後一層是sigmoid3d
交叉熵是用來描述兩個分佈的距離的,神經網絡訓練的目的就是使 g(x) 逼近 p(x)。orm
(x)是什麼呢?就是最後一層的輸出 y 。
p(x)是什麼呢?就是咱們的one-hot標籤。咱們帶入交叉熵的定義中算一下,就會獲得第一個式子:
其中 j 表明樣本 x 屬於第 j 類。blog
sigmoid做爲最後一層輸出的話,那就不能吧最後一層的輸出看做成一個分佈了,由於加起來不爲1。get
如今應該將最後一層的每一個神經元看做一個分佈,對應的 target 屬於二項分佈(target的值表明是這個類的機率),那麼第 i 個神經元交叉熵爲:io
因此最後一層總的交叉熵損失函數是:form
邏輯迴歸中咱們給定的假設函數(目標函數)是給定x的條件下,預測其屬於類別1的機率,線性迴歸中的目標函數是:class
其中z是一個實數值,顯然不能直接做爲邏輯分類的預測值,所以想辦法將其映射爲機率值,引入了sigmoid函數,那麼邏輯迴歸的假設函數就是:file
有了假設函數,咱們先嚐試借鑑線性迴歸的方式定義損失函數:
可是發現這樣的損失函數並非一個嚴格的凸函數,容易陷入局部最優解,所以摒棄該損失函數。
因爲咱們引入的sigmoid可視做是類別爲1的後驗機率(說白了,就是給一個x,那麼能夠經過sigmoid算出來該樣本點屬於類別1的機率),因此能夠獲得類別爲1以及類別爲0時的條件機率爲:
MLE
ok,如今咱們獲得了邏輯迴歸的分佈函數(即最終的目標函數),那麼咱們如今爲了惟一肯定最優的模型,須要對模型中的參數進行估計。引入極大似然估計法,回憶一下MLE的目標,就是經過極大化已出現樣本的聯合機率來求解出咱們認爲最優的參數。
根據極大似然法以及聯合機率求解,獲得:
爲了簡化運算,咱們對上面這個等式的兩邊取對數:
首先回憶sigmoid的特殊性質:
若是 y = +1 時
由於 y 取值爲 +1 或 -1,能夠把 y 值帶入,將上面兩個式子整合到一塊兒:
若是有N個樣本,那麼: