影片狀態:已附影片。 這篇依官方 MOOC 講義 04_handout.pdf 與這堂四支官方影片的機器轉錄逐字稿寫成,公式以講義為準;逐字稿未經人工校對。每一節開頭附該節的官方影片與大致的時間區段。文中的頁碼指投影片右下角的編號(0/26 到 26/26),寫「課堂上」的地方是轉述影片裡的說法。
這是台大林軒田 機器學習基石與技法 導讀裡的基石第 4 堂。講義第 1 頁的 Roadmap 把基石分成四個問題,這堂是第一個問題「When Can Machines Learn?」的最後一堂。上一堂基石第 3 堂:學習的種類在 Roadmap 上只留一行:之後專心處理批次、監督式、具體特徵的二元分類與迴歸。課堂上回顧時說,上一堂結尾埋了一個梗:就算在這麼核心的設定裡,學習也可能根本做不到。
這堂就從這個壞消息開始。基石第 2 堂的 PLA 可以在看過的資料上全對,但銀行在乎的是還沒上門的顧客。看過的資料全對,能不能保證沒看過的也大致會對?四節的答案依序是:不加假設的話不能;加上「資料是獨立抽樣來的」之後,一個事先固定的假說可以驗證;演算法要在很多假說裡挑的話,保證還在,但要付代價。
先備是基石第 1 堂的學習流程圖(、、、、)、基石第 2 堂的 PLA,以及基礎機率(獨立事件、二項分布、指數函數與自然對數)。讀完之後,你應該能自己寫出從一個假說的 Hoeffding 不等式到 個假說的 union bound 這幾行推導,代數字算出上界,並且說清楚「驗證」和「學習」差在哪裡。
只看資料,為什麼保證不了資料以外的答案
(影片 00:18–01:37 回顧上一堂,01:37–05:28 是圖形題,05:28–11:45 是三個位元的例子與 No Free Lunch,之後是 Fun Time。)
一道怎麼答都會被說錯的題目
講義第 2 頁出了一題給人做的學習題,課堂上說這題考的是「工人智慧」。六張 3×3 的黑白格子圖,上排三張標 ,下排三張標 ,問第七張圖的 是多少。把圖寫成文字,■ 是黑格、□ 是白格,三列由上到下用「/」隔開:
| 圖 | 標籤 | 三列(由上到下) | 黑格數 |
|---|---|---|---|
| 上排左 | ■□□/■□■/□■□ | 4 | |
| 上排中 | ■□□/□□■/■□■ | 4 | |
| 上排右 | ■□□/□□■/□□□ | 2 | |
| 下排左 | □□■/□■□/■□□ | 3 | |
| 下排中 | □■□/■□■/□■□ | 4 | |
| 下排右 | □■■/■■□/□■■ | 6 | |
| 要預測的圖 | ? | ■□□/□■□/□□■ | 3 |
第 3 頁的標題是 Two Controversial Answers,列了四條規則,每一條都把六張圖分對:
| 規則 | 對六張圖 | 對第七張圖 |
|---|---|---|
| 有對稱 ⇔ | 下排三張各有對稱軸,上排三張都沒有 | 沿對角線對稱, |
| (黑格或白格剛好 3 個)或(黑格 4 個且上排中間是黑的)⇔ | 下排:黑 3、黑 4 且上中黑、白 3;上排都不符合 | 黑格 3 個, |
| 左上角是黑的 ⇔ | 上排左上角全黑,下排全白 | 左上角黑, |
| 中間那一行最多 1 個黑格,而且右上角是白的 ⇔ | 上排三張都符合,下排三張都不符合 | 中間行 1 黑、右上白, |
本文把七張圖照上表輸入,用 Python 逐條檢查過,四條規則在六張有標籤的圖上都全對,前兩條對第七張圖說 ,後兩條說 。
課堂上把這演成一段對話:學生答 ,老師就說「我心裡的規則是對稱,答案是 」;學生答 ,老師就說「我心裡的規則是左上角,答案是 」。講義的結論是:這些都是成立的理由,一位存心作對的老師(adversarial teacher)永遠可以說你沒學會。課堂上補充,這題已經用了最核心的設定:二元分類、監督式、六筆資料,照樣怎麼答都能被判錯。
換成可以窮舉的版本
圖形題的規則太多,數不完。第 4 頁把問題縮到可以全部列出來:輸入是三個位元,,共 8 種輸入;輸出 。資料 給了其中 5 種輸入的答案:
| 000 | ○ |
| 001 | × |
| 010 | × |
| 011 | ○ |
| 100 | × |
8 種輸入、每種輸出有 2 種可能,所以從 到 的函數一共 個。講義說這時可以把所有可能的 都放進 ;課堂上的說法是,既然只有 256 種,就全部放進假說集合。演算法從裡面挑一個在 5 筆資料上全對的 ,也就是所有 。講義在這裡註明 like PLA,課堂上解釋:PLA 做的大致也是這件事,找到一條線把看過的圈圈叉叉完全分開。問題是這樣的 跟 像不像。
第 5 頁把答案列成表。 沒涵蓋的輸入剩 101、110、111 三種,每種的真實答案可以是 ○ 或 ×,所以跟 完全相容的目標函數有 個,講義記成 到 :
| 000 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| 001 | × | × | × | × | × | × | × | × | × | × |
| 010 | × | × | × | × | × | × | × | × | × | × |
| 011 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| 100 | × | × | × | × | × | × | × | × | × | × |
| 101 | ? | ○ | ○ | ○ | ○ | × | × | × | × | |
| 110 | ? | ○ | ○ | × | × | ○ | ○ | × | × | |
| 111 | ? | ○ | × | ○ | × | ○ | × | ○ | × |
前五列是 ,八個 在這裡長得一模一樣, 也被演算法調成一樣。講義的兩行結論:
- inside :當然。
- outside :不行。但這才是我們要的。
課堂上用一個具體的 把後三列走了一遍:假設你的 在 101、110、111 上的預測是 ○×○。最壞的情形是真正的 剛好是 ×○×(表上的 ),三個全錯。
本文補充,把這個 對八個 各數一次。它在三個新輸入上答對的個數,對 到 依序是 2、1、3、2、1、0、2、1,合計 12,平均 個,正好一半。換成別的 也一樣:本文用 Python 把 8 種可能的預測都列過,每一種對八個 的答對個數都是一個 3、三個 2、三個 1、一個 0。三個新輸入、每個猜對的機會一半,跟丟銅板沒有差別。這就是課堂上說的:如果八個 都有可能,平均來說我們好像沒有學到任何東西。
No Free Lunch 說了什麼
講義第 5 頁的最後一句:只要任何「未知的」 都可能發生,從 學習、想推論 以外的事,就注定失敗。課堂上說機器學習裡有一系列研究把這件事叫 No Free Lunch,天下沒有白吃的午餐。
這句話的條件要看清楚。課堂上的講法是:我們一直堅持 是未知的;如果只堅持這一點、別的什麼都不假設,就沒辦法說 在資料以外是好是壞,要說得出來就得加上一些假設。課堂上也提醒我們要的確實是資料以外的部分:信用卡的例子裡,銀行想知道的是新顧客上門時, 的答案跟理想公式的答案一不一樣,舊顧客答對不算數。
所以這一節留下的問題是:要加什麼假設。後面三節加的那個假設跟 長什麼樣子無關,只管資料是怎麼來的。
Fun Time:只有一筆資料的智力題
題目(第 6 頁): 這是一個流傳很廣的動腦題,號稱全世界最聰明的 2% 的人才看得出「隱藏的規律」:
它就像一個 的學習問題,、。從這一筆資料學一個假說,去預測 。你的答案是?
- 151026
- 143547
- 我需要更多例子才能得到正確答案
- 沒有「正確」答案
答案:4。 講義的理由是,這跟剛才的 No Free Lunch 是同一回事:在這種存心作對的設定下,沒辦法指望答對。講義順帶說明選項 2 是出題者的答案:前兩位是 ,中間兩位是 ,最後兩位是 。驗算: 得到 15、10、,接起來是 151022; 得到 14、35、,接起來是 143547。
選項 1 也講得出道理。本文自擬一條規則:。 給 ,跟資料相符; 給 。只有一筆資料時,兩條規則都全對,沒有理由說哪一條才是真的。
選項 3 聽起來謹慎,但也不對。剛才的表已經示範過:8 種輸入看了 5 種,剩下 3 種照樣什麼都可能。例子再多,只要問的是沒看過的輸入,又不對 做任何假設,就沒有所謂正確答案。課堂上的說法是:你要答任何數字,都可以說自己是對的;網路上那個答案只是其中一種解釋。
換一個推得動的問題:從一把彈珠推整罐的比例
(影片 00:01–01:27 提出罐子的問題,01:27–04:33 是抽樣,04:33–08:19 是 Hoeffding 不等式與 PAC,08:19–10:29 讀這條式子,之後是 Fun Time。)
罐子與樣本
講義第 7 頁先退一步:在學習問題裡推論 以外的 很難,那有沒有別的場合,我們其實推論得出未知的東西?例子是一個裝了非常多橘色與綠色彈珠的罐子(bin)。橘色占多少比例?不知道。課堂上說,彈珠多到沒辦法一顆一顆數。
第 8 頁的做法是統計課的第一堂:抓一把出來看。
| 罐子(bin) | 樣本(sample) | |
|---|---|---|
| 橘色 | 機率 | 比例 |
| 綠色 | 機率 | 比例 |
| 知不知道 | 未知 | 已知 |
樣本是獨立抽出的 顆彈珠。課堂上舉的數字是抓 10 顆、其中 3 顆橘色,就猜罐子裡橘色大約占 30%。講義在這一頁引進兩個之後一直用的詞: 是 in-sample 的量, 是 out-of-sample 的量。問題是 有沒有告訴我們任何關於 的事。
第 9 頁的回答分兩半,標題是 Possible versus Probable:
- No,possibly not:樣本可能大部分是綠的,罐子裡卻大部分是橘的。
- Yes,probably yes: 很可能接近未知的 。
「有可能發生」和「很可能發生」是兩件事。課堂上說,罐子裡大部分是橘色、抓一把卻幾乎全綠,這種事機率很小但確實會發生,所以我們得不到確定的答案,只能說有很大的機率是這樣。本文補充兩者的差別:No Free Lunch 那一節的對手可以指定最壞的 ;這裡沒有人指定你抓到哪一把,抽樣是隨機的,最壞的情形就只是一個機率很小的事件。
Hoeffding 不等式
「很可能接近」的數學寫法在第 10 頁。 夠大時, 很可能落在 的 範圍內:
這叫 Hoeffding 不等式(Hoeffding's Inequality)。講義註明它適用於彈珠、銅板、民調等等,課堂上的例子是:銅板丟很多次,正面的比例會接近它真實的正面機率;選舉前打電話做民調,結果跟最後的得票率會很接近。講義沒有證明這條不等式;本文同樣不證,改用數字確認它說的事。
式子裡的每個符號:
- 左邊是一個「壞事」的機率。壞事指樣本比例 跟真實機率 差了超過 。
- 是你願意容忍的誤差。
- 右邊是這個機率的上界, 在指數上,而且帶負號。 加倍,指數那一項會被平方(),所以上界掉得很快。
本文補充一個容易看錯的地方:隨機的是 。 是罐子的性質,是一個固定但未知的數;每抓一把, 都可能不同。機率 算的是「抓一把」這個動作的所有可能結果裡,壞結果占多少。
講義把結論寫成一句話:「」這個說法是 probably approximately correct(PAC)。課堂上把兩個副詞分開解釋:probably 是「大概」,有很大的機率是對的;approximately 是「差不多」,抽到 30% 橘色,罐子裡可能是 32%、33%、28%、29%,不會剛好相等,但很接近。
這條式子好用在哪裡
第 11 頁列了三點:
- 對所有 與 都成立。 不需要 大到某個門檻才能用。
- 右邊沒有 。 所以不需要知道 。課堂上強調這是它能用來做推論的原因:本來就不知道 ,式子裡也完全沒有對 做假設。
- 愈大,或容忍的 愈寬,「」的機率愈高。 課堂上對後半句加了評語:把容忍度設大一點,壞事的機率當然變小,但這有點自欺欺人。
頁尾的結論是: 夠大時,可以用已知的 大概推論出未知的 。
下面的數字是本文算的。先看上界本身,把 與 代進 :
| 10 | 0.331 | 1.64 | 1.90 |
| 100 | 0.271 | 1.21 | |
| 1,000 | 小於 | 0.0135 | |
| 10,000 | 更小 | 小於 |
兩件事值得注意。第一,表裡有超過 1 的數字。機率不會超過 1,所以「上界是 1.64」等於什麼都沒說。式子對所有 與 都「成立」,不代表都「有用」。課堂上舉的 10 顆彈珠就是這種情形:要求誤差在 0.1 以內,Hoeffding 給不出任何保證;放寬到 0.3,上界才降到 0.331。第二, 在式子裡是平方。誤差要求縮成一半, 要變成四倍,上界才會一樣;縮成十分之一, 要一百倍:、 與 、 的上界都是 0.271。
再看它是不是真的只是上界。取 、,用二項分布把壞事的機率精確算出來:
| 精確的 | Hoeffding 上界 | |
|---|---|---|
| 10 | 0.334 | 1.64 |
| 100 | 0.0315 | 0.271 |
| 1,000 |
精確值都在上界底下,而且差了一大截。算精確值要用到 ,算上界不用,這是兩者的交換:Hoeffding 寬鬆,但在不知道 的時候也算得出來。
最後把式子反過來用。想要「誤差超過 的機率不超過 」,令右邊 。兩邊除以 2 再取自然對數得 ,同乘 會讓不等號反向:
代 、,得 ,抽 185 顆就夠。把誤差收到 ,同樣的 需要 ,也就是 2,050 顆。這個反過來用的形式講義這堂沒有寫,只是把同一條不等式移項。
Fun Time:10 顆彈珠的上界
題目(第 12 頁): 設 。用 Hoeffding 不等式
估計抽 10 顆彈珠時 的機率上界。你得到多少?
- 0.67
- 0.40
- 0.33
- 0.05
答案:3。 講義的解法是代 、: 表示 比 至少低了 0.3。
講義補了一句:選項 4 是實際的機率,Hoeffding 只給上界。本文驗算實際機率: 就是 10 顆裡橘色不超過 1 顆,
四捨五入是 0.05。講義沒有說明另外兩個選項怎麼來的,以下是本文的推測。選項 2 的 0.40 在數值上就是 本身,跟要算的機率無關。選項 1 的 0.67 在數值上等於 ,也就是拿 1 減掉上界;那個數是「 與 相差不超過 0.3」的機率下界,題目問的是 的機率上界,兩者方向相反。
這題有兩個細節,本文補充。第一,式子裡的事件是嚴格的「大於 」,而 時 剛好等於 0.3。要嚴謹的話,取任何比 0.3 小一點的 , 就落在 裡,上界是 ;讓 靠近 0.3,上界就靠近 0.331,答案不變。第二,Hoeffding 管的是兩邊: 太低與太高都算。 的機率是 0.0548,兩邊合計 0.101,仍然在 0.331 以下;題目只問低的那一邊,所以實際值更小。
課堂上對這題的評語是:要算實際的機率,就一定得知道 ;Hoeffding 對任何 都成立,所以它會高估,只是一個上限。
把彈珠換成資料:一個固定的假說可以驗證
(影片 00:00–06:00 是罐子與學習的對應,06:00–07:27 是流程圖多出來的元件,07:27–10:55 是 E_in、E_out 與保證,10:55–15:00 談驗證與學習的差別,之後是 Fun Time。)
罐子裡的彈珠是什麼
課堂上先替學生問了一句:這是機器學習課,講一堆彈珠做什麼。第 13 頁把罐子的每個元件對到學習問題:
| 罐子 | 學習 |
|---|---|
| 未知的橘色機率 | 固定的假說 與目標 不一樣的機率 |
| 罐子裡的一顆彈珠 | 輸入空間裡的一個 |
| 橘色 | 在這個 上答錯: |
| 綠色 | 在這個 上答對: |
| 從罐子獨立抽出 顆 | 在 上檢查 ,其中 是 i.i.d. 抽出的, |
課堂上解釋這個對應是怎麼想出來的。未知的是 ,要在 的每個點上都估出 太難,所以先問簡單一點的問題:手上有一個假說 ,來一位新顧客, 說的跟 說的一不一樣。接著把每個 當成一顆彈珠, 與 答案不同就漆成橘色,相同就漆成綠色。
這個漆法有一個前提,課堂上講得很重:手上要先有一個 ,而且要固定,不能現在拿這個 來漆、等一下換另一個。漆好之後的罐子是這個 專屬的罐子。
彈珠的顏色我們看不到(要知道 才看得到),但抓出來的那一把看得到。資料裡有 也有 ;課堂上補了一個條件,沒有雜訊時 就是 。拿 跟 比,就知道第 顆是橘是綠。講義的結論: 夠大、 又是 i.i.d. 的話,可以用已知的「 的比例」大概推論未知的「 的機率」。
流程圖多了一個元件
第 14 頁在基石第 1 堂的流程圖上加東西。新增的是一個方塊: 上的未知機率分布 。它用虛線連到兩個地方:
- 連到訓練資料,表示 是從 抽出來的。
- 連到「 嗎」這個判斷,表示衡量 好不好時用的 也從同一個 來。
另外有兩條實線也連到「 嗎」這個判斷:一條從訓練資料出發,一條從 出發,線上標著 fixed 。判斷的對象是從 借來的一個固定假說,判斷的依據是資料。課堂上說虛線代表這個東西我們不知道,而同一個 用在兩個地方就對應到同一個罐子:資料是從罐子裡抓的那一把,衡量的是整個罐子。
有了 ,兩個量可以正式定義。講義的寫法:
是這門課的布林記號:裡面的敘述成立就是 1,不成立就是 0。 是期望值。所以 是從 抽一個 時 答錯的機率,對應 ,未知; 是 在 筆資料上答錯的比例,對應 ,已知。課堂上說 in 指 in-sample,手上樣本裡的錯誤;out 指 out-of-sample,樣本以外、整個罐子的錯誤率。
本文補充:照這個定義, 是對整個 取的期望值, 裡出現過的輸入如果再被抽到,也照樣算進去。它跟「只數 以外的輸入」是兩個不同的量:No Free Lunch 那一節數的是後者,只看沒出現過的 101、110、111。講義總結頁把彈珠那一節收成 probably approximately correct outside ,課堂上也把 out-of-sample 說成樣本以外、罐子裡的部分,那是比較口語的講法;式子裡的 以上面的定義為準。輸入空間很大時(例如特徵是連續的數值),再抽到同一個點的機率小到可以忽略,兩個量幾乎相等。輸入只有少數幾種時兩者會差很多,下面「八個輸入的世界」就是照定義對整個 算的。
一個假說的保證
課堂上說接下來只是做文字代換。把 Hoeffding 裡的 換成 、 換成 ,就是第 15 頁的 The Formal Guarantee。對任何固定的 :
講義列的性質跟罐子那一頁一一對應:
- 對所有 與 都成立。
- 右邊沒有 ,所以不需要知道 ; 與 都可以保持未知。
- 「」是 PAC。
課堂上對第二點的說法是: 與 只是我們假設它們存在,不需要真的知道;知道 的話就不用玩了,根本不必學習。
頁尾是這一節的推論鏈:
「對 而言」不能省。課堂上說這不是任意的保證:資料要繼續從同一個 產生, 與 才會接近。
驗證不等於學習
到這裡好像可以宣布學習可行了。第 16 頁問:可以說這是好的學習()嗎?課堂上先提醒,演算法最後交出來的叫 , 只是 裡的一個候選。講義的回答分兩邊:
| 條件 | 結論 | |
|---|---|---|
| Yes | 這個固定的 的 很小,而且 選它當 | 「」是 PAC |
| No | 被迫永遠選這個 當 | 幾乎都不小,於是「」是 PAC |
右邊那一格是重點。前面的推導從頭到尾只針對一個事先固定的 。要讓保證成立,演算法就得不管資料長什麼樣子都交出同一個 。課堂上的說法是:一個不管遇到什麼題目都回傳同一個 的演算法,那個 十之八九不好, 很大。這時 Hoeffding 仍然成立, 與 仍然接近,只是你得到的結論變成:可以很有信心地說 跟 一點也不像。
講義的結語:真正的學習是 在 裡做選擇(像 PLA),而不是被迫選某一個 。課堂上舉 PLA 當對照:給它不同的資料,它就回傳不同的線。
所以目前做到的事有另一個名字。第 17 頁把流程圖改成 The 'Verification' Flow,跟學習的流程圖比:
| 位置 | 學習的流程 | 驗證的流程 |
|---|---|---|
| 資料 | training examples | verifying examples |
| 候選 | 假說集合 | 一個假說 |
| 演算法 | 有,負責挑 | 沒有,直接 |
| 輸出 | 學到的公式 | 一條被驗證過的既有公式 |
講義的說法是:現在可以拿歷史紀錄來驗證「一條」候選公式。課堂上強調,這份資料沒有經過學習、沒有經過選擇的程序。這一點到了講很多個假說的那一節會變成關鍵。
數值例子:八個輸入的世界
以下的設定與計算是本文自擬的,不在講義上;用的是講義第 5 頁那張表的輸入與函數。
設定。 , 是 8 種輸入各 的均勻分布。真正的目標是表上的 。假說 事先固定為:前五種輸入的答案跟表上的 一樣,101、110、111 的答案是 ○×○(就是課堂上那位同學的 )。
算 。 在 101、110、111 上是 ×○×, 三個都答錯,其他五個都答對。。這個數字在真實世界裡看不到,這裡因為整個世界是我們自己造的才算得出來。
抽樣。 從 獨立抽 個輸入(可以重複),每一個有 的機率落在 答錯的地方。答錯的個數 服從二項分布,:
| 機率 | 超過 ? | |||
|---|---|---|---|---|
| 0 | 0 | 0.375 | 是 | |
| 1 | 0.2 | 0.175 | 否 | |
| 2 | 0.4 | 0.025 | 否 | |
| 3 | 0.6 | 0.225 | 否 | |
| 4 | 0.8 | 0.425 | 是 | |
| 5 | 1 | 0.625 | 是 |
結果。 取 ,壞事的機率是 (精確值 )。Hoeffding 的上界是 。精確值在上界以下。
這代表什麼。 第一, 太小,上界 0.813 幾乎沒有資訊;Hoeffding 要 大才有用。第二,講義那份 就屬於 這一列:五筆資料全落在 答對的地方,,看起來完美,實際上 。對一個事先固定的 ,這種誤導人的樣本只有約 9.5% 的機率出現。可是講義表上的 並非事先固定,它是看了資料才被調成全對的。這個差別留到「演算法要挑,保證要付多少代價」那一節的數值計算再處理。
Fun Time:朋友的股票規則
題目(第 18 頁): 朋友告訴你她投資某支股票的祕密規則:「早上跌,下午就會漲;反過來也一樣。」為了驗證,你從過去 10 年的股票資料裡均勻隨機挑了 100 天,發現其中 80 天符合這條規則。你能從這次驗證得到的最好保證是什麼?
- 接下來 100 天照這條規則操作,一定會變有錢。
- 如果市場的行為跟過去 10 年類似,接下來 100 天照這條規則操作,很可能會變有錢。
- 從另外 20 位朋友的規則裡挑出「最好的規則」,接下來 100 天照它操作,很可能會變有錢。
- 如果過去 10 年都照這條規則操作,一定已經變有錢了。
答案:2。 講義對其他三個選項各給一句:選項 1 是 no free lunch;選項 3 是驗證裡沒有「學習」的保證;選項 4 是只驗證了 100 天,這條規則在整整 10 年裡大部分是錯的也有可能。
本文把這題代進這一節的對應走一遍。規則是固定的 (你挑日子之前她就說了);罐子是過去 10 年的每一天, 是在這些日子上的均勻分布;100 天是 的樣本;80 天符合,所以 。把這 100 天當成獨立抽出的,取 :
所以至少有 97.8% 的把握,這條規則在 10 年裡的錯誤率不超過 ,也就是至少 65% 的日子符合。這是一個「很可能」的保證,而且對象是過去 10 年這個罐子。
- 選項 2 對在兩個地方:用「很可能」而非「一定」;並且加上「市場跟過去 10 年類似」,也就是未來的日子來自同一個 。這正是推論鏈最後那句「對 而言」。
- 選項 1 錯在「一定」,而且沒有未來跟過去相似的前提。沒有這個前提,未來的 100 天就是 以外的輸入,什麼都可能發生。
- 選項 4 也錯在「一定」。課堂上的說法是,抽出來的 100 天搞不好跟這 10 年的分布很不一樣;那就是剛才表格裡 的那種樣本。
- 選項 3 把驗證當成學習。你驗證的是這一條規則,別的規則沒驗過;就算把 21 條規則都拿同樣的 100 天來驗、再挑最好的,那也已經是在做選擇。課堂上說,從 20 條規則裡選一條出來,就不一定有這麼強的保證。弱多少,「演算法要挑,保證要付多少代價」那一節算得出來。
演算法要挑,保證要付多少代價
(影片 00:00–01:17 是很多個罐子,01:17–04:23 是丟銅板,04:23–06:57 定義 BAD,06:57–09:59 是很多假說時的 BAD data,09:59–12:16 是 union bound,12:16–15:00 是學習流程與 M 無限大的問題,之後是 Fun Time 與總結。)
很多個罐子
第 19 頁畫了 個罐子,一個假說一個: 的罐子橘色比例是 ,抽出來的樣本橘色比例是 ,一路排到 。圖上 那個罐子抽出來的 10 顆全是綠的。頁尾問:真正的學習(例如 PLA)抽到全綠的時候,可以喊 BINGO 嗎?
課堂上把問題講白:10 個假說就是 10 個罐子,其中一個罐子抽出來的彈珠全綠,對應到有一個假說在你看到的資料上全對。要不要選它?
丟銅板:有選擇,罕見的事就不罕見
第 20 頁用銅板回答。問:台大 ML 班 150 人,每人把一枚銅板丟 5 次,有一位同學 5 次都是正面,她那枚銅板「」真的特別神奇嗎?
答:不。就算每一枚都是公正的銅板,150 枚裡有一枚 5 次全正面的機率是
推導:一枚公正銅板丟 5 次全正面的機率是 ,所以「沒有」全正面的機率是 。150 枚銅板互相獨立,150 枚都沒有全正面的機率是 。用 1 去減,至少有一枚全正面的機率約 0.9915。
課堂上補了一個自己在家就能做的版本:一個人坐在電腦前,可以自己丟 150 輪,通常丟個 20、30、40 輪就會出現全正面。本文驗算:20 輪內出現的機率是 ,30 輪 0.61,40 輪 0.72;第 22 輪起超過一半。
這跟學習的對應:銅板是假說,5 次丟擲是 5 筆資料,正面是答對,公正銅板的 。全正面就是 。挑出那枚全正面的銅板,等於挑 最小的假說,而它的 還是 。課堂上的結論是:有選擇的時候就有了偏見,這些銅板明明都一樣。單看一枚,全正面的機率是 ;有 150 個選擇,機率超過 99%。講義的說法:BAD sample 指 與 差很遠,牽涉到「選擇」時會更糟。
BAD sample 與 BAD data
第 21 頁把「壞」定義清楚:
- BAD sample:例如 ,卻抽到全正面()。
- BAD data for one : 與 差很遠。講義舉的典型情形是 很大(離 很遠), 卻很小(在多數資料上答對)。
課堂上補上「遠」的標準:差得比 多。
接著講義畫了一列表格。把所有可能抽到的資料集排成一排,,每一份都是 筆資料。對一個固定的 ,每一格要嘛是 BAD、要嘛不是。講義的圖上, 這一列在 與 是 BAD。BAD 的機率是把所有可能的資料集加起來:
Hoeffding 說這個總和很小。課堂上再三強調機率是算在哪裡:算在「抽一把」這個動作上。Hoeffding 保證的是這一列裡 BAD 的格子加起來機率很小,至於你手上這一份是不是 BAD,它沒說。
很多假說時,怎樣算壞
第 22 頁把表格擴成很多列,一列一個假說。講義上的表:
| … | … | Hoeffding | |||||
|---|---|---|---|---|---|---|---|
| BAD | BAD | ||||||
| BAD | |||||||
| BAD | BAD | BAD | |||||
| … | |||||||
| BAD | BAD | ||||||
| all | BAD | BAD | BAD | ? |
每一列各自有 Hoeffding 管著,BAD 的格子機率加起來很小。新的是最下面那一列。講義的定義用了兩個等價的說法:
也就是說,一欄裡只要有一格 BAD,這份資料對整個 就算 BAD。課堂上的比喻是踩地雷:好的資料讓演算法怎麼選都對,照自己的意思選就好;不好的資料裡埋了雷,演算法看到某個假說的 很低就選了它,結果它的 很大。課堂上照著表唸:拿到 ,可能踩到的雷是 、、;拿到 ,雷是 與 ;只有像 這種整欄都沒有雷的才是好資料。
右下角的問號就是這一節要算的: 個假說時, 的上界是多少。
union bound:四行推導
第 23 頁的推導只有四行,一行一行看。
第一行,把定義寫成「或」。 BAD 的定義是存在某個假說出事,所以
第二行,把「或」拆成加法。 這一步叫 union bound:
為什麼是「小於等於」:課堂上用集合的面積解釋,幾個集合聯集的面積,不會超過各自面積的總和。本文補上兩個事件的版本:,最後一項不會是負的,丟掉它就得到 。重疊的部分被算了兩次,所以直接相加只會多、不會少。這一步不需要事件互相獨立。
第三行,每一項各用一次 Hoeffding。 每個 都是抽資料之前就擺在 裡的固定假說,所以「一個假說的保證」對它成立:
第四行, 個一樣的數相加。
講義稱它是 Hoeffding 的 finite-bin 版本,列了三點:
- 對所有 、、 都成立。
- 不需要知道任何 ; 與 可以保持未知。
- 不管 是什麼,「」都是 PAC。
第三點是整堂課的落點,講義只寫了結論,本文把理由補上。演算法交出來的 是 裡的某一個,是哪一個要看資料。如果這份 不是 BAD,那麼每一個 的 與 都在 之內,不論演算法挑中誰, 也在 之內。反過來說,「 的 與 差超過 」只可能發生在 BAD 的 上:
「驗證不等於學習」卡住的地方是 看過資料、不是固定的。這裡的解法是不去追蹤演算法會挑誰,直接要求所有候選同時安全。課堂上的說法是每一個 都安全,演算法怎麼選都可以。代價是右邊多了一個 ;課堂上舉例,假說集合裡有 100 個假說,壞事發生的機率上界就是原來的 100 倍。
既然怎麼選都安全,講義說最合理的 (像 PLA 或 pocket)就是挑 最低的那個當 。課堂上的理由:每個假說的 與 都接近, 最小的那個, 也會落在比較小的那一邊。
本文補充:丟銅板的例子裡 150 枚銅板互相獨立,所以算得出精確的 。學習問題裡 個假說看的是同一份資料,各自的 BAD 事件彼此相關,精確值不好算;union bound 不需要獨立,才用它。它也可能很寬鬆:對銅板用 union bound 得到 ,比 1 還大。
把數字代進去
以下是本文的計算,接續前面兩個自擬的情境。
股票規則,21 條挑一條。 你把自己朋友的規則與另外 20 位朋友的規則,都拿同樣的 100 天來驗,挑符合天數最多的那一條。、:
| 一條規則: | 21 條挑一條: | |
|---|---|---|
| 0.10 | 0.271 | 5.68 |
| 0.15 | 0.022 | 0.467 |
| 0.20 | 0.00067 | 0.0141 |
只驗一條時, 就有 97.8% 的把握。挑過之後,同樣的 只剩 53.3% 的把握;要回到差不多的信心水準, 得放寬到 0.2。同樣是「100 天裡 80 天符合」,一條規則時可以說錯誤率很可能不超過 0.35,21 條挑出來的只能說很可能不超過 0.4。保證還在,只是變弱了。
需要多少資料。 令 ,跟前面一樣移項:
在對數裡面。取 、: 要 185 筆, 要 415 筆, 要 876 筆。假說多一萬倍,資料只要多一倍左右。這是有限個假說時的好消息。
回到八個輸入的世界。 講義第 4 頁把全部 256 個函數都放進 ,。取 ,上界是 ,遠大於 1,沒有任何保證。這裡還可以直接算出真相:不管抽到哪 5 筆,最多涵蓋 5 種輸入,至少有 3 種沒被抽到。256 個函數裡一定有一個在抽到的輸入上跟 全同、在沒抽到的輸入上全部相反,它的 、。所以每一份可能的 都是 BAD,。
這就把 No Free Lunch 那一節與後面講機率的三節接起來了。No Free Lunch 的例子用機率的語言重講一次,就是 太大、 太小,union bound 的上界超過 1。反過來,如果事先把候選限制成 2 個假說,並且有 筆獨立抽出的資料,同樣的 給出 。學習可行的條件,是候選不能太多、資料要夠多,兩者由 這個式子綁在一起。
可行的條件,以及還沒解決的事
第 24 頁把結論寫成 The 'Statistical' Learning Flow:
- 如果 有限、 夠大,那麼不管 挑出哪個 ,。
- 如果 找得到一個 的 ,就有 PAC 的保證 ,學習是可能的。
流程圖跟基石第 1 堂比,課堂上說只多了兩條線,都從未知的 出發:一條產生訓練資料的 ,一條產生用來測試 的 。
圖的右下角留了一個問題: 呢(像感知器)?平面上的線有無限多條, 直接變成無限大。課堂上替學生把話講了:講了這麼多, 還是得有限,這不是在打嘴砲嗎?回答是:確實還沒完全解決,但有限的情形是很好的出發點;無限的情形有點困難,大約要花接下來兩到三次上課的時間。
第 26 頁的總結把四節各收成一句,順序就是這堂課的論證:
- Learning is Impossible?:absolutely no free lunch outside 。
- Probability to the Rescue:probably approximately correct outside 。
- Connection to Learning:verification possible if small for fixed 。
- Connection to Real Learning:learning possible if finite and small。
Fun Time:四個假說的 BAD data
題目(第 25 頁): 考慮 4 個假說:
對任意的 與 ,下面哪一個敘述「不」成立?
- 的 BAD data 和 的 BAD data 完全相同
- 的 BAD data 和 的 BAD data 完全相同
答案:1。 講義的解答只有兩句:重點是看出選項 2 成立,回頭看 union bound 就知道選項 4 也成立;類似的想法之後會用來處理 。
選項 2 為什麼成立。 ,兩者在每個點上的答案相反。 答對的點 答錯,反之亦然,所以
相減之後 ,絕對值一樣。一份資料對 是 BAD,對 就也是 BAD。這是課堂上的解釋:把我乘上負號, 與 都跟我反過來,所以隔得一樣遠。( 剛好是 0 的點兩者都是 ,這裡不討論。)
選項 3 成立。 它就是 代進 。
選項 4 也成立。 同理 與 的 BAD data 相同。四個事件其實只有兩個不同的事件,推導的第一行變成「BAD for or BAD for 」,union bound 只需要加兩項:。
選項 1 為什麼不成立。 看第一個座標, 看第二個,兩者答錯的點不同,沒有理由在同樣的資料上出事。本文自擬一個可以手算的反例。 是四個點 、、、 上的均勻分布, 在前三個點是 、在 是 。那麼 只在 答錯, 只在 答錯, 都是 。取 、,依序抽兩個點共 16 種等機率的資料集。 只可能是 0、、1。對 與 ,跟 差超過 0.3 的只有 ,也就是兩筆都抽到它答錯的那個點。 與 的 是 ,差超過 0.3 的只有 ,也就是兩筆都抽到它唯一答對的那個點: 唯一答對的是 , 是 。
| 假說 | BAD 的資料集 | 機率 |
|---|---|---|
| 兩筆都是 | ||
| 兩筆都是 | ||
| 兩筆都是 | ||
| 兩筆都是 |
與 的 BAD data 是兩份不同的資料集,選項 1 不成立; 與 是同一份,選項 2 成立。至少一個假說出事的機率是 ,四列直接相加是 ,多出來的就是重疊被重複計算的部分。這個例子的 太小,Hoeffding 的數字本身超過 1,它只用來看集合之間的關係。
課堂上說這題稍微難一點,出它是為了讓大家想到 BAD 會重疊,下一堂要用這個性質討論無限多條線的情形。
自我檢查
1. 一個事先固定的假說,在 筆獨立抽出的資料上量到 。取 ,Hoeffding 的上界是多少?如果這個假說是從 20 個候選裡挑 最低的,上界變成多少?要讓 20 個候選、 時壞事機率不超過 0.05,需要幾筆資料?
答案:一個假說時 ,有 83.6% 的把握 在 0.03 到 0.13 之間。20 個候選時乘上 20,得 3.28,超過 1,沒有保證。,要 1,337 筆。
2. 用自己的話說明:為什麼 Hoeffding 不等式不能直接用在 PLA 找出來的 上?
判準:答案要提到三件事。第一,把彈珠漆成橘色或綠色需要先有一個固定的 ,罐子是那個 專屬的。第二, 是看了資料才決定的,換一份資料就換一個 ,所以它不是事先固定的假說。第三,補救的方式是要求 裡每個候選同時不出事,用 union bound 付出 倍的代價。只回答「因為 不固定」而沒說出為什麼固定很重要,不算完整。
3. 一個 60 人的班,每人把公正銅板丟 6 次。至少有一人 6 次全是正面的機率是多少?用 union bound 得到的上界是多少?
答案:一人全正面的機率是 。至少一人全正面的機率是 。union bound 給 。上界確實比精確值大,差距來自「兩個人以上同時全正面」被重複計算。
4. ,資料 給了其中 10 種不同輸入的答案,沒有雜訊。跟 完全相容的目標函數有幾個?某個在 上全對的 ,在 以外的輸入上,平均(對所有相容的目標函數取平均)答對幾個?
答案: 有 種輸入, 以外剩 6 種,每種有 2 種可能的答案,相容的目標函數有 個。對每一個沒看過的輸入,64 個函數裡剛好一半說 ○、一半說 ×, 不管猜什麼都只對上一半,所以平均答對 個,跟亂猜一樣。
5. 假說集合有 100 個假說,剛好是 50 組「 與 」。 的上界可以寫得比 更小嗎?
答案:可以。 與 的 BAD data 完全相同,100 個事件裡只有 50 個不同的事件,union bound 加 50 項就夠,上界是 。判準:要說出「BAD 事件重疊時,直接相加會重複計算」。
練習與對應閱讀
動手驗算。 這堂的數字都可以用 Python 標準函式庫重算,不需要安裝套件。下面這段先算精確值,再用模擬對照:
import random
from math import comb, exp
# Fun Time:mu = 0.4,抽 10 顆,nu <= 0.1
exact = sum(comb(10, k) * 0.4**k * 0.6**(10 - k) for k in (0, 1))
bound = 2 * exp(-2 * 0.3**2 * 10)
print(f"exact {exact:.4f} Hoeffding bound {bound:.4f}")
# 丟銅板:150 人各丟 5 次,至少一人全正面
print(f"exact {1 - (31 / 32) ** 150:.4f}")
random.seed(0)
trials = 10_000
hits = sum(
any(all(random.random() < 0.5 for _ in range(5)) for _ in range(150))
for _ in range(trials)
)
print(f"simulated {hits / trials:.4f}")
前兩行輸出應該是 exact 0.0464 Hoeffding bound 0.3306 與 exact 0.9915,模擬值會落在 0.99 附近。接著可以把彈珠那一段的 改成 100、1,000,看精確值與上界的差距怎麼變。
兩個學期的對應。 Fall 2026 課程頁把這堂列在 W3 的課前必看清單,教科書章節標的是 Learning from Data(LFD)1.3。Fall 2026 與 Fall 2024 的課程頁都在這堂旁邊列了延伸閱讀:Wolpert 的 The Lack of A Priori Distinctions Between Learning Algorithms(Neural Computation, 1996),No Free Lunch 的原始論文。以上於 2026-09-30 查核。
Fall 2026 extended slides(04e)的補充。 MOOC 講義沒有的有三處:
- 用數列 1, 4, 1, 5 再示範一次 No Free Lunch:同樣的前四項,可以用三條不同的遞迴式接出三種不同的下一項,投影片的說法是 any number can be the next。
- 把 Wolpert 1996 的 No Free Lunch 定理粗略寫成一句:對學習問題沒有任何假設時,所有學習演算法的表現都一樣。
- 最後一頁把 個假說畫成共用同一組 的 個罐子,強調這是 dependent sampling:各假說的 BAD 事件互相相關,不像丟銅板那樣各自獨立,所以很難直接分析,union bound 是保守的做法。
作業。 兩份都公開,沒有官方解答,批改只限修課生。
Fall 2026 hw1 的「Feasibility of Learning」段(10/21 截止):
- Q6:off-training-set error。6 個點的 universe 裡任選 3 個當 ,用感知器做到 ,問 外錯誤率的最小與最大值。這是 No Free Lunch 那張表的直接演練。
- Q7:用 Monte Carlo 丟飛鏢估計 ,要丟幾支才能讓誤差在 內的機率超過 0.999。做法就是把 Hoeffding 反過來解 。
- Q8–9:在 上算兩個假說的 ,再算抽 4 個點時兩者 相等的機率。題目註明這是分不出哪個假說比較差的 BAD data。
- Q10:用骰子代替彈珠做 multiple-bin sampling。每個數字是一個假說、每顆骰子是一個樣本,問抽 5 顆時「某個數字全是綠色」的機率。
Fall 2024 HW2 涵蓋第 4 到第 7 堂,其中練這堂的有:
- Q2:16 袋黑白各半的牌,各抽 5 張,至少一手全白的機率。這是獨立版的丟銅板。
- Q5:批判 ChatGPT 對「已知前 項來自某個 次多項式,能不能預測下一項」的回答,練 No Free Lunch 的論證。
- Q6–7:四種彩券的多罐子遊戲,題目提示把每個數字看成假說、抽到的彩券看成資料,並說明 Q6 要考慮抽樣相依。
- Q8: 台吃角子老虎機,從單邊 Hoeffding 出發,證明所有機器、所有時間步的上信賴界能以至少 的機率同時成立。題目提示這是 multi-armed bandit 的 upper-confidence bound 演算法的核心技巧,用到的正是這堂的 union bound。
沒有解答時,機率題最直接的自我驗收是模擬:先模擬出數值,再回頭檢查推導。整份作業的導讀在基石作業導讀。
延伸閱讀。 Caltech Learning from Data 是同一本教科書的英文課,Lecture 2: Is Learning Feasible? 對應這堂。Stanford CS229 導讀有學習理論的另一種講法。
下一堂。 基石第 5 堂:訓練與測試從最後一題 Fun Time 的觀察出發:很多假說的 BAD data 是重疊的,union bound 把它們重複計算了。把重疊算進來,無限大的 就有機會換成一個有限的數。
課程影片來源
原始影片:Learning is Impossible?、Probability to the Rescue、Connection to Learning、Connection to Real Learning
查核日期:2026-10-13。影片 ID、標題與長度於當天從官方播放清單取得;YouTube 上沒有字幕軌,本文的課堂說法來自自行轉錄的逐字稿。
更新紀錄
- 2026-10-13:全系列改為一堂一篇。這篇原本就只寫第 4 堂,這次依講義與影片逐字稿重寫,補上四節的推導、四題 Fun Time 的解釋與數值例子。
- 2026-10-10:標註影片狀態,核對錄影來源與取得方式。
- 2026-10-10:重查影片狀態。嵌入影片與官方播放清單的講次相符。
參考資料
- 基石第 4 堂講義 04_handout.pdf:本文的主要底本,四節的內容、表格、四題 Fun Time 與所有公式都出自這份講義。
- 機器學習基石 YouTube 播放清單:四支影片的 ID 與標題;文中「課堂上」的說法轉述自這四支影片的機器轉錄逐字稿。
- Hsuan-Tien Lin > MOOCs:官方講義與錄影入口。
- Machine Learning, Fall 2026 課程頁:W3 課前必看清單、LFD 章節與延伸閱讀。
- Fall 2026 extended slides 04e_handout.pdf:數列 1, 4, 1, 5 的例子、No Free Lunch 定理的一句話版本、dependent sampling 的說明。
- Fall 2026 Homework 1(hw1.pdf):Q6–10 的題目內容。
- Fall 2024 Homework 2(hw2_red.pdf):Q2、Q5–8 的題目內容。
- Wolpert (1996), The Lack of A Priori Distinctions Between Learning Algorithms:課程頁列出的 No Free Lunch 延伸閱讀。
- Learning from Data 教科書網站:LFD 1.3 的出處。
- Caltech Learning from Data telecourse:延伸閱讀,Lecture 2: Is Learning Feasible? 對應這堂。
- Stanford CS229 導讀:延伸閱讀,站內文章。
- 台大林軒田 機器學習基石與技法 導讀:課程總覽:整門課的位置與閱讀路線。