項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 search-input 尚未註冊或是沒有一個 view.php 檔案.

【Google ML】22 – Lesson 8 – 學習速率 (learning rate) 介紹, 透過「learning rate」調整ML模型訓練的學習速度

前言

這幾天的文章會是一系列的,會需要一起看才比較能看懂整個ML模型的輪廓,
然而因為一天能寫的內容量有限,所以我會在前言部分稍微說明我寫到哪。

複習一下ML的整個訓練過程

因為ML模型的訓練階段章節內容會分很多部分,我們要先確認好自己在哪個階段,
以免吸收新內容卻不知道用在內容的什麼地方。

★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】

而今天的文章我們要來討論一下所謂的學習速率(learning rate)
可以幫我們調整學習的「步長(step size)」。

Course – Launching into Machine Learning

第三章節的課程地圖:(紅字標記為本篇文章中會介紹到的章節)
* Optimization
* Introduction to Optimization
* Introduction
* Defining ML Models
* Defining ML Models
* Introducing the Natality Dataset
* Introducing Loss Functions
* Gradient Descent
* Gradient Descent
* Troubleshooting a Loss Curve
* ML Model Pitfalls
* TensorFlow Playground
* Lab: Introducing the TensorFlow Playground
* Lab: TensorFlow Playground – Advanced
* Lab: Practicing with Neural Networks
* Loss Curve Troubleshooting
* Performance Metrics
* Performance Metrics
* Confusion Matrix
* Module Quiz


昨日我們詳細了介紹Gradient Descent的概念,
以及Loss在參數空間所能畫出的等高圖,
今天我們要稍微更細的討論一下Loss隨著時間所變化的圖,可能會有哪些情況。

1. Troubleshooting a Loss Curve

課程地圖
* Optimization
* Gradient Descent
* Troubleshooting a Loss Curve

想像我們現在正在進行Gradient Descent的過程,
我們「修改我們ML模型的參數」依照「loss function結果的偏微分」,
我們通常會紀錄並觀察「隨著訓練時間,loss的變化」。
(這就是通常我們machine learning在做的事情)

整個ML的訓練個過程可能數小時甚至到數天,
你可以想像這樣的過程是多麼的費時,因此考慮到這點,
我們需要稍微研究一下loss curve,來看看有沒有