人工神经网络之激活函数 -softmax函数
softmax 可以理解為歸一化,如目前圖片分類有一百種,那經過 softmax 層的輸出就是一個一百維的向量。向量中的第一個值就是當前圖片屬于第一類的概率值,向量中的第二個值就是當前圖片屬于第二類的概率值...這一百維的向量之和為1.
softmax的輸入層和輸出層的維度是一樣的,如果不一眼,就在輸入至 softmax 層之前通過一層全連接層。
激活函數softmax和損失函數會一起使用。
激活函數會根據輸入的參數(一個矢量,表示每個分類的可能性),計算每個分類的概率(0, 1)。
損失函數根據softmax的計算結果y^和期望結果y,根據交叉熵方法(cross entropy loss) 可得到損失L
。
softmax函數
softmax:yti^=softmax(oti)=eoti∑keotkyt^=softmax(zt)=[?eoti∑keotk?]softmax′(zt)=?yt?zt={yti^(1?yti^),?yti^ytj^,if?i=jif?i≠j
證明
softmax′(zt)=?yt^?ztif?i=j?yti^?otiif?i≠j?ytj^?oti=(eoti∑keotk)′=(1?S∑keotk)′?// set?S=∑k≠ieotk=(1?SS+eoti)′=S?eoti(S+eoti)2=SS+eoti?eotiS+eoti=SS+eoti?eotiS+eoti=(1?eotiS+eoti)?eotiS+eoti=(1?eoti∑keotk)?eoti∑keotk=(1?yti^)?yti^=(eotj∑keotk)′=(eotjS+eoti)′?// set?S=∑k≠ieotk=?eotj?eoti(S+eoti)2=?eotjS+eoti?eotiS+eoti=?eotj∑keotk?eoti∑keotk=?ytj^?yti^(16)(17)(18)(19)(20)(21)(22)(23)(24)(25)(26)(27)(28)(29)(30)(31)
什么是歸一化??
?????? 數據歸一化,就是將數據映射到[0,1]或[-1,1]區間或更小的區間,比如(0.1,0.9) 。
為什么要歸一化處理??
<1>輸入數據的單位不一樣,有些數據的范圍可能特別大,導致的結果是神經網絡收斂慢、訓練時間長。
<2>數據范圍大的輸入在模式分類中的作用可能會偏大,而數據范圍小的輸入作用就可能會偏小。
<3>由于神經網絡輸出層的激活函數的值域是有限制的,因此需要將網絡訓練的目標數據映射到激活函數的值域。例如神經網絡的輸出層若采用S形激活函數,由于S形函數的值域限制在(0,1),也就是說神經網絡的輸出只能限制在(0,1),所以訓練數據的輸出就要歸一化到[0,1]區間。
<4>S形激活函數在(0,1)區間以外區域很平緩,區分度太小。例如S形函數f(X)在參數a=1時,f(100)與f(5)只相差0.0067。
總結
以上是生活随笔為你收集整理的人工神经网络之激活函数 -softmax函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人工神经网络之激活函数 -RELU函数
- 下一篇: Scala入门到精通——第二十八节 Sc