今天是最後一天了,我們就來稍微回顧一下這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要成功,常需要的關鍵策略。可參考:【Day 5】 |
ML各階段與比重分配 | 企業運行ML時,在ML的各階段應該放的比重與心力。可參考:【Day 6】 |
ML失敗的常見原因 | 大部分企業使用ML卻失敗的前十大主因。可參考:【Day 6】 |
企業如何引入ML | ML在企業運行的五大階段與注意事項。 可參考:【Day 7】 |
學習目標 | 介紹內容 |
---|---|
在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】 |
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模型的演算法、架構與一些模型好壞的評估方法。
【Day 15】 監督式學習(Supervised Learning) 與 非監督式學習(Unsupervised Learning) 的介紹和比較
這裡以
監督式學習(Supervised Learning)
為例
階段 | 要做的事情 | 簡介 |
---|---|---|
(訓練前 ) |
決定資料集與分析資料 | 你想要預測的是什麼資料? 這邊需要先知道 example 、label 、features 的概念。介紹可參考:【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】 |
原因:「訓練好一個模型」不等於「找到最好的模型」
階段 | 要做的事情 |
---|---|
(訓練模型 ) |
使用「訓練資料集(Training)」訓練模型(調整參數),也就是「上方表格 」在做的內容 |
(結束訓練 ) |
訓練到通過「驗證資料集(Validation)」結束訓練(未達到overfitting 的狀態前) |
(模型再調整 ) |
超參數(hyperparameters) 調整或神經網路的「layer數」或「使用的node數」(一些訓練前 就會先決定的東西) |
(loop) | (模型再調整 )後,重複上述(訓練模型 )、(結束訓練 ),完成訓練新的模型 |
(找到最佳模型 ) |
從「所有訓練的模型」中,找到能使「驗證用資料集(Validation)」最小的loss,完成(找到最佳模型 ) |
(決定是否生產 ) |
可以開始決定要不要將此ML模型投入生產。此時我們可以使用「獨立測試資料集(Test) 」測試? 使用交叉驗證(cross-validation) (又稱bootstrapping )測試? |
文章 | 實驗內容 |
---|---|
【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邦幫忙舉辦鐵人賽這樣的活動。
最後,也感謝正在讀這篇文章的你!
遲來的恭喜XD 真心覺得寫得很認真
每次忘了google coursera上講的內容就直接來看你的筆記了 哈哈哈哈哈
謝啦! 我也從你的股票文學到很多!