本文中 (x0,x1,...,xm) 代表一個向量,也就是一個 m 行1列的矩陣。
在監督式的深度學習中,輸入通常是一個向量,用x表示,輸出 y 則可以分為多種情況。
- 标量。y表示輸入 x 屬于某一類别的機率。
-
向量。此時輸入x可能屬于多個類别。 y=(y0,y1,...,yn) 。元素 yi 代表向量屬于類别 i 的可能性。數值越大,可能性越高。但是,深度學習模型輸出的yi不必然是介于0和1之間的機率值, softmax 函數的作用就是對向量進行歸一化,生成機率值。
softmax 函數的作用如下。
softmax((y0,y1,...,yn))=(y0Σni=0yi,...,ynΣni=0yi)
也就是說, softmax 函數的輸入是一個向量,而其輸出也是一個向量,向量中的每個元素都是介于0和1之間的機率值。下面将以最簡單的形式來描述 softmax 函數的定義和求導問題。假設輸入是包含3個元素的向量,而輸出是包含2個元素的向量,也就說 m=2,n=1 ,如下圖所示。
圖中表示了從輸入到輸出的一個轉換過程,參數有6個,可以寫成一個矩陣的形式。
θ=[w00,w10,w20w01,w11,w21]
這裡把與輸出向量中每個元素連結的權重組織成一行,是以共有兩行。令 θ0=[w00,w10,w20] , θ1=[w01,w11,w21] ,則有。
θ=[θ0θ1]
用 h 來代表轉換函數,則有如下式子。
y0=h(θ0,x)
y1=h(θ1,x)
針對這個具體例子則有。
softmax((y0,y1))=(h(θ0,x)h(θ0,x)+h(θ1,x),h(θ1,x)h(θ0,x)+h(θ1,x))
為了友善書寫,令 z0=h(θ0,x)h(θ0,x)+h(θ1,x)
z1=h(θ1,x)h(θ0,x)+h(θ1,x)
按照對向量求導的定義,其結果應該是一個Jacobian矩陣,則對 softmax 函數的求導可以寫為如下形式。
∂softmax((y0,y1))∂x=⎡⎣⎢⎢∂z0∂x∂z1∂x⎤⎦⎥⎥=⎡⎣⎢⎢⎢∂z0∂x0∂z0∂x1∂z0∂x2∂z1∂x0∂z1∂x1∂z1∂x2⎤⎦⎥⎥⎥