天天看點

如何在學習機器學習時學習數學?

到目前為止,我們都還不完全清楚開始機器學習需要什麼樣的數學水準,特别是那些沒有在學校學習數學或統計學的人。

在這篇文章中,我的目标是提出建立産品或進行機器學習學術研究所需的數學背景。這些建議源于與機器學習工程師、研究人員和教育工作者的對話以及我在機器學習研究和行業角色方面的經驗。

首先,我會提出不同的思維模式和政策,以便在傳統課堂之外接近真正的數學教育。然後,我将概述不同類型的機器學習工作所需的具體背景,這些學科的範圍涉及到高中統計和微積分到機率圖形模型(PGM)。

關于數學焦慮的一個解釋

事實證明,很多人包括工程師都害怕數學。首先,我想談談“善于數學”的神話。

事實是,擅長數學的人有很多練習數學的習慣。并不是他們先天就是擅長數學,你可能在看他們做數學時發現他們得心應手。要清楚,要達到這種舒适狀态需要時間和精力,但這肯定不是你生就有的。本文的其餘部分将幫助你确定所需的數學基礎水準,并概述建構它的政策。

入門

作為先決條件,我們假設你有

線性代數/矩陣運算以及機率計算的

基本知識點。我還希望你有一些基本的程式設計能力,這将支援作為在上下文中學習數學的工具。之後,你可以根據你感興趣的工作類型調整你的主要方向。

如何在校外學習數學?這個問題幾乎困擾我們很多人。我相信專心學習數學的最佳方式是在學生的時代。在這種環境之外,你可能不會擁有學術課堂中的氛圍、同伴和可用資源。

在校外學習數學,我建議組成學習小組,并學會及時分享各自的資源。互相激勵在這裡發揮着重要作用,這種“額外”的研究應該受到鼓勵和激勵,這樣在學習上就會很有動力。

數學和代碼

數學和代碼在機器學習工作流程中是高度交織在一起的。代碼通常是由數學模型建構,它甚至共享了數學符号。實際上,現代資料科學架構(例如

NumPy

)使得将數學運算(例如矩陣/矢量積)轉換為可讀代碼變得直覺和有效。

我鼓勵你将寫代碼作為鞏固學習的一種方式,數學和代碼都是基于理性思考,寫代碼的過程其實就是了解數學公式的過程。例如,損失函數或優化算法的手動實作可以是真正了解基礎概念的好方法。

通過代碼學習數學的一個例子:在神經網絡中實作ReLU激活的反向傳播。作為簡要的入門讀物,反向傳播是一種依賴于微積分鍊規則來有效計算梯度的技術。

首先,我們可視化

ReLU

激活,定義如下:

如何在學習機器學習時學習數學?

要計算梯度(直覺地說,斜率),你可以想象一個分段函數,由名額函數表示如下:

如何在學習機器學習時學習數學?

NumPy為我們提供了有用、直覺的文法,我們的激活函數(藍色曲線)可以在代碼中解釋,其中x是我們的輸入,relu是我們的輸出:

relu = np.maximum(x, 0)

接下來是漸變(紅色曲線),其中grad描述了upstream漸變:

grad[x < 0] = 0

在沒有首先自己推導出梯度的情況下,這行代碼你可能看的不是很明白。在我們的代碼行中,(grad)對于滿足條件的所有元素,将upstream梯度中的所有值設定為0 [h<0]。在數學上,這實際上相當于ReLU梯度的分段表示,當乘以upstream梯度時,它會将小于0的所有值壓縮為0!

正如我們在這裡看到的那樣,通過我們對微積分的基本了解,我們可以清楚地思考代碼。可以在

此處

找到此神經網絡實作的完整示例。

為建構機器學習産品的數學

為了寫這部分,我與機器學習工程師進行了交談,以确定數學在調試系統時最有幫助的地方。以下是工程師自己回答的數學在機器學習中的問題。希望你能從中發現一些有價值的問題。

問:我應該使用什麼樣的聚類方法來可視化高維客戶資料?

方法:

PCA與tSNE

問:我應該如何校準“阻止”欺詐性使用者交易的門檻值?

機率校準

通常,統計和線性代數可以以某種方式用于這些問題中的每一個。但是,要獲得滿意的答案通常需要針對特定​​領域的方法。如果是這樣的話,你如何縮小你需要學習的數學類型?

定義你的系統

市場上有很多資源(例如,資料分析的

scikit-learn

,深度學習的

keras

)它們将幫助你跳轉編寫代碼來為你的系統模組化。在你打算這樣做的時候,嘗試回答以下有關你需要建構管道的問題:

1.你系統的輸入/輸出是什麼?

2.你應該如何準備資料以适合你的系統?

3.如何建構特征或策劃資料以幫助你的模型進行概括?

4.你如何為你的問題定義合理的目标?

你可能會感到驚訝,定義一個系統竟然需要處理那麼多問題!之後,管道建設所需的工程也是非常重要的。換句話說,建構機器學習産品需要大量繁重的工作,不需要深入的數學背景。

資源

• Google的研究科學家Martin Zinkevich 

為ML工程提供

最佳實踐 需要什麼數學知識就需要什麼!

當你的頭腦中完全進入到機器學習工作流程時,你可能會發現有一些步驟會被卡住,特别是在調試時。當你被困住時,你知道要查找什麼嗎?你的權重是否合理?為什麼你的模型不能與特定的損失定義融合?衡量成功的正确方法是什麼?此時,對資料進行假設,以不同方式限制優化或嘗試不同的算法可能會有所幫助。

通常,你會發現模組化/調試過程中存在數學直覺(例如,選擇損失函數或評估名額),這些直覺可能有助于做出明智的工程決策。這些都是你學習的機會!來自

Fast.ai的

 Rachel Thomas 是這種“按需”學習方法的支援者。

資源:

•課程:

計算線性代數

 by

fast.ai ;

•YouTube:

3blue1brown

線性代數

微積分的

本質;

•教科書:

,Axler;

•教科書:Tibshirani等人

的統計學習元素

斯坦福大學的CS229(機器學習)課程筆記

數學用于機器學習研究

我現在想要描述對于機器學習中以研究為導向的工作有用的數學思維方式。機器學習研究的觀點指向即插即用系統,在這些系統中,模型會投入更多計算以訓練出更高的性能。在某些圈子裡,

研究人員仍然懷疑

缺乏數學嚴謹性的方法可以将我們帶入人類智慧的聖杯。

值得關注的是,研究人員需要提供原始資源,例如新的基礎構模組化塊,可用于擷取全新的洞察力和實地目标的方法。這可能意味着重新思考用于圖像分類的卷積神經網絡等基礎子產品,正如Geoff Hinton在他最近的Capsule Networks 

論文

中所做的

那樣

為了實作機器學習的下一步,我們需要提出基本問題。這需要深度數學成熟,因為整個過程涉及數千小時的“卡住”,提出問題,并在追求新問題時翻轉問題觀點。“有趣的探索”使科學家們能夠提出深刻,富有洞察力的問題,而不僅僅是簡單的想法/架構的結合。

ML研究是一個非常豐富的研究領域,在公平性、可解釋性和可通路性方面都存在緊迫問題。越來越多的研究者希望從數學的角度來解決這些問題,而非辯證性的去看待問題。

數十款阿裡雲産品限時折扣中,趕緊點選領劵開始雲上實踐吧!

以上為譯文。

本文由

阿裡雲雲栖社群

組織翻譯。

文章原标題《learning-math-for-machine-learning》,

作者:

Vincent Chen

 譯者:虎說八道,審校:。

文章為簡譯,更為詳細的内容,請檢視

原文

繼續閱讀