機器什麼時候能夠學習?

分析101發表於2020-08-11

本系列是臺灣大學資訊工程系林軒田(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部分的連貫性更強,因此移到後面。

本部分的主要內容:

  • 介紹機器學習的概念與流程,並將它和其他幾個相似的領域進行比較;
  • 介紹感知機模型,說明普通的感知機學習演算法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}\)是對某部電影的評分,也需要做特徵轉換/抽取/構造。

相關文章