類神經網路迴歸

使用類神經網路演算法建立迴歸模型

類別: 機器學習/初始化模型/回歸

注意

適用于 : Machine Learning Studio (傳統)

此內容僅適用于 Studio (傳統) 。 Azure Machine Learning 設計工具中已新增類似的拖放模組。 若要深入瞭解 這兩個版本,請參閱這篇文章

模組概觀

本文說明如何使用 Azure Machine Learning Studio (傳統) 中的類 神經網路回歸 模組,以使用可自訂的類神經網路演算法建立回歸模型。

雖然廣泛用於深入學習和模型化複雜的問題,例如影像辨識已知類神經網路,也就是輕鬆地調整迴歸問題。 如果使用自動調整的加權,而且可以近似其輸入的非線性函數,任何類別的統計模型可以稱為類神經網路。 因此類神經網路的迴歸適合用於較傳統的迴歸模型無法在其中納入解決方案的問題。

類神經網路回歸是一種受監督的學習方法,因此需要已 標記的資料集,其中包含標籤資料行。 迴歸模型來預測數值,因為標籤資料行必須是數值資料類型。

您可以將模型和加上標籤的資料集做為輸入來定型模型或調整模型超參數,藉以定型模型。 然後,您可以使用定型的模型來預測新輸入範例的值。

如何設定類神經網路回歸

類神經網路可以進行廣泛的自訂。 本節說明如何使用兩種方法建立模型:

  • 使用預設架構建立類神經網路模型

    如果您接受預設的類神經網路架構,請使用 [ 屬性 ] 窗格來設定參數,以控制類神經網路的行為,例如隱藏層中的節點數目、學習率和正規化。

    如果您是神經網路的新手,請從這裡開始。 此模組支援許多自訂和模型調整,而不需要深入瞭解類神經網路。

  • 定義類神經網路的自訂架構

    如果您想要新增額外的隱藏層,或完全自訂網路架構、其連接和啟用功能,請使用此選項。

    如果您已經熟悉類神經網路,最好使用此選項。 您可以使用 Net # 語言 來定義網路架構。

使用預設架構建立類神經網路模型

  1. 將 [類 神經網路回歸 ] 模組新增至您在 Studio (傳統) 中的實驗。 您可以在 **機器學習****服務的 [**回歸] 類別目錄中找到此模組。

  2. 藉由設定 [ 建立定型模式] 選項,指出您要如何定型模型。

    • 單一參數:如果您已經知道要如何設定模型,請選擇此選項。

    • 參數範圍:如果您不確定最佳參數,請選擇此選項。 然後,指定值的範圍,並使用 微調模型超參數 模組來反復查看組合,並尋找最佳設定。

  3. 在 [ 隱藏層規格] 中,選取 [ 完全連接的案例]。 此選項會使用神經網路回歸模型的預設類神經網路架構來建立模型,其屬性如下:

    • 網路只有一個隱藏層。
    • 輸出層完全連接到隱藏層,而隱藏層完全連接到輸入層。
    • 隱藏層的節點數目可以由使用者設定 (預設值為 100)。

    由於輸入層中的節點數目取決於定型資料中的特徵數目,因此在回歸模型中,輸出層中只能有一個節點。

  4. 針對 [ 隱藏的節點數目],輸入隱藏節點的數目。 預設值是一個具有100節點的隱藏層。 (如果您使用 Net # 定義自訂架構,則無法使用此選項 )

  5. 針對 [ 學習速率],請輸入一個值,以定義在每次反復進行修正之前所採取的步驟。 較大的學習速率值可能會導致模型更快收斂,但可能衝過局部最小值。

  6. 針對 [學習反復專案 數目],指定演算法處理定型案例的最大次數。

  7. 針對 [初始學習 權數] 直徑,請輸入一個值,以決定在學習程式開始時的節點加權。

  8. 針對 [動力],輸入要在學習期間套用的值,以作為先前反覆運算節點的加權。

  9. 針對 [正規化程式] 類型,選擇下列其中一種方法來正規化功能:

    • 分類收納正規化程式:分類收納會建立相同大小的群組,然後將每個群組中的每個值正規化,以除以群組總數。

    • 高斯正規化程式:高斯正規化會方式將各項功能的值,使其具有 mean 0 和變異數1。 這是藉由計算每項功能的平均數和變異數來完成,然後針對每個實例,減去 mean 值並除以變異數的平方根 (標準差) 。

    • 最小值-最大正規化程式:每個功能的最小正規化(以線性方式正規化)方式將 [0,1] 間隔。

      轉換每個特徵的值而使最小值為 0,然後再除以新的最大值 (這是原始最大值與最小值之間的差異),重新調整為 [0,1] 間隔的作業即完成。

    • 請勿 正規化:不執行正規化。

  10. 選取 [ 隨機範例] 選項,以變更反覆運算之間的案例順序。 如果您取消選取此選項,則每次執行實驗時都會以完全相同的連續處理案例。

  11. 對於 亂數種子,您可以選擇性地輸入要做為種子的值。 如果您想要確保相同實驗每次執行時的重複性,指定種子值很有用。

  12. 選取 [ 允許未知的類別層級 ] 來建立未知值的群組。 模型的已知值可能較不精確,但是針對新的 (未知的) 值提供更好的預測。

    如果您取消選取此選項,模型只能接受定型資料中包含的值。

  13. 連接訓練資料集和其中一個 訓練課程模組

    • 如果您將 [ 建立定型模式] 設定為 [ 單一參數],請使用 [ 定型模型]。

    • 如果您將 [ 建立定型模式] 設定為 [ 參數範圍],請使用 [ 微調模型超參數]。

    警告

    如果您將參數範圍傳遞給 定型模型,它只會使用 [參數範圍] 清單中的第一個值。

    如果您將一組參數值傳遞至 微調模型超參數 模組,當它預期每個參數的設定範圍時,會忽略這些值並使用學習模組的預設值。

    如果您選取 [ 參數範圍 ] 選項,並輸入任何參數的單一值,則整個清除期間都會使用您所指定的單一值,即使其他參數會在某個範圍的值之間變更。

  14. 執行實驗。

定義自訂架構

  1. 將 [類 神經網路回歸 ] 模組新增至您的實驗。

  2. 藉由設定 [ 建立定型模式] 選項,指出您要如何定型模型。

    • 單一參數:如果您已經知道要如何設定模型,請選擇此選項。

    • 參數範圍:如果您不確定最佳參數,請選擇此選項。 然後,指定值的範圍,並使用 微調模型超參數 模組來反復查看組合,並尋找最佳設定。

  3. 在 [ 隱藏層規格] 中,選取 [ 自訂定義腳本]。 如果您想要使用 Net # 語言來定義自訂類神經網路架構,則必須選擇這個選項。

  4. 當您選取 [ 自訂定義腳本 ] 選項之後,就會顯示 [類 神經網路定義 ] 文字方塊。 您可以貼上 Net # 腳本來定義神經網路的自訂架構,包括隱藏層的數目、其連接,以及指定圖層之間的對應等 advanced 選項。

  5. 針對 [ 學習速率],請輸入一個值,以定義在每次反復進行修正之前所採取的步驟。 較大的學習速率值可能會導致模型更快收斂,但可能衝過局部最小值。

  6. 針對 [學習反復專案 數目],指定演算法處理定型案例的最大次數。

  7. 針對 [初始學習 權數] 直徑,請輸入一個值,以決定在學習程式開始時的節點加權。

  8. 針對 [動力],輸入要在學習期間套用的值,以作為先前反覆運算節點的加權。

  9. 針對 [正規化程式] 類型,選擇下列其中一種方法來正規化功能:

    • 分類收納正規化程式:分類收納會建立相同大小的群組,然後將每個群組中的每個值正規化,方法是除以群組的總數目。

    • 高斯正規化程式:高斯正規化會方式將各項功能的值,使其具有 mean 0 和變異數1。 這是藉由計算每項功能的平均數和變異數來完成,然後針對每個實例,減去 mean 值並除以變異數的平方根 (標準差) 。

    • 最小值- 最小值-最小正規化方式將每項功能到 [0,1] 間隔。

      轉換每個特徵的值而使最小值為 0,然後再除以新的最大值 (這是原始最大值與最小值之間的差異),重新調整為 [0,1] 間隔的作業即完成。

    • 請勿 正規化:不執行正規化。

  10. 選取 [ 隨機範例] 選項,以變更反覆運算之間的案例順序。 如果您取消選取此選項,則每次執行實驗時都會以完全相同的連續處理案例。

  11. 對於 亂數種子,您可以選擇性地輸入要做為種子的值。 如果您想要確保相同實驗每次執行時的重複性,指定種子值很有用。

  12. 選取 [ 允許未知的類別層級 ] 來建立未知值的群組。 測試資料集中的任何未知值都會對應到這個未知的類別。 使用這個選項可能會使模型的已知值稍微較不精確,但是針對新的 (未知的) 值提供更佳的預測。

    如果您取消選取此選項,模型只能針對定型資料中包含的值進行預測。

  13. 連接訓練資料集和其中一個 訓練課程模組

    • 如果您將 [ 建立定型模式] 設定為 [ 單一參數],請使用 [ 定型模型]。

    • 如果您將 [ 建立定型模式] 設定為 [ 參數範圍],請使用 [ 微調模型超參數]。

    警告

    如果您將參數範圍傳遞給 定型模型,它只會使用 [參數範圍] 清單中的第一個值。

    如果您將一組參數值傳遞至 微調模型超參數 模組,當它預期每個參數的設定範圍時,會忽略值並使用學習模組的預設值。

    如果您選取 [ 參數範圍 ] 選項,並輸入任何參數的單一值,則整個清除過程將會使用您所指定的單一值,即使其他參數會在某個範圍的值之間變更。

  14. 執行實驗。

結果

定型完成後:

  • 若要查看模型參數的摘要,以及從定型學習的特徵權數和類神經網路的其他參數,請以滑鼠右鍵按一下 [ 定型模型 ] 或 [ 微調模型超參數] 的輸出,然後選取 [ 視覺化]。

  • 若要儲存定型模型的快照集,請以滑鼠右鍵按一下 定型的模型 輸出,然後選取 [ 另存為定型的模型]。 相同實驗的後續執行不會更新此模型。

  • 若要對加上標籤的資料集執行交叉驗證,請將未定型的模型連接至 交叉驗證模型

範例

如需如何在實驗中使用此演算法的範例,請參閱 AZURE AI 資源庫中的下列範例:

這些實驗會提供更多 Net # 的協助。 這些實驗與基本到 advanced 設定有相關的進展:

技術說明

本節包含對常見問題的執行詳細資料、秘訣和解答。

深入瞭解 Net#

在 Azure Machine Learning Studio (傳統) 中,您可以使用 Net # 語言自訂類神經網路模型的架構。 Net # 語言支援的自訂包括:

  • 指定隱藏層的數目和每個圖層中的節點數目
  • 指定圖層之間的對應
  • 定義迴旋和權數共用套件組合
  • 選擇啟用函數

類神經網路模型是由其圖形結構所定義,其中包含這些屬性:

  • 隱藏層的數目
  • 每個隱藏層中的節點數目
  • 圖層的連線方式
  • 使用的啟用函數
  • 圖形邊緣的加權

重要

圖形的整體結構以及啟用函式可以由使用者指定。 但是,無法指定邊緣的權數,而且必須在針對輸入資料定型類神經網路時學習。

一般而言,網路具有下列預設值:

  • 第一層一律為輸入層。
  • 最後一層一律為輸出層。
  • 輸出層的節點數目應該等於級別數目。

您可以定義任何數目的中間層 (有時稱為隱藏層,因為它們包含在模型內,不會直接公開為端點)。

Net # 參考指南說明語法,並提供範例網路定義。 其中說明如何使用 Net # 加入隱藏層,並定義不同層彼此互動的方式。

例如,下列腳本 auto 會使用關鍵字,它會自動設定輸入和輸出層的功能數目,並使用隱藏層的預設值。

input Data auto;  
hidden Hidden auto from Data all;  
output Result auto from Hidden all;   

如需其他腳本範例,請參閱 Net # 類神經網路規格語言指南

提示

類神經網路的計算成本可能很高,因為有許多超參數和自訂網路拓撲的引進。 雖然在許多情況下,與其他演算法相較,類神經網路會產生更好的結果,但取得這類的結果可能透過超參數牽涉到大量的清除 (反覆運算) 動作。

模組參數

Name 範圍 類型 預設 描述
隱藏層規格 List 類神經網路拓撲 完全連接案例 指定隱藏層的架構
初始學習加權直徑 >=double.Epsilon Float 0.1 指定在學習程序開始時的節點權數
學習率 [double.Epsilon;0.01] Float 0.005 指定學習過程中每個步驟的大小
動量 [0.0; 1.0] Float 0.0 指定學習過程中要從先前反覆運算套用至節點的權數
類神經網路定義 任意 StreamReader 當您選取 [自訂定義指令碼] 時,請在每一行輸入有效的指令碼運算式來定義自訂類神經網路的層級、節點及行為
正規化程式的類型 List 正規化方法 極小-極大正規化程式 選取要套用至學習範例的正規化類型
隱藏節點的數目 任意 String 100 輸入隱藏層的節點數目。 若有多個隱藏層,請輸入逗號分隔清單。
學習反覆次數 >= 1 整數 100 指定學習時反覆次數
隨機範例 任意 Boolean true 選取此選項可變更執行個體在反覆學習之間的順序
亂數散播 任意 整數 指定用於產生亂數的數值種子。 保留空白會使用預設種子。

這個參數是選擇性的
允許不明類別層級 任意 Boolean true 指出是否應該為未知的類別建立額外層級。 如果測試資料集包含不存在於定型資料集裡的類別,這些類別會對應至這個未知層級。

輸出

名稱 類型 Description
未定型的模型 ILearner 介面 未定型的迴歸模型

另請參閱

回歸
A-Z 模組清單