大數據文摘作品
作者:小魚、蔣寶尚
最近,Ian Goodfellow不斷在推特和大家分享一寫學習的小技巧。在昨天和大家分享了推導機器學習公式推導的黑魔法後,今天又連發幾條推特,和大家分享了數學中求導數的小技巧。
Goodfellow稱,他最喜歡用超實數(hyperreal numbers)來求導數。
註:超實數是一個包含實數以及無窮大和無窮小的域,它們的絕對值分別大於和小於任何正實數。
以下是Ian Goodfellow推特內容:
對於這個技巧,我們介紹一種新的數字,稱為無窮小超實數。假設我們有一個無窮小量ε,而且其取值範圍是0
現在我們可以通過套用這個表達式:f'(x)= real_part(f(x + ε) - f(x)) / ε),使用代數方法來計算導數,其中「real_part」函數的功能是四捨五入某些表達式的無窮小量。
例如,x^2的導數為:((x + ε)^2 - x^2) / ε = (x^2 + 2*ε*x + ε^2 - x^2) / ε = 2 + ε。我們捨去無窮小量ε,而只保留2。
看到這裡,趁著小編的高數還沒有忘乾淨,就忍不住拿起筆來推導了一下x^2的導數:
嗯……,結果怎麼不一樣呢?這不是最基本的求導公式嘛!
經過再三確認,原來是Goodfellow在結果中漏寫了一個x,x^2的導數為:((x + ε)^2 - x^2) / ε = (x^2 + 2*ε*x + ε^2 - x^2) / ε = 2*x + ε。我們捨去無窮小量ε,而只保留2x。
看到這裡,不少讀者朋友會吐槽,這不是就高數裡面求導法則的定義嘛!沒錯,讓我們一起來溫習一下高數:
可以說,Goodfellow的小技巧確實和求導法則的定義很相似,但是求導法則前面有一個很叫lim的東東,稱當Δx→0時,極限存在。
要證明Δx→0時極限存在,那可就是一件數學上的很有講究的事了,當然理解起來也並不容易。
那麼Goodfellow的技巧高明在哪裡?答案就是通過定義一個無窮小量來取代求極限這一步驟。
Goodfellow也稱,用無窮小的超實數進行代數運算,就像一場騙局。但事實證明,當對實數有相同的規則時,那麼代數的運算法則在邏輯上就是可行的。
超實數把牛頓和萊布尼茨在微積分早期發展過程中憑直覺感知到的知識更加具體化,但並沒有嚴格的數學證明。超實數比極限的概念更接近無窮小域的本質。
也存在無窮大的超實數,即比任何實數都大的數,但Goodfellow並不認為其在機器學習研究中能夠發揮很大的作用。
也可以用超實數計算積分,但在推導過程中我並沒有發現超實數在計算積分方面具有很大的優勢。