《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 觀點 | 我們該如何學(xué)習(xí)機(jī)器學(xué)習(xí)中的數(shù)學(xué)

觀點 | 我們該如何學(xué)習(xí)機(jī)器學(xué)習(xí)中的數(shù)學(xué)

2018-08-04
關(guān)鍵詞: 機(jī)器學(xué)習(xí) PGM NumPy

數(shù)學(xué)在機(jī)器學(xué)習(xí)中非常重要,不論是在算法上理解模型代碼,,還是在工程上構(gòu)建系統(tǒng),,數(shù)學(xué)都必不可少。通常離開學(xué)校后很難有機(jī)會靜下心學(xué)習(xí)數(shù)學(xué)知識,,因此我們最好能通過閱讀小組或讀書會等形式營造環(huán)境,,并專注學(xué)習(xí)那些在實踐中常常需要用到的數(shù)學(xué)知識。


數(shù)學(xué)達(dá)到什么水平才可以開始機(jī)器學(xué)習(xí),?人們并不清楚,,尤其是那些在校期間沒有研究過數(shù)學(xué)或統(tǒng)計學(xué)的人。


本文的寫作目的是介紹構(gòu)建機(jī)器學(xué)習(xí)產(chǎn)品或進(jìn)行相關(guān)學(xué)術(shù)研究所必需的數(shù)學(xué)背景,,以及數(shù)學(xué)在工程和研究中的重要性,。這些建議是根據(jù)我和機(jī)器學(xué)習(xí)工程師、研究者和教育者交流而得到的,,當(dāng)然也有我自己在機(jī)器學(xué)習(xí)研究和業(yè)界工作中的個人經(jīng)驗,。


為了構(gòu)建必備的數(shù)學(xué)背景,我首先提出不同的思維模式和策略,,幫助大家在學(xué)校之外也可以接受數(shù)學(xué)教育,。然后,我會給出不同種類機(jī)器學(xué)習(xí)工作所需的數(shù)學(xué)背景,,從高中水平的統(tǒng)計學(xué)和微積分到概率圖模型(PGM)的最新進(jìn)展,。希望大家讀完本文后,能夠?qū)ψ约涸跈C(jī)器學(xué)習(xí)工作中所需要的數(shù)學(xué)教育有清楚的認(rèn)知。


關(guān)于數(shù)學(xué)焦慮


很多人害怕數(shù)學(xué),,包括工程師,。首先,我想解決「擅長數(shù)學(xué)」這一迷思,。


一般精通數(shù)學(xué)的人有大量和數(shù)學(xué)有關(guān)的實踐經(jīng)驗,。因此,他們在研究數(shù)學(xué)時更容易保持專注,。相比內(nèi)在能力,,學(xué)生的思維模式才是決定一個人學(xué)習(xí)數(shù)學(xué)能力的關(guān)鍵。


不過要想達(dá)到這種狀態(tài)需要付出大量時間和努力,,但是這并不會讓你感到無聊,。下文將幫助大家確定你所需要的數(shù)學(xué)水平,以及學(xué)習(xí)策略,。


機(jī)器學(xué)習(xí)中的數(shù)學(xué)


作為軟件工程的開發(fā)者,,我們一般有基礎(chǔ)的線性代數(shù)與矩陣微分學(xué)知識,也有一些概率論和編程的基礎(chǔ),。因此以它們?yōu)榛A(chǔ),,我們只需要根據(jù)不同的方向與領(lǐng)域調(diào)整知識結(jié)構(gòu)就行。


那么我們該如何在校外學(xué)習(xí)數(shù)學(xué)呢,?我相信學(xué)習(xí)數(shù)學(xué)最好的方法是將其作為一份全職工作,,也就是學(xué)生。因為離開了學(xué)校,,我們很難進(jìn)行結(jié)構(gòu)化的學(xué)習(xí),,也很難有正向的同齡壓力和眾多的學(xué)習(xí)資源。但是在校外學(xué)習(xí)中,,我比較推薦成立學(xué)習(xí)小組或研討會,,它們同樣能提供類似學(xué)校的學(xué)習(xí)環(huán)境。


在研究實驗室中,,這種課外學(xué)習(xí)可能是以閱讀小組的形式進(jìn)行,。我們可以討論課本中難以理解的地方,也可以討論自己對它們的見解,。而學(xué)習(xí)的環(huán)境是支持長期數(shù)學(xué)學(xué)習(xí)的動力,,因此建立這種環(huán)境并意識到數(shù)學(xué)在工程與研究中的重要性非常關(guān)鍵。


數(shù)學(xué)與代碼


數(shù)學(xué)和代碼在機(jī)器學(xué)習(xí)工作流程中高度交織在一起,。代碼通??梢愿鶕?jù)數(shù)學(xué)直觀地構(gòu)建,它甚至?xí)蚕頂?shù)學(xué)符號與句法,。實際上,,NumPy 等現(xiàn)代數(shù)據(jù)科學(xué)框架令數(shù)學(xué)運(yùn)算很容易轉(zhuǎn)化為直觀的代碼,。我們可以將代碼作為鞏固學(xué)習(xí)的方式,且數(shù)學(xué)和代碼都依賴于對概念的精確理解與符號表示,。例如,,手動用 NumPy 實現(xiàn)損失函數(shù)或最優(yōu)化算法是理解它們概念非常好的方式。


作為通過代碼學(xué)習(xí)數(shù)學(xué)的案例,,我們可以考慮一個實際的案例,,即為神經(jīng)網(wǎng)絡(luò)實現(xiàn)反向傳播和 ReLU 激活函數(shù)。作為入門級概念,,反向傳播是一種依賴于微積分鏈?zhǔn)角髮?dǎo)法則的技術(shù),,它能高效計算梯度,。為了在神經(jīng)網(wǎng)絡(luò)中利用鏈?zhǔn)角髮?dǎo)法則,,我們可以使用 ReLU 激活函數(shù)的梯度乘以上游導(dǎo)數(shù)。


為了完成反向傳播的案例,,首先我們可以可視化 ReLU 激活函數(shù):

微信圖片_20180804202209.jpg


為了計算 ReLU 的梯度或斜率,,我們可以將其可視化為分段函數(shù),其中自變量小于零的地方斜率為 0,,自變量大于零的地方斜率恒等于 1,。

微信圖片_20180804202236.jpg

NumPy 可以幫助我們構(gòu)建 ReLU 函數(shù),使用 maximum 函數(shù)可以只輸出該函數(shù)中所有參數(shù)中相對較大的值,。如下所示 x 為輸入,,relu 為輸出:


relu = np.maximum(x, 0)


ReLU 激活函數(shù)的梯度值可以表示為以下,其中 grad 表示為上游梯度:


grad[x < 0] = 0


如果沒有首先手動推導(dǎo)出梯度,,上述代碼可能并不是那么容易理解,。在我們的代碼中,其將所有滿足條件 [x < 0] 的元素梯度 grad 都設(shè)置為零,,也就是說上游梯度只有在 x>0 的情況下才能繼續(xù)向前傳播,。在數(shù)學(xué)上,這等價于 ReLU 激活函數(shù)梯度的分段線性表征,,它將所有小于 0 的值壓縮為 0,,并乘上上游梯度。


如上所示,,若對于微積分有一定的理解,,那么我們可以清晰地理解這兩行基本代碼。因為機(jī)器學(xué)習(xí)中很多代碼都在描述數(shù)學(xué)運(yùn)算,,因此了解數(shù)學(xué)原理對于理解機(jī)器學(xué)習(xí)模型過程非常重要,。


構(gòu)建機(jī)器學(xué)習(xí)產(chǎn)品中的數(shù)學(xué)


為了完成這一章節(jié),我曾與機(jī)器學(xué)習(xí)工程師探討到底哪些數(shù)學(xué)對于調(diào)試他們的系統(tǒng)最重要,。以下一些問題與回答是工程師站在數(shù)學(xué)的角度下的看法,。


我們可以使用什么樣的降維算法可視化高維用戶數(shù)據(jù),?

方法:主成分分析與 t 分布隨機(jī)近鄰嵌入


我們該怎樣校準(zhǔn)閾值(例如置信度選擇 0.9 或 0.8)以阻止一些欺騙性的用戶數(shù)據(jù)?

方法:概率校準(zhǔn)


將衛(wèi)星數(shù)據(jù)偏向硅谷或阿拉斯加等世界某塊具體地區(qū)的最好方法是什么,?

方法:開放性問題,,也許可以是人口統(tǒng)計學(xué)方法


一般而言,統(tǒng)計學(xué)和線性代數(shù)能以某些方式應(yīng)用于這些問題,。然而,,為了獲得令人滿意的回答,我們通常需要特定領(lǐng)域的方法,。如果是這樣的話,,我們該如何選擇一些我們需要學(xué)習(xí)的數(shù)學(xué)內(nèi)容?


定義你的系統(tǒng)


目前有非常多的資源可以幫助我們跨越寫代碼而直接調(diào)用函數(shù)構(gòu)建機(jī)器學(xué)習(xí)系統(tǒng),,例如數(shù)據(jù)分析中常用的 scikit-learn 和深度學(xué)習(xí)中常用的 keras,。所以你們可以嘗試回答以下關(guān)于搭建機(jī)器學(xué)習(xí)流程的問題:


機(jī)器學(xué)習(xí)系統(tǒng)中輸入和輸出都是什么?

我們該如何準(zhǔn)備合適的數(shù)據(jù)以擬合系統(tǒng),?

如何構(gòu)建特征或數(shù)據(jù)以幫助模型提高泛化性能,?

如何為我們的任務(wù)定義合適的目標(biāo)函數(shù)?


你可能會比較驚訝,,定義機(jī)器學(xué)習(xí)系統(tǒng)可能會比較困難,,但搭建的流程并不復(fù)雜。換而言之,,構(gòu)建機(jī)器學(xué)習(xí)產(chǎn)品要求非常多的工程工作,,但并不要求有非常深厚的數(shù)學(xué)背景。


資源:谷歌機(jī)器學(xué)習(xí)應(yīng)用的四十三條經(jīng)驗法則(附 PDF)


學(xué)習(xí)必要的數(shù)學(xué)


如果一頭鉆進(jìn)機(jī)器學(xué)習(xí)工作流,,你可能會發(fā)現(xiàn)在調(diào)試機(jī)器學(xué)習(xí)系統(tǒng)時會遇到一些困難,。當(dāng)遇到困難時你知道需要查找什么嗎?你的權(quán)重是不是合理,?為什么模型使用一些損失函數(shù)不能收斂,?用什么樣的度量方法衡量模型性能才是合理的?在這個時候,,對數(shù)據(jù)分布做出假設(shè),、約束最優(yōu)化方法或采用不同的算法都是非常有幫助的。


通常,,你可能會發(fā)現(xiàn)在建模和調(diào)試過程背后有直觀的數(shù)學(xué)原理,,例如選擇損失函數(shù)或評估度量,這些數(shù)學(xué)原理都會幫助我們實現(xiàn)更優(yōu)的工程決策,。


因此,,根據(jù)實際工程中遇到的數(shù)學(xué),再進(jìn)一步學(xué)習(xí)這些數(shù)學(xué)才是更好的方法,。


機(jī)器學(xué)習(xí)研究中的數(shù)學(xué)


這里,,我想要描述下對機(jī)器學(xué)習(xí)研究有幫助的數(shù)學(xué)心態(tài),。對機(jī)器學(xué)習(xí)研究比較嘲諷的觀點認(rèn)為,它是一種即插即用的系統(tǒng),,把大量計算層級堆疊在一起而獲得好的表現(xiàn),。在一些圈子里,研究人員依然質(zhì)疑經(jīng)驗性的方法缺乏嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)推導(dǎo)(例如,,一些深度學(xué)習(xí)方法),,無法為我們帶來廣義上的智能。


它擔(dān)憂研究界可能是建立在已有的系統(tǒng)與假設(shè)上,,并未擴(kuò)展我們對機(jī)器學(xué)習(xí)領(lǐng)域的基礎(chǔ)理解,。研究員們需要貢獻(xiàn)新的、基礎(chǔ)的研究模塊,,從而用于啟發(fā)全新的洞見與研究方法,。例如像深度學(xué)習(xí)先驅(qū) Geoff Hinton 提出 Capsule 網(wǎng)絡(luò)一樣,它重新考慮圖像分類中常用的 CNN 基礎(chǔ),。


為了機(jī)器學(xué)習(xí)的下一步躍遷,,我們需要提出基礎(chǔ)問題。這需要對數(shù)學(xué)的熟練掌握,,就像深度學(xué)習(xí)書籍的作者 Michael Nielsen 描述的「有趣的多探索」。這個過程可能經(jīng)歷數(shù)千小時的思考,、提問,、推翻問題尋求新的視角?!赣腥さ奶剿鳌鼓茏尶茖W(xué)家提出深度,、有洞見的問題,超越簡單的想法和架構(gòu),。


要清楚,,在機(jī)器學(xué)習(xí)研究中,不可能什么都學(xué),。為了正確地「有趣探索」,,需要你遵照自己的興趣,而不是一直計較最熱的新研究,。


機(jī)器學(xué)習(xí)是一個異常豐富的研究領(lǐng)域,,有大量未解決的問題:公正、可解釋性,、易用性,。如同所有的學(xué)科一樣,基本思想不是請求式的過程,,需要耐心地用高級數(shù)學(xué)框架思考重大難題的解決方案,。


民主化機(jī)器學(xué)習(xí)研究


我希望我沒有把「研究數(shù)學(xué)」描述得過于難懂,,因為使用數(shù)學(xué)的思路應(yīng)該以直觀的方式表現(xiàn)。悲哀的是,,許多機(jī)器學(xué)習(xí)論文仍然充滿大量復(fù)雜的,、前后矛盾的術(shù)語,關(guān)鍵直覺難以理解,。作為學(xué)生,,你可以為自己、為這個領(lǐng)域做個偉大貢獻(xiàn):通過博客,、推特等方式把這些密集的論文轉(zhuǎn)寫為可消化的直覺知識塊,。以 distill.pub 為例,它就專注于提供對機(jī)器學(xué)習(xí)研究的清晰解釋,。換言之,,把技術(shù)思路的解釋作為學(xué)習(xí)探索的方式,有趣而又有幫助,。


總結(jié)


希望本文能夠幫助大家針對機(jī)器學(xué)習(xí)提高數(shù)學(xué)水平,。


不同的問題要求不同的數(shù)學(xué)水平,我鼓勵大家首先理清自己的目標(biāo),。

如果你希望構(gòu)建產(chǎn)品,,那么尋求同伴和研究小組,通過向最終目標(biāo)的前進(jìn)而激勵自己學(xué)習(xí),。

在學(xué)界研究中,,廣泛的數(shù)學(xué)基礎(chǔ)可以幫助貢獻(xiàn)新的基礎(chǔ)構(gòu)造塊,進(jìn)而推動領(lǐng)域發(fā)展,。

通常,,數(shù)學(xué)(尤其是研究論文形式的數(shù)學(xué))令人望而生畏,但是「沉醉其中」是學(xué)習(xí)過程的一大部分,。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected],。