天天看點

sigmoid函數、tanh函數、softmax函數及求導sigmoid函數及求導tanh函數及求導softmax函數及求導

sigmoid函數和tanh函數都是激活函數,接收一個輸入,産生一個輸出。這裡的求導是對激活函數求導。而softmax函數是一個多輸入多輸出的激活函數,這裡提到的求導是對經過softmax函數後進行交叉熵計算得到的損失函數求導。

sigmoid函數及求導

sigmoid激活函數形式為:

σ ( x ) = s i g m o i d ( x ) = 1 1 + e − x \sigma (x)=sigmoid(x)=\frac{1}{1+e^{-x}} σ(x)=sigmoid(x)=1+e−x1​

其導數為:

d σ ( x ) d x = σ ( x ) ( 1 − σ ( x ) ) \frac{\text d \sigma(x)}{\text dx}=\sigma(x)(1-\sigma(x)) dxdσ(x)​=σ(x)(1−σ(x))

tanh函數及求導

tanh激活函數形式為:

t a n h ( x ) = e x − e − x e x + e − x tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+e−xex−e−x​

其導數為:

d t a n h ( x ) d x = 1 − ( t a n h ( x ) ) 2 \frac{\text d tanh(x)}{\text dx}=1-(tanh(x))^2 dxdtanh(x)​=1−(tanh(x))2

softmax函數及求導

sigmoid函數以及tanh函數的求導都是比較簡單的,而softmax函數的求導則稍顯複雜。詳細求導過程詳見我的另一篇部落格softmax函數及交叉熵函數求導,這裡隻是總結三種函數的求導。

這裡以神經網絡多分類問題為例,假設輸出層有 n n n個神經元,輸出為 z 1 , z 2 , . . . , z n z_1,z_2,...,z_n z1​,z2​,...,zn​,經過softmax函數後的輸出為 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1​,a2​,...,an​, a i a_i ai​的計算公式為:

a i = e z i ∑ j = 1 n e z j a_i=\frac{e^{z_i}}{\sum_{j=1}^{n}{e^{z_j}}} ai​=∑j=1n​ezj​ezi​​

假設真實标簽為 y 1 , y 2 , . . . , y n y_1,y_2,...,y_n y1​,y2​,...,yn​,由于是分類問題,是以 y i y_i yi​的取值為0或1,并且 ∑ i = 1 n y i = 1 \sum_{i=1}^{n}y_i=1 ∑i=1n​yi​=1。則交叉熵損失函數為:

L ( a , y ) = − ∑ i n y i ln ⁡ a i L(\bold{a},\bold{y})=-\sum_{i}^ny_i\ln a_i L(a,y)=−i∑n​yi​lnai​

則其導數為:

∂ L ∂ z i = a i − y i \frac{\partial L}{\partial z_i}=a_i-y_i ∂zi​∂L​=ai​−yi​

繼續閱讀