【算法工程師的數學基礎】系列將會從線性代數、微積分、數值優化、概率論、信息論五個方面進行介紹,感興趣的歡迎關注【搜索與推薦Wiki】公衆號,獲得最新文章。
《算法工程師的數學基礎》已更新:
導數(derivative)是微積分學中重要的基礎概念。本篇主要介紹導數相關的知識,包括:概念介紹、導數法則、常見函數的導數、基本求導函數法則與導數公式。
概念介紹
對於定義域和值域都是實數域的函數f:R→R,若f(x)在點x0的某個鄰域Δx內,極限:
f′(x0)=Δx→0limΔxf(x0+Δx)−f(x)
存在,則稱函數f(x)在點x0處可導,f(x0)稱爲其導數,或導函數。
若函數f(x)在其定義域包含的某區間內每一個點都可導,那麼也可以說函數f(x)在這個區間內可導。連續函數不一定可導,可導函數一定連續。例如函數∣x∣爲連續函數,但在點x=0處不可導。
對於一個多變量函數f:Rd→R,它的偏導數(partial derivative)是關於其中一個變量xi的導數,而保持其他變量固定,可以記爲$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∈Rd,函數f(x)=f(x1,x2,...,xd)∈R,則f(x)關於x的偏導數爲:
∂x∂f(x)=⎣⎢⎢⎢⎢⎢⎡∂x1∂f(x)...∂xd∂f(x)⎦⎥⎥⎥⎥⎥⎤∈Rd
若函數f(x)∈Rk的值也爲一個向量,則f(x)關於x的偏導數爲:
∂x∂f(x)=⎣⎢⎢⎢⎢⎢⎡∂x1∂f1(x)...∂xd∂f1(x).........∂x1∂fk(x)...∂xd∂fk(x)⎦⎥⎥⎥⎥⎥⎤∈Rd∗k
稱爲Jacobian矩陣。
導數法則
一個複雜函數的導數的計算可以通過一下法則來簡化。
加減法則
y=f(x),z=g(x) 則:
∂x∂(y+z)=∂x∂y+∂x∂z
乘法法則
(1) 若 x∈Rp,y=f(x)∈Rq,z=g(x)∈Rq ,則:
∂x∂yTz=∂x∂yz+∂x∂zy
(2) 若 x∈Rp,y=f(x)∈Rs,z=g(x)∈Rt,A∈Rs∗t 和 x無關,則:
∂x∂yTAz=∂x∂yAz+∂x∂zATy
(3)若 x∈Rp,y=f(x)∈R,z=g(x)∈Rp ,則:
∂x∂yz=y∂x∂z+∂x∂yzT
鏈式法則
鏈式法則(chain rule)是求複合函數導數的一個法則,是在微積分中計算導數的一種常見方法。
(1) 若 x∈Rp,y=g(x)∈Rs,z=f(y)∈Rt ,則:
∂x∂z=∂x∂y∂y∂z
(2)若 X∈Rp∗q爲矩陣, Y=g(x)∈Rs∗t,z=f(Y)∈R ,則:
∂Xij∂z=tr((∂Y∂z)T∂Xij∂Y)
(3)若 X∈Rp∗q爲矩陣, y=g(x)∈Rs,z=f(Y)∈R ,則
∂Xij∂z=(∂Y∂z)T∂Xij∂y
(4)若 x∈R,u=u(x)∈Rp,g=g(u)∈Rq ,則:
∂x∂g=∂u∂g∂x∂u
(4)的文字部分,u=u(x)中左邊的u表示向量, g=g(u)左邊的g表示向量,g(u)表示函數,u表示向量
常見函數的導數
這裏介紹常用的幾個函數。
標量函數及其導數
指示函數 指示函數I(x=c)爲:
I(x=c)={10ifelsex=c0
指示函數I(x=c)除了在c處外,其導數爲0。
多項式函數 如果f(x)=xr(冪函數),其中r是非零實數,那麼導數:
∂x∂xr=rxr−1
當r=0時,常函數的導數是0.
指數函數 底數爲e的指數函數f(x)=exp(x)=ex的導數是他本身。
∂x∂exp(x)=exp(x)
對數函數 底數爲e的對數函數 log(x) 的導數則是x−1
∂x∂log(x)=x1
向量函數及其導數
∂x∂x=I∂x∂Ax=AT∂x∂xTA=A
上面公式中涉及的字母都是向量
按位計算的向量函數及其導數
假設一個函數f(x)的輸入是標量x。對於一組K個標量x1,x2,...,xK,我們可以通過f(x)得到另外一組K個標量z1,z2,...,zK
zk=f(xk),∀k=1,...,K
爲了簡單起見,我們定義x=[x1,...,xK]T, z=[z1,...,zK]
z=f(x)
其中,f(x)是按位運算的,即[f(x)]i=f(xi)
當 x爲標量時,f(x)的導數記爲f′(x)。當輸入爲K維向量x=[x1,...,xK]T時,其導數爲一個對角矩陣。
∂x∂f(x)=[∂xi∂f(xj)]K∗K
logistic函數
Logistic函數是一種常用的S形函數,是比利時數學家Pierrs Francois Verhulst 在1844-1845年研究種羣數量的增長模型時提出命名的,最初作爲一種生態學模型。
Logistic的函數定義爲:
logistic(x)=1+exp(−k(x−x0)L
這裏exp(.)函數表示自然對數函數,x0是中心點,L是最大值,k是曲線的傾斜度。下圖給出了幾種不同參數的logistic函數曲線,當x→−∞時,logistic(x)→0,當x→+∞時,logistic(x)→L
當參數爲(k=1,x0=0,L=1)時,logistic函數稱爲標準logistic函數,記爲σ(x)
σ(x)=1+exp(−x)1
標準logistic函數在機器學習中使用得非常廣泛,經常用來將一個實數空間的數映射到(0,1)區間。
標準logistic函數的導數爲(推導過程可以參考《推薦系統開發實戰》一書的第八章):
σ(x)′=σ(x)(1−σ(x))
當輸入爲K維向量x=[x1,...,xK]T時,其導數爲:
σ′(x)=diag(σ(x)⊙(1−σ(x)))
softmax函數
softmax函數是將多個標量映射爲一個概率分佈。
對於K個標量x1,...,xK,softmax函數定義爲:
zk=softmax(xk)=∑i=1Kexp(xk)exp(xk)
這樣我們可以將K個變量x1,x2,...,xK轉變爲一個分佈z1,...,zK,滿足:
zk∈[0,1],∀k,i=1∑Kzk=1
當softmax函數的輸入爲K維向量x時,
z^=softmax(x)=∑k=1Kexp(xk)a⎣⎢⎢⎢⎢⎡exp(x1)...exp(xk)⎦⎥⎥⎥⎥⎤=∑k=1Kexp(xk)exp(x)=1KTexp(x)exp(x)
其中,1KT=[1,...,1]K∗1是K維的全1的向量。
其導數爲:
∂x∂softmax(x)=∂x∂(1KTexp(x)exp(x))=diag(softmax(x))−softmax(x)softmax(x)T
基本求導函數法則與導數公式
基本初等函數求導公式
(C)′=0
(xu)′=uxu−1
(sinx)′=cosx
(cosx)′=−sinx
(tanx)′=sec2x
(cot)′x=−csc2x
(secx)′=secxtanx
(cscx)′=−csxxcotx
(ax)′=axlna
(ex)′=ex
(logax)′=xlna1
(lnx)′=x1
(arcsinx)′=1−x21
(arccosx)′=−1−x21
(arctanx)′=1+x21
(arccotx)′=−1+x21
函數的和、差、商、積的求導法則
其實上文中已經簡單介紹了函數的求導法則,這裏再用一種更加簡要的方式說明一下:
設u=u(x),v=v(x),且都可導,則:
(u±v)′=u′±v′
(Cu)′=Cu′
(uv)′=u′v+uv′
(vu)′=v2u′v−uv′
反函數求導法則
如果函數x=f(y)在區間Iy內單調、可導且f′(y)=0,那麼它的反函數y=f−1(x)在區間Ix=x∣x=f(y),y∈Iy內也可導,且
[f−1(x)]′=f′(y)1
或
dxdy=dydx1
結論可以簡單表達爲:反函數的導數等於直接函數導數的倒數。
複合函數求導法則
設y=f(u),而u=φ(x)且f(u),φ(x)都可導,則複合函數 y=f[φ(x)]的導數爲:
dxdy=dudydxdu
或
y′=f′(u)φ′(x)
雙曲函數和反雙曲函數的導數
雙曲函數和反雙曲函數都是初等函數,可以用上邊介紹的初等函數求導方式推導出來。
(1)雙曲正弦函數和反雙曲正弦函數
sinhx=2ex−e−xarsinhx=ln(x+x2+1)
他們的導數爲:
(sinhx)′=coshx(arsinhx)′=x2+11
(2)雙曲餘弦函數和反雙曲餘弦函數
coshx=2ex+e−xarcoshx=ln(x+x2−1)
他們的導數爲:
(coshx)′=sinhx(arcoshx)′=x2−11
(3)雙曲正切函數和反雙曲正切函數
tanhx=coshxsinhx
artanhx=21ln(1−x1+x)
他們的導數爲:
(tanhx)′=(coshx)21
(artanhx)′=1−x21
還有幾種不常用的雙曲函數和反雙曲函數如下(這裏不再介紹其導數,感興趣的可以自行根據上述介紹進行推導):
- 雙曲餘切函數和反雙曲餘切函數
cothx=tanhx1
arcothx=21ln(x−1x+1)
- 雙曲正割函數和雙曲正割函數
sechx=coshx1
arsechx=ln(x1+1−x2)
- 雙曲餘割函數和雙曲餘割函數
cschx=sinhx1
arcschx=ln(x1+∣x∣1+x2)
更多關於雙曲函數和反雙曲函數可以參考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
掃一掃 關注微信公衆號!號主 專注於搜索和推薦系統,嘗試使用算法去更好的服務於用戶,包括但不侷限於機器學習,深度學習,強化學習,自然語言理解,知識圖譜,還不定時分享技術,資料,思考等文章!