類神經網路迴歸

重要

Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning

自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。

ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。

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

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

注意

適用于僅限機器學習 Studio (傳統)

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#

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

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

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

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

重要

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

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

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

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

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

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

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

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

提示

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

模組參數

名稱 範圍 類型 預設 描述
隱藏層規格 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 指定學習時反覆次數
隨機範例 任意 布林值 true 選取此選項可變更執行個體在反覆學習之間的順序
亂數散播 任意 整數 指定用於產生亂數的數值種子。 保留空白會使用預設種子。

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

輸出

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

另請參閱

迴歸
A-Z 模組清單