iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 30
1
Google Developers Machine Learning

Google machine learning 學習筆記系列 第 30

【Day 30】 Google ML - 30天內容回顧與課程索引, 參賽心得, 未來計畫與感謝

今天是最後一天了,我們就來稍微回顧一下這30天走過的路,
以及這30天過程中的心得,最後我想說文章的未來計劃與表達感謝。


30天內容回顧與課程索引

在這30天的課程中,我們完成了兩個google所提供的課程,以下有學習內容的整理。

訂閱課程

【Day 1】 Google ML - 參賽原因 與 就先從認識 coursera 與訂閱課程開始第一天吧


在第一個課程中,主要了解一些基礎知識,
以及看google在GCP上分享一些已經有的專案。
這部分的內容多與將ML的結果實際運用至商業化有關。

基礎知識

學習目標 介紹內容
基礎ML知識 什麼是ML? 為什麼ML最近才紅起來? 可參考:【Day 3】
設計ML問題 如何設計一個ML問題?可參考:【Day 4】
ML與一般算法比較 比較一般算法與ML算法,看出ML的優勢。可參考:【Day 11】

ML的應用策略

學習目標 介紹內容
ML的成功策略 使用ML要成功,常需要的關鍵策略。可參考:【Day 5】
ML各階段與比重分配 企業運行ML時,在ML的各階段應該放的比重與心力。可參考:【Day 6】
ML失敗的常見原因 大部分企業使用ML卻失敗的前十大主因。可參考:【Day 6】
企業如何引入ML ML在企業運行的五大階段與注意事項。 可參考:【Day 7】

GCP認識篇

學習目標 介紹內容
在GCP上運行ML的階段 在GCP上運行ML大概有哪五大階段? 可參考:【Day 2】
GCP上ML的介紹 GCP上ML的介紹。可參考:【Day 8】【Day 11】
已訓練好的ML模型 已訓練好的ML模型。建議可直接使用,不需要再自己訓練。如:Vision API(圖片辨識),Video intelligence API(影片辨識),Speech API(語音辨識),Translation API(語言翻譯),Natural Language API(自然語言處理)。介紹:【Day 4】,詳細整理與比較:【Day 12】、lab實作:【Day 14】

GCP上的 lab 實作

Lab 介紹內容
Lab事前準備 Lab 0 - 在GCP上開始lab前的事前準備與注意事項。可參考:【Day 9】
GCP上使用VM Lab 1 - 在GCP上分析地震資料與製圖,並儲存在雲端。可參考: 【Day 10】
BigQuery與Datalab Lab 2 - 使用 BigQuery 與 Datalab 視覺化分析資料。可參考:【Day 13】
google ML APIs Lab 3 - 使用google已訓練好的ML模型進行實作。如:Vision API(圖片辨識),Video intelligence API(影片辨識),Speech API(語音辨識),Translation API(語言翻譯),Natural Language API(自然語言處理)。可參考:【Day 14】

在第二個課程中,我們深入去介紹如何訓練出一個好的ML模型,
包含ML模型的演算法、架構與一些模型好壞的評估方法。

ML中的不同學習種類

【Day 15】 監督式學習(Supervised Learning) 與 非監督式學習(Unsupervised Learning) 的介紹和比較

訓練「一個」ML模型

這裡以監督式學習(Supervised Learning)為例

階段 要做的事情 簡介
(訓練前) 決定資料集與分析資料 你想要預測的是什麼資料? 這邊需要先知道 examplelabelfeatures的概念。介紹可參考:【Day 15】,而我們這次作為範例的訓練資料集介紹在【Day 19】
(訓練前) 決定問題種類 依據資料,會知道是什麼類型的問題。regression problem(回歸問題)? classification problem(分類問題)? 此處可參考:【Day 16】、與進階內容:【Day 17】
(訓練前) 決定ML模型(ML models) 依據問題的種類,會知道需要使用什麼對應的ML模型。回歸模型(Regression model)? 分類模型(Classification model)? 此處可參考:【Day 18】神經網路(neural network)? 簡介於:【Day 25】
(模型裡面的參數) ML模型裡面的參數(parameters)超參數(hyper-parameters) 此處可參考:【Day 18】
(訓練中) 調整模型 評估當前模型好壞 損失函數(Loss Functions):使用損失函數評估目前模型的好與壞。以MSE(Mean Squared Error), RMSE(Root Mean Squared Error), 交叉熵(Cross Entropy)為例。此處可參考:【Day 20】
(訓練中) 調整模型 修正模型參數 梯度下降法 (Gradient Descent)為例:決定模型中參數的修正「方向」與「步長(step size)」此處可參考:【Day 21】
(訓練中) 調整腳步 調整學習腳步 透過學習速率(learning rate)來調整ML模型訓練的步長(step size),調整學習腳步。(此參數在訓練前設定,為hyper-parameter)。此處可參考:【Day 22】
(訓練中) 加快訓練 取樣與分堆 設定batch size,透過batch從訓練目標中取樣,來加快ML模型訓練的速度。(此參數在訓練前設定,為hyper-parameter)。與迭代(iteration),epoch介紹。此處可參考:【Day 23】
(訓練中) 加快訓練 檢查loss的頻率 調整「檢查loss的頻率」,依據時間(Time-based)步驟(Step-based)。此處可參考:【Day 23】
(訓練中) 完成訓練 (loop) -> 完成 重覆過程(評估當前模型好壞 -> 修正模型參數),直到能通過「驗證資料集(Validation)」的驗證即可結束訓練。此處可參考:【Day 27】
(訓練後) 訓練結果可能問題 「不適當的最小loss?」 此處可參考:【Day 28】
(訓練後) 訓練結果可能問題 欠擬合(underfitting)?過度擬合(overfitting)? 此處可參考:【Day 26】
(訓練後) 評估 - 性能指標 性能指標(performance metrics):以混淆矩陣(confusion matrix)分析,包含「Accuracy」、「Precision」、「Recall」三種評估指標。簡介於:【Day 28】、詳細介紹於:【Day 29】
(訓練後) 評估 - 新資料適用性 泛化(Generalization):對於新資料、沒看過的資料的模型適用性。此處可參考:【Day 26】
(訓練後) 評估 - 模型測試 使用「獨立測試資料集(Test)」測試? 使用交叉驗證(cross-validation)(又稱bootstrapping)測試? 此處可參考:【Day 27】
(資料分堆的方式) (訓練前) 依據上方「模型測試」的方法,決定資料分堆的方式:訓練用(Training)、驗證用(Validation)、測試用(Test)。此處可參考:【Day 27】

從所有ML模型的訓練結果中,找到「最好的」ML模型:【Day 27】

原因:「訓練好一個模型」不等於「找到最好的模型」

階段 要做的事情
(訓練模型) 使用「訓練資料集(Training)」訓練模型(調整參數),也就是「上方表格」在做的內容
(結束訓練) 訓練到通過「驗證資料集(Validation)」結束訓練(未達到overfitting的狀態前)
(模型再調整) 超參數(hyperparameters)調整或神經網路的「layer數」或「使用的node數」(一些訓練前就會先決定的東西)
(loop) (模型再調整)後,重複上述(訓練模型)、(結束訓練),完成訓練新的模型
(找到最佳模型) 從「所有訓練的模型」中,找到能使「驗證用資料集(Validation)」最小的loss,完成(找到最佳模型)
(決定是否生產) 可以開始決定要不要將此ML模型投入生產。此時我們可以使用「獨立測試資料集(Test)」測試? 使用交叉驗證(cross-validation)(又稱bootstrapping)測試?

訓練ML模型的小實驗

文章 實驗內容
【Day 24】 TensorFlow Playground 的簡介與介面介紹
【Day 24】 learning rate 的改變對訓練過程的影響
【Day 25】 使用神經網路(neural network)分類資料
【Day 25】 觀察batch size如何影響gradient descent

參賽心得

這次是我第一次參加鐵人賽,
原先預定的目標是希望能完成將google的五門課完成並做些Side Project,
但後來開始上課後,發現五門課的份量真的滿多的,
再加上一天能用的時間有限,而30天的時間就像是馬拉松一樣,
應該照自己最合適的步調來跑,否則很怕跑到一半心有餘而力不足,
於是就照著自己一天能看的量,並加上重新整理內容的時間分配進度。

每日更新確實是一個非常大的挑戰,生活中也還有其他事情需要忙碌,
每篇文章大約都花我五~九小時不等才完成,
說實在真的有占用到一些自己處理其他事情的時間,
參與鐵人賽的期間,就像將自己每日的時間濃縮,但時間長了也會開始疲憊,
但這時一看到有其他鐵人也跟著自己一起賽跑著,似乎又有某種新的動力燃了起來。
最後終於度過了鐵人賽這個艱難的考驗,真的有種說不出的成就感。

自己本來就有在做AI相關的研究,然後自己的個性也很喜歡整理東西,
也趁著這次機會的好好地把自己的觀念整理一次,
並且一有機會就加上「自己的註」,與自己先前就會的知識作連結。
在這過程中,也讓自己的觀念更加有脈絡與條理。

另一方面,我文章寫到途中後就有個打算,
未來我希望能把我的文章當成字典,當自己有遺忘的觀念的時候,
隨手打開文章稍微搜尋一下,就能找到自己想要複習的觀念。

最後,第一次寫鐵人賽的文筆不敢說很好,
而且又是這種專業度很高的文,
自己也很怕自己的專業度不夠能與iT邦上眾多大神相比。
真的很感謝大家願意讀完我的文章。


未來計畫

「學習是沒有止境的。」

不論寫到哪,終究會有新的知識需要學習,
未來這個系列我也還會繼續寫文章,文章會不定期的再更新。
更新內容會與原先我希望能夠完成的其他課程有關。

也希望能藉此讓自己走過的路,能夠留下一些紀錄與整理。


感謝

感謝所有訂閱的讀者、讀過我文章的讀者們,希望我的文章能讓你們有所收穫。
感謝所有一起奮鬥的鐵人們,你們的堅持也是我持續寫文章的動力。
感謝朋友們的支持,沒有抱怨我每天在fb發文很吵。
(但如果沒這樣的話,似乎少了點那種莫名的壓力去堅持完成鐵人賽)
感謝google提供這樣免費的學習課程。
感謝iT邦幫忙舉辦鐵人賽這樣的活動。

最後,也感謝正在讀這篇文章的你!


上一篇
【Day 29】 Google ML - Lesson 13 – 以混淆矩陣(confusion matrix)分析ML模型好壞,可評估的三種指標Accuracy, Precision, Recall
系列文
Google machine learning 學習筆記30
1
Jason Hung
iT邦新手 5 級 ‧ 2019-10-01 14:31:55

/images/emoticon/emoticon42.gif恭喜完賽,很用心的系列文。

嗡嗡 iT邦新手 5 級 ‧ 2019-10-01 18:49:15 檢舉

感謝支持^ ^

1

遲來的恭喜XD 真心覺得寫得很認真
每次忘了google coursera上講的內容就直接來看你的筆記了 哈哈哈哈哈

嗡嗡 iT邦新手 5 級 ‧ 2019-10-04 01:25:47 檢舉

謝啦! 我也從你的股票文學到很多!

0
阿展展展
iT邦好手 1 級 ‧ 2020-03-03 09:55:52

恭喜完賽 \0.0/

我要留言

立即登入留言