MLOps 對機器學習的重要性:減少技術債

Patrick Fu
Gemini Open Cloud 雙子星雲端
10 min readApr 24, 2021

目錄

機器學習跟深度神經網絡學習理論

「機器學習」這個名詞是 IBM 工程師 Arthur Samuel 早在1952 年就寫了一個雲腦程式用來下西洋棋創造出來的,但Arthur Samuel用的不是深度神經網路學習。那時候的機器學習只是用運算法推算一個棋子所有可能的步驟,然後選擇最好的。

讓深度機器學習大紅大紫的,要算是 2014年 Deepmind 公司(後來被 Google 收購)建立的 AlphaGO 程式。Deepmind 使用深度神經網路理論跟 Nvidia GPU 強大向量運算功能,開發了 AlphaGo 1.0 跟 2.0,分別在2016跟2017年擊敗了中國兩大圍棋高手樊麾跟柯潔 (參考 ref#11 and ref#12),並讓中國圍棋協會給予其九段的最高榮譽,瞬時間讓 DNN 機器學習聲名大噪。

何謂深度神經網路?

深度神經網路的簡稱就是 DNN(Deep Neural Network)。DNN machine learning 又稱為深度學習。深度學習的理論基礙就是一個經過程式運算重覆調整後的數學函數,可以用來預測實時數據(live data)產出最準確結果的函數過程。

使用學習數據重覆調整Weights 跟 Bias 來達成最佳函數的原理就是梯度下降法(Gradient Descent optimization — ref #4), Gradient 就是損失函數 (loss function), 代表預測數值跟直正數值的差距。理論上是把 loss function 值推算到愈來愈小,最後就會達到最佳值。如下圖:

Gradient Descend Optimization

特徵(feature)在 DNN 理論中的學術名稱叫神經元 (neuron). 因為每個神經元預測都是一個數學函數,所以就必會有 input 跟 output. Input 就是可以用來預測output 的學習數據。Output 就是要模型預測的神經元。多個神經元綜合的結果,就是推論(inference)的結果。例如做人臉辦識,神經元就可以包括眼耳口鼻等等。

從數學角度來看,每個神經元都可以用一個Sigmoid函數,又稱S-函數(ref#13)來表達。如下:

  • Z 是模型的其中一個神經元,an 是 input。Wn 是 weight,b 就是Bias。
  • Iterative Training 就是調整這些 Bias 跟 Weight, 去產生最好的 predictor。

深度學習特別的地方,就是每一層的預測 (hidden layer) 都要經果一個反向傳播的推算法 (back propagation). 每一層的神經元,都要經過一個遞歸性(recursive) 的過程,去算出最小的損失函數 (loss function),才可以進入下一層的預測。如下圖:

Multi-Layer Back Propagation Inference

假若以上還是有點難懂,簡單來說,深度學習就是用學習數據來調整預測函數,利用多層神經網路跟反向傳播推算法,逐層減低損失函數,最後就會算出一個最精確的預測模型 (model)。

深度學習特別容易累積技術債

從上面的描述,可以想像深度學習是一個非常複雜的過程。人工智慧科學家通常都要重覆做以下4件事情:

  1. 決定一個模型要用什麼神經元來做預測
  2. 決定每個神經元相對的 S-函數
  3. 訂定每個S-函數 input 的Weight 跟Bias 的最初值
  4. 調整深度學習使用的 hyperparameter (如 epoch,Batch size,learning rate 等),得到最佳的模型

技術債的累積,是指工程師在開發軟體時,為了時程壓力做了一些「抄捷徑」的決定,漸漸地讓程式變成難以維護,往往牽一髮而動全身。一些小修改都可能做成不預期的 regression. 所以技術債是要以 code refactor, 甚至乎 rearchitecture 來償還的。愈久不理會技術債,要償還的代價就愈大。

對深度學習來說,上面這些 AI 科學家要做的4件事情,就跟軟體開發一樣,不好好管理就會累積技術債。

Machine Learning Ecosystem

上圖是一張很有名的深度學習生態系統。大家可以容易看到 AI 科學家寫的程式,只佔了整個系統一小部份而已,周圍所需要的基礎設施,是龐大而複雜的。最差的情況下,我們可能在不經意之間,就欠下了技術債。

深度學習容易累積技術債的主因

模型的準確度,會很容易被以下的因素影響:

整個人工智慧/機器學習的流程:

如《DevOps與MLOps的比較》一文所描述,機器學習其實包括了很多不同部門負責的流程串成的。這些複雜的工作流程,可能都會有一些沒有講清楚的連帶關係 (dependency)。假如這些流程的抽象層跟獨立性不夠,任何一個流程的小變動,都可能都會影響到整個模型的準確性。

Correction cascade (hidden feedback loop):

有時候一個模型的 input 是從另一個 model 的 output 產生出來的。這時候就會有 "hidden feedback loop" 的情況出現,因為假若另一個模型有任何修改,就會影響到這個 model 的準確性。

學習數據品質跟數據前處理的過程 (data entanglement):

學習數據不等於原始數據。學習數據通常都是在原始數據抽取一些特徵,作為計算神經元的預測。但這過程中,數據科學家常常都需要調整一些特徵,但不幸的是,這很容易就會產生不預期的效果,就是所謂的「牽一髮動全身」,英文叫做 "CACE: Changing Anything, Changing Everything"。

深度神經學習系統架構:

這個議題有點巧妙,如下圖所示,左邊是傳統的演算法,函數的輸出(output)就是依賴輸入的參數。但是對右邊的機器學習過程,輸出其實就是 f(x),f(x) 在 DNN 的架構其實不只是依賴 input 的學習數據,它還有一個 反向傳播的推算法(back propagation),根據日誌對 Weights 跟 Bias 的調整,也會對 f(x)做成很大的影響。

ML System Data Dependency

不單止如此,上圖 f(x) 只是做推論的模型,真正的 output,其實是推論的結果(Prediction),因此即時數據 (live data) 的品質,也會對模型有直接的影響。

最後,Ref #6Hidden Technical Debt in Machine Learning Systems”,是 Dave Scully 跟 Gary Holt 等作者在 2015年發表一篇很有名的 paper,詳述了為什麼深度學習特別容易累積技術債的原因。提供給大家參考。

結語:以MLOps來減低技術債

就是因為機器學習很容易累積技術債,所以一個持續整合跟持續交付的環境,對減低技術債跟保持模型的準確性是非常重要的。在MLOps來說,就是把訓練時的日誌與即時數據也收到資料湖,不斷地監控模型的準確率,並用新的學習數據來做重新訓練 (retraining )以及模型的持續更新。

若你想了解 MLOps 在特定產業或環境下該如何導入,請聯絡我們

References:

  1. https://en.wikipedia.org/wiki/Deep_learning
  2. https://machinelearningmastery.com/difference-between-a-batch-and-an-epoch/
  3. https://machinelearningmastery.com/learning-rate-for-deep-learning-neural-networks/
  4. https://en.wikipedia.org/wiki/Stochastic_gradient_descent
  5. https://en.wikipedia.org/wiki/AlphaGo
  6. https://www.semanticscholar.org/paper/Hidden-Technical-Debt-in-Machine-Learning-Systems-Sculley-Holt/1eb131a34fbb508a9dd8b646950c65901d6f1a5b
  7. https://medium.com/inside-machine-learning/ai-ops-managing-the-end-to-end-lifecycle-of-ai-3606a59591b0
  8. https://towardsdatascience.com/intro-to-mlops-ml-technical-debt-9d3d6107cd95
  9. https://towardsdatascience.com/avoiding-technical-debt-with-ml-pipelines-3e5b6e0c1c93
  10. Machine learning the high interest credit card of technical debt [PWL]
  11. https://en.wikipedia.org/wiki/AlphaGo_Zero
  12. https://arxiv.org/pdf/2003.06212.pdf
  13. https://baike.baidu.com/item/Sigmoid函数/7981407
  14. https://www.ithome.com.tw/node/71807

--

--

Patrick Fu
Gemini Open Cloud 雙子星雲端

符儒嘉於美國矽谷資訊軟體業工作約30 年,曾在IBM、Amdahl、Sun、Interwoven任職,2009回國加入雲端中心之研發團隊,擔任雲端中心關鍵計畫Cloud OS 系統軟體開發之計畫主持人,將其在美國所累積的系統軟體開發知識與經驗,運用於雲端中心之計畫執行中。