➣ Reading Time: 22 minutes

前言

今天繼續完成 How Google does Machine Learning 的第二章節最後一部分~

這次鐵人賽的30天中,我目前所寫文章的所有課程目錄如下:

Course – How Google does Machine Learning

第二章節的課程地圖:(紅字標記為本篇文章中會介紹到的章節)
* What it means to be AI first
* What it means to be AI first
* Two stages of ML
* ML in Google products
* Demo: ML in Google products
* Demo: ML in Google Photos
* Google Translate and Gmail
* Replacing heuristics
* It’s all about data
* Framing an ML problem
* Lab Intro – Framing an ML Problem
* Framing an ML problem
* Lab debrief
* ML in applications
* Demo: ML in applications
* Pre-trained models
* The ML marketplace is evolving <— (昨天到這邊)
* A data strategy
* Training and serving skew
* An ML strategy
* Transform your business
* Transform your business
* Lab Intro - ML use case
* Non-traditional ML use case
* Module 2 Quiz


11. A data strategy (接續昨天的編號)

課程地圖
* What it means to be AI first
* A data strategy

這邊講到google map的一些應用

https://ithelp.ithome.com.tw/upload/images/20190906/20120424VSLe7VNCkh.png

左圖:依照rule”搜尋最快路徑”

需要參考的東西:交通堵塞? 橋未開放?
怎麼蒐集上述的資料?
最後使用 A* algorithm 解決問題 (最短路徑演算法)
以結果來說,終究只是在設定rule

中間:另外一個例子,如何知道使用者在二樓?

wi-fi points, barometric pressure, typical walking speed 之類的資料
你有了這些數據,嘗試使用ML來避免寫rule

右邊:google地圖還能夠推薦使用者?

連接使用者過去的歷史,清楚使用者偏好,並進行推薦
我們希望google map能成為使用者的虛擬助手,
這問題只有ML能夠實現地圖服務的”個人化”

因此,ML就是能超越手寫規則的方法,
手寫規則有太多有可能無法實現的事情了。

從上例中左圖(通用)到右圖(個人化),
越個人化的事情越只能靠ML來實現,
(前面章節也有提到,這就是local data的問題)

但不管需不需要ML,要完成這些事情我們都需要大量大量的data
對我們而言,寫rules或models相對來說只是小case。

比喻:ML是火箭引擎,data就是燃料

If machine learning is a rocket engine, data is the fuel.

https://ithelp.ithome.com.tw/upload/images/20190906/20120424iHl5muajTk.png

不論任何的階段,Data永遠是勝利的關鍵
收集data除了要求量之外,也需要多樣化

以認識下圖為例子,如果資料太少,你可能用再複雜的規則也不知其形,
隨著資料夠多,整理的樣子就會更加得清楚。

https://ithelp.ithome.com.tw/upload/images/20190906/20120424oCTU3oys7o.png

因此,ML最重要最首先的事情,就是收集數據的策略

ML strategy is first and foremost a data strategy.


12. Training and serving skew

課程地圖
* What it means to be AI first
* Training and serving skew

在ML之前,我們還是必須要先分析一下數據
1. 分析數據也代表著要收集資料,掌握數據是最耗時又最難的部分
2. 收集好數據還需要去rating data(finding labels),有先分析過再進入ML階段可以避免做白工
3. 要建立一個好的ML模型,就要夠清楚你的資料,先分析數據也是為了這點
4. ML會將產品走向自動與規畫化,也就是ML是數據分析的延伸與擴展。

換句話說,如果不會數據分析,也不能做ML。

有一個常見ML產品的fail原因: training-serving skew

簡單說是兩個單位收集資料的方式不同,造成資料訓練與服務時沒有對應

The problem is that the result of stream processing and the result of batch processing have to be the same.

https://ithelp.ithome.com.tw/upload/images/20190906/201204241PewJj70e5.png

解決(減少問題發生的機會)方法:
用一樣的方法蒐集資料,一個同時處理batch與stream的階段
所以較好的架構應該如下圖:

https://ithelp.ithome.com.tw/upload/images/20190906/201204248z6x7w0Yiv.png


13. An ML strategy

課程地圖
* What it means to be AI first
* An ML strategy

ML要注意的事情:”ML的重點在量而不是在複雜度

即使是小的ML model有有它的價值。

另外一個心態是,多盡快失敗並反覆重試

The idea is that if you’re failing fast, you get the ability to iterate. This ability to experiment is critical in the realm of machine learning.

https://ithelp.ithome.com.tw/upload/images/20190906/201204246NwdwE53tM.png

從上圖我們可以看到,多嘗試,多快速的失敗,更能夠達到成功。
(慢慢嘗試後得到的慢速失敗(採取比較穩紮穩打的作法),反而成功的機會會小一些。)

另外提到資料,90%的企業資料皆是沒有被結構化的

試想 emails, video footage, texts, reports, catalogs, fashion shoots, events, news, you name it. All unstructured data.>

不過幸運的是,我們現在處理這些未結構化的資料,
因為有了google的各種pre-trained model已經變很簡單了,
我們就把這些unstructured data丟進這些ML APIs,
我們就能得到一些像entities, places, labels, people… 之類的資料,

https://ithelp.ithome.com.tw/upload/images/20190906/20120424Df47LPg2mY.png

因此我們不必在花時間去處理unstructured data,
丟進這些ML APIs,拿結果再丟進我們的 custom ML model 訓練即可。


14. Transform your business

課程地圖
* What it means to be AI first
* Transform your business
* Transform your business
* Lab Intro – ML use case
* Non-traditional ML use case

這章節在講ML在商業上怎麼應用
使用ML訓練的方向是什麼? 記住一個字:”delight
如何使你的使用者開心就是訓練的目標。

影片中的舉例:
* Did the card get canceled?
* Did the flight get delayed, etc.?
* Or did they just walk into your store and see an empty shelf?
* Why are they contacting you?
* Did your system automatically find the right action to take for this customer?
* Did it offer to rebook them?

只要是需要想辦法讓使用者開心的問題,都可以是我們訓練的目標。

另一個例子:既然你喜歡的音樂可能有版權問題,
何不自己用ML生一個音樂? 一定會是你最喜歡的。

商業上能受惠於ML的三種方式:
* infuse your applications with machine learning

簡化使用者輸入、更適應用戶
* use machine learning to fine-tune your business
簡化業務的流程、創造新的商業機會
* use machine learning to delight your users
用ML讓你的使用者開心。預測需求,並為他們量身打造

而這裡又有份學習單:

試著去思考公司內一個已經存在的應用,去想哪個部分能夠用ML取代呢?
  • What are some of the benefits to doing so?
    > 這樣做的優點是什麼?
  • What kinds of data would you collect if you wanted to do this?
    > 你想要這樣做需要收集什麼資料?
  • Are you collecting that data today? If no, why not?
    > 你現在能取得這樣的資料嗎?

本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽
【Day 5】 Google ML – Lesson 4 – What it means to be AI first (下) – ML要成功的秘訣與策略


參考資料

  ⭐Google Machine Learning 相關文章整理⭐:
1.訂閱課程【Google ML】1 – Google ML – 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧
⭐ML 基礎知識篇⭐:
1.基礎ML知識什麼是ML? 為什麼ML最近才紅起來? 可參考:【Day 3】
2.設計ML問題如何設計一個ML問題?可參考:【Day 4】
3.ML與一般算法比較比較一般算法與ML算法,看出ML的優勢。可參考:【Day 11】
⭐ML 應用策略篇⭐:
1.ML的成功策略使用ML要成功,常需要的關鍵策略。可參考:【Day 5】
2.ML各階段與比重分配企業運行ML時,在ML的各階段應該放的比重與心力。可參考:【Day 6】
3.ML失敗的常見原因大部分企業使用ML卻失敗的前十大主因。可參考:【Day 6】
4.企業如何引入MLML在企業運行的五大階段與注意事項。 可參考:【Day 7】
⭐GCP 認識篇⭐:
1.在GCP上運行ML的階段在GCP上運行ML大概有哪五大階段? 可參考:【Day 2】
2.GCP上ML的介紹GCP上ML的介紹。可參考:【Day 8】【Day 11】
3.已訓練好的ML模型已訓練好的ML模型。建議可直接使用,不需要再自己訓練。如:Vision API(圖片辨識), Video intelligence API(影片辨識), Speech API(語音辨識), Translation API(語言翻譯), Natural Language API(自然語言處理)。介紹:【Day 4】詳細整理與比較:【Day 12】lab實作:【Day 14】
⭐GCP 上的 lab 實作篇⭐:
1.Lab 事前準備Lab 0 – 在GCP上開始lab前的事前準備與注意事項。可參考:【Day 9】
2.GCP上使用 VMLab 1 – 在GCP上分析地震資料與製圖,並儲存在雲端。可參考: 【Day 10】
3.BigQuery 與 DatalabLab 2 – 使用 BigQuery 與 Datalab 視覺化分析資料。可參考:【Day 13】
4.google ML APIsLab 3 – 使用google已訓練好的ML模型進行實作。如:Vision API(圖片辨識), Video intelligence API(影片辨識), Speech API(語音辨識), Translation API(語言翻譯), Natural Language API(自然語言處理)。可參考:【Day 14】
⭐ML中的不同學習種類⭐:
1.【Day 15】 監督式學習(Supervised Learning) 與 非監督式學習(Unsupervised Learning) 的介紹和比較
⭐訓練「一個」ML模型⭐:
(這裡以 監督式學習(Supervised Learning) 為例)
1. (訓練前)決定資料集與分析資料你想要預測的是什麼資料? 這邊需要先知道 example、label、features的概念。介紹可參考:【Day 15】而我們這次作為範例的訓練資料集介紹在:【Day 19】
2. (訓練前)決定問題種類依據資料,會知道是什麼類型的問題。regression problem(回歸問題)? classification problem(分類問題)? 此處可參考:【Day 16】與進階內容:【Day 17】
3. (訓練前)決定ML模型(ML models)依據問題的種類,會知道需要使用什麼對應的ML模型。回歸模型(Regression model)? 分類模型(Classification model)? 此處可參考:【Day 18】神經網路(neural network)? 簡介於:【Day 25】
4.(模型裡面的參數)ML模型裡面的參數(parameters)與超參數(hyper-parameters) 此處可參考:【Day 18】
5. (訓練中) 調整模型評估當前模型好壞損失函數(Loss Functions):使用損失函數評估目前模型的好與壞。以MSE(Mean Squared Error), RMSE(Root Mean Squared Error), 交叉熵(Cross Entropy)為例。此處可參考:【Day 20】
6. (訓練中) 調整模型修正模型參數以梯度下降法 (Gradient Descent)為例:決定模型中參數的修正「方向」與「步長(step size)」此處可參考:【Day 21】
7. (訓練中) 調整腳步調整學習腳步透過學習速率(learning rate)來調整ML模型訓練的步長(step size),調整學習腳步。(此參數在訓練前設定,為hyper-parameter)。此處可參考:【Day 22】
8. (訓練中) 加快訓練取樣與分堆設定batch size,透過batch從訓練目標中取樣,來加快ML模型訓練的速度。(此參數在訓練前設定,為hyper-parameter)。與迭代(iteration),epoch介紹。此處可參考:【Day 23】
9. (訓練中) 加快訓練檢查loss的頻率調整「檢查loss的頻率」,依據時間(Time-based)與步驟(Step-based)。此處可參考:【Day 23】
10. (訓練中) 完成訓練(loop) -> 完成重覆過程(評估當前模型好壞 -> 修正模型參數),直到能通過「驗證資料集(Validation)」的驗證即可結束訓練。此處可參考:【Day 27】
11. (訓練後)訓練結果可能問題「不適當的最小loss?」 此處可參考:【Day 28】
12. (訓練後)訓練結果可能問題欠擬合(underfitting)?過度擬合(overfitting)? 此處可參考:【Day 26】
13. (訓練後)評估 – 性能指標性能指標(performance metrics):以混淆矩陣(confusion matrix)分析,包含「Accuracy」、「Precision」、「Recall」三種評估指標。簡介於:【Day 28】詳細介紹於:【Day 29】
14. (訓練後)評估 – 新資料適用性泛化(Generalization):對於新資料、沒看過的資料的模型適用性。此處可參考:【Day 26】
15. (訓練後)評估 – 模型測試使用「獨立測試資料集(Test)」測試? 使用交叉驗證(cross-validation)(又稱bootstrapping)測試? 此處可參考:【Day 27】
16.(資料分堆的方式)(訓練前) 依據上方「模型測試」的方法,決定資料分堆的方式:訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考:【Day 27】
⭐從所有ML模型的訓練結果中,找到「最好的」ML模型⭐:
( 原因:「訓練好一個模型」不等於「找到最好的模型」 )
1.(訓練模型)【Day 27】 使用「訓練資料集(Training)」訓練模型(調整參數),也就是「上方表格」在做的內容
2.(結束訓練)【Day 27】 訓練到通過「驗證資料集(Validation)」結束訓練(未達到overfitting的狀態前)
3.(模型再調整)【Day 27】 超參數(hyperparameters)調整或神經網路的「layer數」或「使用的node數」(一些訓練前就會先決定的東西)
4.(loop)【Day 27】 (模型再調整)後,重複上述(訓練模型)、(結束訓練),完成訓練新的模型
5.(找到最佳模型)【Day 27】 從「所有訓練的模型」中,找到能使「驗證用資料集(Validation)」最小的loss,完成(找到最佳模型)
6.(決定是否生產)【Day 27】 可以開始決定要不要將此ML模型投入生產。此時我們可以使用「獨立測試資料集(Test)」測試? 使用交叉驗證(cross-validation)(又稱bootstrapping)測試?
⭐訓練 ML 模型的小實驗⭐:
1.【Day 24】 TensorFlow Playground 的簡介與介面介紹
2.【Day 24】 learning rate 的改變對訓練過程的影響
3.【Day 25】 使用神經網路(neural network)分類資料
4.【Day 25】 觀察batch size如何影響gradient descent
⭐30天內容回顧與課程索引, 參賽心得, 未來計畫與感謝⭐:
1.【Google ML】30 – 30天內容回顧與課程索引, 參賽心得, 未來計畫與感謝