一. 開發有監督神經網絡系統的步驟
1. 數據收集
訓練數據通常由輸入–輸出成對組成,根據任務需求可能涵蓋不同情境(如白天或夜晚的車輛識別),其類型可以是數值、圖像、音頻等多種形式;數據規模越大、越多樣,模型就越有機會學習到有效規律并具備更好的泛化能力。
2. 選擇合適的ANN模型
- 線性問題:使用線性模型,如感知機(Perceptron)、ADALINE。
- 非線性問題:使用多層感知機(MLP)等非線性網絡。
3. 決定輸入與輸出神經元的數量
輸入層:與輸入特征數一致。
輸出層:
i.優化任務:與目標參數數目一致。
ii.分類任務:與類別數相關(如2類用1或2個輸出節點;3類可用2或3個節點)。
iii.逼近問題:與擬合參數數量一致。
4. 確定最佳輸入維度
確定輸入維度時,如果輸入特征過少,模型獲取的信息不足,容易導致學習能力受限、無法有效解決問題;而特征過多則可能引入較強的共線性,使模型在訓練集上表現很好但在新數據上泛化能力差。為了在保留關鍵信息的同時降低冗余與相關性,可采用主成分分析(PCA)、判別分析(DA)等降維與去相關方法,從而提升模型的穩健性和泛化性能。
5. 選擇合適的訓練算法
算法 | 特點 |
GD(梯度下降) | 學習慢,收斂穩 |
GD + 動量 | 學習快,但可能不收斂 |
Levenberg-Marquardt (LM) | 分類效果好,收斂穩 |
Bayesian Regularization (BR) | 非常慢,但性能優于 LM |
Scaled Conjugate Gradient (SCG) | 快,但穩定性差 |
Resilient BP | 效果依問題而定 |
6. 選擇激活函數
在人工神經網絡中,不同層通常選用不同的激活函數以適應各自的功能需求:輸入層一般使用線性激活函數,以便直接傳遞原始特征信息;隱藏層常采用連續且可微的非線性函數(如 sigmoid 函數),以增強模型對復雜模式的表達能力;輸出層的激活函數則取決于任務類型:1)在分類任務中常用 sigmoid、階躍(step)或符號(sign)函數來實現類別判定,2)在回歸或函數逼近任務中則多使用線性函數,以便直接輸出連續數值結果。
二、ANN的訓練過程(TRAINING PROCESS)
i.核心目標:
- 優化權重:通過訓練不斷調整權重,直到輸出誤差達到滿意程度。
- 確定網絡結構:合理配置輸入/隱藏/輸出層的神經元數量。
ii.如何確定最佳隱藏神經元數量?
隱藏層神經元數量的選擇直接影響神經網絡的學習能力與泛化性能:如果隱藏層神經元過少,模型表達能力不足,難以有效學習復雜模式;而隱藏層神經元過多則容易導致過擬合,使模型在新數據上的泛化能力下降。為了找到最佳配置,可采用網絡生長法(growing),從較少的神經元開始逐步增加,直到性能不再提升;或使用網絡修剪法(pruning),先設定較多神經元再逐步減少,保留最優結構。在多層感知機(MLP)中,還可以通過引入多個隱藏層來分層提取特征,從而更高效地處理復雜任務。
iii.局部最小陷阱 vs 全局最小的概念
在神經網絡訓練中,我們的目標是通過調整權重找到全局最小點,即誤差曲面上最低的位置,從而使模型在訓練和新數據上都能有最佳表現;然而,復雜的誤差曲面往往存在多個局部最小點,訓練過程可能會被困在這些位置,導致性能不佳。可以將其比作一次從起點 A 出發前往終點 B 的旅程,全局最小點是目的地,而局部最小點則像途中因車輛故障、疾病等被迫停留的地方,看似到達了低谷,但并非最終的最佳位置。
三、停止訓練的條件(WHEN TO STOP TRAINING)
i. Epoch 數:當訓練迭代次數達到預先設定的最大值時停止。
ii. 誤差目標:當訓練誤差達到或低于設定的閾值時停止。
iii. 梯度值:當梯度下降到小于設定值時停止,表示權重更新已趨于平穩。
iv. 驗證誤差:當驗證集誤差連續多次迭代不再改善時停止,以防止過擬合。