1. 程式人生 > >神經網路中的Softmax啟用函式

神經網路中的Softmax啟用函式

Softmax迴歸模型是logistic迴歸模型在多分類問題上的推廣,適用於多分類問題中,且類別之間互斥的場合。

Softmax將多個神經元的輸出,對映到(0,1)區間內,可以看成是當前輸出是屬於各個分類的概率,從而來進行多分類。

假設有一個數組V,Vi表示V中的第i個元素,那麼Vi元素的softmax值就是:

例如 V = [9,6,3,1] , 經過Softmax函式輸出 V_Softmax = [0.950027342724 0.0472990762635 0.00235488234367 0.000318698668969],以下是轉化程式:

# -*- coding: utf-8 -*-
import math

V = [9,6,3,1]

v1 = math.exp(9)
v2 = math.exp(6)
v3 = math.exp(3)
v4 = math.exp(1)

v_sum = v1+v2+v3+v4

print v1/v_sum,v2/v_sum,v3/v_sum,v4/v_sum
可以看到,Softmax函式把輸出對映成區間在(0,1)的值,並且做了歸一化,所有元素的和累加起來等於1。可以直接當作概率對待,選取概率最大的分類作為預測的目標。

為什麼是Softmax

其他很多函式也可以完成選取最大值,並歸一化的功能,但是為什麼現在神經網路中普遍採用Softmax作為迴歸分類函式呢。比如最簡單的,把上例中的向量 V = [9,6,3,1]直接歸一化,結果 v_norm = [0.5294, 0.3157, 0.1578, 0.0526], 單就分類來說,9對應的歸一化值 0.5294也是最大的,分類也沒錯。

之所以選擇Softmax,很大程度是因為Softmax中使用了指數,這樣可以讓大的值更大,讓小的更小,增加了區分對比度,學習效率更高

。第二個是因為softmax是連續可導的,消除了拐點,這個特性在機器學習的梯度下降法等地方非常必要。