機器何時可以學習?

本系列是臺灣大學資訊工程系林軒田(Hsuan-Tien Lin)教授開設的《機器學習基石》課程的梳理。重在梳理,而非詳細的筆記,所以可能會略去一些細節。算法

該課程共16講,分爲4個部分:數據庫

  1. 機器何時可以學習?(When Can Machines Learn?)
  2. 機器爲何可以學習?(Why Can Machines Learn?)
  3. 機器怎樣學習?(How Can Machines Learn?)
  4. 機器怎樣能夠學得更好?(How Can Machines Learn Better?)

本文是第1部分,對應原課程中的1-3講。雖然第4講在原課程中也放入了第1部分,但我認爲它與後面第2部分的連貫性更強,所以移到後面。編程

本部分的主要內容:app

  • 介紹機器學習的概念與流程,並將它和其餘幾個類似的領域進行比較;
  • 介紹感知機模型,說明普通的感知機學習算法PLA在什麼條件下能夠停下,若是不知足條件該怎麼辦;
  • 列舉機器學習的類別。

1 機器學習的概念

1.1 定義

機器學習的定義:improving some performance measure with experience computed from data機器學習

何時能夠用機器學習?有幾個關鍵的地方:函數

  • 確實存在一些須要學習的「潛在模式」,如預測下一次丟骰子的點數,就不能用機器學習;
  • 沒有簡單的可編程的定義,如判斷一張圖像中是否包含了圓,就能夠直接經過編程解決,不須要使用機器學習;
  • 有一些關於要學習的模式的數據,如預測將來核能的濫用是否會致使地球毀滅,就不能用機器學習,由於沒有歷史數據。

1.2 組成部分

機器學習的實用定義以下圖(灰字是以信用卡審批爲例):工具

能夠看到,機器學習有如下幾個要素:學習

  • 未知的目標函數\(f: \mathcal X\rightarrow\mathcal{Y}\),在例中爲理想的信用卡審批規則;
  • 訓練樣本\(\mathcal{D}\),在例中爲銀行中信用卡審批的歷史記錄;
  • 假設集\(\mathcal{H}\),在例中爲一系列的候選規則;
  • 學習算法\(\mathcal{A}\)
  • 最終挑選出的假設\(g\),知足\(g\approx f\),在例中爲最終「學習」出的規則。

機器學習的實用定義:使用數據計算出最接近於目標函數\(f\)假設\(g\)大數據

1.3 和其餘領域的關係

1.3.1 數據挖掘(DM)

數據挖掘:用(大)數據尋找感興趣的性質。人工智能

  • 若是這裏所說的「感興趣的性質」就是「接近目標函數的假設」,那麼機器學習就等同於數據挖掘;
  • 若是「感興趣的性質」與「接近目標函數的假設」是相關的,那麼數據挖掘可用來幫助機器學習,反之亦然;
  • 傳統的數據挖掘還關注在大數據庫中的有效計算。

在現實中,很難區分ML和DM。

1.3.2 人工智能(AI)

人工智能:計算一些的有智能行爲的東西。

若是\(g\approx f\)就是那個有智能行爲的東西,那麼ML可用於實現AI。

以下棋,傳統AI的作法是作博弈樹,而ML的作法是從大量數據中進行學習。所以,機器學習是實現人工智能的一種途徑。

1.3.3 統計學(Statistics)

統計學:使用數據對未知過程進行推斷。

  • 若是推斷的結果就是\(g\)\(f\)是未知的,那麼統計學就能夠就用來實現機器學習;
  • 傳統的統計學聚焦於在數學假設下可證實的結果,而不太關注計算。

統計學爲機器學習提供了不少有用的工具。

2 分類學習之感知機模型

2.1 PLA

這裏介紹一個簡單的分類模型:感知機(Perceptron)。

回顧上一節,在假設集\(\mathcal{H}\)中,咱們可使用哪些假設?

在分類問題中,要預測的變量是正/負,或表示成\(+1\)/\(-1\)。咱們能夠對自變量作線性加權求和,而後設定一個閾值,若高於閾值,則分類爲正,若低於閾值,則分類爲負。若將「閾值」也看做在自變量中補入的常數項(\(\mathbb{w}\)中補入對應的常數1),則這個模型能夠寫做\(h(x)=\text{sign}(\mathbf{w}^T\mathbf{x})\)

每個\(\mathbb{w}\),都對應了一個假設。

那麼,要如何從假設集\(\mathcal{H}\)中找出最接近於目標函數的\(g\)呢?也就是如何找出最好的\(\mathbb{w}\)

能夠這樣作,先任意設一個初始的\(\mathbf{w}_0\)(好比\(\mathbf{0}\)),而後:

  1. 從該點開始,尋找錯誤分類的樣本點,即找到知足\(\text{sign}(\mathbf{w}^T_t \mathbf{x}_{n(t)})\ne y_{n(t)}\)的點\((\mathbf{x}_{n(t)}, y_{n(t)})\)
  2. 利用找到的錯誤分類點對\(\mathbf{w}\)進行更新,更新規則是:\(\mathbf{w}_{t+1}\leftarrow\mathbf{w}_t +y_{n(t)}\mathbf{x}_{n(t)}\)
  3. 不斷重複上述過程,直到找不出錯誤分類的點爲止,最終獲得要找的\(\mathbf{w}_{PLA}\),把它做爲\(g\)

這就是感知機學習算法PLA(Perceptron Learning Algorithm)。更新規則的圖示以下:

可是,以上算法仍然有很多問題:

  • 該如何遍歷全部的樣本點?
  • 它最終會停下來嗎?須要知足什麼條件?
  • 停下來講明在樣本\(\mathcal{D}\)內已經沒有錯誤了,\(g\approx f\),那麼在樣本\(\mathcal{D}\)外有用嗎?
  • 若是不知足使它能停下的條件怎麼辦?

2.2 PLA會停下嗎?

PLA能停下來的必要條件是,存在一些\(\mathbf{w}\)能夠在\(\mathcal{D}\)內不會犯錯。這叫線性可分(linear separable)條件。那麼,線性可分是PLA能停下來的充分條件嗎?

答案是確定的。證實的思路是,既然數據集線性可分,則必定存在某個\(\mathbf{w}\)將樣本完美分開,記爲\(\mathbf{w}_f\),只需證實在通過有限次的迭代後的\(\mathbf{w}\)\(\mathbf{w}_f\)的夾角的餘弦的下限會超過1便可(由於餘弦沒法超過1,若是在通過特定次數的迭代後餘弦的下限超過了1,說明在上一次迭代以後一定已經完成了完美的分類,沒法找出錯誤分類的點進行迭代了),而餘弦能夠從分子(兩個向量的內積)和分母(兩個向量模的乘積)分別突破。具體證實以下:

由於\(\mathbf{w}_f\)能完美分開數據集中的樣本,即知足

\[y_{n(t)}\mathbf{w}_f^T \mathbf{x}_{n(t)}\ge \min_n y_n \mathbf{w}_f^T \mathbf{x}_n \gt 0 \]

可令\(\min_\limits{n} y_n \dfrac{\mathbf{w}_f^T}{\Vert \mathbf{w}_f\Vert} \mathbf{x}_n=\rho\),則有

\[\begin{aligned} \mathbf{w}_f^T\mathbf{w}_t &= \mathbf{w}_f^T(\mathbf{w}_{t-1}+y_{n(t-1)}\mathbf{x}_{n(t-1)})\\ &\ge \mathbf{w}_f^T\mathbf{w}_{t-1}+\rho\Vert\mathbf{w}_f\Vert\\ &\ge t\rho\Vert\mathbf{w}_f\Vert \end{aligned}\]

而更新必定是在犯錯的點處,因此觸發第t次更新的樣本必定知足\(y_{n(t-1)}\mathbf{w}^T_{t-1} \mathbf{x}_{n(t-1)}\le 0\)。令\(R^2=\max_\limits{n} \Vert x_n\Vert^2\)\(R>0\)),則有

\[\begin{aligned} \Vert\mathbf{w}_t\Vert^2 &= \Vert\mathbf{w}_{t-1}+y_{n(t-1)}\mathbf{x}_{n(t-1)}\Vert^2\\ &= \Vert\mathbf{w}_{t-1}\Vert^2+2y_{n(t-1)}\mathbf{w}^T_{t-1} \mathbf{x}_{n(t-1)}+\Vert\mathbf{x}_{n(t-1)}\Vert^2\\ &\le \Vert\mathbf{w}_{t-1}\Vert^2+\Vert\mathbf{x}_{n(t-1)}\Vert^2\\ &\le \Vert\mathbf{w}_{t-1}\Vert^2 + R^2\\ &\le t R^2 \end{aligned}\]

接下來就看一看在通過\(T\)次迭代後獲得的\(\mathbf{w}_{T}\),它和\(\mathbf{w}_f\)的夾角的餘弦:

\[\begin{aligned} &\dfrac{\mathbf{w}_f^T\mathbf{w}_{T}}{\Vert\mathbf{w}_f\Vert\Vert\mathbf{w}_{T}\Vert} \ge \dfrac{T\rho\Vert\mathbf{w}_f\Vert}{\Vert\mathbf{w}_f\Vert \sqrt{T R^2}}=\sqrt{T}\dfrac{\rho}{R} \end{aligned}\]

而餘弦一定小於1,所以必有迭代次數\(T\le \dfrac{R^2}{\rho^2}\)證實完畢

從直覺上理解,PLA算法經過不斷迭代,可使得\(\mathbf{w}\)愈來愈接近於\(\mathbf{w}_f\)

PLA算法的優勢是簡單、快、對任意維度的數據均可用,但缺點在於,一方面咱們假設了數據集\(\mathcal{D}\)是線性可分的,而現實中咱們不知道是否真的如此,另外一方面咱們不知道它到底多久會停下,儘管在實踐中算法每每很快停下。

2.3 Pocket算法

若是數據中有噪聲,致使數據集不是線性可分的,怎麼辦?

固然,能夠直接取\(\mathop{\arg\min}\limits_{w}\sum\limits_{n=1}^{N}{\mathbf{1}_{[y_n\ne \text{sign}(\mathbf{w}^T\mathbf{x}_n)]}}\)做爲\(\mathbf{w}_g\),但因爲要一一遍歷全部樣本,這是個NP-hard問題。

那怎麼辦呢?能夠對PLA作一些修改:

  • 把當下找到的最佳\(\hat{\mathbf{w}}\)先存起來,就比如放在口袋裏;
  • 在找到一個使\(\mathbf{w}_t\)分類錯誤的樣本以後,進行和PLA同樣的更新,即\(\mathbf{w}_{t+1}\leftarrow\mathbf{w}_t +y_{n(t)}\mathbf{x}_{n(t)}\)
  • 比較\(\mathbf{w}_{t+1}\)\(\hat{\mathbf{w}}\)在整個數據集上誰犯的錯誤較少,若前者少,則將前者放入口袋,反之仍保留\(\hat{\mathbf{w}}\)在口袋中;
  • 不斷循環,在通過必定次數的迭代後,中止上述過程,最終在口袋中的\(\hat{\mathbf{w}}\)就取爲\(g\)

因爲始終有一個\(\hat{\mathbf{w}}\)在口袋中,所以這種算法被稱爲Pocket算法。

3. 學習的分類

依據輸出空間\(\mathcal{Y}\)的不一樣來分:

  • 二分類問題:\(\mathcal{Y}\)\(+1\)\(-1\)
  • 多分類問題:\(\mathcal{Y}\)有更多的類別;
  • 迴歸:\(\mathcal{Y}=\mathbb{R}\)\(\mathcal{Y}=[\text{lower}, \text{upper}]\subset\mathbb{R}\)
  • 結構學習(Structured Learning):\(\mathcal{Y}\)是某種結構,如學習出句子的結構等。

依據數據標籤\(y_n\)的不一樣來分:

  • 監督(Supervised)學習:每一個\(\mathbf{x}_n\)都有對應的\(y_n\)
  • 無監督(Unsupervised)學習,沒有標籤\(y_n\),如聚類、密度估計、離羣點檢測等;
  • 半監督(Semi-supervised)學習:只有一小部分數據有標籤,須要充分利用無標籤數據,避免代價昂貴的手動打標籤;
  • 強化學習(Reinforcement Learning):\(y_n\)被隱含在goodness\((\tilde{y}_n)\)中。

依據\(f\Rightarrow (\mathbf{x}_n, y_n)\)的不一樣來分:

  • Batch:全部的數據都是已知的;
  • Online:被動獲取的序列數據;
  • Active Learning:經過策略不斷主動詢問某個\(\mathbf{x}_n\)\(y_n\)是什麼,來得到序列數據。

依據輸入空間\(\mathcal{X}\)的不一樣來分:

  • 具體的(Concrete)特徵:\(\mathcal{X}\subseteq \mathbb{R}^d\)的每一個維度都有複雜的物理意義。
  • 原始的(Raw)特徵:只有簡單的物理意義,如手寫數字識別,特徵是每一個像素點的灰度,每每須要人或機器將它轉換爲具體的特徵。
  • 抽象的特徵:沒有或幾乎沒有物理意義,如打分預測系統,\(\mathcal{X}\)是用戶id,\(\mathcal{Y}\)是對某部電影的評分,也須要作特徵轉換/抽取/構造。
相關文章
相關標籤/搜索