當前位置:
首頁 > 科技 > 怎樣搞定機器學習里的數學?斯坦福高手教你具體問題具體分析

怎樣搞定機器學習里的數學?斯坦福高手教你具體問題具體分析

夏乙 栗子 發自 凹非寺

量子位 出品 | 公眾號 QbitAI

做機器學習需要多少數學基礎?這是很多初學者最關心的問題,答案也眾說紛紜。

有人說,概率論線性代數要預先精通;有人說,微積分要懂一點;也有人說,沒必要特地去補;甚至有人專門寫了繞開數學的深度學習入門教材……

斯坦福大學計算機系學生、斯坦福AI實驗室研究助理(RA)Vincent Chen,最近在矽谷最牛孵化器Y Combinator官方博客上發表的一篇文章,就專門深入探討了里這個問題。

Vincent Chen

Vincent想要說的是,具體問題具體分析

他跟領域內的很多工程師、研究人員、教育工作者,討論了這個問題,再加上自己的經驗,得出了這樣的結論:解決不同問題,可能需要不同程度的直覺 (Intuition) ,所以首先要知道自己的目標是什麼。

構建產品和做研究,需要的數學就不太一樣。

不過,還是要先從大家都差不多的入門階段說起。

入門須知

熟悉線性代數/矩陣運算,是機器學習的軟性前提。也就是說,最好懂,不強制。

當然,學習數學最好的環境還是學校。沒有了學校里的壓力、競爭和交流,就要找其他方式來補充:學習小組、學習型午餐會都是不錯的形式。

想要在工作中學數學,編程最好也會一點,它會成為你的學習工具。

要知道,在機器學習任務中,數學和代碼是交織在一起的。代碼需要數學上的直覺,甚至和數學符號的語法有共通之處。

舉個例子:練習手動實現損失函數(loss functions)或者優化演算法(optimization algorithm),就是真正理解背後概念的好方法。

再舉個比較實際的例子:在神經網路裏手動為線性整流函數(ReLU)實現反向傳播,就涉及用微積分里的鏈式法則來有效計算梯度,而運用鏈式法則,需要用ReLU的梯度乘以一個導數。

最開始,要先將ReLU激活函數可視化:

計算梯度(就是看起來的斜率),要可視化一個階梯函數,用指示函數表示:

現在的數據科學框架能直觀地把數學運算翻譯成可讀的代碼,NumPy就是其中之一。對於上面這個任務,它就可以將激活函數(藍色曲線)用代碼表示出來:

梯度(紅色曲線)也可以:

只有親自求了一遍導數,才能理解這行代碼。

掌握基礎之後,就可以根據你的實際需求自定義學習方向了。

造機器學習產品需要的數學

作為一名學生,Vincent通過和多名機器學習工程師聊天,了解了他們在debug時最有用的數學知識。

總的來說,統計學和線性代數總是有用的,但面對不同的問題又有不同的需求。

那麼,怎麼確定該精修哪些數學知識呢?

首先,要定義你的系統

想寫代碼為系統建模,可用的資源多得是。在構建系統的過程中,要想著這些問題:

系統的輸入/輸出是什麼?

怎樣準備適合系統的數據?

怎樣構建特徵、處理數據能讓模型更好地泛化?

怎樣為你的問題定義合理的目標?

然後,在你用到數學的時候,去學習它

一頭扎進機器學習里,你就會發現自己會卡在某些步驟。卡住的時候,該查什麼呢?你的權重合理嗎?你的模型為什麼用這種損失就不收斂?

這時候,就需要對數據做假設,換個方式約束優化,或者換個演算法試試。於是在這個建模或者debug過程里,你會發現懂數學對做決定有很大幫助,比如說要選擇損失函數和評價指標,數學就是個好工具。

這可以說是一種「按需」學習的方法了。

做機器學習研究需要的數學

如果是做研究的話,就需要廣泛的數學基礎,來給你鋪路。

現在,很多研究都是在現有系統之上進行的,缺少對基礎的理解。

這樣還不夠,研究者應該貢獻更基本的模塊。比如說,可以像深度學習教父Geoff Hinton提出的膠囊網路(Capsule Networks)一樣,重新思考卷積神經網路(CNN)這種基本模塊。

要想在機器學習領域做出這樣的成就,就需要問一些基礎問題,也就需要對數學的深刻理解。《神經網路與深度學習》教材的作者Michael Nielsen稱之為「帶著玩心的探索」。

這個探索過程中,可能會在一個問題上卡幾個小時,可能需要換個角度去看問題。不過,只有這樣,科學家才能超越直觀想法和架構的組合,提出深刻、有見地的問題。

和構建產品不一樣的是,機器學習研究里的基礎思考不是「按需」進行的,想要以高級的數學框架所要求的廣度來思考、批判性地解決問題,需要耐心學習。

不要怕

總的來說,數學可能是有點可怕,你會卡在一個又一個地方。但是,這本來就是數學學習很重要的部分。

不要害怕。

實際上,數學好的人都要花好多時間來練習,於是,他們對這種做數學「被卡住」的感覺就習以為常了。想要學好數學,首先需要建立學生的心態。

想要習以為常,當然需要付出時間和努力,加油~

更多內容,可以移步原文:

https://blog.ycombinator.com/learning-math-for-machine-learning/

活動推薦

加入社群

量子位AI社群19群開始招募啦,歡迎對AI感興趣的同學,在量子位公眾號(QbitAI)對話界面回復關鍵字「交流群」,獲取入群方式;

此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。

進專業群請在量子位公眾號(QbitAI)對話界面回復關鍵字「專業群」,獲取入群方式。(專業群審核較嚴,敬請諒解)

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 量子位 的精彩文章:

特斯拉又熬過破產危機後,馬斯克說自動駕駛晶元已經準備好了
DeepMind給人工智慧搞了一套IQ測試題

TAG:量子位 |