打通AI知識脈絡第一步:從掌握機器學習基礎知識開始

想要成爲合格的,或者更進一步成爲優秀的人工智能工程師或數據科學家,機器學習的各種基礎知識是必不可少的。然而,機器學習領域浩如煙海,各類教材和入門課程層出不窮。特別是機器學習基礎需要不少的數學知識,這對於想進入這一領域的工程師而言,無疑是一個比較高的門檻。

今天,我來和你聊一聊如何學習和掌握機器學習基礎知識,又如何通過核心的知識脈絡快速掌握更多的機器學習算法和模型。

監督學習和無監督學習

要問機器學習主要能解決什麼問題,拋開各式各樣的機器學習流派和層出不窮的算法模型不談,機器學習主要解決的是兩類問題:監督學習和無監督學習。掌握機器學習,主要就是學習這兩類問題,掌握解決這兩類問題的基本思路。

什麼是解決這兩類問題的基本思路呢?基本思路,簡而言之就是“套路”。放在這裏的語境,那就是指:

  • 如何把現實場景中的問題抽象成相應的數學模型,並知道在這個抽象過程中,數學模型有怎樣的假設。
  • 如何利用數學工具,對相應的數學模型參數進行求解。
  • 如何根據實際問題提出評估方案,對應用的數學模型進行評估,看是否解決了實際問題。

這三步就是我們學習監督學習和無監督學習,乃至所有的機器學習算法的核心思路。機器學習中不同模型、不同算法都是圍繞這三步來展開的,我們不妨把這個思路叫作“三步套路”。

那什麼是監督學習呢?監督學習是指這麼一個過程,我們通過外部的響應變量(Response Variable)來指導模型學習我們關心的任務,並達到我們需要的目的。這也就是“監督學習”中“監督”兩字的由來。也就是說,監督學習的最終目標,是使模型可以更準確地對我們所需要的響應變量建模。比如,我們希望通過一系列特徵來預測某個地區的房屋銷售價格,希望預測電影的票房,或者希望預測用戶可能購買的商品。這裏的“銷售價格”、“電影票房”以及“可能購買的商品”都是監督學習中的響應變量。

那什麼是無監督學習呢?通常情況下,無監督學習並沒有明顯的響應變量。無監督學習的核心,往往是希望發現數據內部的潛在結構和規律,爲我們進行下一步決斷提供參考。典型的無監督學習就是希望能夠利用數據特徵來把數據分組,機器學習語境下叫作“聚類”。

根據不同的應用場景,聚類又有很多變種,比如認爲某一個數據點屬於一個類別,或者認爲某一個數據點同時屬於好幾個類別,只是屬於每個類別的概率不同等等。

無監督學習的另外一個作用是爲監督學習提供更加有力的特徵。通常情況下,無監督學習能夠挖掘出數據內部的結構,而這些結構可能會比我們提供的數據特徵更能抓住數據的本質聯繫,因此監督學習中往往也需要無監督學習來進行輔助。

我們簡要回顧了機器學習中兩大類問題的定義。在學習這兩大類模型和算法的時候,有這麼一個技巧,就是要不斷地迴歸到上面提到的基本思路上去,就是這個“三步套路”,反覆用這三個方面來審視當前的模型。另外,我們也可以慢慢地體會到,任何新的模型或者算法的誕生,往往都是基於舊有的模型算法,在以上三個方面中的某一個或幾個方向有所創新。

監督學習的基礎

監督學習的基礎是三類模型:

  • 線性模型
  • 決策樹模型
  • 神經網絡模型

掌握這三類模型就掌握了監督學習的主幹。利用監督學習來解決的問題,佔所有機器學習或者人工智能任務的絕大多數。這裏面,有90%甚至更多的監督學習問題,都可以用這三類模型得到比較好的解決。

這三類監督學習模型又可以細分爲處理兩類問題:

  • 分類問題
  • 迴歸問題

分類問題的核心是如何利用模型來判別一個數據點的類別。這個類別一般是離散的,比如兩類或者多類。迴歸問題的核心則是利用模型來輸出一個預測的數值。這個數值一般是一個實數,是連續的。

有了這個基本的認識以後,我們利用前面的思路來看一下如何梳理監督學習的思路。這裏用線性模型的迴歸問題來做例子。但整個思路可以推廣到所有的監督學習模型。

線性迴歸模型(Linear Regression)是所有迴歸模型中最簡單也是最核心的一個模型。我們依次來看上面所講的“三步套路”。

首先第一步,我們需要回答的問題是,線性迴歸對現實場景是如何抽象的。顧名思義,線性迴歸認爲現實場景中的響應變量(比如房價、比如票房)和數據特徵之間存在線性關係。而線性迴歸的數學假設有兩個部分:

  • 響應變量的預測值是數據特徵的線性變換。這裏的參數是一組係數。而預測值是係數和數據特徵的線性組合。
  • 響應變量的預測值和真實值之間有一個誤差。這個誤差服從一個正態(高斯)分佈,分佈的期望值是0,方差是σ的平方。

有了這樣的假設以後。第二步就要看線性迴歸模型的參數是如何求解的。這裏從歷史上就衍生出了很多方法。比如在教科書中一般會介紹線性迴歸的解析解(Closed-form Solution)。線性迴歸的解析解雖然簡單優美,但是在現實計算中一般不直接採用,因爲需要對矩陣進行逆運算,而矩陣求逆運算量很大。解析解主要用於各種理論分析中。

線性迴歸的參數還可以用數值計算的辦法,比如梯度下降(Gradient Descent)的方法求得近似結果。然而梯度下降需要對所有的數據點進行掃描。當數據量很多的時候,梯度下降會變得很慢。於是隨機梯度下降(Stochastic Gradient Descent)算法就應運而生。隨機梯度下降並不需要對所有的數據點掃描後纔對參數進行更新,而可以對一部分數據,有時甚至是一個數據點進行更新。

從這裏我們也可以看到,對於同一個模型而言,可以用不同的算法來求解模型的參數。這是機器學習的一個核心特點。

最後第三步,我們來看如何評估線性迴歸模型。由於線性迴歸是對問題的響應變量進行一個實數預測。那麼,最簡單的評估方式就是看這個預測值和真實值之間的絕對誤差。如果對於每一個數據點我們都可以計算這麼一個誤差,那麼對於所有的數據點而言,我們就可以計算一個平均誤差。

上述對於線性迴歸的討論可以擴展到監督學習的三類基本模型。這樣你就可以很快掌握這些模型的特點和這些模型算法之間的聯繫。

無監督學習的基礎

現實中絕大多數的應用場景並不需要無監督學習。然而無監督學習中很多有價值的思想非常值得初學者掌握。另外,無監督學習,特別是深度學習支持下的無監督學習,是目前機器學習乃至深度學習的前沿研究方向。所以從長遠來看,瞭解無監督學習是非常必要的。

我們前面說到,無監督學習的主要目的就是挖掘出數據內在的聯繫。這裏的根本問題是,不同的無監督學習方法對數據內部的結構有不同的假設。因此,無監督學習不同模型之間常常有很大的差別。在衆多無監督學習模型中,聚類模型無疑是重要的代表。瞭解和熟悉聚類模型有助於我們瞭解數據的一些基本信息。

聚類模型也有很多種類。這裏我們就用最常見的、非常重要的K均值算法(K-means),來看看如何通過前面講過的“三步套路”來掌握其核心思路。

首先,K均值算法認爲數據由K個類別組成。每個類別內部的數據相距比較近,而距離所有其他類別中的數據都比較遙遠。這裏面的數學假設,需要定義數據到一個類別的距離以及距離函數本身。在K均值算法中,數據到一個類別的距離被定義爲到這個類別的平均點的距離。這也是K均值名字的由來。而距離函數則採用了歐幾里得距離,來衡量兩個數據點之間的遠近。

直接求解K均值的目標函數是一個NP難(NP-hard)的問題。於是大多數現有的方法都是用迭代的貪心算法來求解。

一直以來,對聚類問題、對無監督學習任務的評估都是機器學習的一個難點。無監督學習沒有一個真正的目標,或者是我們之前提到的響應變量,因此無法真正客觀地衡量模型或者算法的好壞。對於K均值算法而言,比較簡單的衡量指標就是,看所有類別內部的數據點的平均距離和類別兩兩之間的所有點的平均距離的大小。如果聚類成功,則類別內部的數據點會相距較近,而類別兩兩之間的所有點的平均距離則比較遠。

以上我們通過“三步套路”的三個方面討論了K均值算法的核心思路,這種討論方法也適用所有的聚類模型和算法。

小結

當你可以熟練使用我今天介紹的“三步套路”,去分析更多監督學習和無監督學習的模型算法以後,對於基礎的內容,也就是教科書上經常講到的內容,你就可以去看這些內容究竟是在講解這三個方面的哪個方面。

對於絕大多數模型來說,第一部分往往是最重要的,也就是說,這個模型究竟和現實問題的聯繫是什麼。第二部分,也就是模型的求解,取決於模型本身的複雜度和成熟度,現在很多模型往往都有現成的軟件包提供求解過程。而第三部分,模型的評估則在現實生產中至關重要。牢牢把握這三個方面,來對機器學習模型算法進行討論,是成長爲成熟數據科學家必不可少的過程。

內容出自極客時間《AI技術內參》專欄,此專欄正在限時優惠中,原價 ¥199,限時拼團 ¥79,僅限 1 天,點擊此處試讀或訂閱《AI技術內參》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章