softmax函式用於將分類結果歸一化,形成乙個概率分布。作用類似於二分類中的sigmoid函式。
對於乙個k維向量z,我們想把這個結果轉換為乙個k個類別的概率分布p(z)
。softmax可以用於實現上述結果,具體計算公式為:
s of
tmax
(xi)
=exp
(xi)
∑jex
p(xj
)softmax(x_i) = \frac
softma
x(xi
)=∑
jex
p(xj
)ex
p(xi
)對於k維向量z來說,其中zi∈
rz_i \in r
zi∈
r,我們使用指數函式變換可以將元素的取值範圍變換到(0,
+∞
)(0, +\infin)
(0,+∞)
,之後我們再所有元素求和將結果縮放到[0,1],形成概率分布。
常見的其他歸一化方法,如max-min、z-score方法並不能保證各個元素為正,且和為1。
輸入向量x加上乙個常數c後求softmax結算結果不變,即:
s of
tmax
(x)=
soft
max(
x+c)
softmax(x) = softmax(x+c)
softma
x(x)
=sof
tmax
(x+c
)我們使用softmax(x)的第i個元素的計算來進行證明:
s of
tmax
(xi+
c)=e
xp(x
i+c)
∑jex
p(xj
+c)=
exp(
xi)∗
exp(
c)∑j
[exp
(xj)
∗exp
(c)]
=exp
(xi)
∗exp
(c)e
xp(c
)∗su
mjex
p(xj
)=ex
p(xi
)∑je
xp(x
j)=s
oftm
ax(x
i)
softmax(x_i+c) = \frac \\= \frac \\=\frac \\=\frac \\= softmax(x_i)
softma
x(xi
+c)
=∑j
exp(
xj+
c)ex
p(xi
+c)
=∑j
[ex
p(xj
)∗e
xp(c
)]ex
p(xi
)∗e
xp(c
)=e
xp(c
)∗su
mje
xp(x
j)e
xp(x
i)∗
exp(
c)=
∑je
xp(x
j)e
xp(x
i)
=sof
tmax
(xi
)由於指數函式的放大作用過於明顯,如果直接使用softmax計算公式sof
tmax
(xi)
=exp
(xi)
∑jex
p(xj
)softmax(x_i) = \frac
softma
x(xi
)=∑
jex
p(xj
)ex
p(xi
)進行函式實現,容易導致資料溢位(上溢)。所以我們在函式實現時利用其性質:先對輸入資料進行處理,之後再利用計算公式計算。具體使得實現步驟為:
查詢每個向量x的最大值c;
每個向量減去其最大值c, 得到向量y = x-c;
利用公式進行計算,softmax(x) = softmax(x-c) = softmax(y)
**如下:
import numpy as np
defsoftmax
(x):
""" softmax函式實現
引數:x --- 乙個二維矩陣, m * n,其中m表示向量個數,n表示向量維度
返回:softmax計算結果
"""assert
(len
(x.shape)==2
) row_max = np.
max(x, axis=axis)
.reshape(-1
,1) x -= row_max
x_exp = np.exp(x)
s = x_exp / np.
sum(x_exp, axis=axis, keepdims=
true
)return s
測試一下:
a =[[
1,2,
3],[
-1,-
2,-3
]]b =[[1
,2,3
]]c =[1,
2,3]
a = np.array(a)
b = np.array(b)
c = np.array(c)
print
(softmax(a)
)print
(softmax(b)
)print
(softmax(c)
)# error
輸出結果為:
[[ 0.09003057 0.24472847 0.66524096]
[ 0.66524096 0.24472847 0.09003057]]
[[ 0.09003057 0.24472847 0.66524096]]
traceback (most recent call last):
assert(len(x.shape) == 2)
assertionerror
Softmax函式詳解
softmax在機器學習中有非常廣泛的應用,但是剛剛接觸機器學習的人可能對softmax的特點以及好處並不理解,其實你了解了以後就會發現,softmax計算簡單,效果顯著,非常好用。我們先來直 一下,softmax究竟是什麼意思 我們知道max,假如說我有兩個數,a和b,並且a b,如果取max,那...
softmax函式應用
softmax函式應用 1.softmax初探 在機器學習中,softmax是十分常用而且重要的乙個函式,尤其在多分類的場景中使用廣泛。它把一些輸入對映為0 1之間的實數,並且歸一化保證和為1,因此多分類的概率之和也剛好為1。首先我們簡單來看看softmax是什麼意思。顧名思義,softmax由兩個...
softmax損失函式
首先我們來介紹一下資訊熵。資訊熵又叫kl散度,是資訊的平均編碼長度。給定資訊出現的概率向量p p1,p 2,pn p p 1,p 2,p n p p1 p2 pn 其中p ip i pi 為第i ii條資訊出現的概率,那麼資訊的平均編碼長度為h p i npilog 1 pih p sum i np...