iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 24
0
Google Developers Machine Learning

Machine Learning with TensorFlow on Google Cloud Platform系列 第 24

鐵人賽Day24 - Art and Science of Machine Learning (2/6)

超參數的調整

主旨:了解超參數與如何調整其值

今天我們將會講到:

  • 參數與超參數之間的差別
  • 網格搜索(grid search)之外的方法
  • 利用 Cloud ML 來做超參數調整

參數 v.s 超參數

ML的模型是由參數和超參數所組成的數學函數,其中參數是在訓練過程中會隨著變化的數,而超參數卻是在訓練前就先決定好的數值,訓練過程中不會再跟著改變了。ML中,超參數包含了有如學習率、正規化率、批次大小、隱藏層數、每層的神經元數等等。

超參數雖然在訓練時不會改變,但卻會影響到損失函數的行為,如下圖,學習率的大小,會影響損失函數收斂的速度和位置,太小會收斂的很慢、太大會發散或收斂不到最低的位置。

超參數搜索

既然超參數是在訓練前就要選定的,那麼我要怎麼知道我選的值是好的呢?答案是沒辦法直接知道的,你必須透過搜索的過程才能知道哪些是比較適合的。而說到搜索,大部分的人可以直接輕鬆地想到網格搜索的方式,然而這種方式卻很花費時間,但是不用擔心,做這種事情也可以交給 Google Cloud ML,他們有發表了這方面的研究論文,並且實作在 Cloud ML 上,讓你可以輕鬆的搜索超參數的值。

那麼要如何使用 Cloud ML 做超參數搜索呢?簡單來說可以分成下面3個步驟:

  1. 將超參數變成命令指令的參數:

  1. 確定輸出結果不會互相衝突

  1. 提供訓練用的超參數

接著我們就來實作看看吧!

[GCP Lab實作-18]:藉由 AI Platform 調整超參數來增進模型精準度

這個實作中,我們將學會:

  • 藉由 AI Platform 調整超參數來增進模型精準度

[Part 1]:超參數調整

  1. 登入 GCP,並在 storage 創建一個 bucket。

  2. 開啟Notebooks後,複製課程 Github repo (如Day9的Part 1 & 2步驟)。

  3. 在左邊的資料夾結構,點進 training-data-analyst > courses > machine_learning > deepdive > 05_artandscience ,然後打開檔案 b_hyperparam.ipynb

  4. 設定環境變數名稱如 PROJECT、BUCKET、REGION等等:

  1. 因為要送到 Cloud 做分散式訓練,就和之前實作的時候一樣,我們要使用 Estimator API

  1. 編寫 task.py 和 model.py 兩個程式碼檔案,詳細程式碼可以參考這裡

  1. 先在本機端訓練模型,看看初步結果,RMSE是 112,855 元:

  1. 接著就準備要送到 Cloud AI Platform 之前,要先編寫 hyperparam.yaml,裡面就是描述要搜尋的超參數和其範圍、種類等等:

  1. 將 job 送到 Cloud AI Platform, jobId 可以用來查詢 job 的狀態:

  1. 指令查詢 job 的狀態:

  1. 在 Cloud AI Platform 的 Job 也可以看到目前 job 的狀態:

  1. 完成後點進去可以看到搜尋超參數的細節,可以看到總共找了5次,其中最低的RMSE是 113,994 元,使用的學習率是 0.017,批次大小為 52。


今天介紹了超參數的調整,明天我們將介紹 “正規化和邏輯迴歸”。


上一篇
鐵人賽Day23 - Art and Science of Machine Learning (1/6)
下一篇
鐵人賽Day25 - Art and Science of Machine Learning (3/6)
系列文
Machine Learning with TensorFlow on Google Cloud Platform30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言