資源 |不要再問我什麼數學水平才能學機器學習啦

2021-02-20 論智

編者按:Vincent Chen是史丹福大學計算機科學專業的學生,同時也是斯坦福AI研究室的一名研究助理。本文他給我們帶來了在機器學習中所需要的數學知識介紹。以下是論智對原文的編譯。

很多沒有良好數學基礎或統計學的同學們總會問,到底什麼樣的數學水平才能入門機器學習?目前還沒有確切的答案。

在這篇文章中,我會列出在進行機器學習產品搭建或學術研究時所需要的數學背景知識。這些都是我在與機器學習工程師、研究者、教授的談話中以及自己的經驗中總結出的。

為了構建數學的準備知識,首先我會提出與傳統課堂不同的思維模式和學習方法。接著,我會大致敘述在機器學習領域不同類型所需要的具體背景知識,大致涵蓋了高中的統計學和微積分,到最近的概率圖形模型(PGM)。最後,我希望你能找到自己所在領域所需要的數學知識。希望這篇文章對你有用!

數學可以說是很多人的噩夢,包括工程師們。在開始之前,我想談談那些「數學好的人」到底有什麼秘訣。

實際上,數學好的人只是有很多練習的機會而已,他們習慣了在研究數學的過程中遇到困難。最近的一項研究表明,與天生的能力相比,思維方式才是能否學好數學的重要因素。

但是,想達到上述境界仍需要花點時間和努力,這並不是與生俱來的能力。

首先,作為基礎,我們希望你有基礎的線性代數、微積分以及概率論入門知識。如果有基礎編程知識更好,這可以作為在具體語境中學習數學的工具。之後,你可以根據具體領域調整學習。

如何在學校之外學習數學

學習的最佳途徑一定是泡在學校,如果脫離了學校環境,也就沒有嚴格的體系架構了,同時也不會有來自學霸的壓力,資源明顯不足。

所以在校外學習,我推薦學習小組或者研討會的形式。在研究機構中,可能有閱讀小組這類組織。有了基本組織框架,小組內可能會一起學習某本教材,並進行討論。

這種課外學習通常不會給日常工作帶來負擔,甚至在互相激勵的環境中還能讓你的本來工作更加高效。

數學和編程

數學和代碼在機器學習研究中通常是高度混合的。大多數情況下,代碼都是直接從數學邏輯中形成,並且能用代碼語法展示出數學表示法。其實現在一些數據科學框架(例如NumPy)就能直接將數學推理(例如矩陣或向量)轉換成可讀代碼,非常直觀高效。

所以這裡鼓勵通過代碼夯實數學學習。例如,練習手動實現損失函數或優化的代碼可以進一步了解基礎概念。

這裡舉一個通過代碼學習數學的例子:在你的神經網絡中為ReLU激活函數進行反向傳播。反向傳播是利用微積分中的規則來計算梯度的技術。為了在這一環境中實現,我們將upstream導數和ReLU的梯度相乘。

首先,我們對ReLU進行可視化:

為了計算梯度,你可能會對分段函數進行可視化,用指示函數表示如下:

用NumPy我們可以直觀地用代碼表示出激活函數(藍色曲線),其中x是輸入,relu是輸出:

relu = np.maximum(x, 0)

梯度(紅線)也是一樣,下面的等式描述了upstream梯度:

grad[x < 0] = 0

如果你自己事先沒有推導出梯度,那麼這行代碼可能不好解釋。在我們的代碼中,將upstream梯度中的所有值都設為0,以滿足[h<0]的條件。從數學角度來說,這能高效地展示ReLU梯度的分段表示,當它們乘以upstream梯度時,可以將所有小於0的值變為0。

從這裡我們可以看到,了解微積分的基礎概念讓我們對代碼有了清晰的思考。想了解神經網絡部署的完整過程,可以查看:pytorch.org/tutorials/beginner/pytorchwithexamples.html

為了完成這一部分,我與機器學習工程師探討了在debug的過程中都需要哪些數學知識。以下是工程師們的建議,如果你還不了解,沒有關係,以下部分可以為你提供具體的思路。

答:PCA vs tSNE,參考回答:stats.stackexchange.com/questions/238538/are-there-cases-where-pca-is-more-suitable-than-t-sne

答:進行概率校準:scikit-learn.org/stable/modules/calibration.html

答:答案不唯一,也許可以試試demographic parity?blog.mrtz.org/2016/09/06/approaching-fairness.html

總的來說,統計學和線性代數可以運用到很多問題中,但是想要得到滿意的結果通常需要更專業的方法。那麼,我們該如何縮小數學學習的知識呢?

在利用豐富的資源編寫代碼前,你需要為自己幾個問題:

系統的輸入和輸出分別是什麼?

你該如何準備適合系統的數據?

如何創建特徵或數據來幫助生成模型?

如何為你的問題定義一個合理的目標?

的確,定義系統很難,但是之後的工程管道搭建也很複雜。換句話說,創建機器學習產品需要做很多工作,但大部分不需要深入的數學知識。

資源

谷歌的研發工程師Martin Zinkevich曾寫過一篇機器學習實踐教程,感興趣的讀者可自行查閱:developers.google.com/machine-learning/guides/rules-of-ml/

按需學習

剛進入機器學習領域,你可能會發現麻煩不斷,尤其是在debug的過程中。當你被某個問題困住時,應該如何解決?權重合理嗎?為什麼模型會在特殊損失值下收斂?衡量成功與否的正確方法是什麼?這時,對數據進行質疑也許比較有用,可以試試不同的優化方法或者算法。

通常你會發現這些在建模或debug過程中用到的數學在做決策時也很有用。Fast.ai的創始人之一Rachel Thomas就是這種「隨即可用」方法的支持者之一,在教學時,她發現讓學生對研究材料感興趣更加重要,在這之後再加入數學教育即可。

資源

課程: Computational Linear Algebra by fast.ai

地址:http://www.fast.ai/2017/07/17/num-lin-alg/ "Computational Linear Algebra by fast.ai"

YouTube: 3blue1brown: Essence of Linear Algebra and Calculus

地址:https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw "3blue1brown"

教材: Linear Algebra Done Right by Axler

地址:http://linear.axler.net/ " Linear Algebra Done Right"

教材: Elements of Statistical Learning by Tibshirani et al.

地址:https://web.stanford.edu/~hastie/ElemStatLearn/ "Elements of Statistical Learning"

課程: Stanford’s CS229 (Machine Learning) Course Notes

地址:http://cs229.stanford.edu/syllabus.html#opt "Stanford’s CS229 (Machine Learning

下面我將介紹在機器學習學術研究中所需要的數學思維類型。有些人不屑地認為,機器學習研究中那些即插即用的系統只不過是用更多的計算實現更高的性能。在一些領域裡,研究人員仍然懷疑實證方法缺少數學的嚴謹。

很多人擔心,研究領域可能在現有系統和假設上並沒有擴展對領域的基礎了解。研究者們需要提供新的基礎模塊,用於生成全新的觀點和目標。例如,就像Geoff Hinton在他的膠囊網絡論文中提到的,重新思考用於圖像分類的神經網絡模塊。

在機器學習研究中,你不可能學習所有知識,你需要做的就是關注自己感興趣的領域,切勿一味追求熱點。

機器學習研究領域包羅萬象,但是在公平性、可解釋性和可用性方面都有著許多難題。和其他科學研究的準則一樣,基礎思考並不是現成的,它需要在具備高水平數學框架的前提下耐心思考。

資源

博客:Do SWEs need mathematics? by Keith Devlin

地址:https://www.maa.org/external_archive/devlin/devlin_10_00.html "Do SWEs need mathematics? by Keith Devlin"

reddit討論:Confessions of an AI Researcher

地址:https://www.reddit.com/r/MachineLearning/comments/73n9pm/d_confession_as_an_ai_researcher_seeking_advice/ "Confessions of an AI Researcher"

博客:How to Read Mathematics by Shai Simonson and Fernando Gouvea

地址:http://www.people.vcu.edu/~dcranston/490/handouts/math-read.html "How to Read Mathematics by Shai Simonson and Fernando Gouvea"

論文:NIPS and ICML recent conference papers

文章:A Mathematician’s Lament by Paul Lockhart1

地址:https://www.maa.org/external_archive/devlin/LockhartsLament.pdf "A Mathematician’s Lament by Paul Lockhart1"

雖然這篇並未涉及太過高深的概念,但很多機器學習論文仍然充滿著複雜的術語。作為學生,你可以試著將高深的論文分解,記錄自己的理解,通過博客等形式表達出來。在這一點上可以借鑑distill.pub的方式。

希望本文能成為你在機器學習領域開始數學學習的起點。

不同問題需要不同水平的知識來解決,我建議先弄明白你的目標是什麼再著手進行學習。

如果你想搭建一款產品,可以找尋同伴或在學習小組中進行。

在研究領域,廣泛的數學基礎可以助你走的更遠。

數學(尤其是研究領域的數學)的確有些令人頭大,但是被難住也是學習的一部分啊!

祝你好運!

原文地址:blog.ycombinator.com/learning-math-for-machine-learning/

相關焦點

  • 學界丨一文讀懂機器學習需要哪些數學知識---附精品資源
    作者王源對數學優化和機器學習都有涉及,在原回答的框架下加入了自己學習過程的經驗和理解,並收集了相關優秀課程的資源連結供大家參考。同時文末還給出了本文所述的全套優秀課程的網盤連結資源(包括視頻,英文字幕,課件,參考書籍等等)。
  • 觀點| 我們該如何學習機器學習中的數學
    數學在機器學習中非常重要,不論是在算法上理解模型代碼,還是在工程上構建系統,數學都必不可少。通常離開學校後很難有機會靜下心學習數學知識,因此我們最好能通過閱讀小組或讀書會等形式營造環境,並專注學習那些在實踐中常常需要用到的數學知識。數學達到什麼水平才可以開始機器學習?
  • 機器學習數學基礎入門線路
    開始之前說幾點:下面內容是學機器學習方面的必備基礎,基本不涉及機器學習本身,如果你能夠完美掌握,那數學就不會成為你的後腿了。如果達不到高中數學水平,我很中肯的勸你好好想好這個方向的規劃,下面內容是從高中數學開始談起。
  • 機器學習中基本的數學符號是什麼?
    如果你能了解一些基本的數學符號以及相關的小技巧,那你就在看懂機器學習方法的論文或書籍描述上前進了一大步。在本教程中,你將學到機器學習技術描述中遇到的基本數學符號。在學完整個教程後,你會知道:讓我們開始學習吧!
  • 機器學習中所需要的數學知識介紹
    本文他給我們帶來了在機器學習中所需要的數學知識介紹。以下是論智對原文的編譯。 很多沒有良好數學基礎或統計學的同學們總會問,到底什麼樣的數學水平才能入門機器學習?目前還沒有確切的答案。 在這篇文章中,我會列出在進行機器學習產品搭建或學術研究時所需要的數學背景知識。這些都是我在與機器學習工程師、研究者、教授的談話中以及自己的經驗中總結出的。
  • 我花了一年時間來學機器學習
    期間利用 Udacity、Coursera、Kaggle競賽、史丹福大學課程等多種資源來進行學習和訓練,也踩了不少坑。下面是正文。一年前我寫過一篇文章《Machine Learning in a Week》,那時我花了五天的時間學了一些機器學習基本概念,算了入了門。
  • 『A+』關於Python機器學習,一套無敵的體系是怎樣的?
    學什麼?怎麼學? (3) 算法就要涉及到數學啦,怎麼辦呀! (4) 學了之後怎麼用?案例怎麼做? No1. 語言的選擇肯定是Python無疑了,為什麼?有其他語言基礎:簡單過一遍語法,直接上手應該沒有什麼問題2.   第一門語言:初級內容邊學邊寫,高級內容暫時不需要(我覺得語言只是一門工具,不需要先都學徹底了才能幹活,邊做事邊學習應該會加深理解,忌光看書不練習)3.
  • 機器學習入門線路
    ML表示機器學習,DEV表示開發,本專欄旨在為大家分享作為算法工程師的工作,機器學習生態下的有關模型方法和技術,從數據生產到模型部署維護監控全流程,預備知識、理論、技術、經驗等都會涉及,近期內容以入門線路為主,敬請期待!往期回顧:之前寫了有關計算機開發能力和數學能力的入門,在已有一定開發和數學基礎的前提下,大家可以慢慢開展機器學習方面的學習。
  • 資源 | 機器學習數學全書,1900 頁 PDF 免費分享
    今天分享一本來自賓夕法尼亞大學計算機系教授Jean Gallier主編的面向機器學習的「數學全書」,內容涵蓋線性代數、概率統計、拓撲學、微積分、最優化理論等面向ML的數學知識,共計1900餘頁。不管是對機器學習研究人員,還是立志走上機器學習和AI研究之路的學生來說,打好堅實的數學基礎是都至關重要的。
  • 【機器學習】自學機器學習嚮導
    這裡有很多來自書籍和課程的資源給你提供參考,甚至你可以參加比賽和屬性使用工具。在這篇文章裡,我想對這些活動提供一些架構,並在你從程式設計師轉變為機器學習專家的旅途中給你提供一些自由的順序來解決一些問題。機器學習的等級考慮一下四個機器學習的技能等級,而這時一個模型,有助於我們思考這些可靠的資源和活動,而且說不定在什麼時候能派上用場。
  • 資料| 《 機器學習數學基礎 》
    《 機器學習數學基礎 》機器學習構建於數學語言之上,以表達看似直觀實則難以形式化的概念。一旦得到恰當的形式化,我們就可以使用數學工具推導出機器學習算法設計的選擇結果。這幫助我們理解正在解決的任務,同時了解智能的本質。全球數學專業的學生常見的一種抱怨是數學話題似乎與實際問題沒有什麼相關。我們認為機器學習是促使人們學習數學的直接動力。本書旨在作為構建現代機器學習基礎的大量數學文獻的指南。我們通過直接指出數學概念在基礎機器學習問題中的有用性來促進對數學概念學習的需求。
  • 機器學習背後,你不能不知道的數學核心概念
    將這種複雜性應用到機器學習中,你就會得到一個非常令人生畏的局面如前所述,存在大量執行各種機器學習任務的庫,因此很容易避免該領域的數學部分。現在讓我們把這個問題解決掉——你需要理解機器學習算法背後的數學原理,才能成為一名數據科學家。沒有別的辦法。
  • 收藏 | 27個機器學習小抄(附學習資源)
    本文針對機器學習基本概念及編程和數學基礎,為你列出相應的學習資源。機器學習(Machine Learning)有很多方面,當我開始研究學習它時,我發現了各種各樣的「小抄」,它們簡明地列出了給定主題的關鍵知識點。最終,我匯集了超過 20 篇的機器學習相關的小抄,其中一些我經常會翻閱,而另一些我也獲益匪淺。
  • 資源|《機器學習之數學》全書PDF下載
    「想要學好機器學習,先打好數學基礎。」你肯定不止一次聽過這句話。機器學習,特別是深度學習離不開數學,深度學習的算法和模型的搭建,都需要重要的數學工具作為支撐。所以,不管是對機器學習研究人員,還是立志走上機器學習和AI研究之路的學生來說,打好堅實的數學基礎都至關重要。
  • 教你學Python41-如果我數學不好怎麼辦
    實際學科的從業人員可能會羨慕數學。在這裡,他們認為數學家比他們更聰明,並且他們只有在「知道數學」之後才能在學科上脫穎而出。我已經看過第一手資料,也看到它阻止了人們入門。在本文中,我想說服您,您可以在不精通數學的前提下開始並在機器學習中取得長足進步。如果我不擅長數學邊做邊學在開始編程之前,我沒有學習布爾邏輯。我剛開始編程,而您可能這樣做了。
  • 不要再問了,你們要的人力資源管理師證書補貼申請攻略它來嘍
    考取了人力資源管理師可以領取到補貼這個事應該很多朋友都有所耳聞。然後可能就會想,咦……拿證了不僅對工作有幫助還有補貼,這麼好的事我得來一個。那麼,問題就來了,拿到人力資源管理師證書以後怎麼領這個補貼呢?好啦,朋友們,不要再問了,今天,你們要的人力資源管理師證書補貼申請攻略它來嘍,它真的來嘍!
  • 一文介紹機器學習中基本的數學符號
    如果你能了解一些基本的數學符號以及相關的小技巧,那你就在看懂機器學習方法的論文或書籍描述上前進了一大步。在本教程中,你將學到機器學習技術描述中遇到的基本數學符號。更多幫助資源看不懂數學符號的沮喪你在閱讀機器學習算法的相關內容時會遇到一些數學符號。
  • 徹底解決數學問題-《機器學習的數學》出版了
    你也許會說,我只需要調用開源庫或使用開源軟體,學會調參就夠了。雖然現在有AutoML等自動化機器學習工具(如貝葉斯優化等算法)來實現自動調參,但在有些時候它們不一定能滿足你的實際要求。很多同學認為學了本科3門數學課-高等數學,線性代數,概率論與數理統計,就足以學好機器學習了,這種觀點其實是不準確的。且不說最優化方法,隨機過程等課程大部分人並沒學過,即使是這3門課,機器學習中所用的數學知識也經常會超出工科乃至數學系教材的範疇。
  • 成為數據科學家、人工智慧和機器學習工程師的自學之路
    自學是一門需要自律和付出才能掌握的藝術。如果處理得當,你能靈活地將學習與工作相結合。然而,人工智慧或機器學習的開始階段非常艱難,但是請相信我這樣的擔心是值得的。自學時取得良好進展的關鍵是按照自己的節奏學習。在這篇文章中,我將分享一個期望學習數據科學,人工智慧和機器學習,以及在學習其他新事物方面取得良好的進步的人可以遵循的道路。
  • 入門 | 一文介紹機器學習中基本的數學符號
    如果你能了解一些基本的數學符號以及相關的小技巧,那你就在看懂機器學習方法的論文或書籍描述上前進了一大步。在本教程中,你將學到機器學習技術描述中遇到的基本數學符號。在學完整個教程後,你會知道:讓我們開始學習吧!