二元神經網路
使用類神經網路演算法建立二元分類器
模組概觀
本文描述如何使用機器學習 Studio (傳統) 中的二級類神經網路模組建立類神經網路模型,以用來預測只有兩個值的目標。
使用神經網路的分類是受監督的學習方法,因此需要加上標籤的資料集,其中包含標籤資料行。 例如,您可以使用此神經網路模型來預測二進位結果,例如患者是否有特定疾病,或電腦是否可能在指定的時間範圍內故障。
在您定義模型之後,請提供已加上標籤的資料集和模型作為 定型模型 的輸入或 微調模型超參數,以將模型定型。 然後便可以使用已定型的模型預測新輸入的值。
關於神經網路的其他資訊
神經網路是一組互連的層。 輸入是第一層,並以由加權邊緣和節點組成的非循環圖表連接至輸出層。
您可以在輸入和輸出層之間插入多個隱藏層。 大部分的預測工作可以與一個或幾個隱藏層輕鬆完成。 不過,最近的研究顯示,在許多層級中 (DNN) 的深度類神經網路,在影像或語音辨識等複雜的工作中非常有效。 後續層會用來建立更多層級語意深度的模型。
輸入和輸出之間的關聯性是從對輸入資料的神經網路定型來學習。 圖形的方向會從透過隱藏層的輸入並對輸出層繼續進行。 圖層中的所有節點會由加權邊緣連接至下一層中的節點。
為了根據特定輸入來計算網路的輸出,需要計算隱藏層和輸出層中每個節點的值。 值的設定方式是計算來自上一層節點值的加權總和。 然後會對該加權總和套用啟用函式。
如何設定 Two-Class 類神經網路
將 二級類神經網路 模組新增至您在 Studio (傳統) 中的實驗。 您可以在 [分類] 類別目錄中的 [機器學習、初始化] 下找到此模組。
設定 [建立定型模式] 選項來指定要如何定型模型。
單一參數:如果您已知道要如何設定該模型,請選擇此選項。
參數範圍:如果您不確定最佳參數,請選擇此選項。 然後,指定值的範圍,並使用 微調模型超參數 模組來反復查看組合,並尋找最佳設定。
針對 [隱藏層規格],選取要建立的網路架構類型。
完全連接的案例:會使用預設的類神經網路架構,定義給二級類神經網路,如下所示:
有一個隱藏層。
輸出層完全連接到隱藏層,而隱藏層完全連接到輸入層。
輸入層中的節點數目等於定型資料中的特徵數目。
隱藏層中的節點數目由使用者設定。 預設值是 100。
節點數目等於類別數目。 對於二元神經網路,這表示所有輸入都必須對應至輸出層中的兩個節點之一。
自訂定義腳本:選擇此選項可使用Net #語言建立自訂類神經網路架構。 使用這個選項,您可以定義隱藏層的數目、其連接,以及各層之間的對應。
選取 [自訂腳本] 選項之後,在 [類 神經網路定義 ] 文字方塊中,輸入或貼上定義網路的 Net # 語句。 如需範例,請參閱 Net # 類神經網路規格語言指南。
如果您不是使用腳本選項,請使用 隱藏節點的數目,並輸入隱藏節點的數目。 預設值是具有 100 個節點的一個隱藏層。
針對 [學習速率],定義每一次反覆所採取的步驟大小 (在更正之前)。 較大的學習速率值可能會導致模型更快收斂,但可能衝過局部最小值。
針對 [學習反覆運算次數],指定演算法應該處理定型案例的次數上限。
針對 [初始學習加權直徑],指定在學習過程開始時的節點加權。
針對 [動量],指定要在學習期間對來自先前反覆運算節點套用的加權
在 [正規化程式類型] 中,選取要用於功能正規化的方法。 以下是支援的正規化方法:
分類收納正規化程式:分類收納正規化程式會建立大小相等的 bin,然後將每個空間中的每個值正規化,並除以總的 bin 數。
高斯正規化程式:高斯正規化程式會方式將每個功能的值,以表示0和變異數1。 這是藉由計算每項功能的平均數和變異數來完成。 每個實例都會減去平均值,而結果除以變異數的平方根 (標準差) 。
最小值-最大值正規化程式:最小值正規化程式可線性方式將每項功能到 [0,1] 間隔。
轉換每個特徵的值而使最小值為 0,然後再除以新的最大值 (這是原始最大值與最小值之間的差異),重新調整為 [0,1] 間隔的作業即完成。
請勿正規化:不執行正規化。
選取 [隨機顯示範例] 選項可在反覆運算之間隨機顯示案例。 如果您取消選取此選項,則每次執行實驗時都會以完全相同的連續處理案例。
針對 [亂數散播],輸入要當作種子使用的值。
如果您想要確保相同實驗每次執行時的重複性,指定種子值很有用。 否則,系統時鐘值會當做種子使用,這可能會在您每次執行實驗時產生稍微不同的結果。
選取 [ 允許未知的類別層級 ] 選項,在定型和驗證集中建立未知值的群組。 模型的已知值可能較不精確,但是針對新的 (未知的) 值提供更好的預測。
如果您取消選取此選項,模型只能接受定型資料中包含的值。
將已加上標籤的資料集新增至實驗,並連接其中一個 定型模組。
執行實驗。
結果
定型完成後:
若要查看模型參數的摘要,以及從定型學習的特徵權數和類神經網路的其他參數,請以滑鼠右鍵按一下 [ 定型模型 ] 或 [ 微調模型超參數] 的輸出,然後選取 [ 視覺化]。
若要儲存定型模型的快照集,請以滑鼠右鍵按一下 定型的模型 輸出,然後選取 [ 另存為定型的模型]。 相同實驗的後續執行不會更新此模型。
若要對加上標籤的資料集執行交叉驗證,請將未定型的模型連接至 交叉驗證模型。
範例
如需如何使用這個學習演算法的範例,請參閱 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 介面 | 未定型的二元分類模型 |