- PyTorch深度學習實戰:從新手小白到數據科學家
- 張敏
- 3112字
- 2020-09-09 10:10:40
1.5 加油站之高等數學知識回顧
拋開課本多年,再次回頭,重溫數學知識,也許會有不一樣的感悟!本書的主要目的不是講解數學知識,而是幫助讀者回顧已經遺忘的數學知識。如果讀者要系統地復習或學習數學知識,建議找一本專業的數學書。
1.5.1 函數基礎知識
1.函數的定義
給定一個數據集A(定義域),假設其中的元素為x,現對數據集A中的元素x施加對應法則f,記作f(x),得到另一個數據集B(值域),假設數據集B中的元素為y,則y與x之間的等量關系可以用y=f(x)表示,我們把這個關系式稱為函數關系式,簡稱函數。函數的映射關系如圖1.28所示。函數概念包含3個要素:定義域A、值域B和對應法則f,其中核心是對應法則f,它是函數關系的本質特征。

圖1.28 函數的映射關系
簡單來看,函數就是一種從數據集A映射到數據集B的關系。例如,圓的面積公式為S=πr2,它表達的是面積和半徑之間的關系,有了這種關系,就可以在知道任何半徑的情況下計算出面積。函數通常使用y=f(x)的形式來表達,其中x是自變量,y是因變量,f是映射關系。而表示自變量在x0處取得的函數值。
很多人不喜歡數學,不是因為學不會,而是因為數學太抽象。和學習外語一樣,很多學不好數學的人都是缺乏對數學語言的理解,導致越學越困難,越學越費勁。其實,掌握了數學語言,學習數學還是很輕松的。數學就是由數學語言精確定義的科學或規則。學習數學一定要弄懂數學語言。
下面介紹幾種常見的函數。第一種是分段函數,在其定義域的不同范圍內有不同的映射法則,常見的形式為,在不同的定義域內取不同的映射關系,這與國內使用人民幣而美國使用美元一樣,規則不同。
第二種是反函數。反函數是在知道值域取值的情況下找出定義域,這是一個相反的過程。一般來說,設函數y=f(x)(x∈A)的值域是C,若一個函數g(y)在每處g(y)都等于x,這樣的函數x=g(y)(y∈C)叫作函數y=f(x)(x∈A)的反函數,記作y=f-1(x)。反函數y=f-1(x)的定義域、值域分別是函數y=f(x)的值域、定義域,最具有代表性的就是對數函數與指數函數。例如,原函數為y=6x,其反函數為x=log6y。
第三種是顯函數與隱函數。解析式中明顯地用一個變量的代數式表示另一個變量時稱為顯函數,顯函數可以用y=f(x)來表示。如果方程F(x,y)=0能確定y是x的函數,那么稱這種方式表示的函數是隱函數。隱函數與顯函數的區別主要包括以下幾點。
●隱函數不一定能寫成y=f(x)的形式,如x2+y2=0。
●顯函數是用y=f(x)表示的函數,左邊是一個y,右邊是x的表達式,如y=2x+1;隱函數是x和y都混在一起,如2x-y+1=0。
●有些隱函數可以表示成顯函數,叫作隱函數顯化,但也有些隱函數是不能顯化的,如ey+xy=1。
2.函數的性質
(1)函數奇偶性。該性質表述的是函數關于X軸或Y軸對稱的性質,偶函數關于Y軸對稱,因此有f(x)=f(-x);而奇函數關于原點對稱,因此有f(x)=-f(-x)。例如,f(x)=x2有f(-x)=(-x)2=x2=f(x);而g(x)=x5有g(-x)=(-x)5=-x5=-g(x)。函數奇偶性如圖1.29所示。

圖1.29 函數奇偶性
(2)函數周期性,函數圖像周期性重復出現的性質,如正弦波、余弦波等,通常表述為f(x)=f(x+T),T表示周期。例如,sin(x)的周期為2π,因此可用f(x)=f(x+2π)表示。圖1.30是借助軟件繪制的sin(x)和tan(x)的曲線,可以看出其周期性。FooPlot是在線繪制函數圖像的網站,讀者可以在該網站嘗試繪制各種函數的圖像。

圖1.30 函數周期性
(3)函數單調性。函數的單調性也可以叫作函數的增減性。當函數f(x)的自變量在其定義區間內增大(或減小)時,函數值f(x)也隨著增大(或減小),則稱該函數在該區間內具有單調性。具有單調性的函數,當x變大時f(x)值也變大,當x減小時f(x)值也減小,如圖1.31所示。

圖1.31 函數單調性
在x>0的定義域內,是單調遞增的,而-log(x)是單調遞減的。
3.函數的極限
在《流浪地球》中,Moss推算出了地球將突破木星的洛希極限,而該極限預示著地球將被木星巨大的引力撕碎,最后選擇通過行星發動機的尾焰引爆飛船點燃木星,借助沖擊波推離地球。而洛希極限就是通過剛體洛溪極限函數推導出來的。而函數的極限要從數列說起,數列是按照一定規律排列的一列數,如2,4,6,8,…,2n,…。其中,2n被稱為通項,因為只要知道了n,就能由通項計算出該位置數值的大小。對于數列{an},當n無限增大時,其通項接近于一個常數A,則稱該數列以A為極限或收斂于A,否則數列沒有極限,為發散型數列。極限在數學中用lim表示,如,表示當n趨于無限時an的極限等于A。極限有如下幾個性質。
●x→∞ 表示|x|無限增大。
●x→+∞ 表示x無限增大。
●x→-∞ 表示x無限減小。
●x→x0表示x從x0的兩側無限接近x0。
●x→表示x從x0的右側無限接近x0。
●x→表示x從x0的左側無限接近x0。
成立的充要條件是
。例如,如下分段函數:

當x→0時,而
,顯然左極限不等于右極限,故x→0時極限不存在。
極限的基本性質主要包括以下幾點。
●有限個無窮小的代數和仍為無窮小。
●有限個無窮小的乘積仍為無窮小。
●有界變量和無窮小的乘積仍為無窮小。
●無窮個無窮小之和不一定是無窮小。

●無窮小的商不一定是無窮小。

求極限的方法有很多,最常見的是洛必達法則。這里列舉了幾種常見的求極限的方法,供讀者參考。
●利用洛必達法則求極限。洛必達法則是在一定的條件下通過分子和分母分別求導再求極限來確定未定式值的方法。
●利用函數的連續性求極限。若函數f(x)在某去心鄰域內連續,則在該去心鄰域中任意一點的極限等于該點的函數值。
●有理化分子或分母再求極限。
若分子或分母中含有“√”,一般利用a2-b2=(a+b)(a-b)去掉根號。

若分子或分母含“?”,一般利用a3-b3=(a-b)(a2+ab+b2)和a3+b3=(a+b)(a2-ab+b2)去掉根號。

●利用兩個重要極限求極限,即和
。

●利用無窮小的性質求極限。
●分段函數分點處的極限必須滿足左極限等于右極限。
●利用“大頭準則”求極限。

●利用定積分的定義求極限。

4.函數的連續性
函數y=f(x)在x0的某鄰域內有定義,如果當自變量的改變量Δx趨于0時,相應函數的改變量Δy也趨于0,則稱f(x)在x0處連續,如圖1.32所示。函數的連續性需要滿足如下條件。
●函數在該點有定義。
●函數在該點的極限存在。
●極限值等于函數值。

圖1.32 函數的連續性
1.5.2 常見的導數公式
1.導數的定義
如果平均變化率的極限存在,即,則稱該極限為函數y=f(x)在x0處的導數,表示f'(x0)或
或
或
。
物理學中的瞬時速度就是一個典型的平均變化率極限的問題。瞬時經過的路程Δs=s(t0+Δt)-s(t0)。在Δt時間內的平均速度,當Δt→0時就變成瞬時速度。所有函數的導數的求取都可以用上面的平均變化率的思想求極限得到。
2.常見的導數公式
常見的導數公式如表1.1所示。
表1.1 常見的導數公式

3.用PyTorch求常見函數的導數
(1)對函數y=6x+b求導數。

上面構建了一個一元一次方程y=6x+b,其中,輸入x的形狀為2行5列的矩陣,b為標量6,y是由x在“+”運算下創建的。Tensor的一條創建規則是,只要創建者中有一個Tensor的requires_grad=True,則所創建的Tensor的requires_grad也為True。因此,生成的變量y的requires_grad=True,在應用backward方法后,PyTorch的自動微分系統將自動計算導數,并將導數返回holder_weights,它是一個和輸出y擁有相同形狀的Tensor,可以將其視為帶權重的偏導數接收器,它將計算得到的導數和自己相乘。由導數公式可知,而holder的初始值都是1,因此最終的結果為
,結果y對x的導數值為6,在x上使用grad屬性可查看。

將holder_weights變為2,最終結果則變成12,但驗證最終的x.grad所得到的導數是使用holder_weights與真正的導數相乘的結果。
(2)對sin(x)求導數。

y=sin(x),由導數公式得出結果y對輸入x的導數為,而x的值為1,所以最終的結果x.grad=holder_weights?cos(x)=1?cos(1)=0.5403。
(3)對指數函數y=ex求導數。


y=ex的導數仍然為ex,x.grad的計算公式為holder_weights×ex,而holder_weights=1,因此最終的結果為[[e1,e3],[e2,e4]]。
(4)對冪函數y=xe求導。

y=xe的求導公式為,這里的x.grad是由holder_weights×e×xe-1得到的,因此其結果為[[e×1e-1,e×3e-1],[[e×2e-1,[e×4e-1]]。
(5)對對數函數y=ln x求導數。

對數函數y=ln x的導數為,因此最終的結果為
,
。
(6)對Sigmoid函數求導數(導數公式為y′=y(1-y))。


Sigmoid公式的導數形式為y′=y(1-y),因此x.grad的計算公式是holder_weights×y×(1-y);這里y的取值為。
,
,
,1×
,和程序的計算結果一致。
Sigmoid函數的導數形式在很多地方都會使用,所以需要牢記它。