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

觀點(diǎn) | 我們該如何學(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í)踐中常常需要用到的數(shù)學(xué)知識。


數(shù)學(xué)達(dá)到什么水平才可以開始機(jī)器學(xué)習(xí)?人們并不清楚,尤其是那些在校期間沒有研究過數(shù)學(xué)或統(tǒng)計(jì)學(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è)界工作中的個(gè)人經(jīng)驗(yàn)。


為了構(gòu)建必備的數(shù)學(xué)背景,我首先提出不同的思維模式和策略,幫助大家在學(xué)校之外也可以接受數(shù)學(xué)教育。然后,我會給出不同種類機(jī)器學(xué)習(xí)工作所需的數(shù)學(xué)背景,從高中水平的統(tǒng)計(jì)學(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)的實(shí)踐經(jīng)驗(yàn)。因此,他們在研究數(shù)學(xué)時(shí)更容易保持專注。相比內(nèi)在能力,學(xué)生的思維模式才是決定一個(gè)人學(xué)習(xí)數(shù)學(xué)能力的關(guān)鍵。


不過要想達(dá)到這種狀態(tài)需要付出大量時(shí)間和努力,但是這并不會讓你感到無聊。下文將幫助大家確定你所需要的數(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é)生。因?yàn)殡x開了學(xué)校,我們很難進(jìn)行結(jié)構(gòu)化的學(xué)習(xí),也很難有正向的同齡壓力和眾多的學(xué)習(xí)資源。但是在校外學(xué)習(xí)中,我比較推薦成立學(xué)習(xí)小組或研討會,它們同樣能提供類似學(xué)校的學(xué)習(xí)環(huán)境。


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


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


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


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


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

微信圖片_20180804202209.jpg


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


如上所示,若對于微積分有一定的理解,那么我們可以清晰地理解這兩行基本代碼。因?yàn)闄C(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)計(jì)學(xué)方法


一般而言,統(tǒng)計(jì)學(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)驗(yàn)法則(附 PDF)


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


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


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


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


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


這里,我想要描述下對機(jī)器學(xué)習(xí)研究有幫助的數(shù)學(xué)心態(tài)。對機(jī)器學(xué)習(xí)研究比較嘲諷的觀點(diǎn)認(rèn)為,它是一種即插即用的系統(tǒng),把大量計(jì)算層級堆疊在一起而獲得好的表現(xiàn)。在一些圈子里,研究人員依然質(zhì)疑經(jīng)驗(yàn)性的方法缺乏嚴(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 描述的「有趣的多探索」。這個(gè)過程可能經(jīng)歷數(shù)千小時(shí)的思考、提問、推翻問題尋求新的視角?!赣腥さ奶剿鳌鼓茏尶茖W(xué)家提出深度、有洞見的問題,超越簡單的想法和架構(gòu)。


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


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


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


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


總結(jié)


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


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

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

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

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


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