1. 程式人生 > >吳恩達新書-機器學習學習筆記-(五)與人類表現水平對比

吳恩達新書-機器學習學習筆記-(五)與人類表現水平對比

1.為何與人類表現水平進行對比

許多機器學習系統的設計目的是想要自動化處理一些人類可以處理得很好的事情。可舉的例子有影象識別、語音識別以及垃圾郵件分類等等。學習演算法進步如此之快,有許多類似任務的處理已經超過了人類的表現水平。

有很多理由表明在處理人類擅長的任務時,構建一個機器學習系統會更加簡單:

1.易與從人為標籤中獲取資料。舉個例子,由於人類可以很好地識別圖中的貓,因此,讓人們為你的學習演算法提供高精度的帶標籤資料也很方便。

2.基於人類直覺進行誤差分析。假設某個語音識別系統的表現要低於人類的表現水平。比如錯誤地將音訊片段“This recipe calls for a peer of apples”中的“pair”認為是“pear”。此時你可以利用人類的直覺來嘗試理解,普通人會利用何種資訊來獲取正確的轉錄內容,並且試著修改你的學習演算法,使它在相同的知識點上有著更好的表現。

3.使用人類表現水平來估計最優錯誤率,並設定可達到的“期望錯誤率”。假設你的演算法在某個任務上達到了10%的誤差,但普通人所能達到的誤差是2%。由此我們就可以知道最優錯誤率是2%或更低,這也表明可避免偏差至少是8%。所以你應當嘗試一下降低偏差的技術。更一般地說,有一個合理可實現的“期望錯誤率”可以幫助你去估計學習演算法的可避免偏差。這反過來也幫助你決定是否使用誤差降低技術。

儘管第三點可能聽起來不太重要,但我發現有一個合理且可實現的目標錯誤率有助於加快團隊的進度。知道你的演算法有很高的可避免偏差是非常有價值的,它將展開一個具有多個選項的選單供你去嘗試。

連人類都不擅長的任務也是存在的。比如向你推薦一本書,或者在某個網站上選擇向用戶展示的廣告,或者對股票市場進行預測。如今計算機在此類任務上的表現已經遠超過人類。對於這些應用,我們主要面臨著下面的問題:

1.獲取標籤資料很難:比如很難去獲取使用者資料庫,並要求人工標記者使用“最優”的書籍標籤對資料庫進行註釋,從而向用戶推薦書籍。

2.人類的直覺難以依靠。例如,幾乎沒有人能夠預測股票市場。因此當我們的股票預測演算法比隨機猜測的表現還要差時,很難弄清楚要如何去改進。

3.最優錯誤率和合理的期望錯誤率難以確定。假設你已經有了一個很好的圖書推薦系統。如果沒有人類水平作為參考,你怎麼知道它還能改善多少呢?

2.如何定義人類表現水平

假設你正在做一個醫學成像應用程式,它可以自動依據X射線影象進行診斷。 除了一些基礎的訓練外,一個沒有任何醫學背景的人在該任務上的錯誤率為 15% . 一名新手醫生的錯誤率為10% ,而經驗豐富的醫生可以達到 5% . 如果由小型的醫生團隊對每一幅影象進行單獨的討論,錯誤率將降低至 2% . 上述的哪一種錯誤率可以定義為“人類表現水平”呢?

在該情景下,我將使用 2% 作為人類表現水平的代表來獲得最優錯誤率。 你還可以將 2% 設定為期望的效能水平,因為與人類表現水平相比,前一章的所有三個理由都適用:

易於從人為標籤中獲取資料。你可以讓一組醫生為你提供錯誤率為 2% 的標籤。

基於人類直覺進行誤差分析。通過與醫生討論影象內容,你可以利用他們的直覺。

使用人類表現水平來估計最優錯誤率,並設定可達到的“期望錯誤率”。 使用 2% 的誤差作為我們對最優錯誤率的估計是合理的。最優錯誤率甚至可能低於 2%,但它不可能更高,因為一個醫生團隊就已經有可能達到 2% 的誤差水平。相比之下,使用 5% 或10% 作為最優錯誤率的估計就顯得不合理了,因為我們知道這些估算值必然過高了。

當需要獲得標籤資料時,你可能不希望與整個團隊討論每一張圖片,因為他們的時間很寶貴。或許你可以讓新手醫生給絕大多數的病例貼上標籤,而把那些較難分析的病例交給更有經驗的醫生或醫生團隊。

如果你的系統目前的誤差為 40%,那麼不論是讓初級醫生(10% 誤差)還是有經驗的醫生(5% 誤差誤)來給你的資料貼上標籤,那都沒有關係。是如果你的系統誤差已經是 10%,那麼將人類表現水平定義為 2% 將為你提供更好的途徑來改進你的系統。

3.超越人類表現水平

如果你能找到人類表現水平遠超現有系統的資料子集,使用那些技術來驅動進則仍然可行。舉個例子,假設你的系統在處理識別含有噪音的音訊任務時表現已經優於人類,然而在轉錄語速很快的語音時人類仍然佔有優勢。

對於語速很快的語音資料子集:

1. 你仍可以從輸出質量比你的演算法高的人那兒獲取轉錄資料。

2. 你可以利用人類的直覺來理解,為什麼你的系統沒能夠識別這些資料,而人類做到了。

3. 你可以使用該子集上的人類表現水平作為期望表現目標。

更常見的做法是,只要在開發集上存在著一些人類能正確處理而演算法不能的樣本,前面提到的技術就能夠被應用。即使你的演算法在整個開發集或是測試集上的表現已經超過了人類,這樣做也是正確的。

在許多重要的機器學習應用程式中,機器已經超越了人類的水平。例如,機器可以更好地預測電影分級,一輛送貨車到某個地方需要多長時間,或者是否批准貸款申請。只有當人類很難識別出演算法明顯出錯的樣本時,一小部分技術才可以被應用。因此在機器已經超越人類水平的問題上,進展通常比較慢,而當機器仍在試圖趕上人類水平時,進展速度反而更快。