iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
AI & Data

然後模型就死在 Jupyter Notebook 了 (ಥ﹏ಥ)系列 第 11

[Day 11] 建立 Baseline — 開啟機器學習專案的第一步

A chain is only as strong as its weakest link. ― Thomas Reid

前言

今天的開頭是一句英文俗諺,它說的是再強也強不過最弱的一環,在機器學習的研究或產品中,我們常常會看到有人宣稱達到了多好的表現,但若只是與隨意建立且表現較差的 Baseline 相比,這樣的說詞其實是過於樂觀的。
下圖便描繪了這樣的概念,提醒我們 Baseline 的重要性,以及在建立 Baseline 時必須格外用心。
metaphor for baseline importance
今天我們要來討論的是關於 Baseline 對機器學習產品專案的幫助,就讓我們開始吧!

為何要建立 Baseline?

首先用一個例子來說明 Baseline 在機器學習產品上的作用。
注意建立 Baseline 的方法會隨著資料型態不同而有很大的差異,以手機上的語音辨識 app 為例,可以使用人類表現水平 (Human Level Performance, HLP) 作為基準:
HLP baseline
若單看 4 種情況的 Accuracy,第一直覺可能會想花最多時間來改善低頻寬 (裝置連線較差) 時的表現。
但加入人類表現水平 (HLP) 作為基準之後,可以發現在低頻寬時連人都很難辨識,因此花時間改善背景有車聲時的表現對產品來說會是更好的投資。
也就是說,建立 Baseline 能幫助我們以最有效率的方式提昇產品表現,所以它是執行機器學習專案最重要的第一步。

建立 Baseline 的方法

而建立基準主要有以下幾種方法:

  • 人類表現水平
  • SOTA 或開源的文獻
  • Quick-and-dirty 的實作
  • 舊有系統的表現

Baseline 可以讓我們知道存在哪些可能性,在某些情況中也可以讓我們知道大概的 irreducible error/Bayes error  (例如低頻寬的 HLP) 。

常常會遇到客戶強迫 ML 團隊達到 9X% 準確率,這時候要斷然要求等我們建立好 baseline 後再來談,必要時就推給 Andrew!

啟動機器學習專案的小訣竅

大致了解 Baseline 的重要性之後,讓我們來看看啟動機器學習專案的幾個小建議。

  1. 盡快進入建立模型的迴圈:
    不要執著於最新、最強的演算法,花個半天看看部落格,找個適合且能夠快速開始的即可,最好是人家已經寫好開源在 Github 了,還能幫我們快速建立 Baseline。
    越快開始迴圈的第一步,可以讓我們有效率的迭代更多次,更快得到好的表現。
  2. 依照現況決定是否在挑選模型時考慮部署的限制:
    在還未建立 Baseline,且不確定專案可行或是否值得部署時,可以不必考慮限制,放心找一些開源實作來看看各種可能性 (即使它需要的運算資源大到我們已知不可能部署)。
    雖然考慮一下限制也無妨,但專注於更有效率的將 Baseline 先建立起來會比較好。
  3. 先使用少量資料對程式碼進行健全性測試 (Sanity check):
    在第一次試用某演算法前,別一開始就花好幾個小時去訓練,先使用少量訓練資料讓模型過擬合看看。
    特別是在輸出很複雜的情況下,只用一筆資料做訓練也可以。
    但如果連一筆資料都無法過擬合,代表一定有地方出錯了,就算花數小時在更多的資料上訓練也不會有好結果。
    這麼做的好處在於少量資料可以快速訓練,讓我們更快找到 bug。

以上就是今天的內容,接著我們要進到下個步驟談談 Error analysis 啦,明天見囉。
/images/emoticon/emoticon11.gif

參考資料


上一篇
[Day 10] 模型達到商業指標的挑戰 — Test set performance 的殞落
下一篇
[Day 12] Error analysis — 錯誤中學會成長 (咩噗)
系列文
然後模型就死在 Jupyter Notebook 了 (ಥ﹏ಥ)30

尚未有邦友留言

立即登入留言