《機器學習基石》4-Feasibility of Learning

在這篇文章中,我們主要探討,機器到底能不能進行學習這個問題。

Learning is Impossible?

從前面的文章中,我們已經知道,機器學習的過程,就是通過現有的訓練集 D 學習,得到預測函數 h ,並且使得它接近於目標函數 f

我們必須思考的問題是:
這種預測是可能的麼?也就是說,機器能通過學習得到 h ,使得 hf 嗎?

No free lunch

機器學習領域有一個著名的理論,叫做 “沒有免費的午餐” 定理(No Free Lunch Theorem, 簡稱 NFL 定理)。用比較通俗易懂的話來講,意思就是說:“學習” 可能是做不到的。

在訓練樣本集(in-sample)中,可以求得一個最佳的假設 g ,該假設最大可能的接近目標函數 f ,但是在訓練樣本集之外的其他樣本(out-of-sample)中,假設 g 和目標函數 f 可能差別很遠。

Example

我們舉一個例子來說明上面這段話的意思。現在假設有這樣一個數據集 X={000,001,...,111} 總共8個數據,使用函數 f 對數據集中的每一個數據分類(圈或叉)。現在我們手頭有5個訓練樣本,我們想讓機器使用這些訓練樣本學習到函數f

由於機器只能看到訓練集的樣本(5個),因此它能學習得到函數 g ,使得在這些訓練樣本上,gf 的預測結果一樣。

但是,因爲機器看不見訓練集外的樣本(剩下的3個),對於這些樣本,機器只能自己猜測 g(x) 的值。而無論機器預測的結果是怎麼樣的,我們總能夠找到 f ,使得在這些訓練集外的樣本上,gf

Summary

從上面的例子我們可以看出,機器能學習的,只是它看得見的樣本(in-sample),而對於它看不見的樣本(out-of-sample),學習效果就很難保證了。

如果是這樣子的話,機器學習的作用的很有限了,畢竟我們更需要的,是機器機幫我們處理沒見過的數據。

嗯,事情一定沒這麼簡單。

Probability to the Rescue

我們想象這樣一個場景:有一個罐子,這個罐子裏裝有橙色和綠色兩種顏色的珠子,我們如何在不查遍所有珠子的情況下,得知罐子中橙子珠子所佔的比例呢?一個想法就是使用抽樣的方法,通過頻率來預測概率。

假設罐子中橙色珠子的概率爲 μ (未知),則綠色珠子的概率爲 1μ ;假設通過抽樣查出的橙色珠子比例爲 v (已知),則綠色珠子的比例爲 1v 。那麼我們可不可以通過 v 來預測 μ 呢?

Hoeffding’s inequality

數學上有個霍夫丁不等式,專門回答了這個問題。這個不等式是這樣子的:

當樣本數量 N 足夠大時,vμ 有如下關係:

P[|νμ|>ϵ]2exp(2ϵ2N)

從上面的式子可以看出,隨着樣本數量 N 的逐漸增大,vμ 接近的概率也逐漸增大,因此可以說 vμ 大概近似相等(probably approximately correct,PAC),因此,選擇合適的 N 以及 ϵ ,就可以通過 v 預測 μ

Connection to Learning

我們可以將以上的情景與機器學習問題對應起來,如下圖所示:

相對應的概念如下所示:

  • 罐子:數據集,包括 in-sample 以及 out-of-sample
  • 橙色珠子:數據 xn , 其中 h(xn)f(xn)
  • 綠色珠子:數據 xn , 其中 h(xn)=f(xn)
  • 橙色珠子概率 μh(x)f(x) 的概率
  • 抽到的珠子:訓練樣本(我們看得到的那些)
  • 抽到橙色珠子:在某個樣本點 xn 上,h(xn)f(xn)=yn
  • 抽到綠色珠子:在某個樣本點 xn 上,h(xn)=f(xn)=yn
  • 橙色珠子頻率 vh(x)f(x) 的頻率
  • 抽樣動作:判斷 h(xn)f(xn)=yn 是否相等

於是在樣本數足夠多的情況下,我們可以通過測試 h(xn)yn 的頻率來推斷 h(x)f(x) 的概率。這裏需要注意的是,xn 需要是獨立同分布的,但是我們並不需要知道具體的分佈函數是什麼。

Learning Flow

我們對學習流程圖進行完善,如下圖所示:

我們在流程圖中增加了一個數據的分佈函數 P ,我們並不知道這個分佈具體的樣子(但是沒關係),我們利用這個分佈進行抽樣,產生訓練樣本,同時利用這些訓練樣本,計算 h(x)f(x) 的頻率 Ein(h) ,並且使用這個頻率來估計 h(x)f(x) 的概率 Eout(h) 。這裏所說的 h ,是我們從假設集 (hypothesis set) 中選擇的一個特定的 h

The Formal Guarantee

將霍夫丁不等式中的 μ 換成 Eout(h)v 換成 Ein(h) ,就可以得到下面的式子:

P[|Ein(h)Eout(h)|>ϵ]2exp(2ϵ2N)

上面的公式保證了在一定條件下,Ein(h)Eout(h) 不會相差太遠,那麼只要我們能選擇合適的 h 使得 Ein(h) 比較小,那麼 Eout(h) 也會比較小。

Verification of One h

整理一下,對於一個固定的 h ,霍夫丁不等式告訴我們,在樣本數足夠多的情況下,如果 Ein(h) 很小,那麼 Eout(h) 也會大概率比較小。

機器學習要做的事,是通過算法 A 從假設集 H 中選擇 g ,使得 g 儘可能接近 f 。換句話來講,需要在假設集 H 中找到一個 h ,使得 Ein(h) 很小,然後把 h 當成最終的預測函數 g

我們現在做的事情,因爲只涉及了一個 h ,準確來講不是 “學習”,而是 “驗證”,即對於一個 h ,通過 Ein(h) 估計 Eout(h)

我們還需要探討,如果算法是在多個 h 中進行選擇(而不是隻有一個 h ,不需要選擇),那麼情況有什麼變化。也就是從探討 Ein(h)Eout(h) 的關係,變成探討 Ein(g)Eout(g) 的關係。

Connection to Real Learning

首先我們考慮假設集中的假設是有限多個的情況。

來看一下下面這個表格,表格中的每一行表示一個固定的 h 的情況,表格中的每一列表示一筆數據集,表格裏的 “BAD” 表示,在這筆數據集上,對於某個特定的 hEin(h)Eout(h) 相差很大,我們把這樣的數據叫做是這個 h 上的 BAD data。

霍夫丁不等式告訴我們,對於一個固定的h ,出現 Ein(h)Eout(h) 相差很大的概率很小,也就是說,對於表格中的每一行, BAD data 出現的概率很小,在這樣的情況下,我們才能通過 Ein 來預測 Eout

P[|Ein(h)Eout(h)|>ϵ]2exp(2ϵ2N)

同樣的,當有多個 h 可選擇時,我們也希望 BAD data 出現的概率小,這樣才能讓算法在假設集中自由選擇 h ,保證能通過Ein 來預測 Eout

這種情況下,只要數據對於某個 h 而言是 BAD data,它在這個假設集中就是 BAD data,其出現的概率爲:

PD[BAD D]=PD[BAD D for h1 or BAD D for h2 or ... or BAD D for hM]PD[BAD D for h1]+PD[BAD D for h2]+...+PD[BAD D for hM]2exp(2ϵ2N)+exp(2ϵ2N)+exp(2ϵ2N)+...+exp(2ϵ2N)=2Mexp(2ϵ2N)
其中 M 表示的是假設集中 h 的個數。

因此得到結論:如果 M 的值是有限的,在 N 足夠大的情況下,BAD data 出現的概率很小,即無論哪個 h ,都有 Ein(h)Eout(h) (PAC),那麼我們通過合適的算法選擇一個 Ein 小的 h ,就能保證 Eout 小(PAC),於是學習成功了。

最後完善學習流程圖:

以上,我們討論了假設集中的假設是有限多個的情況下,Ein(g)Eout(g) 的關係。關於假設集中的假設是無限多個的情況,將在接下來的文章中討論。

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