1 00:00:00,252 --> 00:00:03,417 無論你在調超參數,或嘗試不同演算法 2 00:00:03,417 --> 00:00:06,047 或是嘗試不同的選項 3 00:00:06,047 --> 00:00:07,764 來打造你的機器學習系統 4 00:00:07,764 --> 00:00:12,016 如果能有單一數字的衡量指標, 5 00:00:12,016 --> 00:00:16,064 讓你很快看出新的嘗試比之前好還是壞 6 00:00:16,064 --> 00:00:20,260 你的進度就能飛快無比。 7 00:00:20,260 --> 00:00:24,710 所以,團隊要開始一個機器學習的計畫,我常建議 8 00:00:24,710 --> 00:00:29,570 為你的問題設定好一個「單一數字的衡量指標」 (single real number evaluation metric) 9 00:00:29,570 --> 00:00:30,600 讓我們看一個例子 10 00:00:32,400 --> 00:00:35,244 你曾聽我說過,運用機器學習是很需要 11 00:00:35,244 --> 00:00:36,165 經驗的過程 12 00:00:36,165 --> 00:00:40,360 時常我們有點子,寫程式,跑實驗,觀察表現 13 00:00:40,360 --> 00:00:44,100 然後拿實驗的結果來修正我們的點子 14 00:00:44,100 --> 00:00:48,590 然後你不斷在這輪迴中持續改善 15 00:00:48,590 --> 00:00:54,124 那麼以貓貓辨認器為例,你先前做了分類器 A 16 00:00:54,124 --> 00:00:58,036 然後改了超參數、訓練資料或其他東西 17 00:00:58,036 --> 00:01:02,032 你現在訓練了一個分類器 B 18 00:01:02,032 --> 00:01:06,866 一個合理評估分類器成效的方法,是觀察 19 00:01:06,866 --> 00:01:08,680 準確率和查全率 (precision 和 recall) 20 00:01:08,680 --> 00:01:12,804 準確率和查全率的細節不大重要 — 21 00:01:12,804 --> 00:01:13,650 以這個例子來說。 22 00:01:13,650 --> 00:01:16,594 不過簡單說,準確率 (precision) 的定義是 23 00:01:16,594 --> 00:01:20,207 你的分類器說是貓的圖片中 24 00:01:23,068 --> 00:01:26,741 有百分之幾是真的貓? 25 00:01:32,341 --> 00:01:37,045 所以如果分類器 A 有 95% 準確率,代表當 A 說 26 00:01:37,045 --> 00:01:41,830 某個東西是貓,有 95% 的機會那真的是貓 27 00:01:41,830 --> 00:01:45,878 而查全率 (recall) 是,拿所有是貓的照片 28 00:01:45,878 --> 00:01:50,731 你的分類器有百分之幾的機會能正確認出來? 29 00:01:50,731 --> 00:01:57,110 有多少真正的貓能被正確辨認出? 30 00:02:04,331 --> 00:02:08,986 所以如果分類器 A 有 90% 的查全率,代表 31 00:02:08,986 --> 00:02:11,010 開發集所有貓的圖片裡 32 00:02:11,010 --> 00:02:13,987 分類器 A 能查出全部的 90%。 33 00:02:13,987 --> 00:02:19,049 不用擔心準確率和查全率的定義 34 00:02:19,049 --> 00:02:23,933 其實,你常常需要在準確率和查全率之間取捨 35 00:02:23,933 --> 00:02:26,845 而你兩者都在乎 36 00:02:26,845 --> 00:02:29,455 當分類器說是貓 37 00:02:29,455 --> 00:02:31,765 你想要他真的是貓 38 00:02:31,765 --> 00:02:33,475 但是對於所有貓的圖片 39 00:02:33,475 --> 00:02:37,905 你也想要一大部分是貓 40 00:02:37,905 --> 00:02:40,865 所以可能合理的評估是 41 00:02:40,865 --> 00:02:44,685 用分類器的準確率和查全率 42 00:02:44,685 --> 00:02:49,728 同時用 precision 和 recall 來衡量的問題是 43 00:02:49,728 --> 00:02:54,926 如果分類器 A 查全率比較高,但是分類器 B 44 00:02:54,926 --> 00:02:59,840 準確率比較高,你會不確定哪個好 45 00:03:03,481 --> 00:03:06,976 而如果你實驗很多想法、很多超參數 46 00:03:06,976 --> 00:03:11,076 你不只試兩個分類器 47 00:03:11,076 --> 00:03:14,932 可能是十來個分類器,而你想快快挑"最好"的 48 00:03:14,932 --> 00:03:17,010 以繼續後面的步驟 49 00:03:19,850 --> 00:03:23,570 如果用了兩個衡量指標 50 00:03:23,570 --> 00:03:27,380 會很難二選一,或是十個中挑最好的。 51 00:03:29,170 --> 00:03:33,220 所以我建議,與其於用兩個數字: 52 00:03:33,220 --> 00:03:35,870 「準確率」和「查全率」來挑選分類器 53 00:03:35,870 --> 00:03:40,440 你必須找一個新的衡量指標,結合兩者 54 00:03:41,740 --> 00:03:45,205 在機器學習文獻,結合準確率和查全率的標準作法 55 00:03:45,205 --> 00:03:47,028 叫做「F1 分數」 56 00:03:47,028 --> 00:03:52,777 F1 分數的細節不重要,粗略說 57 00:03:52,777 --> 00:03:58,541 你可看作是準確率 P 和查全率 R 的平均 58 00:03:58,541 --> 00:04:04,574 從公式看,F1 分數定義是 59 00:04:04,574 --> 00:04:07,670 2 除以 (1/P + 1/R) 60 00:04:07,670 --> 00:04:12,240 數學上這叫調和平均, 61 00:04:12,240 --> 00:04:16,860 準確率 P 和查全率 R 的調和平均 62 00:04:16,860 --> 00:04:17,850 非正式來說 63 00:04:17,850 --> 00:04:21,721 你可以想成是他們的某種平均 64 00:04:22,840 --> 00:04:25,190 只不過不是算術平均, 65 00:04:25,190 --> 00:04:28,800 而是調和平均,用這個公式算出 66 00:04:28,800 --> 00:04:33,410 對兩者的取捨會有些優點 67 00:04:33,410 --> 00:04:34,953 不過在這例子 68 00:04:34,953 --> 00:04:39,853 你可以一眼看出分類器 A 的 F1 分數比較好 69 00:04:39,853 --> 00:04:43,825 假設用 F1 分數來綜合準確率和查全率很合理, 70 00:04:43,825 --> 00:04:47,000 那你很快就能選擇 A 而非 B 71 00:04:48,100 --> 00:04:48,880 所以我發現 72 00:04:48,880 --> 00:04:52,401 對很多機器學習的團隊,能有好的開發集 73 00:04:52,401 --> 00:04:57,598 讓你測量準確/查全率,再加上單一數字的衡量指標 74 00:04:57,598 --> 00:05:03,430 有時我會叫單一實數的衡量指標 75 00:05:04,580 --> 00:05:09,147 這能讓你很快知道分類器 A 好還是 B 好 76 00:05:09,147 --> 00:05:13,971 因此,有開發集和單一指標 77 00:05:13,971 --> 00:05:18,301 這通常能加快腳步 78 00:05:21,551 --> 00:05:26,980 讓改進演算法的這種迭代過程更快 79 00:05:26,980 --> 00:05:28,010 讓我們看另一個例子 80 00:05:29,130 --> 00:05:35,390 假設你為四個地區的愛貓者做一個貓貓 app 81 00:05:35,390 --> 00:05:40,490 美國、中國、印度和其他地方 82 00:05:40,490 --> 00:05:43,940 假設你有兩個分類器,在這四個地區的資料 83 00:05:45,370 --> 00:05:48,400 分別有不同的錯誤率 84 00:05:48,400 --> 00:05:54,280 例如演算法 A 對美國使用者上傳的照片有 3% 的錯誤率 85 00:05:56,100 --> 00:05:59,140 你想掌握這些分類器 86 00:05:59,140 --> 00:06:03,260 在每個不同地區的成效,這很合理 87 00:06:03,260 --> 00:06:06,770 然而想追蹤四個數字,還想快速決定 88 00:06:06,770 --> 00:06:10,890 演算法 A 還是 B 比較好,這很困難 89 00:06:10,890 --> 00:06:13,370 如果你在測試很多個分類器 90 00:06:13,370 --> 00:06:17,590 看著這堆數字做選擇,這真的很難 91 00:06:17,590 --> 00:06:22,390 以這個例子我會建議,除了 92 00:06:22,390 --> 00:06:26,450 追蹤四個地區的表現以外,也算他們的平均 93 00:06:26,450 --> 00:06:30,874 假設把四個錯誤率平均是合理的單一實數指標 94 00:06:30,874 --> 00:06:33,799 那麼藉由算出平均 95 00:06:33,799 --> 00:06:38,530 你能很快發現方法 C 的平均錯誤率最低 96 00:06:38,530 --> 00:06:40,555 所以我們可能選這一個繼續下去 97 00:06:40,555 --> 00:06:44,490 選一個演算法,從這繼續改進。 98 00:06:44,490 --> 00:06:47,573 機器學習的流程通常是,你有個點子, 99 00:06:47,573 --> 00:06:51,970 你實作,試試看,然後你想知道這點子有沒有用 100 00:06:51,970 --> 00:06:56,760 我們在這部影片看到,有單一數字的衡量指標 101 00:06:56,760 --> 00:06:58,980 在做出各種決定時, 102 00:06:58,980 --> 00:07:02,340 能增加你或你團隊的效率 103 00:07:02,340 --> 00:07:03,240 不過還沒完 104 00:07:03,240 --> 00:07:07,510 我們尚未提到如何有效設定衡量指標 105 00:07:07,510 --> 00:07:08,430 在下一個影片中 106 00:07:08,430 --> 00:07:13,880 我想分享怎麼去設「優化指標」和「滿足指標」 107 00:07:13,880 --> 00:07:15,480 來看看下一部影片吧