➣ 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


1. What it means to be AI first

課程地圖

  • What it means to be AI first
    • What it means to be AI first

什麼是AI(Artificial Intelligence)? 與ML(machine learning)差在哪?

AI是一種discipline(學科),有許多的theory and methods

什麼是ML(machine learning)?

ML是一種toolset(工具集),ML就是拿來解AI問題的
(ML是讓machine訓練與學習用的,他們沒有intelligent,但會become intelligent)

https://ithelp.ithome.com.tw/upload/images/20190903/20120424lt4Wpla3jg.png


2. Two stages of ML

課程地圖
* What it means to be AI first
* Two stages of ML

ML的兩個stages:

  • Stage1 – training
  • Stage2 – inference(推理)(也有些人稱為prediction(預測))

Stage1 : training

這邊以 Supervised Learning (監督式學習)作為舉例:
* input: input資料本身
* label: input資料的所對應的答案 (見下圖左邊)

ML model的本身就是一種數學函數(math functions)
我們的目標 = 讓input經過我們的數學函數(math functions)後產生label
ML 需要的就是 labeled examples = input + label(ture anwser)
https://ithelp.ithome.com.tw/upload/images/20190903/20120424luGiaVzKog.png

Stage2 : inference

經過這樣的學習之後,即使是沒看過的貓,我們的模型也能夠正確的判斷他是貓。
但要達成這樣的事情,關鍵是我們會需要非常非常多的資料

https://ithelp.ithome.com.tw/upload/images/20190903/201204248HkYbc3jNJ.png

所以一整個ML模型的產生(two stages)的流程如下圖:

https://ithelp.ithome.com.tw/upload/images/20190903/20120424kxISeqa2UH.png

一個好的ML模型,不能單單只有在Stage 1上面下非常多的功夫,
很多研究數據的人員,甚至是書本、教科書都過度強調Stage 1的training重要性,
但這裡就會掉入一個陷阱,過度強調Stage 1模型訓練,
而不進入Stage 2的生產階段,往往實際上所訓練出來的ML模型都是沒有實際用途的。

https://ithelp.ithome.com.tw/upload/images/20190903/2012042476diXgyJML.png


3. ML in Google products

課程地圖
* What it means to be AI first
* ML in Google products

每層layer都是一個function,
一整個model = functions,也稱之為Neural Network

然而Neural Network(NN)也只是一種數學模型而已

其他還有常用在ML的數學模型像是: linear methods, decision trees, radial basis functions, ensembles of trees, radial basis functions

https://ithelp.ithome.com.tw/upload/images/20190903/20120424jee8cwzDwq.png

最早的NN沒有這麼多層layer,只有一層,
然而這也代表著為何最近ML才紅起來的幾個關鍵原因:

  • 原因1在於電腦運算能力

    越多層(deep NNs)自然需要更強大的電腦運算能力

  • 原因2在於資料的數量

    越多層(deep NNs)需要更多的資料來調整參數

  • 原因3在於計算技巧

    越多層(deep NNs)需要更佳的計算技巧,否則會花非常大量的時間運算,甚至有大量沒幫助的參數

總和以上原因,這些都是在近幾年才被解決的問題,
所以google才能在近幾年有近4000個deep learning的應用。

Google的產品中到處充滿了ML models,
而且通常一個產品可能充滿了無數個ML models,而非只有”一個”
https://ithelp.ithome.com.tw/upload/images/20190903/20120424GSXNPxkR4G.png

一個產品中會碰到許多複雜的問題,而我們必須還要去拆解問題,
拆解一個小問題之後,才能針對一個小問題去想出一個ML model去解決它。

One solution needs many ML models.

舉例:how to forecast rather an item will go out of stock?
這不會是只靠一個ML model能解決的問題,
光這個問題我們就能拆成三個小問題,
但三個小問題之中又不見得只靠一個ML model就能解決,
也因此我們才會說一個產品可能充滿了無數個ML models,
而且可能才解決了一個複雜的問題。
https://ithelp.ithome.com.tw/upload/images/20190903/20120424Dd2lclow5d.png


4. Google Translate and Gmail

課程地圖
* What it means to be AI first
* Demo: ML in Google products
* Google Translate and Gmail

這個章節大概介紹了 Google Translate 與 Gmail 裡面是怎麼使用 ML的

光是 Google Translate 裡面大概就有這六種不同的ML在使用
https://ithelp.ithome.com.tw/upload/images/20190903/20120424pi7gcmKHsT.png

Gmail 裡面提到的是跟 Smart Reply (自動回覆)有關的功能,
用到 sequence to sequence model,

不過這樣也表示我們收到的信內容其實有被拿去丟進模型分析了,
雖然不是直接被人拿去閱讀就是(微妙)…… 科技進步與個人資料保護的兩個難題啊。


5. Replacing heuristics

課程地圖
* What it means to be AI first
* Replacing heuristics

引用自 Eric Schmidt, the Executive Chairman of the Board at Google 的一段話

“Machine learning,” says Eric, “This is the next transformation. The programming paradigm is changing. It’s not programming a computer. You teach a computer to learn something and then it does what you want.”

https://ithelp.ithome.com.tw/upload/images/20190903/20120424EwFepr0EVP.png

這句話非常有趣,裡面沒有提到任何有關於data的事情
許多人都認為ML只是在做資料結果的預測,
他認為ML是一種可以取代programming的方式,
ML是一種logic,而並非只是在處理data。

舉一個例子,例如我們今天想搜尋”Giants”,
google要怎麼知道我們想搜尋的是 San Francisco Giants 還是 New York Giants 呢?

之前google的作法,會在搜尋時先記錄使用者的位置,
依據不同的位置給予不同的搜尋結果(如下圖),
我們可以看到有一堆rules,來決定顯示什麼結果給使用者

https://ithelp.ithome.com.tw/upload/images/20190903/20120424bwxp2l0VG8.png

很明顯的,這樣的做法是非常”笨重”的,
這種做法,每當我們想加入一個新的結果,
我們必須再為了多那結果去coding一行判斷式,只為了判斷新的東西,
而且這種做法通常會導致非常難維護。

然而,我們怎麼不嘗試用使用者的搜尋熱度去自動決定結果呢?
因此,依據此概念產生的deep ML model, RankBrain就出現了,
除了依照使用者的搜尋熱度可以自動的動態調整顯示結果
而且這樣的模型還能夠靠自己就能不斷的進步

https://ithelp.ithome.com.tw/upload/images/20190903/20120424jsvxsChklN.png

透過 ML 取代 heuristic rules 就是在講像這樣的事情,

ML還能夠替我們解決什麼問題? 如果提到 ML 未來的可能性,
google認為,只要任何是能夠被寫下rules的東西,ML都可以完成,
而且不只侷限於統計分析的這類事情。

Notice that saying that machine learning is a way to replace rules, notice that this is a far more expansive answer to what kinds of problems can machine learning solve.

所以 Google 說自己是 “AI-first” company,
他們認為 ML 在未來可以取代任何 coding 中所寫的 rules,
只要能收集正確的資料,都可以透過 ML 去完成同樣的問題。

我們可以開始用新的角度來思考問題,

我們不用再去想該如何替問題的改變去 coding rules,
我們只需要想怎麼根據資料去訓練模型。

我們不用再去想要為了修bug,去替它增加一個新的 rules,
我們只需要想怎麼根據新資料去繼續訓練模型。

至於處理那些特別的inputs與特別的rules,
我們只需要想怎麼建立更大規模的模型,來應對這些需要的預測。

(這段真的太猛了…,如果真的實現了等於不用再慢慢地針對情況一一對應coding了,
未來的工程都是在訓練模型,只是將我們coding所實現的rule,皆轉換成訓練的目標)


本文同步發佈在: 第 11 屆 iT 邦幫忙鐵人賽
【Day 3】 Google ML – Lesson 2 – What it means to be AI first (上) – 什麼是ML? 為什麼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天內容回顧與課程索引, 參賽心得, 未來計畫與感謝
⭐【喜歡我的文章嗎? 歡迎幫我按讚~ 讓基金會請創作者喝一杯咖啡!
如果喜歡我的文章,請幫我在下方【按五下Like】 (Google, Facebook 免註冊),會由 「LikeCoin」 贊助作者鼓勵繼續創作,讀者們「只需幫忙按讚,完全不用出錢」哦!

likecoin-steps