智慧型控制 Intelligent Control

感知器的模擬 Simulation

(原講義為 Matlab 手冊的英文截圖,以下改寫為中文。)用一個簡單的問題說明 sim 怎麼運作。

建立網路並設定權值 Setting Up

取一個兩元素輸入向量的感知器,和決策邊界圖中的一樣:

net = newp([-2 2; -2 +2], 1);

如前一頁所述,這樣建立的權值與偏權值都是 0。若要特定的值,必須自己設定。把兩個權值與一個偏權值設成決策邊界圖中的 −1、1 與 1:

net.IW{1,1} = [-1 1];
net.b{1} = [1];

確認設定正確:

net.IW{1,1}
ans =
    -1     1
net.b{1}
ans =
     1

模擬 sim

看網路對分界線兩側的兩個訊號各有什麼反應:

p1 = [1;1];
a1 = sim(net,p1)
a1 =
     1

p2 = [1;-1]
a2 = sim(net,p2)
a2 =
     0

果然,感知器把兩個輸入分類正確。(補充)手算淨輸入:

輸入\(n = \mathbf{Wp} + b\)\(a = \operatorname{hardlim}(n)\)
\(\mathbf p_1 = [1\ \ 1]^{\mathsf T}\)\(-1 + 1 + 1 = 1\)1(分界線左上方)
\(\mathbf p_2 = [1\ \ {-1}]^{\mathsf T}\)\(-1 - 1 + 1 = -1\)0(分界線右下方)

也可以把兩個輸入排成序列(cell 陣列)一次送進去,得到的輸出也是序列:

p3 = {[1;1] [1;-1]};
a3 = sim(net,p3)
a3 =
    [1]    [0]
▶ 在 Colab 開啟原課程的 MATLAB 程式已改寫成 Python 筆記本(第 2 節 sim),可以直接在瀏覽器執行、修改參數。⬇ 下載 NN.ipynb

可以在簡單神經元頁的互動動畫中設定 w₁ = −1、w₂ = 1、b = 1、hardlim,再把輸入拉到這兩點驗證。

原圖對照(取自 Matlab 手冊)
原圖
原圖
原圖