Share via


二元神經網路

使用類神經網路演算法建立二元分類器

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

注意

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

Azure Machine Learning 設計工具中提供類似的拖放模組。

模組概觀

本文描述如何使用機器學習 Studio (傳統) 中的二級類神經網路模組建立類神經網路模型,以用來預測只有兩個值的目標。

使用神經網路的分類是受監督的學習方法,因此需要加上標籤的資料集,其中包含標籤資料行。 例如,您可以使用此神經網路模型來預測二進位結果,例如患者是否有特定疾病,或電腦是否可能在指定的時間範圍內故障。

在您定義模型之後,請提供已加上標籤的資料集和模型作為 定型模型 的輸入或 微調模型超參數,以將模型定型。 然後便可以使用已定型的模型預測新輸入的值。

關於神經網路的其他資訊

神經網路是一組互連的層。 輸入是第一層,並以由加權邊緣和節點組成的非循環圖表連接至輸出層。

您可以在輸入和輸出層之間插入多個隱藏層。 大部分的預測工作可以與一個或幾個隱藏層輕鬆完成。 不過,最近的研究顯示,在許多層級中 (DNN) 的深度類神經網路,在影像或語音辨識等複雜的工作中非常有效。 後續層會用來建立更多層級語意深度的模型。

輸入和輸出之間的關聯性是從對輸入資料的神經網路定型來學習。 圖形的方向會從透過隱藏層的輸入並對輸出層繼續進行。 圖層中的所有節點會由加權邊緣連接至下一層中的節點。

為了根據特定輸入來計算網路的輸出,需要計算隱藏層和輸出層中每個節點的值。 值的設定方式是計算來自上一層節點值的加權總和。 然後會對該加權總和套用啟用函式。

如何設定 Two-Class 類神經網路

  1. 二級類神經網路 模組新增至您在 Studio (傳統) 中的實驗。 您可以在 [分類] 類別目錄中的 [機器學習初始化] 下找到此模組。

  2. 設定 [建立定型模式] 選項來指定要如何定型模型。

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

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

  3. 針對 [隱藏層規格],選取要建立的網路架構類型。

    • 完全連接的案例:會使用預設的類神經網路架構,定義給二級類神經網路,如下所示:

      • 有一個隱藏層。

      • 輸出層完全連接到隱藏層,而隱藏層完全連接到輸入層。

      • 輸入層中的節點數目等於定型資料中的特徵數目。

      • 隱藏層中的節點數目由使用者設定。 預設值是 100。

      • 節點數目等於類別數目。 對於二元神經網路,這表示所有輸入都必須對應至輸出層中的兩個節點之一。

    • 自訂定義腳本:選擇此選項可使用Net #語言建立自訂類神經網路架構。 使用這個選項,您可以定義隱藏層的數目、其連接,以及各層之間的對應。

    選取 [自訂腳本] 選項之後,在 [類 神經網路定義 ] 文字方塊中,輸入或貼上定義網路的 Net # 語句。 如需範例,請參閱 Net # 類神經網路規格語言指南

  4. 如果您不是使用腳本選項,請使用 隱藏節點的數目,並輸入隱藏節點的數目。 預設值是具有 100 個節點的一個隱藏層。

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

  6. 針對 [學習反覆運算次數],指定演算法應該處理定型案例的次數上限。

  7. 針對 [初始學習加權直徑],指定在學習過程開始時的節點加權。

  8. 針對 [動量],指定要在學習期間對來自先前反覆運算節點套用的加權

  9. [正規化程式類型] 中,選取要用於功能正規化的方法。 以下是支援的正規化方法:

    • 分類收納正規化程式:分類收納正規化程式會建立大小相等的 bin,然後將每個空間中的每個值正規化,並除以總的 bin 數。

    • 高斯正規化程式:高斯正規化程式會方式將每個功能的值,以表示0和變異數1。 這是藉由計算每項功能的平均數和變異數來完成。 每個實例都會減去平均值,而結果除以變異數的平方根 (標準差) 。

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

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

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

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

  11. 針對 [亂數散播],輸入要當作種子使用的值。

    如果您想要確保相同實驗每次執行時的重複性,指定種子值很有用。 否則,系統時鐘值會當做種子使用,這可能會在您每次執行實驗時產生稍微不同的結果。

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

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

  13. 將已加上標籤的資料集新增至實驗,並連接其中一個 定型模組

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

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

    注意

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

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

    如果您選取 [ 參數範圍 ] 選項,並輸入任何參數的單一值,就會在整個清除中使用該單一值,即使其他參數會在某個範圍的值之間變更也一樣。

  14. 執行實驗。

結果

定型完成後:

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

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

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

範例

如需如何使用這個學習演算法的範例,請參閱 Azure AI 資源庫。 這些實驗在從基本到 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;1.0] Float 0.1 指定學習過程中每個步驟的大小
動量 [0.0;1.0] Float 0.0 指定學習過程中要從先前反覆運算套用至節點的權數
類神經網路定義 任意 StreamReader 當您選取 [自訂定義指令碼] 時,請在每一行輸入有效的指令碼運算式來定義自訂類神經網路的層級、節點及行為
正規化程式的類型 List 正規化方法 極小-極大正規化程式 選取要套用至學習範例的正規化類型
學習反覆次數 >=1 整數 100 指定學習時執行的反覆次數
隨機範例 任意 布林值 true 選取此選項可變更執行個體在反覆學習之間的順序
亂數散播 任意 整數 指定用於產生亂數的數值種子。 保留空白會使用預設種子。
允許不明類別層級 任意 布林值 True 指出是否應該為未知的類別建立額外層級。 如果測試資料集包含不存在於定型資料集裡的類別,這些類別會對應至這個未知層級。

輸出

名稱 類型 描述
未定型的模型 ILearner 介面 未定型的二元分類模型

另請參閱

分類
類神經網路迴歸
多元神經網路
A-Z 模組清單