使用機器學習的挑戰

演算法和人類之間的差別在於,如果將相同的資料輸入到演算法中兩次,最後會得到相同的答案,但人類並非如此。

如果歸檔資料是紀錄我們的過去,大數據是同步分析我們的現在,哪麼預測性演算法與機器學習就是占卜我們的未來。

AI與機器學習如今已應用在各行各業的日常營運中,然而在我們使用機器學習的旅程中將會遭遇到如何把ML應用在企業營運中常見的挑戰。而這些機器學習挑戰將影響著我們如何運用適合我們的機器學習,了解這些挑戰將有助於我們設計與開發並建立我們的機器學習框架。而在企業使用機器學習時(以下會簡稱為ML),監督式機器學習是企業經常使用的模式,因為企業擁有著大量的歷史資料,並企圖以過去的歷史資料來預測未來。而使用這些歷史資料來建立"接近正確"的預測的機器學習有著以下幾個重要因素:

資料品質

在電腦科學與資通訊技術領域有一句俗話說: Garbage in garbage out(GIGO)。在統計學中,如果分析的原始資料是錯誤的、不準確的,那麼統計的結論也就是不可信的。

在ML中,如果原始資料是不完整的並且我們選擇的features(資料特徵)是很差的,或者是資料不夠精確呈現整體的資料集,哪我們做出來的ML模型的預測也會是錯誤的。所以在資料的品質上有四種要素需要齊備,分別是: 資料具有準確性(accuracy),完整性(completeness),一致性(consistency)與即時性(timeliness)。

資料的準確性

資料準確性指的是我們ML的training data的特徵(features)以及這些特徵對應的基本事實(也就是過去發生的真實資料)。了解在資料收集過程的出處與任何可能的錯誤都可以幫助我們的資料更具準確性。為此我們需要對資料做清理的工作,不論是資料中有重複的部分,資料的不連續,缺失的特徵以及任何會影響資料品質的狀況,都必需加以處理。

準確的資料標籤(label)與特徵(feature)準確度同樣重要。 我們的ML模型僅依賴於訓練資料中的真實標籤(labels)來更新其權重(weights)並最大限度地減少損失(loss)。

資料的完整性

資料的完整性意思是,當我們想要ML模型能幫我們預測在未經過訓練的資料集中預測某些事件或事物的發生。所以在訓練ML模型的訓練資料級必須越完整越好,因為訓練資料集就是ML模型的"世界觀"

例如,我們要訓練ML模型辨識貓的種類,我們餵給ML大量有著貓的照片,ML分類出來10個貓的品種。而在驗證階段ML也有99%的辨識準確率。現在這就是這一個ML模型的世界觀,它只認識10個貓的種類。但若有人把狗的照片送給ML模型來辨識呢?會發生甚麼事呢?

如果資料夠完整,意思是在我們訓練機器學習模型時若我們有教導 — 也就是在訓練資料集的lables中,我們有著"這不是貓的"label。哪麼這個資料集就可以算完整了,因為機器學習模型已經可以辨識貓的種類以及這是不是貓的圖片的問題了。

而資料完整性的另一方面則是我們要確保每一個lable都是不一樣的呈現。回到辨識貓的例子,如果我們的照片全部都是貓的臉部特寫,哪機器學習模型將無法根據貓的其他身體特徵來辨識貓的種類,又或者這是不是照片中的是不是貓。

資料的一致性

在大型的資料集中,我們通常會將資料收集和標記(labeling)工作分給一組人是很常見的。而將這個過程標準化則能達到資料的一致性,因為每個人在執行這些工作時不可避免的都會帶有自己稍許的偏見來執行這些資料處理的工作。

如同資料的完整性,資料的不一致性可以在資料特徵(features)與標籤(labels)中找到。例如,我們正在從溫度感測器收集關於天氣的資料。 如果每個感測器都按照不同的標準進行了校準,這將導致模型預測不准確和不可靠。 不一致也可以指資料格式。 如果我們正在擷取位置資料,有些人可能會寫出含有巷弄的街道地址,而其他人可能會將巷弄資料去除。

資料的即時性

這是指資料發生的當下到我們資料庫之間的延遲(latency)。有些資料發生的當下到我們的資料庫可能是幾個小時會看到,例如程式產生的logs。而信用哪的交易資料可能需要一天後才會到達我們的報表系統。

為了處理資料的即時性,我們需要對資料添加額外的資訊會是有用處的。特別是機器學習模型對這些資料做轉換處理時也一併會把這些額外的資訊變成是特徵(features)。更具體地說,我們可以追踪事件發生的時間以及將其添加到資料集的時間。 然後,在執行特徵工程時,我們可以相應地考慮這些差異。

資料的重現性(Reproducibility)

在傳統的程式開發,程式的輸出結果是可重現,而這個可重現的結果是能到保證。例如,我們的輸入是猴子,哪我們會知道其輸出結果是香蕉。所以這個輸入/輸出是個可不斷"重複""保證"結果。

另一方面在ML模型中天生會存在一種"隨機性"。當我們在訓練ML模型時,ML模型的權重(weights)會使用一個隨機的初始值。當ML模型在不斷的使用資料發生很多次回合的數學計算時,這些權重值也會被模型一併吸收進去。而因為這樣的權重值的隨機性,在我們使用相同的資料訓練多次時,每次的結果都會有一點點的不同。而這樣就會挑戰我們想要的"結果的重現性"。如果我們將模型訓練到 98.6% 的準確率,則不能保證重複的訓練運作會達到相同的結果。 而這會使我們要對我們的模型進行不同的測試進行比較變得困難。

為了解決這種輸出結果無法具又重現性的問題,通常的作法就是設定一個隨機種子值(random seed value)在我們的ML訓練中。在TensorFlow中,我們可以在程式的一開始設定 tf.random.set_seed(value)。

而在以Python為基礎的ML學習工具: Scikit-learn,有很多的functions可以shuffle我們的資料來設定我們random seed value。例如:

from sklearn.unit import shuffle
data = shuffle(data, random_state=value)

為了讓我們的ML模型是在"不同"的測試方式具有可重複、可重現的結果,我們必須使用"相同的資料""相同的random seed"來訓練我們的ML模型。

訓練 ML 模型涉及幾個需要被修正以確保可重複性的工具:使用的資料、用於生成訓練和驗證資料集(dataset)的拆分機制、資料準備和模型的超參數(hyperparameters),以及batch size和learning rate等變量。

資料飄移(Data Drift)

雖然ML模型通常表示輸入和輸出之間的靜態關係,但資料可能會隨著時間發生顯著變化。 資料漂移是指確保我們的ML模型保持相關性(relevant)的挑戰,並且模型預測的準確性有反映到它們所使用的環境。

舉例來說,我們要分類一個論壇上的文章來辨別是不是提到有感冒的可,我們可能根據歷史資料來訓練模型來分辨。但是Covid-19的出現其症狀很多跟感冒是一樣的,ML根據歷史資料是不知道有Covid-19這件事的,這就產生了飄移現象。為了解決這個問題,我們必須不斷的更新我們的訓練資料集,重新訓練我們的模型,並且針對一些輸入資料的特殊群組給予不同的權重值。

擴展(Scale)

擴展的挑戰存在於典型ML工作流程的許多階段。我們可能會在資料的收集、預處理、訓練和服務(serving)方面遇到擴展的挑戰。在為ML模型攝取(ingesting)和準備(preparing)資料時,資料集的大小將決定解決方案所需的工具。構建data pipeline通常是資料工程師的工作,這些pipeline可以擴展到能處理具有數百萬row的資料集。對於模型訓練,ML 工程師負責確定特定訓練工作所需的基礎設施。根據資料集的類型和大小,模型訓練可能非常耗時且高運算成本,需要專門為 ML 工作負載設計的基礎設施(如 GPU)。例如,圖像模型通常需要比完全基於表格資料訓練的模型更多的運算能力。在模型服務中,支援資料科學家團隊從模型原型(prototype)中獲取預測所需的m運算能力與支援正式模型每小時獲得數百萬個預測請求所需的運算能力完全不同。開發人員和 ML 工程師通常負責​​處理與模型的部署和服務預測請求相關的擴展挑戰。

不同的目標

通常組織中會有一個專門的團隊負責建立ML模型,但組織中的許多團隊都會以某種方式使用該模型。不可避免地,這些團隊可能對能作用的模型的定義有不同的看法。為了了解這在實踐(practices)中如何發揮作用,假設我們正在建立一個模型能從圖片中辨識有缺陷的產品。作為資料科學家,我們的目標可能是最小化模型的cross-entropy loss。另一方面,產品經理可能希望減少錯誤分類並且盡量減少發送這些有缺陷的產品給客戶的數量。最後,管理團隊(C-Level)的目標可能是將收入增加 40%。這些目標每一個期望都不同,而在組織內平衡這些不同的目標可能會帶來一些挑戰。

作為資料科學家,我們可以將產品團隊的需求轉化為模型的context,例如false negative的成本是false positives的五倍。因此,在設計模型時,我們應該針對產品的召回率進行優化,以滿足這一點。然後,我們可以在產品團隊優化精確度的目標和最小化model ‘s loss的目標之間找到平衡。在為我們的模型定義目標時,重要的是要考慮整個組織中不同團隊的目標,以及每個團隊的目標如何與模型相關聯。通過在建立解決方案之前分析每個團隊正在優化的內容,我們可以找到每個團隊可以妥協的點,以最佳地平衡這些多個目標。

總結

ML模式設計是一種將專家(SME)的知識和經驗帶入所有與ML相關人員都可以遵循的方式。 後續的文章中我們會詳細介紹ML的模式設計擷取了ML的Designing、building和deploying ML系統中常見問題的最佳實踐和解決方案。 ML中的常見挑戰往往圍繞資料品質、可重複性、資料漂移、擴展以及必須滿足不同的目標。

--

--

運用"雲端服務"加速企業的數位轉型願景
運用"雲端服務"加速企業的數位轉型願景

Written by 運用"雲端服務"加速企業的數位轉型願景

我們協助您駕馭名為"雲端運算"的怪獸,馴服它為您所用。諮詢請來信jason.kao@suros.com.tw. https://facebook.com/jason.kao.for.cloud

No responses yet