資料處理 Technical Debt (1)

教學目標

初步了解導入機器學習系統進行後續維護作業所會面臨哪些技術債的問題。

重點概念

首先機器學習提供很強大的工具集透過很快速且便宜的方式建立實用且複雜的預測系統,但是當我們維護機器學習系統時,就會面臨軟體工程框架中技術債的問題,所謂技術債主要是在 1992 年 Ward Chunningham 提出,主要是協助我們理解由於在軟體工程中快速移成長而產生的長期成本,就像財政債務一樣,因此需要有合理的戰略承擔技術債,我們可以透過重構原始碼、改進單元測試、刪除無效程式碼、減少相依關係、重新評估 API、改善文件檔案、…等方式進行改善,請注意目標不是增加新的功能,而是為了減少錯誤的發生和提高可維護性,若是我們針對技術債視而不見,就會導致更危險的隱藏技術債發生產生維護上更嚴重的問題,尤其是資料處理時如何與資料進行整合,同時確保資料品質,若是我們忽略技術債將會導致資料品質不佳,資料不正確、遺失值過多,以致於造成機器學習系統的預測結果無法有效的應用於決策分析。

技術債

接著機器學習系統所產生技術債的問題通常很難被發現,因為它主要在於資料會影響機器學習系統行為無效。當我們導入機器學習系統時,資料輸入將會來自於其它系統,此時若是其它系統的資料品質不佳,就會立即影響機器學習的預測結果。一般來說,我們在軟體工程中會使用封裝和模組化的方式設計抽象方法,將有助於確保資訊輸入和輸出的內容和邏輯一致性,但是透過抽像方法很難應用於機器學習系統,因為當所需要的輸入資料無法透過外部資料和軟體邏輯被有效地的表達時,才會需要使用機器學習的方式,所以我們很難針對機器學習系統實施嚴格抽像介面確保資料輸入的品質。

相依債

再來機器學習系統除了產生技術債問題之外,還會產生相依債的問題,所謂依賴債主要是軟體工程中程式碼複雜性和技術債的關鍵因素。然而機器學習系統中資料的相依關係更為複雜,並且更難被發現。一般來說,我們在軟體工程中會使用編譯器和鏈結器的靜態分析工具識別程式碼相依關係,但是我們很難透過任何工具分析資料的相依關係。

分析債

此外機器學習系統除了技術債和相依債問題之外,還會產生分析債的問題,尤其是即時的機器學習系統其關鍵特性主要是隨時間更新影響分析行為,此時將會導致分析債,因為我們很難預測模型在發佈之前隨著時間的推移而逐漸發生的行為。

設定債

最後機器學習系統除了技術債、相依債和分析債之外,還會產生設定債的問題。任何大型機器學習系統皆有廣泛可設定的選項,包括使用哪些功能,如何選擇資料,不同演算法特定的學習設定、預先資料處理、後續資料處理、驗證方法、…等。一般來說,研究人員和工程師通常會認為驗證或測試的設定不是非常重要,但是任何設定若是發生錯誤,將會導致機器學習系統無法正常執行。

總結機器學習系統導入進行後續維護作業時將會面臨許多債需要償還,其中個人認為有四個債非常重要,分別為:

  1. 技術債
  2. 相依債
  3. 分析債
  4. 設定債

簡而言之,通常我們會以最快速且便宜的方式導入機器學習系統,此時就會產生技術債的問題、針對資料匯整若沒有分析專家或領域知識專家的合作將會面臨相依債的問題,並且若是進行採用多個機器學習模型進行即時分析將會面臨分析債的問題,以及企業導入機器學習系統需要與其它系統進行整合,此時就會面臨設定債的問題。因此若我們要導入機器學習系統時,可以考慮套裝軟體或雲端服務的解決方案,而非開放源碼的解決方案,避免在後續維護機器學習系統時發生更多的問題。

相關資源