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