天天看點

softmax函數的定義及求導

本文中 (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 ,如下圖所示。

    softmax函數的定義及求導

    圖中表示了從輸入到輸出的一個轉換過程,參數有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⎤⎦⎥⎥⎥

繼續閱讀