觀點| 我們該如何學習機器學習中的數學

2021-01-08 機器之心Pro

選自ycombinator博客,機器之心編譯,作者:Vincent Chen,參與:機器之心編輯部。

數學在機器學習中非常重要,不論是在算法上理解模型代碼,還是在工程上構建系統,數學都必不可少。通常離開學校後很難有機會靜下心學習數學知識,因此我們最好能通過閱讀小組或讀書會等形式營造環境,並專注學習那些在實踐中常常需要用到的數學知識。

數學達到什麼水平才可以開始機器學習?人們並不清楚,尤其是那些在校期間沒有研究過數學或統計學的人。

本文的寫作目的是介紹構建機器學習產品或進行相關學術研究所必需的數學背景,以及數學在工程和研究中的重要性。這些建議是根據我和機器學習工程師、研究者和教育者交流而得到的,當然也有我自己在機器學習研究和業界工作中的個人經驗。

為了構建必備的數學背景,我首先提出不同的思維模式和策略,幫助大家在學校之外也可以接受數學教育。然後,我會給出不同種類機器學習工作所需的數學背景,從高中水平的統計學和微積分到概率圖模型(PGM)的最新進展。希望大家讀完本文後,能夠對自己在機器學習工作中所需要的數學教育有清楚的認知。

關於數學焦慮

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

一般精通數學的人有大量和數學有關的實踐經驗。因此,他們在研究數學時更容易保持專注。相比內在能力,學生的思維模式才是決定一個人學習數學能力的關鍵。

不過要想達到這種狀態需要付出大量時間和努力,但是這並不會讓你感到無聊。下文將幫助大家確定你所需要的數學水平,以及學習策略。

機器學習中的數學

作為軟體工程的開發者,我們一般有基礎的線性代數與矩陣微分學知識,也有一些概率論和編程的基礎。因此以它們為基礎,我們只需要根據不同的方向與領域調整知識結構就行。

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

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

數學與代碼

數學和代碼在機器學習工作流程中高度交織在一起。代碼通常可以根據數學直觀地構建,它甚至會共享數學符號與句法。實際上,NumPy 等現代數據科學框架令數學運算很容易轉化為直觀的代碼。我們可以將代碼作為鞏固學習的方式,且數學和代碼都依賴於對概念的精確理解與符號表示。例如,手動用 NumPy 實現損失函數或最優化算法是理解它們概念非常好的方式。

作為通過代碼學習數學的案例,我們可以考慮一個實際的案例,即為神經網絡實現反向傳播和 ReLU 激活函數。作為入門級概念,反向傳播是一種依賴於微積分鏈式求導法則的技術,它能高效計算梯度。為了在神經網絡中利用鏈式求導法則,我們可以使用 ReLU 激活函數的梯度乘以上遊導數。

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

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

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

relu = np.maximum(x, 0)

ReLU 激活函數的梯度值可以表示為以下,其中 grad 表示為上遊梯度:

grad[x < 0] = 0

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

如上所示,若對於微積分有一定的理解,那麼我們可以清晰地理解這兩行基本代碼。因為機器學習中很多代碼都在描述數學運算,因此了解數學原理對於理解機器學習模型過程非常重要。

構建機器學習產品中的數學

為了完成這一章節,我曾與機器學習工程師探討到底哪些數學對於調試他們的系統最重要。以下一些問題與回答是工程師站在數學的角度下的看法。

我們可以使用什麼樣的降維算法可視化高維用戶數據?方法:主成分分析與 t 分布隨機近鄰嵌入我們該怎樣校準閾值(例如置信度選擇 0.9 或 0.8)以阻止一些欺騙性的用戶數據?方法:概率校準將衛星數據偏向矽谷或阿拉斯加等世界某塊具體地區的最好方法是什麼?方法:開放性問題,也許可以是人口統計學方法

一般而言,統計學和線性代數能以某些方式應用於這些問題。然而,為了獲得令人滿意的回答,我們通常需要特定領域的方法。如果是這樣的話,我們該如何選擇一些我們需要學習的數學內容?

定義你的系統

目前有非常多的資源可以幫助我們跨越寫代碼而直接調用函數構建機器學習系統,例如數據分析中常用的 scikit-learn 和深度學習中常用的 keras。所以你們可以嘗試回答以下關於搭建機器學習流程的問題:

機器學習系統中輸入和輸出都是什麼?我們該如何準備合適的數據以擬合系統?如何構建特徵或數據以幫助模型提高泛化性能?如何為我們的任務定義合適的目標函數?

你可能會比較驚訝,定義機器學習系統可能會比較困難,但搭建的流程並不複雜。換而言之,構建機器學習產品要求非常多的工程工作,但並不要求有非常深厚的數學背景。

資源:谷歌機器學習應用的四十三條經驗法則(附 PDF)

學習必要的數學

如果一頭鑽進機器學習工作流,你可能會發現在調試機器學習系統時會遇到一些困難。當遇到困難時你知道需要查找什麼嗎?你的權重是不是合理?為什麼模型使用一些損失函數不能收斂?用什麼樣的度量方法衡量模型性能才是合理的?在這個時候,對數據分布做出假設、約束最優化方法或採用不同的算法都是非常有幫助的。

通常,你可能會發現在建模和調試過程背後有直觀的數學原理,例如選擇損失函數或評估度量,這些數學原理都會幫助我們實現更優的工程決策。

因此,根據實際工程中遇到的數學,再進一步學習這些數學才是更好的方法。

機器學習研究中的數學

這裡,我想要描述下對機器學習研究有幫助的數學心態。對機器學習研究比較嘲諷的觀點認為,它是一種即插即用的系統,把大量計算層級堆疊在一起而獲得好的表現。在一些圈子裡,研究人員依然質疑經驗性的方法缺乏嚴謹的數學推導(例如,一些深度學習方法),無法為我們帶來廣義上的智能。

它擔憂研究界可能是建立在已有的系統與假設上,並未擴展我們對機器學習領域的基礎理解。研究員們需要貢獻新的、基礎的研究模塊,從而用於啟發全新的洞見與研究方法。例如像深度學習先驅 Geoff Hinton 提出 Capsule 網絡一樣,它重新考慮圖像分類中常用的 CNN 基礎。

為了機器學習的下一步躍遷,我們需要提出基礎問題。這需要對數學的熟練掌握,就像深度學習書籍的作者 Michael Nielsen 描述的「有趣的多探索」。這個過程可能經歷數千小時的思考、提問、推翻問題尋求新的視角。「有趣的探索」能讓科學家提出深度、有洞見的問題,超越簡單的想法和架構。

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

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

民主化機器學習研究

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

總結

希望本文能夠幫助大家針對機器學習提高數學水平。

不同的問題要求不同的數學水平,我鼓勵大家首先理清自己的目標。如果你希望構建產品,那麼尋求同伴和研究小組,通過向最終目標的前進而激勵自己學習。在學界研究中,廣泛的數學基礎可以幫助貢獻新的基礎構造塊,進而推動領域發展。通常,數學(尤其是研究論文形式的數學)令人望而生畏,但是「沉醉其中」是學習過程的一大部分。

相關焦點

  • 資料| 機器學習中的數學
    以下書籍介紹來自豆瓣內容簡介 · · · · · ·《機器學習中的數學》是一本系統介紹機器學習中涉及的數學知識的入門圖書,本書從機器學習中的數學入門開始,以展示數學的友好性為原則,講述了機器學習中的一些常見的數學知識
  • 機器學習會取代數學建模嗎?讓我們假設一個微積分落後但深度學習...
    更驚人的是,很多數學博士生打算將機器學習嵌入到它們的研究課題中,從而形成將「傳統」(ODE和PDE)和「現代」(深度學習)相結合和新型混合模型。  所以,機器學習是否會最終取代數學建模?  如果數學模型在科研領域無法突破,我們最終是否會使用機器學習的方法來獲得建模上的進展呢?  當然不是!
  • 一文介紹機器學習中基本的數學符號
    在機器學習中,你永遠都繞不過數學符號。通常,只要有一個代數項或一個方程符號看不懂,你就完全看不懂整個過程是怎麼回事了。這種境況非常令人沮喪,尤其是對於那些正在成長中的機器學習初學者來說更是如此。如果你能了解一些基本的數學符號以及相關的小技巧,那你就在看懂機器學習方法的論文或書籍描述上前進了一大步。
  • 機器學習的本質:理解泛化的新觀點
    人工智慧的主題是學習, 從簡單的機器學習到深度學習, 我們始終在頭疼的一個事情就是過擬合。 對於過擬合, 我們有很多說法, 過擬合對應的是機器死記硬背, 沒有能夠舉一反三的情況。 關於什麼是泛化能力, 我們管它叫機器在新數據面前的預測水平。
  • 入門 | 一文介紹機器學習中基本的數學符號
    此外,本文還給出了 5 個當你在理解數學符號遇到困難時可以應急的小技巧。在機器學習中,你永遠都繞不過數學符號。通常,只要有一個代數項或一個方程符號看不懂,你就完全看不懂整個過程是怎麼回事了。這種境況非常令人沮喪,尤其是對於那些正在成長中的機器學習初學者來說更是如此。
  • 從零開始的人工智慧和機器學習,該從哪裡入手呢?
    求學的路上,他一直在網上分享學習歷程。他的GitHub中包含了曾經做過的所有項目,LinkedIn中也包含了許多,還跟他人交流了他在YouTube和Medium上文章所學的知識。他從沒給Max Kelsen遞過簡歷,但他們卻說:「我們看到了你在LinkedIn上的個人資料。」「你的學習歷程就是一份簡歷。」
  • 深度學習和機器學習的線性代數入門
    機器學習和深度學習建立在數學原理和概念之上,因此AI學習者需要了解基本數學原理。在模型構建過程中,我們經常設計各種概念,例如維數災難、正則化、二進位、多分類、有序回歸等。神經元是深度學習的基本單位,該結構完全基於數學概念,即輸入和權重的乘積和。至於Sigmoid,ReLU等等激活函數也依賴於數學原理。
  • 如何入門Python與機器學習
    具體而言,本章主要涉及的知識點有:  機器學習的定義及重要性;  Python在機器學習領域的優異性;  如何在電腦上配置Python機器學習的環境;  機器學習一般性的步驟。  機器學習緒論  正如前言所說,由於近期的各種最新成果,使得「機器學習」成為了非常熱門的詞彙。
  • 文科生如何入門機器學習:先看看這篇零基礎教程,再多算幾遍
    他寫的博客跳過了專業的部分,用儘量通俗幽默的方法來展現機器學習的入門知識。 知識是「算」出來的學習AI之前,首先就要摒棄原來文科的學習方法。在博客開頭,David就告誡初學者,學習數學、計算機知識不像看小說,不要指望一次就能理解,可能需要反覆閱讀和推演5次才能看懂。
  • 量子物理學機器學習:讓人工智慧學習與運用量子力學
    在剛出版的《 自然通訊 》上,發表了一篇科技論文,題為:「將機器學習和量子化學與分子波函數的深度神經網絡統一起來」,科學家們讓人工智慧學習與運用量子力學。在當代醫學和工業應用中的新型專用分子的化學計算設計過程中,需要求解一些方程。
  • 股票市場交易中的強化學習|機器學習|強化學習|深度學習
    在深度學習的世界中,無論您的模型多麼先進,沒有充分對業務充分理解和乾淨的數據都不會走得太遠。這個事實在金融領域尤其如此,在我們的數據集中,只存在股票的開盤價,最高價,最低價,調整後的收盤價和交易量的5個變量。在第一幅圖中,不難發現這些原始數據值不足以訓練機器學習模型。高度相關的變量乍看起來似乎很有希望,但是相關係數極高的缺點是實際上沒有那麼多的信息。
  • 學習了!谷歌今日上線基於TensorFlow的機器學習速成課程
    谷歌官方描述為機器學習熱愛者的自學指南,且課程資料都是中文書寫,課程視頻都由機器學習技術轉述為中文音頻。這對於中文讀者來說將會有很大的幫助,當然我們也能選擇英文語音以更精確地學習內容。在數學方面,代數相關的變量、係數、線性方程、對數和 Sigmoid 函數有助於讀者了解模型最基本的表達,包括怎麼定義的推斷過程、如何構建的損失函數以及激活函數等。線性代數相關的矩陣和張量等知識有助於讀者理解模型在計算過程中到底代表了什麼意思,例如矩陣乘法這種仿射變換在神經網絡中代表了神經元的線性組合或全連接。概率論與統計學也是有要求的,不過本課程僅僅需要能知道均值、方差等概念就行。
  • 如何區分人工智慧、機器學習和深度學習?
    在深度學習網絡中,每一個節點層在前一層輸出的基礎上學習識別一組特定的特徵。隨著神經網絡深度增加,節點所能識別的特徵也就越來越複雜,因為每一層會整合併重組前一層的特徵。深度學習的過程同樣是分為訓練和推理(既「評估」)兩個過程,通過訓練過程來獲得數據模型,然後用於評估新的數據。數據模型分為兩種,一種是所謂判別模型(Discriminative Model),也就是說模型可以直接用來判別事物的。這裡所說的判別事物,最典型的就是做分類。既然直接可以用來分類,也就是說我們可以在已知屬性的條件下,對該記錄進行判斷。
  • 機器學習入門必讀:6種簡單實用算法及學習曲線、思維導圖
    作者 | 盧譽聲來源 | 大數據DT(ID:hzdashuju)大部分的機器學習算法主要用來解決兩類問題——分類問題和回歸問題。在本文當中,我們介紹一些簡單但經典實用的傳統機器學習算法,讓大家對機器學習算法有一個基本的感性認識。有的人說機器學習入門並不難,有的人會覺得機器學習難以理解。那麼該如何去學習機器學習這種技術與方法呢?
  • 李沐《動手學深度學習》第一章:機器學習簡介
    對於第二個問題,精確定義機器學習就像定義什麼是數學一樣難,但我們試圖在這章提供一些直觀的解釋。一個例子我們日常交互的大部分電腦程式可以使用最基本的命令來實現。當你把一個商品加進購物車時,你觸發了電商的電子商務程序來把一個商品 ID 和你的用戶 ID 插入到一個叫做購物車的資料庫表格中。
  • 機器學習中的數學意義
    字幕組雙語原文:機器學習中的數學意義英語原文:Digit Significance in Machine Learning翻譯:雷鋒字幕組(聽風1996)機器學習中的用於聲稱性能的指標標準很少被討論它源於這個簡單的前提,這是我的科學老師從中學開始就灌輸給我的:科學報告的一般規則是,您寫下的每個數字都應為「 真」的,因為「 真」的定義是什麼。    讓我們來研究一下這對測試性能等統計量意味著什麼。當你在科學出版物中寫下以下陳述時:測試準確率為52.34%。
  • 417頁《機器學習中的數學》免費開放下載!| 好書分享
    然而,機器學習不等同於深度學習(深度神經網絡),要學好機器學習並不容易。工欲善其事必先利其器,對機器學習而言,這把利器無疑就是數學。AI科技評論今天給大家介紹一本今年由劍橋大學出版社出版的一本新書:《Mathematics for machine learing》~
  • 你了解機器學習中的線性回歸嗎
    你了解機器學習中的線性回歸嗎 AI科技大本營 發表於 2020-02-24 14:03:34 機器學習中的線性回歸是一種來源於經典統計學的有監督學習技術。
  • 詳細解讀,8000字線性代數知識點長文,帶你入門深度學習/機器學習
    本文目錄:引言機器學習和深度學習建立在數學原理和概念之上,因此AI學習者需要了解基本數學原理。在模型構建過程中,我們經常設計各種概念,例如維數災難、正則化、二進位、多分類、有序回歸等。神經元是深度學習的基本單位,該結構完全基於數學概念,即輸入和權重的乘積和。至於Sigmoid,ReLU等等激活函數也依賴於數學原理。
  • 機器學習從入門到進階丨統計學習的關鍵概念
    機器學習是通過軟體應用程式實現統計學習技術的一種體現。 這在實踐中意味著什麼?統計學習是指讓我們能夠更好地理解數據的工具和技術。那麼理解數據意味著什麼?研究、學習、消化知識點、做筆記、不斷練習等。這些都是學習和準備未知測試的過程或者工具。 機器學習也使用類似的概念進行學習。數據一般是有限的,因此在使用數據時需要謹慎。