➣ Reading Time: 21 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


6. It’s all about data (接續昨天的編號)

課程地圖

  • What it means to be AI first
    • It’s all about data

這章節就開始再講有關於資料的事情了,
首先我們要知道,很多資料是很難搞的,
例如下圖的例子:
https://ithelp.ithome.com.tw/upload/images/20190905/20120424rbwC8cRgYj.png

你可能會想…這些資料有什麼特別的?
這些資料很多都是”在地的店名”,
我們稱之為”hard queries, local queries”
而且人們搜尋這個並不是在找網站,而是在找地圖上的商家,
這時你會想一個個的替每家店寫一行新的code rule,
好讓你的搜尋找的到這家店嗎? 聽起來就很”笨拙”吧!

那我們來看看ML怎麼解決問題吧!
現在有個人對著google搜尋”coffee near me”
你看到了兩家店,你該怎麼推薦給他呢?
https://ithelp.ithome.com.tw/upload/images/20190905/20120424kD0lHP8HE0.png

我們先來想想怎麼收集數據,使它成為ML問題,
ML背後的想法就是”蒐集一大堆例子,使這些變為知識並做未來的預測

這問題中未來的預測是什麼?

很簡單,就是這兩家咖啡店的其中一家。

可是這問題的例子呢?
* 比較喜歡去比較近的店?
* 比較喜歡評價比較高的店?
* 比較喜歡服務時間較快速的店?
* 咖啡的品質呢?
* 咖啡的價格符合CP值嗎?
* 會不會剛好沒有供應咖啡?
* 搞不好你更喜歡其中一家店的附餐三明治?
* 能不能坐下好好喝一杯咖啡?

…… 太多種可能要考慮的點了
那你說我們如果要coding,你要將上述的問題全部變成一個個if的判斷條件式嗎?

所以google寧願讓用戶告訴我們,而不是google自己猜測並寫了一大堆rule,
我們用大量數據做權衡評估結果,而現在我們先將問題簡化成只考慮距離,
但資料怎麼來?

一開始還是以heuristics的方式為主,但google的心態是,
等到資料足夠時(有夠多的例子),就會拋棄heuristics的方法。

這裡的例子,就是我們前面所說的labeled data,
* input:到商店的距離
* label:用戶喜歡/不喜歡

然後就開始蒐集資料,能整理出如下圖的結果,
https://ithelp.ithome.com.tw/upload/images/20190905/20120424Q2Mqt8TyQm.png

很明顯的我們就能看出,當咖啡店離我們越遠,越沒有人想去。

所以,ML就是關於收集適當data,
然後在良好學習與取得能信任的例子之間取得平衡。


7. Framing an ML problem

課程地圖
* What it means to be AI first
* Framing an ML problem
* Lab Intro – Framing an ML Problem
* Framing an ML problem
* Lab debrief

這邊有個ML學習單(可以算是要做ML問題之前要想的心法了吧):

The first framing (maching learning problem)
-> If the use case was an ML problem….

1) What is being predicted?
你將預測的東西是什麼,也就是你的答案”X”(label)
2) What data is needed?
你需要什麼數據呢? <- 非常多種data都有可能會有影響(大量各種的inputs)

The second framing (software probelm)
-> Now imagine the ML problem is a question of software

3) What is the API for the problem during prediction?
我們需要透過API取得什麼樣的資料?
4) Who will use this service? How are they doing it today?
誰會使用這樣的服務? 這使用者今天在做什麼?

The third framing (data problem)
-> Lastly, cast it in the framework of a data problem. What are some key actions to collect, analyze, predict, and react to the data/predictions (different input features might require different actions)

5) What data are we analyzing?
我們要分析什麼資料?
6) What data are we predicting?
我們要預測什麼?
7) What data are we reacting to?
當預測結果出來時,我們要做什麼反應?


8. Demo: ML in applications

課程地圖
* What it means to be AI first
* ML in applications
* Demo: ML in applications

舉例:Aucnet – 日本最大的實時汽車拍賣服務
以前是拍下多張照片上傳,
經銷商還要一一比對並指定汽車的型號與部分,非常耗時。

現在只要照著網站上的所說的上傳車子不同角度的照片,
資料只要足夠,透過ML就可以做到即時分析車子的各種資訊,
甚至還能估計出車子目前的售價範圍。


9. Pre-trained models

課程地圖
* What it means to be AI first
* Pre-trained models

上章所提到的Aucnet,就是使用在GCP使用Tensorflow服務做成的。

最簡單的在我們的作品中使用ML的方法,就是使用Pre-trained models,

https://ithelp.ithome.com.tw/upload/images/20190905/201204240aeXEMUKLy.png

我們可以看見一般的訓練ML方法在左邊,
但右邊的Pre-trained ML models,
就是google都已經幫你訓練好了,可以直接拿這些ML模型使用。

舉例:Ocado – 網路最大線上雜貨店
* 以往的方式,寫email,慢慢看慢慢分析
* 後來使用了NLP(自然語言處理),提取email中的各種資料,
幫助它們能分析email的內容,還可以確認優先級。

但是越來越多客戶不想寫信,它們更希望的是直接交談。
* 以前的方法,可能要一個個回答他們的電話
* 現在的方法,使用Dialogflow (google的對話代理工具),
直接分析對話,拆解使用者需求,能達到一樣的效果。

(影片後面為Dialogflow的演示,以前打黑客松有稍微玩過一下,
也許之後有做這30天的Side Project可以再來玩一下這個?)


10. The ML marketplace is evolving

課程地圖
* What it means to be AI first
* The ML marketplace
這張主要在介紹一些有名的品牌或企業,
使用google的Pre-trained ML models與他們的用法

https://ithelp.ithome.com.tw/upload/images/20190905/20120424COoh4mLocI.png

以下只說明技術部分:
* AUCNET
* custom models – 傳統的土法煉鋼,自己從頭建啦! (膜拜)
* Ocado
* NLP API – 自然語言,辨識情緒與文章entities(實體)
* Giphy
* vision API – 尋找文字、(另外的例子:拒絕不適當的上傳)
* OCR – 光學文字識別
* Uniqlo
* Dialogflow – google更高階的應用 (裡面一堆功能都先幫你內建好呢!)

他們提出的觀點是,現在ML這個領域也有分high level(高階)與low level(低階),
我們想做一個應用,以現在科技的成熟,也不一定要從low level(低階)出發。

雖然像上述一樣許多已經成熟的API可以直接使用非常方便,
不過不見得所有的應用都有像上述的API,
所以我們將從custom models開始教學,
畢竟市場上也必須有人為一些尚未有的功能建構出API,
而或許建構出那個API的人就會是你。 (感受到期待與壓力XD)


本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽
【Day 4】 Google ML – Lesson 3 – 我們要怎麼樣設計一個ML問題? 與google提供的一些已訓練好能直接使用的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天內容回顧與課程索引, 參賽心得, 未來計畫與感謝