1. 程式人生 > >簡明談談softmax loss

簡明談談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.1,0.15,0.05,0.6

,0.1],可以看出這個預測是對的,那麼對應的損失L=-log(0.6),也就是當這個樣本經過這樣的網路引數產生這樣的預測p時,它的損失是-log(0.6)。那麼假設p=[0.15,0.2,0.4,0.1,0.15],這個預測結果就很離譜了,因為真實標籤是4,而你覺得這個樣本是4的概率只有0.1(遠不如其他概率高,如果是在測試階段,那麼模型就會預測該樣本屬於類別3),對應損失L=-log(0.1)。那麼假設p=[0.05,0.15,0.4,0.3,0.1],這個預測結果雖然也錯了,但是沒有前面那個那麼離譜,對應的損失L=-log(0.3)。我們知道log函式在輸入小於1的時候是個負數,而且log函式是遞增函式,所以-log(0.6) < -log(0.3) < -log(0.1)。簡單講就是你預測錯比預測對的損失要大,預測錯得離譜比預測錯得輕微的損失要大。