在神經網路裡經常使用sigmoid做啟用函式,它的導數是怎麼樣求解呢?因為要使用它的導數來計算梯度下降。
這個過程如下:
1. sigmoid
函式:f(z
) = 1 / (1 + exp( − z))
導數:f(z
)' = f(
z)(1 − f(
z))求導過程如下:
網上有不少關於sigmoid函式求導的文章(比如來自csdn的博文sigmoid函式求導與自然指數),但是求導過程中對於怎麼由(1/(1+exp(-x)))'一下推導至exp(-x)/(1+exp(-x))^2沒有提及。雖然對於熟練函式求導的朋友們不難,但對於剛接觸函式求導或者隔了若干年忘記函式求導的朋友們還是有不少疑惑。
這裡借助函式的和的求導法則(f(x)+g(x))'=f(x)'+g(x)',復合函式的求導法則f(g(x))'=f(u)'g(x)',u=g(x)以及把(1/(1+exp(-x)))'轉成((1+exp(-x))^-1)',那麼求導過程就清楚多了:
(1/(1+exp(-x)))'=((1+exp(-x))^-1)'=(-1)((1+exp(-x))^-2)(1+exp(-x))'=(-1)((1+exp(-x))^-2)(exp(-x))'
而(exp(-x))'可以先轉成(exp(x)^-1)',於是她又是乙個復合函式的求導,即(exp(x)^-1)對exp(x)的導數再乘上exp(x)對x的導數,又基本初等函式求導公式告訴我們,(exp(x))'=exp(x),所以(exp(-x))'=(exp(x)^-1)'=(-1)(exp(x)^-2)(exp(x))'=(-1)(exp(x)^-2)exp(x)=(-1)(exp(x)^-1)=(-1)exp(-x)
那麼:(-1)((1+exp(-x))^-2)(exp(-x))'=(-1)((1+exp(-x))^-2)(-1)exp(-x)=exp(-x)((1+exp(-x))^-2)=exp(-x)/((1+exp(-x))^2)
至此,sigmoid函式求導的步驟補充完畢。
原文:
sigmoid函式求導與自然指數
在神經網路裡經常使用sigmoid做啟用函式,它的導數是怎麼樣求解呢?因為要使用它的導數來計算梯度下降。這個過程如下 1.sigmoid 函式 f z 1 1 exp z 導數 f z f z 1 f z 求導過程如下 下文解釋e的來由 2.tensorflow入門基本教程 再分享一下我老師大神的人...
5 指標與函式
c語言中值傳遞的本質是,當呼叫被調函式時,被調函式會在自己的函式棧中開闢相同型別的形參空間,並且將傳遞過來的值寫入形參空間儲存。傳遞位址和普通傳參沒有本質的區別。傳遞位址和普通傳參都是值傳遞,實參是數值,也可以是變數。數值沒有普通值傳遞,因為普通值傳遞需要的形參空間大,效率低,所以只有位址傳遞。四種...
5 2指標與函式變元
由於c語言以按值呼叫的方式將變元傳遞給函式,因而被呼叫函式不能直接更改呼叫函式中的變數的值。例如下面的swap函式就是錯誤的 swap a,b void swap int x,int y 錯誤的函式定義 由於按值呼叫,上swap函式將不會影響呼叫它的程式中的變元的值,只交換臨時變數區中的對應的臨時拷...