Skip to content

Full Cycle of a DL Project:資料收兩天就好

2026年8月16日 1 分鐘
TL;DR Andrew Ng 用人臉辨識開門系統走完整個專案生命週期,而全講只有一個核心論點:速度。他給團隊的期限是兩天,理由是「花在準備資料的時間,應該和訓練一次模型的時間相稱」。最後收在一句話:我的工作是做出一個真的能用的東西,那和做出一個在測試集上能用的東西不一樣。
目錄
  1. AI 專案為什麼和傳統軟體不一樣
    1. 為什麼多數課程只教中間那一小塊
  2. 案例背景:人臉辨識開門
  3. 主線:資料收集用「速度」當框架
    1. 他的原則
    2. 兩種問法,結果差很多
    3. 相稱原則
    4. 一個反面故事
    5. 他自己常用的做法
  4. 同一套邏輯套到 prompt 與負責任 AI
  5. error analysis 與 data-centric AI
    1. 前沿模型也是這樣做的
    2. 訓練資料要多像測試分佈?
  6. 部署:VAD 串接
    1. Ng 的答案還是速度
    2. 只有做了才會發現的事
    3. 簡單模型抗漂移
    4. human-level performance 當基準線
  7. 監控與維護
    1. 兩種漂移
    2. 「我在測試集上表現很好」是錯的心態
    3. 儀表板實務
  8. 延伸:這一講在 LLM 應用上怎麼讀
  9. 參考資料

🌏 English version

上一篇講了 embedding 怎麼被訓練出來。這一篇拉高一層,看整個專案。

本篇對應 Lecture 3: Full Cycle of a DL Project(2025/10/07,Andrew Ng 主講,1 小時 07 分)。這一講沒有投影片,全程白板加問答,Ng 用同一個案例(人臉辨識開門系統)走完整個生命週期,每個決策點都先丟給學生投票再給答案。

AI 專案為什麼和傳統軟體不一樣

「傳統軟體專案裡你寫程式、你控制你的程式碼。但 AI 專案同時牽涉程式碼和資料,而你幾乎永遠不知道你的資料裡有什麼奇怪又美妙的東西。」

人臉辨識為例,開工前你根本不知道:光線好不好、長髮短髮會不會出問題、做鬼臉會不會壞掉、戴眼鏡會不會壞掉。

他把同一套邏輯延伸到 LLM:

「關於 LLM 難以控制,有很多過度的炒作、有點在製造恐懼。我們之所以事先不知道 LLM 會怎麼表現,是因為它訓練在多到沒有任何人類看得完的資料上。所以打造 agent 應用或 LLM 應用,同樣是非常經驗性、非常實驗性的——你就是得做出來,看哪裡好、哪裡爛,再拿這個去修。」

而且更狠的一點:你連硬碟裡已經有的資料都不控制,更不可能控制世界未來會給你的資料。(部署了人臉辨識,冬天有人圍厚圍巾遮住半張臉,你怎麼知道?)

為什麼多數課程只教中間那一小塊

「很多機器學習課程在講怎麼建模型……因為那是學術界的焦點:模型可以訓練、可以評估、可以發論文,不同研究團隊可以拿模型互相 benchmark。但這只是你要打造一個有效系統所需工作裡的一小塊。

完整流程:

界定問題 → 取得資料 → 設計模型 → 訓練模型 →(迭代)→ 部署 → 監控與維護
                    └──────── 快速開發迴圈 ────────┘

案例背景:人臉辨識開門

Ng 說他做過其中一套商用系統。實際部署過的一個場景是:門禁卡會被偷,所以刷卡時同時拍一張照、比對後隨即丟棄,確認持卡人就是卡上那個人,讓偷卡的人進不去辦公大樓。

架構是 Siamese network:輸入兩張圖,輸出「同一人與否」。為什麼不是分類?因為不可能每個家庭都重訓一次網路。改成先登記幾張參考照(你、室友、家人),有人來就比對。

(這個架構就是上一篇推導出來的 triplet loss 訓練出來的東西。)

主線:資料收集用「速度」當框架

課堂問題:你是三人新創的 CTO,律師說不准從網路抓資料,你怎麼取得訓練資料?要花多久?

學生答案很有創意:用視訊服務(Zoom)、擺一台相機讓員工自願入鏡、找朋友和他們的 LinkedIn 照、寫信請 Stanford 幫忙。(Ng 對最後一個的回應:「我愛 Stanford,Stanford 是個很棒的機構。而且那會花上一段時間。」)

他的原則

「一家新創會不會成功——或者大公司裡一個三人小組做創新專案會不會成功——最強的預測指標之一,就是純粹的執行速度。所以我腦力激盪不同戰術時,會傾向那些能讓我很快拿到資料集的做法,快通常是指一兩天。就算最後拿到的是比較差、比較小、品質比較低的資料集也一樣。

理由:因為你不知道資料裡會有什麼問題,越快拿到資料、訓出模型、看到它哪裡壞,就越快知道要修什麼。

兩種問法,結果差很多

慢的問法快的問法
「我們需要什麼資料?那要花多久?」「**我們有兩天。**在這段時間裡,最有創意、又尊重人、又負責任的收集方式是什麼?」

他真的會對團隊說:「現在是週二 11:52,我們的期限是週四 11:52。」

相稱原則

花在準備資料的時間,應該和訓練一次模型所需的時間相稱。

  • 人臉辨識可以一個晚上、甚至幾小時就訓完 → 那就別花兩個月找資料,否則資料變成巨大瓶頸
  • 反過來,如果你在訓一個要跑兩個月的 foundation model,那花幾個月把資料弄對就合理
  • 他合作過的快速團隊,小模型是一天繞一圈這個迴圈

例外:如果這題你做過很多次,或文獻明確告訴你需要多少(他自己知道某些人臉辨識系統至少要五萬張才有希望),那就先投資把量做足。

一個反面故事

一位 CEO 花了超過一億美元併購一家公司來拿它的資料,事後問 Ng:「我花了這麼多錢拿到這些資料,你能幫我想想怎麼變現嗎?」

「我看著他心想:我還真希望我沒做那件事。

資料的價值極難事先判斷。 學生證照片會不會很怪?表情太浮誇?笑太多?他說他也不知道——「我自己的 Stanford ID 照片看起來就很怪。」

這個金額是 Ng 口述、未指名的估計。

他自己常用的做法

去校園裡人流量大的地方(餐廳人流最高),在充分告知的前提下請人授權提供聲音樣本或照片。「Stanford 的社群很國際化,雖然不完全代表全世界的人口分佈,但真的來自世界各地,而且大家非常願意配合。」

同一套邏輯套到 prompt 與負責任 AI

  • 「你寫一個 prompt,事先根本不知道它表現會多好,因為它訓練的資料我們誰都沒看過。所以與其長時間空想該用什麼 prompt,不如直接試,試了才看得到問題,然後專注修問題。」
  • 負責任 AI:「你只能空想到某個程度。要打造安全的 AI 系統,最好的方法之一就是先做出來,然後在沙盒環境裡實驗——在你自己的筆電裡戳它、探它,別放到世界上去影響無辜的第三方。只有做出來再戳,你才知道它會在哪裡出錯、在哪裡講不恰當的話。」

error analysis 與 data-centric AI

系統壞了怎麼往下走?兩條路:改架構,或改資料data-centric AI 就是有系統地工程化你的資料。

例:發現系統對戴帽子的人特別差 → 就去補戴帽子的資料。

盲目地到處抓更多資料,通常不是好策略,因為要抓的資料太多了。」

長髮短髮?有鬍子沒鬍子?圍巾遮臉?戴眼鏡?側臉?——不建系統、不看它哪裡壞,你根本無從決定。

前沿模型也是這樣做的

「就算看現在 frontier model 怎麼訓練,那也不是一場到處亂抓資料的遊戲,而是辨識出哪些子類別值得投資去取得高品質資料。」

他點名 LLM 有兩個明確的價值池:一般問答,以及 AI 寫程式助理(「Claude 領先了一陣子,但 OpenAI、Gemini 2.5 Pro 也進步很多」——這是 2025 年 10 月的說法)。要讓模型更會寫程式,不是去抓低品質的網路閒聊和社群貼文,而是找出高品質、和程式相關的資料

「『資料越多越好』完全正確,但也過度簡化。資料不是單一均質的東西,它有子類別。」

資料品質:低品質是網路上的隨機閒聊;高品質是在合法可取得的前提下、經過高度編輯、有洞見的專業書籍與文章。人臉辨識版本則是:模糊的照片品質低於清晰對焦的照片。

訓練資料要多像測試分佈?

學生問:如果拿「判斷兩個物體是否相同」的通用資料來訓,會不會偏離目標任務太遠?

「重要,但沒有大多數人以為的那麼重要。」

  • 大型神經網路能吸收各種資料,只要網路夠大,通常不會有害,甚至可能有點幫助
  • 水瓶和麥克筆可能太遠;但卡通角色這種和真人差很多的資料,他猜完全不會有害
  • 「十到十五年前大家執著於訓練分佈必須和測試分佈完全一致,**今天已經不是這樣了。**那時候模型小、算力貴、參數少,怕你用不相關的資料分散它注意力。」
  • 類比:「我學過彈鋼琴,大概不會讓我變得比較不會做 AI,因為我的腦子夠大,兩件事都放得下。」對照福爾摩斯的「閣樓理論」(腦容量有限,學新東西就得忘掉舊東西)——網路夠大時那不成立
  • 界線:錯誤的資料是問題;不相關的資料傷害小得多

部署:VAD 串接

24/7 用 30fps 串流影像到雲端逐格分類,太貴太慢。所以要先擋一層 visual activity detection

做法成本
選項一非機器學習:算變動像素數是否超過門檻 epsilon「大概五行 Python,叫 LLM 幫你寫,二十分鐘搞定
選項二訓一個很小很省電的神經網路判斷「前面有沒有人」至少數小時,可能更久

學生提的方案都不錯:兩個串起來、先算成本再決定、都放在裝置端跑、選項一先擋著等資料夠了再換選項二。也有人指出選項一的弱點:背景的樹在搖、車子開過、鄰居的貓來訪,都會誤觸發。

Ng 的答案還是速度

「這些洞見——背景的樹搖晃會不會影響?結果真的會——很難事先知道答案,因為你要在一堆門口裝上相機、看到資料,才會有信心。最快拿到答案的方式,就是先做一個 quick and dirty 的版本跑跑看。」

而且他直說:選項一最後不夠好,大家都會走到選項二。但先做選項一會給你走到選項二所需的洞見。

只有做了才會發現的事

人走向相機時,有些畫格清晰、有些非常模糊——因為走路時臉的瞬時速度時快時慢。

「如果你能挑出高解析度、對焦清楚的畫格餵給人臉辨識,結果會好非常多。」

他們最後做的不只是 VAD,而是錄下影片後刻意挑出五張清晰對焦的畫格送下游,「這對準確率是顯著的提升」。

「這就是那種你只有真的把系統做出來才會有的發現。」

簡單模型抗漂移

選項一只有一個參數(epsilon),對分佈變化非常穩健:夏天大家戴墨鏡,變動像素的比例並不會差多少。選項二如果訓練資料裡沒人戴墨鏡,就會 overfit,大家開始戴墨鏡時它就得重訓。

「非機器學習的簡單系統的優點之一,就是比較不容易被 data drift 影響。」

(萬聖節大家穿巨大戲服則可能連選項一都會失效。)

human-level performance 當基準線

建系統時有個「可達到的準確率」參考點會容易很多,常用人類專家水準當這個參考點,診斷 bias / variance 也靠它。

人臉辨識在受控環境下早就超越人類了:「我們做的 AI 系統認臉比我強太多,大概也比絕大多數人類、甚至所有人類都強。」超越人類之後反而更難,因為基準線沒了。人類本來就不擅長的任務(推薦電影)也很難立基準線——「我想大多數人連幫最好的朋友推薦電影都很吃力。」

監控與維護

兩種漂移

  • data drift:世界給你的資料分佈變了
  • concept drift:輸入到輸出的對應關係(X→Y)變了

實例都很好用:

  • 加州現在不冷 → 入冬下雨,大家圍圍巾穿雨衣;明年夏天大家戴墨鏡
  • 網頁搜尋:新政治人物當選、新運動、影片爆紅、Taylor Swift 出新專輯 → 突然一堆人搜全新的東西
  • 工廠檢測:「你口袋裡那支手機,有相當的機率是被我團隊寫的軟體檢查過的。」產線裝了新機器,就會刮出一種新的刮痕
  • 自駕車:在加州訓練的模型拿到德州就不 work——德州的紅綠燈長得很不一樣(橫的 vs 直的;他認為部分原因是德州某些地區風很大,號誌得用能抗強風的方式懸掛)。「你我在加州或德州都能正常開車,但模型不行,得重新拿資料。」

「我在測試集上表現很好」是錯的心態

這是整講最值得整段引用的一段:

「我看過一批 AI 工程師認為自己的工作是在測試集上表現好。我參與過好幾次這樣的對話:機器學習的人說『我測試集分數很好,我的工作完成了』,然後產品或業務的人說『不,你的系統不能用,你看它這裡壞那裡壞』,接著機器學習的人說『那不是我的問題,我測試集有做好』。這不是有建設性的推進方式。

我鼓勵你把自己的工作想成做出一個真的能用的東西,那和做出一個在測試集上能用的東西是不一樣的。如果有人跟你說『我知道你測試集分數很好,但你的系統不能用』,別回『我的工作就是把測試集做好』,去想為什麼測試集分數沒有轉化成使用者真正在乎的表現。」

最常見的原因就是資料分佈變了。

儀表板實務

  1. 把團隊聚起來,用多元視角腦力激盪所有可能出錯的事。

    「我做過不少機器學習系統,我們坐下來認真腦力激盪之後,我還沒遇過現實中出的問題不在我們列出的清單上。 我可能記錯,但至少到現在為止是這樣。」

  2. 先畫很多圖再刪。 「20、30、50、100 個 dashboard 都可以」,因為事先很難知道哪個有用;跑幾天到幾週後,會發現大部分很無聊(例如雲端部署的延遲根本是常數)就砍掉。類比 EDA:「在 Jupyter notebook 裡多畫一張圖的成本很低。」

  3. 人臉辨識實際會追的指標:

    • 重新驗證率(使用者要刷第二次才進得去)→ 這是使用者挫折的訊號
    • 通過 / 拒絕的比例
    • 延遲
  4. 摸清正常區間後,設上下界警報,超出就 page 人去看。


延伸:這一講在 LLM 應用上怎麼讀

Ng 自己一路在做這個類比,但有幾條值得挑明:

「兩天期限」對 eval 資料集一樣成立。 大家現在花很多時間設計完美的 eval 集,但你不知道模型會在哪裡壞,先做一個粗糙的、跑起來、看它抓到什麼,比想清楚再動手快得多。

「相稱原則」換成 LLM 的版本:花在準備 eval 的時間,應該和跑一輪實驗的時間相稱。跑一次 eval 只要十分鐘,就別花兩週設計它。

「盲目抓更多資料不是好策略」 現在的對應物是「盲目加更多 context」。站上 context 與記憶那篇的結論——給 LLM 更多資訊會讓它變笨——和 Ng 這裡講的是同一個道理的兩種表現。

「我測試集分數很好」的當代版本是「我 eval 分數很好」。 站上 上線才是工作的開始整篇在講的就是這件事:eval 綠了不等於系統能用,而中間的落差通常是分佈變了。

參考資料