超參數調整總覽

本頁說明超參數調整的相關概念,這是由 AI Platform 提供的自動化模型強化功能。超參數調整運用 Google Cloud Platform 的處理基礎架構,可在訓練模型時測試不同的超參數設定。這項功能可提供最佳化的超參數值,儘可能提高模型的預測準確率。

什麼是超參數?

「超參數」包含了管理訓練程序本身的資料。

訓練應用程式在訓練模型的過程中會處理三種資料類別:

  • 「輸入資料」(也稱做訓練資料) 是個別記錄 (樣本) 的集合,其中包含了對機器學習問題來說很重要的特徵。系統在訓練期間會使用這種資料設定模型,以準確地預測類似資料的新樣本。不過,輸入資料中的值一律不會直接成為模型的一部分。

  • 模型的「參數」是指選定的機器學習技術用來調整資料的變數。舉例來說,深層類神經網路 (DNN) 由處理節點 (神經元) 組成,每個處理節點會包含將資料傳輸到網路時對資料執行的作業。DNN 經過訓練後,每個節點會包含一個權重值,可告知您的模型其對於最終預測的影響程度。那些權重值是模型參數的範例。從許多方面來說,模型的參數「是」模型,用於區別您的特定模型和其他處理類似資料的相同類型模型。

  • 您的「超參數」是管理訓練程序本身的變數。舉例來說,在設定深層類神經網路的過程中,會需要決定輸入層和輸出層之間要使用多少節點的隱藏層,以及每層要使用多少節點。這些變數與訓練資料沒有直接關聯,屬於設定變數。請注意,參數在訓練工作中會有所變更,而超參數在工作期間通常會保持不變。

您的模型「參數」會透過訓練程序進行最佳化 (也可以稱為「調整」):您透過模型的作業執行資料、比較預測結果和每個資料樣本的實際值、評估準確率,並進行調整,直到找出最適合的值。「超參數」的調整方式為執行整個訓練工作、查看累積的準確率,並進行調整。這兩種情況都會修改模型的組成,以找出解決問題的最佳組合。

如果不使用 AI Platform 超參數調整這種自動化技術,您必須在多次執行訓練的過程中手動調整超參數,才能取得最佳值。超參數調整技術讓找出最佳超參數設定的程序更加簡單方便。

超參數調整的運作方式

超參數調整的運作方式是在單一訓練工作中執行多個「試驗」。每個試驗都會根據您選定的超參數,使用符合其指定限制範圍內的值,完整執行訓練應用程式。AI Platform 訓練服務會追蹤每個試驗的結果,並調整後續的試驗。當工作完成後,您可以取得所有試驗的匯總資料,以及根據您的指定條件算出的最佳設定值。

超參數調整必須在 AI Platform 訓練服務和您的訓練應用程式之間進行明確通訊。您的訓練應用程式會定義模型所需的所有資訊。您必須定義您要調整的超參數 (變數),並指定每個超參數的值。

要瞭解 AI Platform 如何利用貝氏最佳化方法進行超參數調整,請參閱這篇網誌文章:在 Cloud Machine Learning Engine 中使用貝氏最佳化方法進行超參數調整

除了貝氏最佳化方法以外,AI Platform 還可以最佳化多個超參數調整工作。如果您針對類似模型進行超參數調整,只變更目標函式或新增輸入資料欄,AI Platform 會隨著時間持續改善,提升超參數調整的效率。

超參數調整最佳化的項目

超參數調整可最佳化您指定的單一指定變數,也稱為超參數指標。從評估過程中算出的模型準確率是一個常見指標。指標必須是數值,您可以指定是否要調整模型以最大化或最小化指標。

當您使用超參數調整來啟動工作時,就會建立超參數指標的名稱。當您要指派名稱給新增到訓練應用程式的純量彙總時,將會用到這個名稱。

指標的預設名稱為 training/hptuning/metric。我們建議您指定自訂名稱。唯一的運作差異在於如果您使用自訂名稱,必須在工作要求中設定 HyperparameterSpec 物件的 hyperparameterMetricTag 值,使其與您選擇的名稱相符。

AI Platform 如何取得您的指標

您可能會注意到,這份說明文件並未針對將超參數指標傳送給 AI Platform 訓練服務提供相關操作說明。這是因為服務會監控訓練應用程式產生的 TensorFlow 匯總事件,並擷取指標。

設定超參數值的流程

如果不使用超參數調整服務,您可以透過任何方式設定超參數,例如在訓練應用程式中進行設定。例如,您可以透過將指令列引數傳送給主要應用程式模組,或是在設定檔中提供給應用程式的方式來設定超參數。

使用超參數調整時,您必須使用以下程序來設定要用於調整的超參數值:

  • 在主要訓練模組中,為每個調整的超參數定義指令列引數。

  • 在應用程式的 TensorFlow 程式碼中,使用那些引數傳送的值來設定對應的超參數。

使用超參數調整來設定訓練工作時,您可以定義每個要調整的超參數、超參數類型,以及要嘗試的值範圍。您可以使用與主模組中定義的對應引數相同的名稱來識別每個超參數。訓練服務中包含執行應用程式時使用這些名稱的指令列引數。

選取要調整的超參數

關於如何選擇要調整的超參數,目前幾乎沒有普遍共識。如果您對正在使用的機器學習技術有經驗,您可能會對超參數的行為方式有所瞭解。您也可以透過機器學習社群找到相關建議。

無論選用哪些超參數,瞭解其含意都很重要。每個您選擇要調整的超參數都可能提高成功調整工作所需的試驗次數。訓練 AI Platform 時,您必須支付工作執行時間的費用;仔細選擇要調整的超參數可降低訓練模型的時間和成本。

超參數類型

工作參考說明文件會列出支援的超參數類型。在 ParameterSpec 物件中,請指定每個超參數的類型和相關值範圍,如下表所示:

類型 值範圍 值資料
DOUBLE minValuemaxValue 浮點值
INTEGER minValuemaxValue 整數值
CATEGORICAL categoricalValues 類別字串清單
DISCRETE discreteValues 遞增排序的值清單

超參數縮放

您可以指定超參數要執行的縮放類型。建議對 DOUBLE 和 INTEGER 類型進行縮放。可使用的縮放類型如下:

  • UNIT_LINEAR_SCALE
  • UNIT_LOG_SCALE
  • UNIT_REVERSE_LOG_SCALE

搜尋演算法

您可以在 HyperparameterSpec 物件中指定搜尋演算法。如果未指定演算法,您的工作會使用預設的 AI Platform 演算法,這會讓參數搜尋以更有效率的方式搜尋參數空間,進而獲得最佳解決方案。

可使用的值如下:

  • ALGORITHM_UNSPECIFIED:產生的行為與未指定搜尋演算法時相同。AI Platform 會使用預設演算法,套用貝式最佳化方法來搜尋可能的超參數值空間,進而為您的超參數組合提供最有效率的技術。

  • GRID_SEARCH:在可行空間內執行簡單格狀搜尋。如果您要指定的試驗數量超過可行空間中的點數,這個選項就非常實用。在這種情況下,如果您沒有指定格狀搜尋,AI Platform 預設演算法可能會產生重複的建議。如要使用格狀搜尋,所有參數的類型必須是 INTEGERCATEGORICALDISCRETE

  • RANDOM_SEARCH:在可行空間內執行簡單隨機搜尋。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
TensorFlow 適用的 AI Platform