算法工程師的數學基礎|微積分之導數

【算法工程師的數學基礎】系列將會從線性代數、微積分、數值優化、概率論、信息論五個方面進行介紹,感興趣的歡迎關註【搜索與推薦Wiki】公眾號,獲得最新文章。

《算法工程師的數學基礎》已更新:

  • 1、算法工程師的數學基礎|線性代數中的向量和向量空間
  • 2、算法工程師的數學基礎|線性代數中的矩陣
  • 3、算法工程師的數學基礎|微積分之導數相關介紹

導數(derivative)是微積分學中重要的基礎概念。本篇主要介紹導數相關的知識,包括:概念介紹、導數法則、常見函數的導數、基本求導函數法則與導數公式。

概念介紹

對於定義域和值域都是實數域的函數f: R rightarrow R,若f(x)在點x_0的某個鄰域Delta x內,極限:

f'(x_0) = underset{ Delta x rightarrow 0}{lim} frac{ f(x_0 +Delta x) – f(x)}{ Delta x } \

存在,則稱函數f(x)在點x_0處可導,f(x_0)稱為其導數,或導函數。

若函數f(x)在其定義域包含的某區間內每一個點都可導,那麼也可以說函數f(x)在這個區間內可導。連續函數不一定可導,可導函數一定連續。例如函數|x|為連續函數,但在點x=0處不可導。

對於一個多變量函數f: R^d rightarrow R,它的偏導數(partial derivative)是關於其中一個變量x_i的導數,而保持其他變量固定,可以記為f_{x_i}'(x),bigtriangledown _{x_i} f(x),frac{partial f(x)}{ partial x_i}frac{partial }{ partial_{x_i}}f(x)

對於一個d維向量x in R^d,函數f(x)=f(x_1, x_2,…,x_d) in R,則f(x)關於x的偏導數為:

frac{partial f(x)}{partial x} = begin{bmatrix} frac{partial f(x)}{ partial x_1}\ .\ .\ .\ frac{partial f(x)}{ partial x_d} end{bmatrix} in R^d \

若函數f(x) in R^k的值也為一個向量,則f(x)關於x的偏導數為:

frac{partial f(x)}{partial x} = begin{bmatrix} frac{partial f_1(x)}{ partial x_1} & … & frac{partial f_k(x)}{ partial x_1} \ . & . & .\ . & . & .\ . & . & .\ frac{partial f_1(x)}{ partial x_d} & … & frac{partial f_k(x)}{ partial x_d} end{bmatrix} in R^{d*k} \

稱為Jacobian矩陣。

導數法則

一個復雜函數的導數的計算可以通過一下法則來簡化。

加減法則

y = f(x), z=g(x) 則:

frac{ partial (y+z) }{ partial x } = frac{ partial y}{partial x} + frac{ partial z}{partial x} \

乘法法則

(1) 若 x in R^p, y= f(x) in R^q, z = g(x) in R^q ,則:

frac{partial y^T z}{partial x} =frac{partial y}{partial x} z + frac{partial z}{partial x} y \

(2) 若 x in R^p, y= f(x) in R^s, z = g(x) in R^t, A in R^{s *t}x無關,則:

frac{partial y^T Az}{partial x} =frac{partial y}{partial x} Az + frac{partial z}{partial x} A^Ty \

(3)若 x in R^p, y= f(x) in R, z = g(x) in R^p ,則:

frac{partial yz}{partial x} =y frac{partial z}{partial x} + frac{partial y}{partial x} z^T \

鏈式法則

鏈式法則(chain rule)是求復合函數導數的一個法則,是在微積分中計算導數的一種常見方法。

(1) 若 x in R^p, y= g(x) in R^s, z = f(y) in R^t ,則:

frac{partial z}{partial x} =frac{partial y}{partial x} frac{partial z}{partial y} \

(2)若 X in R^{p*q}為矩陣, Y= g(x) in R^{s*t}, z = f(Y) in R ,則:

frac{partial z}{partial X_{ij} } =tr((frac{partial z}{partial Y})^T frac{partial Y}{partial X_{ij}} ) \

(3)若 X in R^{p*q}為矩陣, y= g(x) in R^s, z = f(Y) in R ,則

frac{partial z}{partial X_{ij} } =(frac{partial z}{partial Y})^T frac{partial y}{partial X_{ij}} \

(4)若 x in R, u= u(x) in R^p, g = g(u) in R^q ,則:

frac{partial g}{partial x } =frac{partial g}{partial u} frac{partial u}{partial x} \

常見函數的導數

這裡介紹常用的幾個函數。

標量函數及其導數

指示函數 指示函數I(x=c)為:

I(x=c) = left{begin{matrix} 1 & if & x=c\ 0 & else & 0 end{matrix}right. \

指示函數I(x=c)除瞭在c處外,其導數為0。

多項式函數 如果f(x)=x^r(冪函數),其中r是非零實數,那麼導數:

frac{ partial x^r}{partial x} = rx^{r-1} \

r=0時,常函數的導數是0.

指數函數 底數為e的指數函數f(x)= exp(x) =e^x的導數是他本身。

frac{ partial exp(x)}{partial x} = exp(x) \

對數函數 底數為e的對數函數 log(x) 的導數則是x^{-1}

frac{ partial log(x)}{partial x} =frac{1}{x} \

向量函數及其導數

frac{ partial x }{partial x} =I \ frac{ partial Ax }{partial x} =A^T \ frac{ partial x^TA }{partial x} =A \

按位計算的向量函數及其導數

假設一個函數f(x)的輸入是標量x。對於一組K個標量x_1, x_2,…,x_K,我們可以通過f(x)得到另外一組K個標量z_1, z_2,…,z_K

z_k = f(x_k), forall k=1,…,K \

為瞭簡單起見,我們定義x = [x_1, …, x_K]^T, z =[z_1, …, z_K]

z = f(x) \

其中,f(x)是按位運算的,即[f(x)]_i = f(x_i)

x為標量時,f(x)的導數記為f'(x)。當輸入為K維向量x=[x_1, …,x_K]^T時,其導數為一個對角矩陣。

frac{ partial f(x) }{partial x} = [ frac{partial f(x_j)}{partial x_i} ]_{K*K} \

logistic函數

Logistic函數是一種常用的S形函數,是比利時數學傢Pierrs Francois Verhulst 在1844-1845年研究種群數量的增長模型時提出命名的,最初作為一種生態學模型。

Logistic的函數定義為:

logistic(x) = frac{L}{1+exp(-k(x-x_0)} \

這裡exp(.)函數表示自然對數函數,x_0是中心點,L是最大值,k是曲線的傾斜度。下圖給出瞭幾種不同參數的logistic函數曲線,當x rightarrow -infty時,logistic(x) rightarrow 0,當x rightarrow +infty時,logistic(x) rightarrow L

當參數為(k=1,x_0=0, L=1)時,logistic函數稱為標準logistic函數,記為sigma (x)

sigma (x) = frac{1}{ 1 +exp(-x) } \

標準logistic函數在機器學習中使用得非常廣泛,經常用來將一個實數空間的數映射到(0,1)區間。

標準logistic函數的導數為(推導過程可以參考《推薦系統開發實戰》一書的第八章):

sigma(x)' = sigma(x)(1-sigma(x)) \

當輸入為K維向量x=[x_1, …, x_K]^T時,其導數為:

sigma' (x) = diag( sigma(x) odot (1-sigma(x)) ) \

softmax函數

softmax函數是將多個標量映射為一個概率分佈。

對於K個標量x_1, …, x_K,softmax函數定義為:

z_k = softmax(x_k) = frac{exp(x_k)}{ sum_{i=1}^{K} exp(x_k)} \

這樣我們可以將K個變量x_1, x_2, …, x_K轉變為一個分佈z_1, …, z_K,滿足:

z_k in [0,1], forall k, sum_{i=1}^{K}z_k =1 \

當softmax函數的輸入為K維向量x時,

hat z=softmax(x) \ = frac{a}{ sum_{k=1}^{K} exp(x_k)} begin{bmatrix} exp(x_1)\ .\ .\ .\ exp(x_k) end{bmatrix} \ = frac{exp(x)}{ sum_{k=1}^{K} exp(x_k) } \ = frac{exp(x)}{ 1^T_K exp(x) } \

其中,1^T_K=[1,…,1]_{K*1}K維的全1的向量。

其導數為:

frac{partial softmax(x)}{partial x} = frac{ partial (frac{exp(x)}{ 1^T_K exp(x) } ) }{ partial x}= diag(softmax(x)) – softmax(x)softmax(x)^T \

基本求導函數法則與導數公式

基本初等函數求導公式

(C)'=0 \(x^u)'=ux^{u-1} \(sin,x)' = cos,x \(cos,x)' = -sin,x \(tan,x)' = sec^2 ,x \(cot)'x = – csc^2, x \(sec,x)' = sec,x , tan,x \(csc,x)' = -csx,x , cot,x \(a^x)' = a^x ln a \(e^x)' = e^x \(log_a,x)' = frac{1}{x,ln,a} \(ln,x)' = frac{1}{x} \(arc,sin,x)' = frac{1}{sqrt{1-x^2}} \(arc,cos,x)' = – frac{1}{sqrt{1-x^2}} \(arc,tan,x)' = frac{1}{sqrt{1+x^2}} \(arc,cot,x)' = – frac{1}{sqrt{1+x^2}} \

函數的和、差、商、積的求導法則

其實上文中已經簡單介紹瞭函數的求導法則,這裡再用一種更加簡要的方式說明一下: 設u=u(x), v= v(x),且都可導,則:

(u pm v)' = u' pm v' \ \ (Cu)' = Cu' \ \ (uv)' = u'v + uv' \ \ (frac{u}{v})' = frac{u'v-uv'}{v^2} \

反函數求導法則

如果函數x=f(y)在區間I_y內單調、可導且f'(y)neq0,那麼它的反函數y=f^{−1}(x)在區間I_x={x∣x=f(y),y in I_y}內也可導,且

[f^{-1}(x)]'=frac{1}{f'(y)} \

frac{dy}{dx} = frac{1}{ frac{dx}{dy}} \

結論可以簡單表達為:反函數的導數等於直接函數導數的倒數。

復合函數求導法則

y=f(u),而u=varphi (x)f(u), varphi(x)都可導,則復合函數 y=f[varphi(x)]的導數為:

frac{dy}{dx} = frac{dy}{du}frac{du}{dx} \

y'= f'(u)varphi'(x) \

雙曲函數和反雙曲函數的導數

雙曲函數和反雙曲函數都是初等函數,可以用上邊介紹的初等函數求導方式推導出來。

(1)雙曲正弦函數和反雙曲正弦函數

sinh x = frac{e^{x}-e^{-x}}{2} \arsinh,x = ln(x+sqrt{x^2+1}) \

他們的導數為:

(sinh x)' = cosh x \(arsinh,x)' = frac{1}{sqrt{x^2+1}} \

(2)雙曲餘弦函數和反雙曲餘弦函數

cosh x=frac{e^{x}+e^{-x}}{2} \arcosh x = ln(x+sqrt{x^2-1}) \

他們的導數為:

(cosh x)'= sinh x \ (arcosh x)' = frac{1}{sqrt{x^2-1}} \

(3)雙曲正切函數和反雙曲正切函數

tanh x= frac{sinh x}{cosh x} \artanh,x = frac{1}{2} ln(frac{1+x}{1-x}) \

他們的導數為:

(tanh x)'= frac{1}{(cosh x)^2} \(artanh,x)' = frac{1}{1-x^2} \

還有幾種不常用的雙曲函數和反雙曲函數如下(這裡不再介紹其導數,感興趣的可以自行根據上述介紹進行推導):

  • 雙曲餘切函數和反雙曲餘切函數

coth x = frac{1}{tanh x} \arcoth,x = frac{1}{2} ln(frac{x+1}{x-1}) \

  • 雙曲正割函數和雙曲正割函數

sech,x=frac{1}{cosh x} \arsech,x=ln(frac{1+sqrt{1-x^2}}{x}) \

  • 雙曲餘割函數和雙曲餘割函數

csch,x=frac{1}{sinh x} \arcsch,x= ln(frac{1}{x} + frac{sqrt{1+x^2}}{|x|}) \

更多關於雙曲函數和反雙曲函數可以參考Wiki:

https://zh.wikipedia.org/wiki/%E5%8F%8C%E6%9B%B2%E5%87%BD%E6%95%B0

https://zh.wikipedia.org/wiki/%E5%8F%8D%E5%8F%8C%E6%9B%B2%E5%87%BD%E6%95%B0


我是Thinkgamer!

掃一掃 關註微信公眾號!號主 專註於搜索和推薦系統,嘗試使用算法去更好的服務於用戶,包括但不局限於機器學習,深度學習,強化學習,自然語言理解,知識圖譜,還不定時分享技術,資料,思考等文章!

赞(0)