要把你關心的所有事情變成單一的指標 這並不是容易的事 在這種情況,我覺得有用的作法是 設定「滿足指標」和「優化指標」 (satisficing metrics; optimizing metric) 讓我來解釋一下 假設你決定要關注 貓貓分類器的精準度 有可能是 F1 分數,或是其他計算的方法 不過再假設,除了精準度,你也在乎執行時間 也就是分類一張圖片要多久:A 要 80 毫秒、 B 要 95 毫秒、 C 要 1500 毫秒 分一張圖片要 1.5 秒。 有種可能的作法,是把精準度 和執行時間結合起來,變單一指標 例如成本是 精準度 - 0.5 x 執行時間 但這公式不大自然 把精準度和執行時間接在一起 看成兩者的加權總和。 那麼,你可以有不同的作法: 你想要的分類器可能是 精準度要最大,而執行時間 — 也就是分類一張圖片的時間 要小於等於 100 毫秒。 在這個例子,我們稱精準度是一種 「優化指標」,因為你要最大化精準度 你要讓精準度盡可能地優 而我們稱這裡的執行時間為「滿足指標」 意思是夠好就好 只要比 100 毫秒快就好,就滿足了 不會太在乎快多少 這方法比較合理,可以在精準度和時間 兩者間取捨或是同時考慮 只要執行時間比 100 毫秒快 使用者可能不會太在意 需要跑 100 或是 50 毫秒或更快。 藉由定好「優化指標」和「滿足指標」 怎麼挑"最好"的分類器就一清二楚 在這裡我們會挑分類器 B,因為 所有比 100 毫秒快的分類器裡面,B 的精準度最高 一般來說,如果有 N 個衡量指標是你在意的 合理的作法是挑其中一個來優化 你盡全力在那一個指標作到最好 剩下的 N-1 個當作滿足指標 只要他們達標 過了某個門檻,例如比 100 毫秒快 只要他們過了某些門檻就好 你並不在乎比門檻好多少 不過,他們一定要達到門檻 再舉一個例子 假設你在做一個系統,要偵測喚醒詞 也稱為觸發詞 這邊在講用語音控制的設備 例如 Amazon Echo,說聲 "Alexa" 就啟動 或者一些 Google 設備,你要說 "OK Google" 或是 Apple 的設備,你說 "Hey Siri" 來喚醒 或是百度的設備,你會說「你好,百度」 — 如果你想看中文怎麼寫,這是你好百度 這一類的就是喚醒詞 你用聲音來控制設備 啟動他們,讓他們接下來聽你的指令 — 這四個字是「你好百度」的中文 所以,你會很關心系統辨認喚醒詞的準確度 當有人講了這些關鍵字 你的設備會啟動的機率多高? 你也會在意錯誤啟動的次數 也就是並沒人說關鍵字 但他自己啟動的機會多高? 在這例子,要同時考慮這兩個指標 一個合理的方法是,讓準確度最大 當有人說出喚醒詞 要最大化啟動設備的機會 在這前提下 24小時內最多只能有一次的誤啟動 可以嗎? 所以沒人對設備講話的時候 一天最多只會自己起來一次 在這個例子,準確度是「優化」指標 而每24小時誤啟動的次數是「滿足」指標 只要24小時內最多只有一次 錯誤啟動,你就滿足了 總結一下,如果你關心很多指標 把其中一個設為「優化指標」(optimizing) 你要盡可能把它做好 還有一到多個「滿足指標」(satisficing) 只要過門檻就滿意。這樣的話 就有幾乎自動的方法 從多個分類器中選出一個 "最好的" 那麼,這些衡量指標 必須要在訓練集、開發集、或測試集上評估計算 因此你還要做一件事:設置訓練集、 開發集、和測試集 在下部影片,我想分享一些準則 如何設置訓練、開發、和測試資料 讓我們進入下一段影片