对tf.nn.softmax的理解
Softmax的含義:Softmax簡單的說就是把一個N*1的向量歸一化為(0,1)之間的值,由于其中采用指數運算,使得向量中數值較大的量特征更加明顯。
如圖所示,在等號左邊部分就是全連接層做的事。
舉一個例子,假設全連接層前面連接的是一個卷積層,這個卷積層的輸出是64個特征,每個特征的大小是7X7,那么在將這些特征輸入給全連接層之前會將這些特征通過tf.reshape轉化為成N1的向量(這個時候N就是64X7X7=3136)。
我們所說的訓練一個網絡,對于全連接層而言就是尋找最合適的W矩陣。因此全連接層就是執行WX得到一個T1的向量(也就是圖中的logits[T1]),這個向量里面的每個數都沒有大小限制的,也就是從負無窮大到正無窮大。然后如果你是多分類問題,一般會在全連接層后面接一個softmax層,這個softmax的輸入是T1的向量,輸出也是T1的向量(也就是圖中的prob[T*1],這個向量的每個值表示這個樣本屬于每個類的概率),只不過輸出的向量的每個值的大小范圍為0到1。
softmax函數,或稱歸一化指數函數,是邏輯函數的一種推廣。它能將一個含任意實數的K維向量A “壓縮”到另一個K維實向量 A' 中,使得A' 每一個元素的范圍都在(0,1)之間,并且所有元素的和為1。
該函數的形式可以按下面的式子給出:
可能大家一看到公式就有點暈了,別被嚇跑,我來簡單解釋一下。這個公式的意思就是說得到的A'向量中的每個元素的值,是由A中對應元素的指數值除以A中所有元素的指數值的總和。
舉個例子:假設你的A =[1,2,3],那么經過softmax函數后就會得到A' = [0.09, 0.24, 0.67],A'的三個元素分別是怎么來的呢?
A'的第1個元素 ?= exp(1) / (exp(1) + exp(2) + exp(3)) = 0.09(這里exp即為e)
A'的第2個元素 ?= exp(2) / (exp(1) + exp(2) + exp(3)) = 0.24
A'的第3個元素 ?= exp(3) / (exp(1) + exp(2) + exp(3)) = 0.67
由于Softmax函數的這個特點,經常會被用在神經網絡來解決分類問題中,得到的結果就可以認為是滿足各種分類的概率。
弄懂了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.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)。簡單講就是你預測錯比預測對的損失要大,預測錯得離譜比預測錯得輕微的損失要大。
理清了softmax loss,就可以來看看cross entropy了。
corss entropy是交叉熵的意思,它的公式如下:
是不是覺得和softmax loss的公式很像。當cross entropy的輸入P是softmax的輸出時,cross entropy等于softmax loss。Pj是輸入的概率向量P的第j個值,所以如果你的概率是通過softmax公式得到的,那么cross entropy就是softmax loss。
轉載內容,根據自己理解稍作修改,原文連接為:
https://blog.csdn.net/u014380165/article/details/77284921
參考自:https://blog.csdn.net/wgj99991111/article/details/83586508
https://blog.csdn.net/kevindree/article/details/87365355
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的对tf.nn.softmax的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows10配置CUDA10.0+
- 下一篇: C++基础02-C++对c的拓展