"human-level performance" (人類水準的表現)這個詞 有時會非正式地用在研究文獻 不過讓我來告訴你, 該怎麼更精確去定義它 甚至如何善用「人類水準的表現」的定義 來推動你的機器學習計畫 那麼,還記得上部影片談到這個詞「人類水準的錯誤」 (human-level error),是用在估計 Bayes error 也就是世界上所有函數竭盡所能 能夠達到的最佳錯誤率 先記著這點,讓我們來看一個醫療上圖片辨識的例子 假設你想要看一張 X 光片 做出診斷、決定分類 假設一般人、沒經過訓練的人 在這個任務有 3% 錯誤率 一般醫生,可能普通的放射科醫生,有 1% 錯誤率 一個很有經驗的醫生做更好,0.7% 錯誤 一個有經驗的團隊,也就是 你找來一群經驗豐富的醫生 讓他們全都看這張圖片、討論、辯論 最後達成共識 — 這樣是 0.5% 錯誤率 那麼我想問你的是:要怎麼定義「人類水準的錯誤」? 是 3%, 1%, 0.7% 或 0.5%? 想暫停影片想想的 可以先暫停 要回答這個問題, 我強力建議你記得這一點: 「人類錯誤」最有用的地方, 是視作 Bayes error 的近似、估計 想要的話請隨時暫停影片,思考一下 不過我自己會這樣定義人類水準的錯誤率: 如果你想要近似、估計出 Bayes error 那麼當你有一組經驗豐富的醫生,討論、 辯論後能達到 0.5% 錯誤率時 我們就知道 Bayes error 會比 0.5% 小 因為存在某個系統, 也就是這群醫生,能達到 0.5% 錯誤率 所以根據定義, 理論上的最佳錯誤一定比 0.5% 低 我們不知道會低多少, 搞不好找更多人 或更有經驗的醫生可以做更好 所以或許會比 0.5% 好一些 不過我們知道,最佳的錯誤率不會比 0.5% 高 所以在這樣的情況下, 我會拿 0.5% 當作 Bayes error 的估計值 我會把「人類水準的表現」定義成 0.5% 錯誤率 — 至少,當你想拿人類水準來做上部影片的 偏差/變異的分析的時候 然而,為了發論文 或為了推出系統, 你可能對「人類水準」 有不同的定義: 只要比一位普通的醫生好就算 如果真的達成,或許也很有用有貢獻 在某些情境下, 或許比一位放射科醫生厲害 就表示這系統夠好,可以推出了 因此,也許重點在於,當定義人類水準時 釐清你的目的為何 如果你想表示在某種情況下, 因為你能超越一個人的表現 所以可以推出你的系統, 這樣或許這一個是好的定義 可是,如果你的目的是估計 Bayes error 那這一個才是好的定義 為什麼這很重要呢? 讓我們看一個錯誤分析的例子 假設對於醫療圖片診斷 你的訓練錯誤是 5%, 而開發錯誤是 6% 拿前一張投影片當例子, 我們的人類水準表現 我要把他看成是 Bayes error 的近似值 根據你怎麼定義它: 是一位一般醫生的表現 或是有經驗的醫生、有經驗的團隊, 這邊可能是 1%、 0.7% 或 0.5% 還有在上部影片提到的定義 這邊的差距,在 Bayes error 或其近似值, 與訓練錯誤之間的 叫做可避免的偏差 而這邊,是這個問題的變異 對於你的演算法而言 因此,在第一個例子,無論你選擇那個定義 可避免的偏差大約是 4% 這邊應該是約莫介在 4% 如果用這個,和 4.5% 之間,如果用這個。而這邊差距是 1% 所以以這個例子,我會說 你用哪種人類水準的定義 並不會有太大的影響 無論是用一位普通醫生的錯誤率 或用經驗豐富的醫師、或團隊 無論這邊是 4% 還是 4.5%, 很明顯這問題比變異還大 所以在這種情況 你應該要減少偏差, 例如訓練比較大的網路 那麼,我們看第二個例子 假設你的訓練錯誤是 1%, 而開發錯誤是 5% 同樣地,無論把人類水準定義成 1%, 0.7% 或 0.5% 也都不大重要 因為無論你用哪種定義,你的 可避免的偏差會介在 0% 到 0.5% 之間,對吧 也就是人類的表現和你的訓練錯誤之間的差距 然而這邊的差距是 4% 所以 4% 無論如何都比可避免的偏差大很多 這意味著你必須專心減少變異 例如正則化,或蒐集更多的訓練資料 可是,這種情況下就很重要了:如果訓練錯誤為 0.7% 所以你已經很厲害了,然後你的開發錯誤是 0.8% 在這種情況下,你必須要拿 0.5% 當作 Bayes error 的估計值 因為這樣的話,可避免的偏差會是 0.2% 也就是你的變異,0.1%,的兩倍大 這表示偏差和變異都會是問題所在 但也許可避免的偏差問題比較大 在這個例子,前一張投影片說的 0.5% 會是最好的 Bayes error 估計值, 因為一組醫生的團隊可以達到這樣 如果你拿 0.7% 當作估計值,你會認為 可避免的偏差大概就是 0%,你會忽略了 你其實的確要在訓練集上加把勁 我希望這也能給你一點感覺, 了解為什麼在機器學習中 你越逼近人類表現的水準時, 問題會越來越難 以這個例子來說,當你達到 0.7% 錯誤率 除非你很小心地估計出 Bayes error 否則你不知道你離 Bayes error 還多遠 也就是不知道要花多少心力,去減少可避免的偏差 實際上,萬一你唯一知道的是, 一位普通醫生有 1% 的錯誤率 你還滿難知道要不要去更加配合 (fit) 你的 訓練資料 而這種煩惱,只會在你已經做得很好的時候才會發生 當你達到 0.7%, 0.8% 很靠近人類水平的時候 而在左邊的這兩個例子, 當你離人類水準還很遠的時候 要分辨該處理偏差還是變異,會比較容易點 這或許也告訴了你,當你逼近人類水準的表現時 會很難洞察出偏差和變異的效果 所以在機器學習的任務裡,當你做得越來越好 會越來越難 那麼,統整一下剛剛所說的 如果你想了解一個問題的偏差和變異 而那個問題,人類做得好,你也有人類水準的錯誤率估計 那你可以拿人類水準當作 Bayes error 的估計、近似值 距離你估計的 Bayes error 還差多少,能讓你知道 「可避免的偏差」有多少,問題大不大 而訓練錯誤和開發錯誤之間的差距 讓你知道你在「變異」方面的問題大不大;你的演算法 能不能從訓練集推廣 (generalize) 到開發集上 我們在這裡所討論的,與之前的課程 最大的不同在,我們不是拿 0% 和訓練錯誤做比較 並稱之為「偏差」的估計 相反地,我們在這部影片做了更細膩的分析 我們並不期待你應該做到 0% 錯誤 因為 Bayes error 有時候不是零; 可能沒有任何一個東西 能夠做得比某個錯誤值還要低 那麼,在先前的課程,我們量出訓練錯誤後 看它比零大多少 就依此評估我們的偏差大小 其實在 Bayes error 幾乎是零的時候,這還不錯 例如辨認貓貓 人類做這個近乎完美,所以 Bayes error 也近乎完美 所以當 Bayes error 幾乎是零的時候,這樣評估還 OK 可是,對資料很亂的問題, 例如語音辨識,如果 音檔噪音很雜,有時根本聽不出來在說什麼 無法得到正確語音 對於這種問題,有比較精準的Bayes error 估計 能幫你估計「可避免的偏差」和「變異」比較準確 所以對於要不要專心在減少偏差或減少變異 就能做比較好的決定 總結一下:估計人類水平的表現,就能給你 Bayes error 的估計 這能讓你更快下決定:是否應該 減少你的演算法的偏差還是變異 這些技巧還滿有用的 — 直到你超越了人類水準 超越了以後,對於 Bayes error 可能就沒有一個好的估計了 所以無法幫你做出決定 然而,深度學習其中令人興奮的進展在 有越來越多的任務我們能夠 超越人類水平的表現 在下一個影片中 讓我們談談關於超越人類水準的進展