softmax函式
softmax函式,一般用於多分類的問題上,將多個神經元的輸入,對映在(0,1)之間。可以當作概率的計算。這一點跟sigmoid函式相似。
softmax的計算公式為:
s i=
ei∑j
=1ne
js_i = \frac^n e^j}
si=∑j
=1n
ejei
【值得關注的是: ∑i=
1nsi
=1
\sum_^n s_i = 1
∑i=1n
si=
1】相當於每個神經元的exp值 除上 所有神經元的exp值總和。
舉個簡單的例子。
輸入三個神經元的值,分別是 1,2,3,then e1=
2.7,e2
=7.3,e
3=
20e^1 = 2.7, e^2 = 7.3, e^3 = 20
e1=2.7
,e2=
7.3,
e3=20s1
=2.7
2.7+
7.3+20=
0.09,s
2=
7.32.7
+7.3+20
=0.24,s
3=
202.7
+7.3+20
=0.67
s_1 = \frac= 0.09, s_2 = \frac= 0.24,s_3 = \frac= 0.67
s1=2.
7+7.
3+20
2.7
=0.0
9,s2
=2.
7+7.
3+20
7.3
=0.2
4,s3
=2.
7+7.
3+20
20=
0.67
s 1+
s2+s
3=
1s_1 +s_2 + s_3 = 1
s1+s2
+s3
=1, 所以softmax求出來的值可以當作 概率,記為logit
實際上問題,輸入的神經元為每個class的值,然後通過softmax函式的過濾,變成每個class的概率值,因此可應用在分類問題上,即選取概率最大的那個類別便是 predict值
值得關注的另乙個問題是:sofrmax經常遇到數值溢位的問題,因為有大量的指數運算,因此當輸入值太大,便會出現溢位error。因此一般會對輸入值進行處理,比如減去數值中的最大值。
例子如下:
relu函式 【rectified linear unit修正線性單元】score = np.array(
[122
,232
,333])
#減去array中的最大值
score -= np.
max(score)
#然後再算每個softmax值
s = np.exp(score)
/np.
sum(np.exp(score)
)
relu函式的公式如下:
f (x
)=
0, & \text \\ x, & \text \end
f(x)={
0,x,
if
x=< 0
if x
>0
relu函式是分段函式,用來把所有的負值變成0,而正值不變。稱為單側抑制。 由於relu函式的存在,使得神經網路中的神經元具有了稀疏啟用性,執行效率大大地增強。而且relu使得模型能夠更好地挖掘相關特徵,擬合訓練資料。
python實現 softmax啟用函式
softmax函式 以上版本有問題 a np.array 1010,1000,990 np.exp a np.sum np.exp a main 1 runtimewarning overflow encountered in exp main 1 runtimewarning invalid va...
機器學習中的Softmax函式
在使用logistic做線性回歸時,如果我們遇到多分類的問題,我們可以考慮使用softmax函式進行篩選 函式公式如下 so ftma x yi expyi jexpyj 原理是對logistic回歸所取得的評分 score 逐個求對數,然後除以所有評分的對數的總和,可以理解為取評分最高的乙個分類。...
機器學習 Softmax推導
lr可以看成是softmax的特例。lr主要是用於二分類,如果面臨的是多分類問題,可以用softmax。softmax通常也是深度學習影象識別網路的最後一層。在lr中,引數 是乙個向量,而在softmax中,引數可以看成是乙個矩陣。也就是每乙個輸出都對應著乙個引數向量 h xi p yi 1 x i...