對于很多入坑機器學習的同學來說,數學可能是比較艱辛的部分。本文作者介紹了構建機器學習產品、或進行機器學習研究所需的數學背景,以及來自機器學習工程師、研究人員和教師的寶貴經驗和建議,并提供了許多課程和書籍資源。
目前我們還不完全清楚開始學習機器學習需要怎樣的數學水平,對于那些沒有在學校學習過數學或統計學的人尤其如此。
這篇文章的目標是提出打造一款機器學習產品、或進行有關機器學習的學術研究所需要的數學背景。這些建議來自與機器學習工程師、研究人員和教育工作者的對話,以及筆者在機器學習研究和行業中的經驗。
為了構建所需數學水平的先決條件,本文首先提出了不同的思維模式和策略,以便讀者在傳統課堂之外接觸數學教育。然后,文章概述了不同類型的機器學習項目所需的具體背景,因這些學科的范圍從高中水平的統計和微積分知識到概率圖模型(PGM)的最新發展。在這最后,我希望讀者能夠對數學學習產生感覺,你需要在你的機器學習項目中有效利用這些知識,無論是什么項目!
首先,我承認對學習風格/框架/資源的學習,學習者的個人需求和目標可能是獨一無二的。 歡迎各位在HN上提出自己的意見!
關于數學焦慮癥的一些體會
事實證明,很多人,包括工程師在內,都對數學有著畏懼情緒。首先,我想談談關于“擅長數學”的話題。
實際上,擅長數學的人都會有很多實際運用數學的實踐經驗。結果,他們會覺得在數學上陷入困境是習以為常的事情。最近的研究顯示,學習者的心態(而非先天能力),是一個人學習數學能力的主要預測指標。
要清楚,要達到這種習以為常的良好狀態需要時間和精力,但這肯定不是人天生就有的能力。本文其余部分將幫助讀者確定所需的數學基礎水平,并概述應如何建立這種水平的策略。
入門:數學和代碼
作為軟先決條件,我們需要讀者掌握一些線性代數/矩陣運算的基本知識(以免在符號表示上感到困惑),并對概率論有初步了解。此外,我們還鼓勵您掌握基本的編程能力,以作為在給定語境下學習數學的工具。之后,您可以根據感興趣的項目類型調整自己的關注焦點。
如何在校外學習數學
我相信學習數學的最佳方式是全身心學習(即作為學生)。如果脫離了這種全天學習環境,您可能就不會掌握學術課堂中的教學結構,獲得來自同伴的(積極)壓力和可用的資源。
如果要在校外學習數學,我建議組織學習小組或午餐會、學習研討會,作為獲得學習動力的重要資源。在研究實驗室中,也可以組織讀書小組。在學習結構方面,您的讀書小組可以瀏覽教科書的章節并定期舉行討論講座,開辟渠道舉行Q&A問答活動等。
這里,文化在發揮著重要作用。這種“額外”的學習應該是值得鼓勵的,以免在日復一日的繁雜事務中忘記所學的知識。事實上,盡管這種方式存在短期成本,但在構建同伴驅動的學習環境可以讓您的長期工作效率更高。
數學和代碼
數學和代碼在機器學習工作流程中高度融合。代碼通常是用數學直覺直接構建出來,代碼甚至和數學共享部分符號和語法。實際上,現代數據科學的框架(例如NumPy)使數學運算(如矩陣/矢量積)轉換成的可讀代碼變得更加直觀和高效。
筆者鼓勵讀者將代碼作為鞏固學習的一種方式。數學和代碼都依賴于理解和表示方法的精確性。例如,實踐損失函數或優化算法的手動實現可以成為真正理解基礎概念的好方法。
這里讓我們舉一個通過代碼學習數學的具體例子:在神經網絡中實現ReLU激活的反向傳播(沒錯,通過Tensorflow / PyTorch就可以做到!具體見鏈接https://medium.com/@karpathy/yes-you-should-understand-backprop-e2f06eab496b)。反向傳播是一種依靠微積分鏈規則,高效計算梯度的技術。為了在這個設定下使用鏈規則,我們將upstream導數與ReLU的梯度相乘。
首先,我們對ReLU的激活進行可視化處理,如圖:
為了計算梯度(直觀地說,就是斜率),可以對一個分段函數進行可視化,以指標函數表示如下:
NumPy為我們提供了有用且直觀的語法,我們的激活函數(藍色曲線)可以在代碼中解釋,其中x是輸入,relu是輸出:
relu = np.maximum(x, 0)
然后是梯度(圖中紅色曲線),其中grad表示upstream梯度:
grad[x < 0] = 0
在沒有首先自己推導出梯度的情況下,這行代碼的意義可能沒有那么顯而易見。在我們的代碼中,對于滿足條件的所有元素,會將upstream梯度(grad)中的所有值設為0,[h <0]。在數學上,這實際上相當于對ReLU梯度的分段表示,當將其與upstream梯度相乘時,它會將任何小于0的值歸零!
如上所見,通過我們對微積分的基本理解,可以清楚地對代碼進行思考。神經網絡實現的完成示例在這里:https://pytorch.org/tutorials/beginner/pytorch_with_examples.html
構建機器學習產品所需的數學知識
在撰寫本節內容時,我咨詢了機器學習的工程師,確定如何最有效地利用數學對系統進行除錯。下面的問題示例是工程師以數學視角給出的回復。如果你以前從沒見過也不要緊,筆者希望這一章節能夠為你感興趣的專門問題提供一些適當的背景。
我應該使用哪些聚類方法來顯示高維客戶數據?
方法:PCA與tSNE
我應該如何校準“阻止”欺詐性用戶交易的閾值?
方法:概率校準
如何正確描述衛星數據在世界不同區域內的偏差?(比如硅谷與阿拉斯加州)
方法:將研究問題公開。比如面向人口信息學的平等化?
通常,統計學工具和線性代數可以以某種方式應用于其中的每一個問題。但是,要獲得滿意的答案,通常需要針對特定領域內的特定方法。在這種情況下,應如何確定你需要學習哪些數學知識?
定義系統
現在我們能夠利用的資源是很豐富的(例如,用于數據分析的scikit-learn,用于深度學習的keras),這有助于讀者開始編寫代碼來為系統進行建模。在利用這些資源時,可以嘗試回答以下有關問題:
1. 系統的輸入/輸出是什么?
2. 應該如何準備數據,來適應系統?
3. 如何構建功能或策劃數據,幫助模型進行概括?
4. 如何為提出的問題定義合理的目標?
你或許會吃一驚,對系統進行定義可能很難!之后,管道建設所需的工程也是非常重要的。換句話說,構建機器學習產品需要大量繁重的工作,這些工作并不需要深入的數學背景。
更多資料:?Best Practices for ML Engineeringby Martin Zinkevich, Research Scientist at Google
按需學習數學
首先要考察機器學習的工作流程,您可能會發現在一些步驟上會被卡住,尤其是在調試時。當你被困住時,你知道要查找什么問題嗎?你的權重合理性如何?為什么你的模型不能與特定的損失定義相融合?衡量模型成功的正確方法是什么?這時,對數據進行假設,以不同方式約束優化或嘗試不同的算法可能會有所幫助。
通常,你會發現在建模/調試過程中存在數學上的直覺(比如如何選擇損失函數和評估指標),這些直覺可能會有助于做出明智的工程決策。這些都是你學習的機會!
來自Fast.ai的Rachel Thomas是這種“按需學習”方法的支持者。在教育學生時,她發現對于深度學習的學生來說,讓他們對這些材料感到興奮更為重要。在建立興趣之后,數學教育就變成按需查缺補漏了。
更多資料:
課程:Computational Linear Algebraby fast.ai
YouTube:3blue1brown: Essence ofLinear AlgebraandCalculus
教材:Linear Algebra Done Rightby Axler
教材:Elements of Statistical Learningby Tibshirani et al.
課程:Stanford’s CS229 (Machine Learning) Course Notes
機器學習研究所需的數學知識
筆者現在想要描述對于機器學習中以研究為導向的工作,哪些數學思維方式是有用的。關于機器學習研究的悲觀觀點體現在即插即用系統上,在這些系統中,模型會投入更多計算力,以擠壓出更高的性能。一些人群中,研究人員仍然對缺乏數學嚴謹性的經驗化方法(例如某些深度學習方法)表示懷疑。
未來研究體系可能建立在現有系統和假設的基礎上,而這些系統和假設并不會擴大我們對該領域的基本理解,這是令人擔憂的。研究人員需要提供原始的資源,構建新的基礎架構模塊,可用于獲取全新觀點和達到實際目標的方法。比如可能需要重新思考用于圖像分類的卷積神經網絡等構建模塊,正如“機器學習之父”Geoff Hinton在他最近的關于Capsule Networks的論文中所說的那樣。(論文鏈接:https://arxiv.org/pdf/1710.09829v1.pdf)
下一步,我們需要提出基本問題。這需要在數學上的“深度理解”,《深度學習》一書的作者邁克爾·尼爾森將其稱為“有趣的探索”。這個過程涉及數千小時期間經常“被難題卡住”,不斷提出問題,并在探究新問題時改變觀點?!坝腥さ奶剿鳌笔箍茖W家們能夠提出深刻,富有洞察力的問題,而不僅僅是簡單的想法/架構的結合。
當然,很明顯的是,在研究機器學習時是仍然無法學到所有東西的!要正確地進行“有趣的探索”需要適當地進行,需要遵循自己的興趣,而不是優先考慮那些最熱門的新結果。
機器學習研究是一個非常豐富的研究領域,在公平性,可解釋性和可訪問性方面存在緊迫問題。實際上所有科學學科中,基本的思維都不是一個按需的過程,而是需要耐心,才能用高級數學框架的廣度進行思考,解決關鍵性的問題。
更多資料:? 博客:Do SWEs need mathematics?by Keith Devlin? Reddit帖子:Confessions of an AI Researcher? 博客:How to Read Mathematicsby Shai Simonson and Fernando Gouvea? 論文:NIPSandICML等會議論文
? 文章:A Mathematician’s Lamentby Paul Lockhart1
讓機器學習研究走向民主化
我希望我沒有把“研究數學”描繪得太深奧,因為使用數學構建的觀點應該以直觀的形式呈現!遺憾的是,許多機器學習論文中仍然充斥著復雜且不一致的術語,使關鍵的信息難以辨別。作為一名學生,你可以通過博客、推文等方式將濃縮的論文翻譯成易于消化理解的觀點,這也是在為自己和這個領域做好事。你甚至可以從distill.pub為范例,這是一個專門為機器學習研究成果提供清晰解釋的出版物。換句話說,如果能將技術思想的神秘化為“有趣探索”的手段,一定會很有幫助!
最后的一些總結和建議
總之,我希望這篇文章可以讀者提供一個起點,讓讀者考慮于機器學習有關的數學教育問題。
不同的問題需要不同程度的直觀觀點,我鼓勵讀者首先弄清楚目標是什么。
如果您希望打造機器學習產品,請通過問題尋找同行和學習小組,并通過深入研究最終目標來激發您的學習。
在研究領域,具備深厚的數學基礎可以為您提供豐富的工具,通過提出新的基礎架構模塊來推動機器學習領域的發展。
一般而言,數學(尤其是研究論文中的數學)可能是令人生畏的,但在學習中被難題卡住,正是學習過程的重要組成部分。
-
代碼
+關注
關注
30文章
4823瀏覽量
68955 -
數學
+關注
關注
0文章
99瀏覽量
19279 -
機器學習
+關注
關注
66文章
8438瀏覽量
132993
原文標題:【Hacker News最火教程】機器學習必備的數學知識
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論