學機器學習有必要懂數學嗎?深入淺出機器學習與數學的關係附教程

數學 人工智能 編程語言 技術 算法 板栗 程序員高級碼農 2019-07-09
  • 隨著AI資源越來越豐富,網上po出了越來越多的機器學習路線,機器學習攻略,這些路線攻略五花八門,卻都有一個共同點,最基礎的是數學和編程語言。編程語言作為基礎,很好理解,機器學習是靠程序來完成的嘛,當然要學會編程語言啦~但是,為什麼要學數學呢?還不是一門數學,最起碼的也要包括微積分、線性代數、概率論、統計學,更不用說什麼凸優化、數值計算、運籌學等等,在高中時期被數學折磨的陰影還留存著,不禁想要大聲問一句:在機器學習中,這些數學都是做什麼的啊?為什麼一定要學這些數學呢?
  • 首先我們要知道,機器學習理論是一個涵蓋統計、概率、計算機科學和算法方面的領域,該理論的初衷是以迭代方式從數據中學習,找到可用於構建智能應用程序的隱藏洞察。儘管機器學習和深度學習有巨大的發展潛力,但要深入掌握算法的內部工作原理並獲得良好的結果,就必須透徹地瞭解許多技術的數學原理。搞清楚這些數學原理,可以幫助我們:選擇正確的算法、選擇參數設置和驗證策略、通過理解偏差-方差權衡,識別欠擬合和過擬合、估算正確的置信區間和不確定性。
學機器學習有必要懂數學嗎?深入淺出機器學習與數學的關係附教程
  • 從上面的圖可以看出,普遍認為線性代數、微積分、概率論、統計學是比較重要的四塊內容,首先可以告訴大家的是,統計學是核心,微積分告訴我們怎樣學習和優化模型,線性代數使得算法能在超大型數據集上運行,概率論幫我們預測某個事件發生的可能性。那麼我們舉個簡單的栗子來告訴大家這四塊是如何在機器學習中起作用的。
學機器學習有必要懂數學嗎?深入淺出機器學習與數學的關係附教程
  • 舉個栗子
  • 我們來預測某個小區的房價,假設我們得到了一個數據集,包含每間房子的每平方英尺價格和這間房子的整體價格,直覺上告訴我們這兩列數據之間有著某種關聯,我們可以嘗試建立預測模型,探討這兩列數據之間是何種關聯,將來如果我們有了一套房子每平方英尺的價格,就可以預測它的整體價格。
學機器學習有必要懂數學嗎?深入淺出機器學習與數學的關係附教程
  • 統計學
  • 我們可以把兩列數據的化成散點圖,然後嘗試用統計學中的線性迴歸來總結和研究這兩個變量之間的關係。其中一個變量x看作為獨立變量,另一個變量y則看作為因變量。我們表示線性迴歸的方式就是使用等式:y=mx+b。y是預測值,x是輸入,b是這條線和y軸交匯的數據點,m是直線的斜率。
學機器學習有必要懂數學嗎?深入淺出機器學習與數學的關係附教程
  • 我們已經知道x的值,y是我們的預測值,如果我們也有m和b的值,很容易能計算出預測值。但問題是怎樣得到這些值?我們可以一遍又一遍地嘗試,隨著時間推移來找到最合適的那條線,但是這樣效率太低了。另一種方法是,我們其實知道m和b存在一些理想的值,用它們可以畫出這條線,能以最佳程度擬合我們的數據集。我們需要某種方法來衡量這些值的合適程度,所用的方法就叫做誤差函數。誤差函數會告訴我們實際的y值和我們的預測值之間的差距,有很多不同類型的統計學誤差函數,但我們只嘗試一種叫做最小平方誤差的簡單函數。
學機器學習有必要懂數學嗎?深入淺出機器學習與數學的關係附教程
  • 我們可以用這個函數來確認預測值和實際公寓價格之間的差距,它會將每個預測值從實際值中減去,然後求出差值的平方值,我們有m個數據點,所以誤差值也有m個,這是我們的全部誤差值。
學機器學習有必要懂數學嗎?深入淺出機器學習與數學的關係附教程
  • 微積分
  • 我們現在可以創建一個三維圖,我們知道x軸和y軸,它們分別代表了所有可能的m值和y值,但是我們再添加一個z軸,在z軸上會是m和b的每種組合的全部可能誤差值。如果想把這些數據畫出來,就會得到一個這樣的圖形。跟一個口袋一樣,我們要找到這個口袋的最底部,也就是最小誤差值,這些就是最理想的m值和b值,根據它們就能得到最合適的直線。但是怎樣才能找到它們呢?這裡就需要藉助數學知識了。
學機器學習有必要懂數學嗎?深入淺出機器學習與數學的關係附教程
  • 微積分,一門研究變化的學科。它有一種叫梯度下降的優化方法,能以迭代的方式幫我們找到最小值。它會用給定數據點的誤差來計算未知變量的稱為“梯度”的值,我們再用梯度來更新m和b兩個變量。
  • 然後我們換到下個數據點,一遍又一遍地重複這個過程,就跟一個小球在口袋裡邊慢慢滾動一樣。這樣就能找到最小值。看吧,微積分可以幫我們發現數值變化的方向。比如我們應該往哪個方向調整位置變量m和b的值,從而得到最理想的預測值,即誤差最小。
  • 線性代數
  • 但房間價格不僅僅依賴每平方英尺價格這個因素,還包括很多其他特徵,比如臥室數量,浴室數量,以及一英里內房屋的均價等。如果我們把這些特徵都包括進來,那麼迴歸線會變成這樣,就需要考慮多個變量,所以我們可以把它叫做多元迴歸問題。研究多元空間以及多元空間之間線性轉換的數學學科,就叫做線性代數。
學機器學習有必要懂數學嗎?深入淺出機器學習與數學的關係附教程
  • 線性代數中有很多運算公式,我們可以用稱之為矩陣的數字來執行這些運算。現在我們的訓練集就變成了一個m*n矩陣,m個樣本有n個特徵。這裡不再是有一個權重的單個變量,而是每個特徵都有一個權重。
學機器學習有必要懂數學嗎?深入淺出機器學習與數學的關係附教程
  • 概率論
  • 以上就是這三大數學分支在機器學習中的應用示例,那麼第四個學科概率論呢?我們從頭再說說這個例子,加入我們不是預測房子的價格,而是預測房子是否處於最佳時期,是否值得入手。我們希望能分類一套房子處於或不處於最佳時期的概率,概率用於衡量某件事的可能性,我們可以用叫做邏輯迴歸的概率論方法幫我們確定概率,因為我們的數據是可分類的。
學機器學習有必要懂數學嗎?深入淺出機器學習與數學的關係附教程
  • 它有不同的種類或者類別。我們不再是預測具體值,而是預測事件發生的概率。因為概率會在0 和100之間,我們無法使用能無窮延伸的直線,而是用一些閾值。輸入一些數據點x,多半就能確定房子是否處於最佳時期。
學機器學習有必要懂數學嗎?深入淺出機器學習與數學的關係附教程
  • 我們會用一個S型曲線,即S型函數來完成這一步。等優化完函數後,放入輸入數據,就能得到一個概率性的類別值,就是這樣。
  • 總 結
學機器學習有必要懂數學嗎?深入淺出機器學習與數學的關係附教程

我們再回顧一下,機器學習包含了統計學,微積分,線性代數和概率論知識,關係如下:

  • 微積分告訴我們怎樣優化
  • 線性代數讓算法適用於大型數據集
  • 概率論幫我們預測某個特定輸出的可能性
  • 統計學則表明是不是我們的目標

下面我給大家準備了一套機器學習從入門道精通的教程視頻,希望大家能夠喜歡,僅限前100名:

學機器學習有必要懂數學嗎?深入淺出機器學習與數學的關係附教程

獲取方式關注轉發文章之後私信小編“學習”就可以拿到了~~~

每天干貨滿滿,大家可以持續關注~

感謝大家支持!

相關推薦

推薦中...