機器學習祖師Andrew Ng 3/25 MLops 演講筆記與補充 別再用Model的角度想事情

From Model-centric to Data-centric AI

倢愷 Oscar
10 min readApr 1, 2021

ML的祖師爺之一Andrew Ng,在3/25的凌晨給出了一個非常有趣的線上演講,主題為MLOps: From Model-centric to Data-centric AI,裡面有很多目前比較在業界廣為流傳的知識,但是在學界還比較少被提的概念,所以我快速寫一篇筆記讓大家能夠更了解演講相關內容。

想看影片的朋友可以參考youtube影片。

在開始之前我想先提一下在Coursera課程AI for everyone裡面,Andrew Ng提過的一個非常有趣的問題。

怎麼樣算是一家AI公司?

而Andrew Ng提出一個類比,在過去我們提到的所謂「網路公司 Internet Company」,其實不單單指的是那些「有使用Internet」的公司。

就像是即便巷口的飲料店跟foodpanda做合作,我們幾乎不會稱他為網路公司

那怎樣的公司我們會稱他為「網路公司 Internet Company」,實際上是那些「大力利用到網路好處的公司」,像是在網路上我們可以做AB test,可以以非常快速的速度迭代我們的產品、行銷策略 …等,這都是傳統公司做不到的,而只有一個公司利用到網路的各種好處,我們才會真正稱他為網路公司。

這其實也是一部份為甚麼這幾年包含agile、martech等名詞都非常夯,因為現在大家都在想要怎麼利用網路的優勢。

那回頭來講怎樣算是一家「AI公司」,並不是所有使用到AI的公司都是AI公司,我們同時要有正確利用到AI的好處,並且很重要的要有穩定的data取得方式,因為這是AI必不可少的一部份。

所以在這裡Andrew Ng就提到了 Strategic Data Acquisition是當代AI公司非常重要的一環,而這也是很多學界不考慮的事情。

而在3/25的ML ops演講中,又更深入談了這點。

Improve Data >>> Improve Model

Andrew Ng提到了在他們公司裡面的project,當scientist建構出了一個baseline後,他們嘗試了兩種不一樣的方法去improve performance。

Model-Centric的意思就是以改Model架構、演算法為主,也就是一般ML課程會提的知識,告訴你可以換成LightGBM、NN或是加Batch norm或是做ensemble、stacking …等方法

Data-Centric的意思就是以改善data為主,收集更多Data、做Data Cleaning, synthesis, augmentation之類的方法。

而在他們數個專案中,他們往往發現通常改善Data帶來的最終Improvement是遠大於改善Model的。

然而目前99%的研究都專注於怎麼樣改善Model,而不是怎麼樣改善Data。

這邊可能有些朋友就會提出一個觀點:改善Data通常要花錢,然而改善Model卻不用,這可能是大部分人優先改善Model的原因

實際上是這樣沒錯,但是其實以我們請專職的RD、scientist來改善model,需要的人力成本、實驗成本,並不見得真的會比我們花錢去收資料還要更少。

不過這裡一樣有一個盲點,如果我們今天data已經是到了一定的量了,那實際上我們去改善data通常效果也有限,所以依舊要想清楚自己在甚麼階段。

如何在最佳化performance時搞清楚現在應該做甚麼可以參考我之前的文章。

那如果我們接受這種以Data為核心的想法,我們重新來看ML project的LifeCycle。

裡面大家可能最容易想的就是,那我們要Collect更多、更好的Data。

所以可能會自動把Data Centric自動想成在Collect Data這個步驟,但是實際上整個LifeCycle都可以用Data Centric的角度來想。

第一步:Scope Project

這一步在這次的演講中被跳過,也不是我這次筆記的重點,不過這邊可以提的就是我們可以去思考「不同project的Data、Label取得難度」。

一般我們的Label有兩種來源,一種就是請專人來進行Label,也就是所謂的Annotation Label,包含常見的Image Classification就是利用這種方法。

但是還有另外一種是依照用戶後續行為自動來進行Label,也就是所謂的Behavior Label,最典型的就是推薦系統,推薦系統的Label就是每個用戶後續會不會點擊特定的廣告、影片、文章...等,除此之外像是機台的檢測,也可以依照機台過往的出錯紀錄,來當成Label,而不需要請專家來進行Annotation。

可想而知Behavior Label比Annotation Label取得的速度更快、代價更小、真實度更高。

所以在Scope Project的時候我們可以想想看,我們的問題是否有某些Behavior Data可以取得。

第二步:Collect Data

在收集資料這步,Andrew Ng提到最重要的就是Label Consistency

當我們要收集資料的時候,我們可能會遇到每個Labeler有各自的理解、Label方法,而導致我們資料最後非常Inconsistent,這種情況其實非常恐怖,這會直接導致我們Train不起來,因為Data與Label間沒有一致的pattern。

很多人可能一聽到Label Inconsistent,就想到Data Cleaning,實際上這並沒有錯,Data Cleaning可以解決Label Inconsistent。

但是比起後續補救,我們更重要的是要設計好的Labeling Pipeline,讓Labeler知道自己要怎麼做,給出更正確的Label,提高整體Label品質。

而實際上這種Label Consistency,或是說Clean Data跟Noisy Data的差別,在Project的初期影響相當嚴重。

中間,當我們Data夠多時,Noisy label的問題會被大量的Data所削減,然而當我們Data量還小的時候,如左邊及右邊,我們是否取得Clean Data,就會影響非常大。

下圖呈現了Andrew Ng他們內部Project早期時,如果收集的是Clean Data,更快速就可以達到好的Benchmark。

而實際上即便你Data量很多,如果今天有Long Tail的問題,那些Minority Class也一樣會很需要Clean Data。

這裡Andrew Ng給出一個建議,以Data Centric的角度來想事情,我們應該快速建立出一個Baseline model,然後用model的結果來improve我們的data,像是不斷做Error Analysis,從Model容易犯錯的點來回頭找尋Label pipeline裡面的問題。

而這邊其實我們在業界也很常會用類似的方法來validate哪些Labeler有問題。

第三步:Train Model

所以這邊就很簡單了,我們這邊在Training的過程中,重點就不是去設計很複雜的Architecture,而是要從Model的各種behavior、Permance來定位出我們Data的問題,並再想相對應的解法。

像是Error Analysis,或是看Model收斂速度,都可以看出一些Data的性質。

而我們也可以利用Data Augmentation, Synthesis等方法,來解決一些比較輕微的Data的問題。

所以這裡會非常非常大量的做實驗,並且我們要對Data進行Version Control。

這裡在工程上我們就必須引進一些MLops的tools,像是MLflow

藉由大量自動化Training以及自動Track ML的實驗,來加速我們整體流程,而不是每次Train一個Model都要ML Engineer開Jupyter Notebook弄一天。

後續針對MLops的工具的介紹我會用一個完整的系列來完整說明。

第四步Deploy in Production

在Deploy到Production時,我們最重要的就是要隨時Monitor Data Drift/Concept Drift,也就是說我們要能決定甚麼時候我們要Retrain我們的model。

決定甚麼時候要Retrain我們Model,很多人的習慣其實等到Model Performance掉到一定閾值之下,就進行Retrain。

這其實是很危險的。

主要原因有幾個

  1. Performance是Lagging indicator,當我們Performance出問題時,通常就已經是出大問題。
  2. Performance呈現的是Overall的結果,我們的Model有可能在一大個類別的用戶的預測上都做得很差,但是Overall Performance依舊很好,但這群被做爛的用戶有可能是我們最在意的用戶。或是這群被做爛的用戶可能呈現了我們的模型偏見。
  3. Performance可能可以作弊,就像是Youtube的推薦系統,Model不一定要預測的很準確我們喜歡甚麼,只要一直推薦給我們一樣的影片,他的Performance一樣可以上去,所以有時候即便Performance好,我們的Model依舊在做不對的事情。

所以我們在Monitor時其實除了Performance以外,我們還可以看Model的信心指數是否下降,信心指數下降會是比Performance下降更早期就出現的指標。如何理解具體ML的信心指數可以參考我之前的文章。

同時我們也可以Monitor Data的Distribution是否改變,具體要怎麼做這些,我會在之後用一篇專門講Monitoring來說明。

所以最後做個總結,如果我們要以Data-Centric來想事情的話,我們的每一步驟要問的問題就會變成下列這些

而Data-Centric極有可能會讓各個Startup或是新的AI產品在起步時輕鬆許多。

如果想知道更多細節,真的很推薦大家去看完整影片

如果喜歡這篇文章可以幫我多拍手幾次XD,或是對於哪個類型文章有興趣都可以在留言區跟我講~ 後續會以中難度的ML/DS/AI知識為主,以及AI/HCI研究相關知識

--

--

倢愷 Oscar

我是倢愷,CTO at TeraThinker an AI Adaptive Learning System Company。AI/HCI研究者,超過100場的ML、DL演講、workshop經驗。主要學習如何將AI落地於業界。 有家教、演講合作,可以email跟我聯絡:axk51013@gmail.com