iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 4
0

Google如何使用ML?

主旨:了解 Google 在使用ML商用化的經驗與知識

建構ML產品的重點

在建構一個ML產品時,大概可以分成五個部分:

  1. 定義KPI (Key Performance Index)
  2. 收集資料
  3. 建構基礎設施(Infrastructure)
  4. 優化ML模型
  5. 整合系統

往往大多數人會覺得需要花費最多的時間在優化ML模型上面,然而一個成功的ML產品,真正需要投資精力的部分是在於收集資料建構基礎設施

而在建構的過程中,人們常會犯的錯誤或是誤解大致上有十種:

  1. 認為訓練ML模型比建構軟體設施還快速
  2. 尚未收集資料
  3. 認為資料已經準備好可以立即使用
  4. 在建構ML模型時沒有把“人”放進其中一個審查的環節
  5. ML產品開始時著重在演算法的部分
  6. ML模型優化朝向錯誤的方向
  7. 你的ML產品真的是對世界進步有所貢獻的嗎
  8. 自己嘗試建立一個模型而不先使用預訓練(pre-trained)好的模型
  9. 覺得ML模型只需要訓練一次
  10. 想自己從頭建立一個全新的ML模型

建構ML產品的路程

建構出一個完整ML的產品可分為五個階段:

  1. 個人獨立貢獻:先由一個對ML產品有些許想法的人開始,這個階段非常適合嘗試各種產品的原型(prototype),在修改上保有很大的彈性,可以快速地失敗並從中學得經驗。
  2. 團隊分工:此時工作開始變多,一個人已經無法負荷,這個階段的重點便是要將業務正式化(formalized)並且定義怎樣是成功。
  3. 數位化與自動化:由於規模持續增大,這個階段必須要將重複且簡單的工作事項數位化與自動化,來減少人力的付出。
  4. 大數據與分析:此階段因為數位化與自動化已經建立,每日將有許多數據資料進來,如何有效的處理、分析將會影響後續的ML模型。
  5. 機器學習(ML):處理、分析後的大量數據,如何利用這些資料來精進ML模型便是此階段關鍵的地方。

這五個階段都是非常重要的,輕忽或是略過其中一個階段,都很容易使你的ML產品走向失敗的結果。


包容性機器學習(Inclusive ML)

主旨:了解為什麼ML模型預設是不公平的,並且謹記結合ML進你的產品時所需要注意的事情

ML與人類偏見(Human bias)

由於ML模型的學習取決於大量的資料,而資料又都是人所給予的,縱使人們本身不是有意選取特定的資料,但是根據自身經驗出發,會下意識地存在偏見並影響所給予的資料,這些人類偏見舉例來說有:

  • 互動偏見(Interaction bias):當人在選取資料,互動時,必定會有某種程度的偏好,例如說要你選擇鞋子的資料,你可能因為比較喜歡球鞋,在互動的過程中選了球鞋,這樣便可能造成學習後的ML模型會認為高跟鞋不是鞋子的一種,進而產生偏見。
  • 淺在偏見(Latent bias):資料本身有淺在的偏見,例如說你拿了一群早期物理學家的圖片來學習,要判斷這張圖像是不是物理學家,可是碰巧在以前物理學家多為男性,這便可能造成ML模型會產生女性不是物理學家的偏見。
  • 選擇偏見(Selection bias):選擇資料的方式或習慣造成的偏見,例如說要訓練一個人臉辨識的模型,你如何確定你所挑選的資料能代表所有種類的人臉,因此選擇資料的方式便會造成一定程度的偏見。

模型包容性的評估度量(Evaluation Metrics)

既然知道模型很容易含有偏見,那麼評估其包容性便是很重要的一點,混淆矩陣(Confusion matrix) 就是一個很好的判斷度量指標。

混淆矩陣是由標籤(Label,可想成是正確答案)和模型預測(Prediction)所構成的一個2x2矩陣,所以根據標籤和預測的正負,可以將矩陣分成4個種類:

  • True Positive (TP):標籤是正的,預測也是正的 (預測正確, O)。
  • True Negative (TN):標籤是負的,預測也是負的 (預測正確, O)。
  • False Positive (FP):標籤是負的,預測卻是正的 (預測錯誤, X)。
  • False Negative (FN):標籤是正的,預測卻是負的 (預測錯誤, X)。

是不是很難記呢?沒關係,以前我也覺得混淆矩陣好容易搞混(難道這是它叫做混淆矩陣的原因嗎?),這邊提供一個我記這個東西的想法:

  • 前面的True/False是在形容預測結果的正確與否
  • 後面的Positive/Negative是在指出預測了什麼

Confusion matrix

從上面的分類來看,可以發現有2種類型是錯誤(Error)的來源,即是模型產生偏見後造成的錯誤,它們分別是FP和FN,也有人稱這兩種錯誤為Type-I和Type-II錯誤,因此若要讓模型盡量不要有偏見,更具包容性,減低這兩類型的錯誤便是很重要的,講到這邊我們便得來提一下,只看準確率(Accuracy) 會有什麼盲點,會有盲點的話該怎麼辦。

4個混淆矩陣的指標

根據混淆矩陣的元素,一般有4個指標是常拿來使用的:準確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1-分數(F1-score)

  • 準確率(Accuracy): Accuracy
  • 精確率(Precision): Precision
  • 召回率(Recall): Recall
  • F1-分數(F1-score): F1-score

依照你的任務目標,注重的指標也會有所不同,舉例來說:現在有1000筆交易紀錄,其中990筆是正常,10筆異常,你訓練了一個分類ML模型預測出995筆正常,5筆異常,混淆矩陣如下表:

(預測)交易正常 (預測)交易異常
(標籤)交易正常 985 5
(標籤)交易異常 10 0

這時如果單看Accuracy的話,有高達98.5%的表現,會讓人誤以為模型的表現非常的好。但是,對於銀行來說,會讓他們虧錢的反而是那10筆交易異常的部分,ML模型卻都沒有找出來。若進一步來看Precision是98.99%,Recall是99.49%,而在這個任務下,關鍵在於異常的有沒有被找出來,換句話說就是FP要是0FN反而不重要了,畢竟被模型誤判為異常頂多就是客戶打電話來確認,銀行並不會有金錢上的損失,從這個角度來看,Precision做到100% 才是符合銀行需求的模型,Recall或是Accuracy有多高對這個任務來說並不是非常重要。

機會均等

人皆生而平等(All men are created equal),相信這是所有人都常聽到的一句名言,在現今講求男女平等、公平正義的時代,一個社會的進步與否跟能否平等的對待不同個體,有著相當重要的關係,所以訓練出來的ML模型也必須要考慮公平的問題。

一個具有包容性的模型,在不同子群組的同一個人,模型所預測出來的結果應該要一致,不能因為群組不同而有差異,否則這樣就會產生歧視(Discrimination),舉個簡單的例子來說,判斷是否要貸款給一個人,理論上看的應該是他的信用紀錄,而不是他的皮膚顏色是黑人還是白人。數學上直觀地來說就是,一個模型在不同的群體間混淆矩陣的指標要盡量一致


今天大概介紹了Google在建構ML產品上的經驗、ML模型會有偏見與訓練模型時要考慮到包容性,明天我們將實際操作 “Google Cloud Platform


上一篇
鐵人賽Day3 - How Google does Machine Learning (2/5)
下一篇
鐵人賽Day5 - How Google does Machine Learning (4/5)
系列文
Machine Learning with TensorFlow on Google Cloud Platform30

尚未有邦友留言

立即登入留言