NNtool:AND 閘感知器
老師錄製的操作示範:用 Neural Network Toolbox 的圖形介面 NNtool 建立並訓練一個感知器,學會 AND 閘。結果存在附檔 NnetAnd.mat。
▶ 在 Colab 開啟原課程的 MATLAB 程式已改寫成 Python 筆記本(第 5 節 AND 閘,直接讀 NnetAnd.mat),可以直接在瀏覽器執行、修改參數。⬇ 下載 NN.ipynb
附檔內容 What Is in NnetAnd.mat
(以下讀取附檔整理,為補充)NnetAnd.mat 有三個變數:訓練資料 p、t 與訓練好的網路 NetAnd。
| 屬性 | 值 | 說明 |
|---|---|---|
| 輸入範圍 | [0 1; 0 1] | 兩個輸入,各為 0~1 |
| 層 | 1 個神經元,hardlim,淨輸入函數 netsum | 單一感知器 |
| 權值、偏權值初始化 | initzero | 初值 0 |
| 學習函數 | learnp | 感知器學習規則 |
| 訓練函數 trainFcn | trainc(epochs 100、goal 0) | 逐筆循環訓練 |
| 誤差函數 performFcn | mae | 平均絕對誤差 |
| 訓練後的權值 | \(\mathbf W = [2\ \ 1]\)、\(b = -3\) | 決策邊界 \(2p_1 + p_2 - 3 = 0\) |
這組權值正是感知器學習規則互動示範中,AND 從 0 開始、依序輸入學到的結果(第 6 回合收斂)。檢查四個輸入:(0,0)、(0,1)、(1,0) 的淨輸入分別為 −3、−2、−1,輸出 0;(1,1) 的淨輸入為 0,因為 hardlim(0) = 1,輸出 1,四個都對。分界線剛好通過 (1,1),對雜訊沒有任何餘裕;若要更穩健,可以再把 b 往負方向調一點(例如 b = −2.5),但感知器規則一旦全部分對就停止,不會自己去找這種「中間」的邊界。
訓練好的網路可以轉成 Simulink 模型,見下一頁 NN2Simulink。