為了構造(機器學習中)數學的背景,我會先講一些與傳統課堂不同的思維模式和策略。然後,我會概述不同型別機器學習工作所需的具體背景,畢竟機器學習涉及的學科範圍太廣泛了(它涵蓋了高中級別的統計和微積分,也涵蓋了概率圖形模型(PGM)的最新進展)。
我希望讀者們在讀到文章的最後時,能夠知道自己有效使用機器學習所必需的數學知識。
作為這篇文章的前言,我想說:對於不同學習者的個人需求或目標來說,學習的風格、架構和資源都應該是獨一無二的!
事實是,擅長數學的人都做過大量的數學練習。因此,在研究數學問題被卡住時,他們依然能夠“風雨不動安如山”。如最近的研究所示,學生的心態,而非先天才能,才是預測一個人學習數學的能力的主要因素。
要清楚的是,要達到這種境界,需要時間和精力。這顯然不是你天生就有的能力。本文的剩餘部分將幫助您確定所需的數學功底,並概述構建它的策略。
如何在課外學習數學?
為了在課外學習數學,我建議大家將學習小組或午餐研討會作為學習的重要途徑。在研究型的實驗室中,這可能以閱讀小組的形式呈現。在構建知識結構方面,你的小組可以把教科書各章節過一遍,並定期對課程進行討論,同時通過Slack平臺的途徑參與遠端問答。
這裡,企業文化發揮著重要的作用——這種“額外”的研究學習應該受到管理層的鼓勵和激勵,而不是被視為影響產品交付的消極怠工行為。事實上,雖然短期內會花費一些成本,但是構建同伴驅動的學習環境可以使你在長期的工作中更有效率。
我鼓勵你將編寫程式碼作為鞏固學習的一種方式。學習數學和編寫程式碼都依賴於你對問題理解和表述的精準程度。例如,手動編寫損失函式或優化演算法,就是真正理解這些基礎概念的好方法。
讓我們來探索一個實際的問題:在你的神經網路中實現ReLU函式啟用的反向傳播(是的,即使Tensorflow / PyTorch可以替你做這個!)。這裡簡單介紹一下,反向傳播是一種依賴於微積分鏈式規則來有效計算梯度的技術。為了在這個問題設定下使用鏈式規則,我們將上游導數與ReLU函式的梯度相乘。
我們先將ReLU啟用函式進行視覺化(就是下圖的樣子),然後這樣定義這個函式:
relu = np.maximum(x, 0)
ReLU函式的梯度函式(紅色曲線)可以如下所示,grad表示上游梯度:
grad[x < 0] = 0
在沒有首先自己推導梯度公式的情況下,這行程式碼可能沒有任何意義。在我們的程式碼中,對於滿足[h <0]條件(即x<0)的所有元素,將其對應上游啟用函式的梯度(grad)數值設定為0。在數學上,這實際上相當於ReLU梯度函式的分段表示,所有x軸上小於0的數值,當乘以上游梯度時,它的值會變成0。
正如我們所見,通過我們對微積分的基本理解,我們可以清楚地理解程式碼的含義。
如果你還沒有遇到過它們,請不要擔心。希望本節能夠為你提供一些特定問題的相關內容,也許你也會遇到類似的問題並嘗試解決喲!
Q:我該用哪種聚類方法視覺化高維的客戶資料呢?
A:PCA或者tSNE。
Q:我該如何校準用來阻隔虛假使用者交易的安全閾值(例如在0.9或0.8的置信水平下)?
A:可以使用概率校準(Probability calibration)。
Q:描述我衛星資料在世界特定地區(如矽谷與阿拉斯加州)的偏差的最佳方法是什麼?
A:這是一個開放的研究型問題。也許可以基於“人口平價”(demographic parity,該方法是要求預測必須與某特定敏感屬性不相關)的原則展開。
通常,統計和線性代數可以通過某種方式應用於這些問題中的任何一個。但是,要獲得滿意的答案通常需要針對特定領域的方法。如果是這樣的話,你如何縮小你所需學習的數學範疇呢?
系統的輸入/輸出分別是什麼?
應該如何準備好合適的資料格式,從而適應系統要求?
如何進行特徵建模或資料整理,以便於模型的推廣?
如何為需要解決的問題設定合理的目標?
你會驚訝地發現——要定義一個系統,其實非常複雜。而搭建資料工作流(data pipeline)也並不容易。換句話說,構建一個機器學習產品需要進行大量的繁瑣複雜的工作;而這些工作並不需要太深的數學背景。
為什麼模型沒有按照某個損失定義進行收斂?衡量成功的正確指標是什麼?此時,有一些方法可以幫助到你:對資料做出假設、以不同方式約束優化、或嘗試不同的演算法。
通常,你會發現建模/除錯過程中需要數學直覺(例如,選擇損失函式或評估指標),這些直覺可能有助於做出明智的工程決策。 這些是你學習的機會!
來自Fast.ai的Rachel Thomas是這種“按需”方法的支持者——在教育學生時,她發現對於深度學習的學生來說,讓他們對將要學習的內容感到興奮更為重要。之後,針對這些學生的數學教育即可“按需”填補之前未涉及的知識漏洞。
值得關注的是,研究界是建立在現有系統和假設的基礎上,而這些系統和假設可能不會擴充套件我們對該領域的基本理解。研究人員需要提供新的基本模組,供我們在該領域中獲取全新洞察力和方法。
這可能意味著我們需要像“深度學習教父” Geoff Hinton在他最近的Capsule Networks論文中所做的那樣 ,重新思考構建某些領域的基礎知識(如應用於圖形分類的卷積神經網路)。
為了邁出下一步,我們需要提一些基本問題。這需要在數學方面的極度熟練——深度學習一書的作者Michael Nielsen稱之為“有趣的探索”。這個過程涉及數千小時停滯、提問、重新思考問題以探索新觀點。
“有趣的探索”使科學家們能夠提出深刻,富有洞察力的問題,而不僅僅是簡單的想法或架構的結合。顯而易見,想要學會機器學習研究領域內需要的所有知識,是不可能的任務!要正確地進行“有趣的探索”,你需要遵循自己的興趣,而不是為最熱門的新結果感到焦慮。
機器學習研究是一個非常豐富的研究領域。當然,它在公平性、可解釋性和可獲得性方面也存在亟待解決的問題。在所有科學學科中都是如此,基本思維的獲得並不能一蹴而就。要在解決關鍵問題所需的高水平數學框架的廣度進行思考,需要長期的耐心。
不同的問題需要不同程度的直覺,我鼓勵你首先弄清楚你的目標是什麼。
如果你希望構建產品,請通過問題尋找同行和學習小組,並深入研究最終目標,激發你的學習。
在研究領域,廣泛的數學基礎可以為你提供工具,通過提供新的基礎知識來推動該領域的發展。