開始機器學(xué)習(xí)之旅,需要什么層次的數(shù)學(xué)功底? 尤其是對于那些沒有學(xué)過數(shù)學(xué)和統(tǒng)計學(xué)的同學(xué)們來說,這個問題當(dāng)前不甚清楚,在這篇文章中,我將要為那些使用機器學(xué)習(xí)技術(shù)來開發(fā)產(chǎn)品或做學(xué)術(shù)研究的人們提供一些數(shù)學(xué)背景方面的建議。這些建議源于我與機器學(xué)習(xí)工程師、研究人員和教育工作者的對話,以及我在機器學(xué)習(xí)研究和產(chǎn)業(yè)方面的獨到經(jīng)驗。
為了構(gòu)造(機器學(xué)習(xí)中)數(shù)學(xué)的背景,我會先講一些與傳統(tǒng)課堂不同的思維模式和策略。然后,我會概述不同類型機器學(xué)習(xí)工作所需的具體背景,畢竟機器學(xué)習(xí)涉及的學(xué)科范圍太廣泛了(它涵蓋了高中級別的統(tǒng)計和微積分,也涵蓋了概率圖形模型(PGM)的最新進展)。
我希望讀者們在讀到文章的最后時,能夠知道自己有效使用機器學(xué)習(xí)所必需的數(shù)學(xué)知識。
作為這篇文章的前言,我想說:對于不同學(xué)習(xí)者的個人需求或目標(biāo)來說,學(xué)習(xí)的風(fēng)格、架構(gòu)和資源都應(yīng)該是獨一無二的!
數(shù)學(xué)焦慮癥的小貼士
事實證明,很多人——包括工程師——都害怕數(shù)學(xué)。首先,我想談?wù)劇吧瞄L數(shù)學(xué)”這類傳說。
事實是,擅長數(shù)學(xué)的人都做過大量的數(shù)學(xué)練習(xí)。因此,在研究數(shù)學(xué)問題被卡住時,他們依然能夠“風(fēng)雨不動安如山”。如最近的研究所示,學(xué)生的心態(tài),而非先天才能,才是預(yù)測一個人學(xué)習(xí)數(shù)學(xué)的能力的主要因素。
要清楚的是,要達到這種境界,需要時間和精力。這顯然不是你天生就有的能力。本文的剩余部分將幫助您確定所需的數(shù)學(xué)功底,并概述構(gòu)建它的策略。
萬事開頭難 作為軟性先修數(shù)學(xué)條件,我們假設(shè)你對線性代數(shù)/矩陣微積分都有了解,這樣你就不會為奇怪的符號苦惱。同時我們還假設(shè)你有基礎(chǔ)的概率知識。我們鼓勵你擁有基本的編程能力,這是領(lǐng)悟機器學(xué)習(xí)中的數(shù)學(xué)的有力工具。之后,你可以根據(jù)你感興趣的內(nèi)容調(diào)整你的學(xué)習(xí)重點。
如何在課外學(xué)習(xí)數(shù)學(xué)?
我相信學(xué)習(xí)數(shù)學(xué)的最佳方式是以學(xué)生的身份全職學(xué)習(xí)。脫離了學(xué)校的環(huán)境,你可能不太容易獲得系統(tǒng)的知識結(jié)構(gòu)、正能量的同學(xué)壓力和其他可用資源。
為了在課外學(xué)習(xí)數(shù)學(xué),我建議大家將學(xué)習(xí)小組或午餐研討會作為學(xué)習(xí)的重要途徑。在研究型的實驗室中,這可能以閱讀小組的形式呈現(xiàn)。在構(gòu)建知識結(jié)構(gòu)方面,你的小組可以把教科書各章節(jié)過一遍,并定期對課程進行討論,同時通過Slack平臺的途徑參與遠程問答。
這里,企業(yè)文化發(fā)揮著重要的作用——這種“額外”的研究學(xué)習(xí)應(yīng)該受到管理層的鼓勵和激勵,而不是被視為影響產(chǎn)品交付的消極怠工行為。事實上,雖然短期內(nèi)會花費一些成本,但是構(gòu)建同伴驅(qū)動的學(xué)習(xí)環(huán)境可以使你在長期的工作中更有效率。
數(shù)學(xué)與代碼 在機器學(xué)習(xí)工作流程中,數(shù)學(xué)和代碼緊密結(jié)合。代碼通常直接由數(shù)學(xué)直覺構(gòu)建,有時它甚至?xí)蛿?shù)學(xué)符號使用相同的句法。事實上,現(xiàn)代數(shù)據(jù)科學(xué)框架應(yīng)用(例如NumPy)使得數(shù)學(xué)運算(例如矩陣/矢量積)與可讀代碼之間的轉(zhuǎn)換變得直觀和有效。
我鼓勵你將編寫代碼作為鞏固學(xué)習(xí)的一種方式。學(xué)習(xí)數(shù)學(xué)和編寫代碼都依賴于你對問題理解和表述的精準(zhǔn)程度。例如,手動編寫損失函數(shù)或優(yōu)化算法,就是真正理解這些基礎(chǔ)概念的好方法。
讓我們來探索一個實際的問題:在你的神經(jīng)網(wǎng)絡(luò)中實現(xiàn)ReLU函數(shù)激活的反向傳播(是的,即使Tensorflow / PyTorch可以替你做這個?。_@里簡單介紹一下,反向傳播是一種依賴于微積分鏈?zhǔn)揭?guī)則來有效計算梯度的技術(shù)。為了在這個問題設(shè)定下使用鏈?zhǔn)揭?guī)則,我們將上游導(dǎo)數(shù)與ReLU函數(shù)的梯度相乘。
我們先將ReLU激活函數(shù)進行可視化(就是下圖的樣子),然后這樣定義這個函數(shù):
為了計算函數(shù)的梯度(直觀來說就是斜率),你可以想象出這樣一下分段函數(shù),如下面的指示函數(shù)所示:
NumPy為我們提供了有用且直觀的語法——我們的激活函數(shù)(藍色曲線)可以通過代碼表述出來,其中x是我們的輸入,relu是我們的輸出:
relu = np.maximum(x, 0)
ReLU函數(shù)的梯度函數(shù)(紅色曲線)可以如下所示,grad表示上游梯度:
grad[x < 0] = 0
在沒有首先自己推導(dǎo)梯度公式的情況下,這行代碼可能沒有任何意義。在我們的代碼中,對于滿足[h <0]條件(即x<0)的所有元素,將其對應(yīng)上游激活函數(shù)的梯度(grad)數(shù)值設(shè)置為0。在數(shù)學(xué)上,這實際上相當(dāng)于ReLU梯度函數(shù)的分段表示,所有x軸上小于0的數(shù)值,當(dāng)乘以上游梯度時,它的值會變成0。
正如我們所見,通過我們對微積分的基本理解,我們可以清楚地理解代碼的含義。
構(gòu)建機器學(xué)習(xí)產(chǎn)品必需的數(shù)學(xué)知識
為了介紹這一節(jié),我與機器學(xué)習(xí)工程師進行了交談,確定了數(shù)學(xué)在調(diào)試系統(tǒng)時最有力的地方。以下是工程師基于數(shù)學(xué)見解回答的問題示例。
如果你還沒有遇到過它們,請不要擔(dān)心。希望本節(jié)能夠為你提供一些特定問題的相關(guān)內(nèi)容,也許你也會遇到類似的問題并嘗試解決喲!
Q:我該用哪種聚類方法可視化高維的客戶數(shù)據(jù)呢?
A:PCA或者tSNE。
Q:我該如何校準(zhǔn)用來阻隔虛假用戶交易的安全閾值(例如在0.9或0.8的置信水平下)?
A:可以使用概率校準(zhǔn)(Probability calibration)。
Q:描述我衛(wèi)星數(shù)據(jù)在世界特定地區(qū)(如硅谷與阿拉斯加州)的偏差的最佳方法是什么?
A:這是一個開放的研究型問題。也許可以基于“人口平價”(demographic parity,該方法是要求預(yù)測必須與某特定敏感屬性不相關(guān))的原則展開。
通常,統(tǒng)計和線性代數(shù)可以通過某種方式應(yīng)用于這些問題中的任何一個。但是,要獲得滿意的答案通常需要針對特定領(lǐng)域的方法。如果是這樣的話,你如何縮小你所需學(xué)習(xí)的數(shù)學(xué)范疇呢?
定義一個系統(tǒng)我們并不缺乏資源(例如數(shù)據(jù)分析使用scikit-learn,深度學(xué)習(xí)使用keras)去幫助我們進行系統(tǒng)建模。而在建模之前,我們需要圍繞將要被建模的系統(tǒng)考慮這些問題:
系統(tǒng)的輸入/輸出分別是什么?
應(yīng)該如何準(zhǔn)備好合適的數(shù)據(jù)格式,從而適應(yīng)系統(tǒng)要求?
如何進行特征建?;驍?shù)據(jù)整理,以便于模型的推廣?
如何為需要解決的問題設(shè)定合理的目標(biāo)?
你會驚訝地發(fā)現(xiàn)——要定義一個系統(tǒng),其實非常復(fù)雜。而搭建數(shù)據(jù)工作流(data pipeline)也并不容易。換句話說,構(gòu)建一個機器學(xué)習(xí)產(chǎn)品需要進行大量的繁瑣復(fù)雜的工作;而這些工作并不需要太深的數(shù)學(xué)背景。
數(shù)學(xué)需要“按需學(xué)習(xí)”當(dāng)你一頭扎進一個機器學(xué)習(xí)的任務(wù)中時,會發(fā)現(xiàn)其中有些步驟對你來說難以進行,這種情況在進行算法調(diào)試時尤為常見。當(dāng)你停滯其中時,是否知道該如何解決這一窘境呢?你設(shè)定的權(quán)重是否合理?
為什么模型沒有按照某個損失定義進行收斂?衡量成功的正確指標(biāo)是什么?此時,有一些方法可以幫助到你:對數(shù)據(jù)做出假設(shè)、以不同方式約束優(yōu)化、或嘗試不同的算法。
通常,你會發(fā)現(xiàn)建模/調(diào)試過程中需要數(shù)學(xué)直覺(例如,選擇損失函數(shù)或評估指標(biāo)),這些直覺可能有助于做出明智的工程決策。 這些是你學(xué)習(xí)的機會!
來自Fast.ai的Rachel Thomas是這種“按需”方法的支持者——在教育學(xué)生時,她發(fā)現(xiàn)對于深度學(xué)習(xí)的學(xué)生來說,讓他們對將要學(xué)習(xí)的內(nèi)容感到興奮更為重要。之后,針對這些學(xué)生的數(shù)學(xué)教育即可“按需”填補之前未涉及的知識漏洞。
接下來我將介紹對研究性工作中的機器學(xué)習(xí)方法有用的數(shù)學(xué)思維方式。批判性的觀點認(rèn)為,機器學(xué)習(xí)研究方法就像是就像是“拿來主義”,人們只是通過把更多運算扔進模型中,從而獲得更好的預(yù)測表現(xiàn)。在一些圈子里,研究人員對實證研究方法仍然持懷疑態(tài)度,認(rèn)為這些方法缺乏數(shù)學(xué)上的嚴(yán)謹(jǐn)性(例如某些深度學(xué)習(xí)方法),這些方法是不能將人類智慧發(fā)揮到極致的。
值得關(guān)注的是,研究界是建立在現(xiàn)有系統(tǒng)和假設(shè)的基礎(chǔ)上,而這些系統(tǒng)和假設(shè)可能不會擴展我們對該領(lǐng)域的基本理解。研究人員需要提供新的基本模塊,供我們在該領(lǐng)域中獲取全新洞察力和方法。
這可能意味著我們需要像“深度學(xué)習(xí)教父” Geoff Hinton在他最近的Capsule Networks論文中所做的那樣 ,重新思考構(gòu)建某些領(lǐng)域的基礎(chǔ)知識(如應(yīng)用于圖形分類的卷積神經(jīng)網(wǎng)絡(luò))。
為了邁出下一步,我們需要提一些基本問題。這需要在數(shù)學(xué)方面的極度熟練——深度學(xué)習(xí)一書的作者Michael Nielsen稱之為“有趣的探索”。這個過程涉及數(shù)千小時停滯、提問、重新思考問題以探索新觀點。
“有趣的探索”使科學(xué)家們能夠提出深刻,富有洞察力的問題,而不僅僅是簡單的想法或架構(gòu)的結(jié)合。顯而易見,想要學(xué)會機器學(xué)習(xí)研究領(lǐng)域內(nèi)需要的所有知識,是不可能的任務(wù)!要正確地進行“有趣的探索”,你需要遵循自己的興趣,而不是為最熱門的新結(jié)果感到焦慮。
機器學(xué)習(xí)研究是一個非常豐富的研究領(lǐng)域。當(dāng)然,它在公平性、可解釋性和可獲得性方面也存在亟待解決的問題。在所有科學(xué)學(xué)科中都是如此,基本思維的獲得并不能一蹴而就。要在解決關(guān)鍵問題所需的高水平數(shù)學(xué)框架的廣度進行思考,需要長期的耐心。
將機器學(xué)習(xí)研究“大眾化”希望我沒有把“研究數(shù)學(xué)”描繪得太深奧,因為這些通過數(shù)學(xué)而產(chǎn)生的思考應(yīng)該以直觀的形式呈現(xiàn)!可悲的是,許多機器學(xué)習(xí)論文仍然充斥著復(fù)雜且不一致的術(shù)語,使關(guān)鍵的直覺難以被辨別。作為一名學(xué)生,你可以嘗試將密集的論文翻譯成容易被直觀理解和消化的小塊文章,通過博客和推特等發(fā)表,這將對你自己和這個領(lǐng)域大有裨益。你甚至可以從distill.pub中找些例子,當(dāng)作解釋機器模型研究方法結(jié)果的讀物。換句話說,將技術(shù)思想的祛魅化作“有趣的探索”手段——你自己的學(xué)習(xí)(和機器學(xué)習(xí)Twitter)會感謝你的!主要領(lǐng)悟總的來說,我希望這篇文章為你提供了一個思考研究機器學(xué)習(xí)所需數(shù)學(xué)教育的開端。
不同的問題需要不同程度的直覺,我鼓勵你首先弄清楚你的目標(biāo)是什么。
如果你希望構(gòu)建產(chǎn)品,請通過問題尋找同行和學(xué)習(xí)小組,并深入研究最終目標(biāo),激發(fā)你的學(xué)習(xí)。
在研究領(lǐng)域,廣泛的數(shù)學(xué)基礎(chǔ)可以為你提供工具,通過提供新的基礎(chǔ)知識來推動該領(lǐng)域的發(fā)展。
-
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8418瀏覽量
132646
原文標(biāo)題:機器學(xué)習(xí)的數(shù)學(xué)焦慮
文章出處:【微信號:worldofai,微信公眾號:worldofai】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論