隨著機器學習應用日益普及,高品質的資料標註成為模型訓練的關鍵。眾包平台雖然降低了資料標註的門檻,但也帶來了標註品質不一致的挑戰。為確保標註品質,可以採用多種策略,例如設計簡潔明瞭的任務、測試標註者準確性,並引入多重評估標準和成對比較等方法。康多塞陪審團定理的應用,能有效提升群體決策的準確性,進而提高資料標註的可靠性。此外,主動學習和分層取樣等技術也能幫助我們更有效地利用資料,並解決資料不平衡的問題。大型基礎模型的出現,則為資料標註提供了新的解決方案,但也帶來了新的挑戰。面對冷啟動問題,可以藉由合成資料、利用現有資料集或手動建立資料等方式來克服。構建穩健的資料管線,需要關注資料一致性、可重現性和可用性,並制定完善的 ETL 流程、資料過濾策略、特徵工程方法和標籤定義。
標註資料的挑戰與解決方案
在機器學習領域中,資料標註是一個至關重要的步驟。隨著眾包(crowdsourcing)的興起,許多企業開始利用眾包平台來收集和標註資料。然而,這種方法也帶來了一些挑戰。
眾包標註的挑戰
眾包標註的最大挑戰之一是標註者的品質參差不齊。即使是簡單的二元分類別任務,標註者也可能犯錯。此外,許多標註者同時為多個客戶工作,因此他們很難記住特定任務的細節。
為瞭解決這個問題,任務設計應該盡可能簡單明瞭。同時,透過測試和評估標註者的準確性,可以識別出表現良好的標註者和表現不佳的標註者。
提高標註品質的方法
有多種方法可以提高眾包標註的品質:
- 引入測試:透過在標註任務中加入測試,可以評估標註者的準確性和可靠性。
- 多重評估標準:使用多個評估標準可以減少標註結果的變異性。例如,在評估聊天機器人的回應時,可以分別評估其事實正確性、語氣等。
- 成對比較:要求標註者進行成對比較,可以減少標註結果的變異性,並提高標註的準確性。
康多塞陪審團定理的應用
康多塞陪審團定理(Condorcet’s Jury Theorem)指出,如果一群人對某一問題進行投票表決,且每個人正確判斷的機率大於0.5,那麼隨著投票人數的增加,群體做出正確決策的機率也會增加。
在眾包標註中,這一定理可以應用於提高標註的準確性。例如,如果三個標註者對同一物件進行二元分類別,且每個標註者正確的機率為0.7,那麼透過多數投票,可以將正確率提高到0.784。
降低成本的策略
為了降低眾包標註的成本,可以採用以下策略:
- 初步標註:先由兩個標註者進行標註,如果他們的結果一致,則採用該結果。
- 附加投票:如果兩個標註者的結果不一致,則增加三個額外的投票,並採用多數投票的結果。
工具和技術的進步
近年來,大型基礎模型的進步已經改變了資料標註的遊戲規則。這些模型可以在少樣本的情況下產生高品質的初始標註結果,從而減少了對人工標註的需求。
內容解密:
上述內容主要闡述了眾包標註在機器學習中的重要性和挑戰,以及如何透過各種方法提高標註品質和降低成本。其中,康多塞陪審團定理的應用是提高眾包標註準確性的有效方法。此外,最新的大型基礎模型的進步也為資料標註帶來了新的機遇和挑戰。
資料集的蒐集與管理
在機器學習(ML)系統的開發過程中,資料集的品質與管理至關重要。雖然本文不會探討特定領域的資料標註技巧,但強調資料標註過程和工具的投資往往是 ML 系統成功的關鍵因素之一。
資料與後設資料
資料集用於構建 ML 系統,而後設資料(metadata)則是描述資料集屬性的額外資訊。後設資料的例子包括:
- 時間相關屬性:事件發生的時間和被處理、儲存的時間。
- 來源屬性:指出資料是否來自多個來源。
- 使用者屬性:如果使用者參與了資料集的生成,則其相關後設資料非常重要。
- 版本資訊:如果資料經過處理,瞭解處理軟體的版本有助於追蹤資料的變更。
後設資料對於確保資料流的一致性至關重要。以一個醫療應用場景為例,若發現一位參與資料標註的醫療專業人員資格造假,需要立即停止使用其標註的資料,此時後設資料就顯得尤為重要。
後設資料的重要性
後設資料能夠幫助追蹤資料的來源、處理過程中的變更,以及系統測試和錯誤修復過程中的調整。例如,當一家叫車公司收購了競爭對手,並將其資料納入 ETL(提取、轉換、載入)流程時,若未正確處理不同資料來源之間的差異(如距離單位的不同),可能會導致模型效能下降。擁有像 preprocessing_function_version 這樣的後設資料欄位,可以輕易識別受影響的樣本。
另一個重要的場景是避免反饋迴圈(feedback loop)。例如,在推薦系統中,如果設計不良,新推薦的專案可能會長期佔據主流,而儲存樣本生成的時間和相關系統的版本資訊至關重要。
資料量是否足夠?
擁有大量的資料樣本不一定能保證 ML 系統的品質。並非所有資料樣本都同等有用,只有當新樣本能夠幫助模型學習到與問題相關的新資訊時,擴大資料集才是有益的。
分層抽樣
分層抽樣(stratification)是一種根據不同子群體分佈進行資料抽樣的過程。例如,一家公司最初在 X 國營運,後來擴充套件到 Y 國,需要確保訓練和測試資料集中 X 和 Y 國客戶的代表比例適當,以提供相同的服務水準。分層抽樣對於驗證設計和抵禦演算法偏見至關重要。
蒐集資料集的挑戰與策略
在機器學習領域,資料集的品質和數量直接影響模型的表現。如何有效地蒐集和利用資料,是每個從業者必須面對的問題。
資料集擴充與取樣
資料集擴充的一個重要研究方向是主動學習(active learning)。主動學習旨在找出最有價值的樣本來擴充資料集,從而提高模型的表現。常見的做法是選擇模型預測錯誤或信心不足的樣本進行標註。
另一個與資料集大小相關的問題是取樣。在某些情況下,我們面臨的不是如何取得更多資料,而是如何有效地利用現有的資料。特別是在資料集非常龐大且存在冗餘或不平衡的情況下,合理的取樣策略可以顯著提高訓練效率。
常見的取樣策略包括分層取樣(stratification),即根據某些關鍵特徵或演算法定義的群組對資料進行分組,並在每個群組中限制使用的資料量。這種方法可以確保不同群組之間的平衡,並避免過度代表某些特定的資料。
資料品質與雜訊
過去,機器學習社群普遍認為,少量的乾淨資料勝過大量的雜訊資料。然而,近年來隨著大型模型(如 GPT-3 和 CLIP)的發展,人們發現,在一定規模下,使用大量弱監督或自監督的資料可以取得良好的效果。這意味著,在某些任務中,龐大但不完美的資料集可能比小型的、精心挑選的資料集更為合適。
然而,需要注意的是,雖然在訓練資料中容忍一定程度的雜訊是可行的,但在驗證和測試資料集中,雜訊的容忍度要低得多。
模型表現與資料集大小的關係
一般來說,人們預期模型的表現會隨著資料集大小的增加而改善,但這種改善並非無限制。學術界通常認為,模型的表現會隨著資料集大小的平方根而漸近地改善。這個估計雖然粗糙,但可以提供一些直覺。
並非所有模型都能透過增加新資料來改善表現,因為存在不確定性的問題。不確定性主要來自兩個來源:知識或資訊的缺乏(稱為認知不確定性),以及資料本身的不確定性(稱為隨機不確定性)。
如何判斷需要多少資料
在蒐集了一些資料並建立了訓練流程後,我們可以對需要多少資料做出明智的判斷。一個高層次的演算法如下:
- 將資料集分成多個桶(bucket),使得每個桶的大小接近均勻,並且不同桶之間的樣本相似度最大化。
- 固定計算預算,無論資料集大小如何,都訓練模型 N 個批次。
- 在不同的資料子集上訓練模型,從很小的比例到整個資料集,確保使用的子集是累積的。
- 計算每個訓練模型的關鍵指標,並繪製以資料集大小為橫軸、指標為縱軸的圖表。
- 透過外推,估計需要多少額外的資料才能擠出另一個 1% 的指標變化。
冷啟動問題
在建立資料集時,一個常見的問題是冷啟動(cold start)問題,即需要資料來建立系統,但只有在系統上線後才能取得資料。這是一個典型的雞生蛋、蛋生雞問題。
解決這個問題的方法通常是近似。由於我們沒有完全比對問題的資料,因此需要找到盡可能接近的替代方案。具體的方法取決於問題本身。例如,可以使用電腦圖形學的方法生成模擬資料,或者使用公共來源的影像進行替代。
資料集建立的雞與蛋問題及健康資料管線的特性
在機器學習(ML)專案中,建立一個高品質的資料集是至關重要的。然而,這往往會陷入一個雞與蛋的問題:沒有足夠的資料,模型無法訓練;而沒有模型,無法有效地收集和標註資料。本章節將探討解決這個問題的不同方法,以及建立一個健康資料管線的關鍵特性。
解決資料集建立的雞與蛋問題
有多種方法可以嘗試解決資料集建立的困難:
方法1:生成合成資料
- 利用模擬或渲染技術生成合成資料,以補充真實資料的不足。
- 例如,使用渲染技術生成物體影像,並疊加在增強現實(AR)錄影上,以增加資料的多樣性和真實性。
方法2:使用現有資料
- 尋找公開資料集或來自類別似情境的資料,以利用現有的資源。
- 例如,使用一個包含人員佩戴相似帽子的公共資料集,即使這些圖片是在不同的場景下拍攝的。
方法3:手動建立資料
- 透過人工方式收集和標註資料,儘管這種方法耗時且昂貴。
- 例如,購買安全帽並在廢棄工廠進行拍照,以收集特定場景下的資料。
方法4:使用基線模型或第三方解決方案
- 建立一個簡單的基線模型或利用第三方提供的解決方案,以快速啟動專案。
- 例如,使用現有的面部檢測器來定位人臉,然後新增簡單的規則來嘗試定位帽子。
這些方法各有其優缺點,需要根據具體專案的需求和資源進行選擇。重要的是要認識到,在大多數情況下,初始資料集可能不是最終系統運作時的真實分佈的代表性樣本,因此驗證結果需要謹慎解讀。
健康資料管線的特性
一個健康的資料管線應該具備以下三個重要特性:
1. 可重現性(Reproducibility)
- 能夠從頭開始重新建立資料集,這需要有完善的軟體解決方案和檔案。
- 避免依賴單一的「黃金資料檔案」,而是透過可重複的流程來生成資料。
2. 一致性(Consistency)
- 確保資料標註的一致性,特別是在標籤定義模糊或難以區分的情況下。
- 制定明確的協定來解決標籤衝突或模糊邊界的問題。
- 保持資料來源、預處理步驟和過濾規則的一致性。
3. 可用性(Availability)
- 確保資料集和相關處理流程對於專案團隊是可存取和可用的。
透過確保資料管線具備這些特性,可以提高機器學習系統的效能和可靠性,並減少因資料問題導致的錯誤。
設計穩健的資料管線:一致性與可用性的重要性
在機器學習(ML)系統的開發過程中,資料品質的重要性不言而喻。一個健全的資料管線(data pipeline)是確保ML模型能夠有效運作的關鍵。在本章中,我們將探討資料管線的兩個重要屬性:一致性和可用性。
資料一致性:確保資料品質的根本
資料一致性是指在整個資料處理流程中,資料的格式、內容和品質保持一致。確保資料一致性對於ML模型的訓練和預測至關重要。如果資料不一致,可能會導致模型訓練失敗或預測結果不準確。
在設計ML系統時,資料一致性是一個需要持續關注的問題。從初始的資料收集到後期的模型維護,資料一致性都需要被嚴格監控。我們將在第14章中進一步討論如何透過監控和漂移檢測(drift detection)來確保資料的一致性。
資料可用性:確保系統和工程師的順暢運作
資料可用性涵蓋了兩個層面:系統的可用性和工程師的可用性。系統的可用性關乎資料來源的可靠性。如果依賴的第三方API或內部系統不可靠,可能會對整個ML系統造成嚴重影響。
此圖示說明瞭資料來源的多樣性及其相關風險
另一方面,工程師的可用性則關乎資料的可取得性和使用的便捷性。如果資料難以取得或處理複雜,可能會阻礙工程師進行資料驅動的決策,從而延誤專案進度。因此,投入資源構建工具以提高資料的可取得性是非常重要的。
設計檔案:資料集
在設計ML系統時,撰寫一份詳盡的設計檔案(design document)是必不可少的。這份檔案應該包含以下問題的答案:
ETL(提取、轉換、載入)流程
- 資料來源有哪些?
- 如何表示和儲存資料?
資料過濾
- 良好和不良資料樣本的標準是什麼?
- 可能出現哪些邊緣案例?如何處理?
- 資料過濾是自動進行還是需要手動驗證?
特徵工程
- 如何計算特徵?
- 如何生成表示形式?
標籤
- 需要哪些標籤?
- 標籤的來源是什麼?
內容解密:
- ETL流程:詳細描述如何從不同的來源提取資料、如何轉換這些資料以滿足系統需求,以及如何將其載入到適當的儲存系統中。
- 資料過濾:定義清晰的標準來區分良好和不良的資料樣本,並規劃如何處理邊緣案例。
- 特徵工程:闡述特徵計算的方法和表示形式的生成過程。
- 標籤:確定所需的標籤型別及其來源。
回答這些問題可以幫助我們更好地理解資料需求,並為ML系統設計提供堅實的基礎。
Supermegaretail 的資料集設計
現在,讓我們回到為Supermegaretail設計資料集的任務上。根據前面的討論,我們需要準備一份詳細的設計檔案,涵蓋ETL流程、資料過濾、特徵工程和標籤等關鍵問題。這份檔案將為Supermegaretail的ML系統提供堅實的資料基礎。
透過仔細規劃和設計,我們可以確保ML系統擁有高品質的資料,從而提高模型的準確性和可靠性。在接下來的章節中,我們將繼續探討如何進一步最佳化資料管線,以滿足不斷變化的業務需求。
資料集設計檔案:Supermegaretail 與 PhotoStock Inc.
Supermegaretail 資料集設計
I. 資料來源
Supermegaretail 的資料集核心物件為(日期、產品、商店)的組合,目標變數是預測銷售單位數量。資料來源分為內部來源、手動收集的外部來源和購買的外部來源。
內部來源
- 歷史交易資料:來自 Supermegaretail 商店鏈的採購歷史,儲存於集中式資料函式庫,是主要真實資料來源,包含銷售數量、消費金額、折扣、交易 ID 等。
- 庫存歷史:決定每個商店每天可銷售的產品數量,並幫助估計每日開始時的產品供應量及過期下架數量。
- 產品、商店和交易的後設資料。
- 計劃促銷活動日曆:影響未來銷售的重要因素。
外部來源:手動收集資料
- 價格監控:每天從競爭對手商店手動收集價格和其他產品資訊,可由內部團隊或第三方執行,需包含全球產品識別碼(條碼)以便與自家產品比對。
外部來源:購買資料
- 天氣歷史和預報:從氣象服務購買,直接影響消費者行為。
- 商店附近的客戶流量估計:來自電信供應商。
- 全球市場指標。
移動應用和網站資料(可選)
- 配送服務資料:即使只佔少於 5% 的收入,也能提供特定地點銷售的額外資料。
- 使用者活動的隱含反饋:如瀏覽、點選或加入購物車,有助於預測實體店面的銷售。
II. 資料標籤
需求預測問題無需額外的資料標籤,直接從交易歷史中取得。
III. 可用後設資料
根據 SKU 在每個商店層級進行需求預測,包含三個關鍵元素:產品、商店和交易。
產品
- 產品 ID 和條碼。
- 不同層級的類別程式碼(1、2、3),可用於根據規則的產品相似度衡量。
- 儲存期限,決定過度預測銷售的嚴重性。
- 加入商品組合矩陣的日期。
- 產品尺寸和重量。
商店
- 商店 ID。
- 地點(坐標),可結合第三方來源新增天氣、人流和關鍵點距離等資訊。
- 最近的競爭對手商店(ID 和距離)。
- 商店大小和格式,決定商品種類別和數量。
- 商店開業和關閉日期。
交易
- 時間戳記,可用於豐富資料集,如假日資訊。
- 客戶 ID(如使用忠誠卡),可用於計算產品嵌入向量。
IV. 可用歷史資料
Supermegaretail 已有超過 3 年的資料收集歷史,對預測模型學習銷售模式、季節性和趨勢至關重要。同樣適用於產品和商店的後設資料,以及從外部來源取得的天氣資料。
V. 資料品質問題
交易、庫存和促銷資料可能存在缺失或重複值,需要額外的過濾或預處理。購買的外部資料已進行初步清理,但仍需實施必要的檢查。競爭對手價格資料覆寫約 25% 的 SKU,且存在資料缺口。
VI. 最終 ETL 管道
- 每日彙總交易資料。
- 將新彙總的分割槽新增到交易彙總表中。
- (可選)修復過去 2 至 3 天的資料錯誤。
- 根據日期、產品 ID 或商店 ID 連線其他內部/外部資料來源。
- 根據連線後的資料集計算特徵。
PhotoStock Inc. 資料集設計
I. 資料集與來源
PhotoStock Inc. 的搜尋引擎可利用兩大主要資料來源:
- 描述資料集:包含圖片函式庫中每張圖片相關的標籤、標籤和描述,提供圖片內容的寶貴上下文,同時包含實際圖片和縮圖的 URL。
- 點選資料集:使用者提交的搜尋查詢,提供使用者感興趣的圖片型別資訊。結合使用者點選,提供相關性和使用者興趣的強烈訊號。擴充套件資料集可包含點選相關的工作階段資訊,如使用者在圖片頁面停留的時間和是否購買。
內容解密:
此部分的設計重點在於利用現有的圖片相關資訊以及使用者行為資料來改善搜尋引擎的功能。描述資料集提供了豐富的圖片內容資訊,而點選資料集則讓系統能夠瞭解使用者的偏好和興趣,從而提高搜尋結果的相關性和準確性。
建立健全的驗證流程
在機器學習(ML)系統中,建立健全的評估流程至關重要。本章將探討如何建立適當的驗證架構,以獲得對系統效能的可靠估計。我們將討論常見的驗證架構、如何根據特定問題選擇合適的驗證方法,以及在設計評估流程時需要考慮的因素。
驗證流程的目的
一個適當的驗證流程旨在模擬在真實環境中運作時,我們應該具備的知識和可以捨棄的知識。這與過度擬合問題或泛化能力密切相關,我們將在第9章中詳細討論。
常見的驗證架構
- 標準驗證架構:這些是廣泛使用的驗證方法,例如交叉驗證和簡單的訓練-測試分割。
- 非標準驗證架構:針對特定問題,可能需要設計非標準的驗證架構,以更好地模擬真實世界的場景。
- 分割更新程式:在某些情況下,更新驗證分割可能是必要的,以確保評估結果的可靠性。
設計驗證架構時的考慮因素
在設計驗證架構時,需要考慮多個因素,包括:
- 業務目標
- 資料特性
- 模型的複雜度
- 預期的佈署環境
重點整理
- 建立健全的驗證流程對於機器學習系統至關重要。
- 需要根據具體問題選擇合適的驗證架構。
- 驗證架構應該能夠模擬真實環境中的運作情況。
- 在設計驗證架構時,需要考慮多個因素,包括業務目標和資料特性。
內容解密:
本章節主要講述了在機器學習系統中,如何建立一個有效的驗證流程來評估系統的效能。驗證流程的目的是模擬真實環境中的運作情況,並且需要根據具體問題選擇合適的驗證方法。常見的驗證方法包括標準驗證架構和非標準驗證架構,並且在設計驗證架構時需要考慮多個因素。
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title 資料標註挑戰與解決方案架構
package "眾包標註品質" {
component [標註者測試] as test
component [多重評估標準] as multi
component [成對比較法] as pairwise
}
package "康多塞定理應用" {
component [群體投票機制] as vote
component [多數決結果] as majority
component [準確率提升] as improve
}
package "成本優化策略" {
component [初步雙人標註] as dual
component [附加投票機制] as extra
component [大型模型輔助] as llm
}
package "資料集管理" {
component [後設資料追蹤] as metadata
component [分層抽樣] as stratify
component [版本控制] as version
}
collect --> clean : 原始資料
clean --> feature : 乾淨資料
feature --> select : 特徵向量
select --> tune : 基礎模型
tune --> cv : 最佳參數
cv --> eval : 訓練模型
eval --> deploy : 驗證模型
deploy --> monitor : 生產模型
note right of feature
特徵工程包含:
- 特徵選擇
- 特徵轉換
- 降維處理
end note
note right of eval
評估指標:
- 準確率/召回率
- F1 Score
- AUC-ROC
end note
@enduml
此圖示展示了建立驗證流程的基本步驟,從選擇驗證方法到實施驗證和評估結果,並根據需要更新驗證架構。
詳細解說
- 選擇驗證方法:根據具體問題選擇適當的驗證方法,例如交叉驗證或簡單的訓練-測試分割。
- 設計驗證架構:根據所選的驗證方法,設計一個能夠模擬真實環境的驗證架構。
- 實施驗證:使用設計好的驗證架構對模型進行評估。
- 評估結果:分析評估結果,以瞭解模型的效能。
- 更新驗證架構:根據評估結果和業務需求,更新驗證架構以提高評估的準確性。