2. 認知器 2.1 什麼是認知器 (Perceptrons)? 2.2 學習法則 (Learning algorithms) 2.3 轉移函數 2.4 範例
2.1 什麼是認知器 (Perceptrons)? 認知器的神經元數可 以是一個或數個。輸 入端也可以是一個至 數個。轉移函數為 hardlim 或 hardlims 。 n=W*P+b a=f(n)
2.1 什麼是認知器 (Perceptrons
Bipolar OR gate
2.2 學習法則 n=W*P+b a=hardlims(n) e = T – a ΔW= λ*e*P’; λ 為 0 至 1 的學習因子 Δb =λ*e; Wnew = Wold +ΔW; bnew = bold +Δb;
2.2 學習法則 Perceptron 除了輸入層外只有輸出層 ( 單層, 此處所指的層數係指含神經元的層次 ) ,故 功能有限。
2.2 學習法則 一條直 線可切 開成兩 塊區域, 稱之為 線性可 分離。
2.3 轉移函數 (Transfer Functions, TFs)
2.3 轉移函數 (Transfer Functions, TFs)
2.4 範例 認知器解 不了 XOR gate 問題, 因為它不 是線性可 分離。
2.4 範例
增加一個維 度 XOR 可以 用 Perceptron 解決
2.4 範例 [ 例題 2.4-2] 水果分類 (see sort_fruits.m) 這個例子是取自 Hagan 等三人所著 Neural Network Design 書中的例 子 (P.3-2) 。如果有一些感應器 (sensors) 可以掃描滚帶上經過的水果的 特徵 (Features) ,如 形狀 (Shape) , +1 代表圓的, -1 代表不太圓 感觸 (Texture) , +1 代表表皮平滑, -1 代表粗糙 重量 (weight) , +1 表示超過一磅重, -1 代表輕於一磅 [ 註: [1 2 3] 代表橫向量,那 (1 2 3) 代表縱向量 ] P_orange=( ) 指圓、粗、輕的水果,那就是橘子 ( 美國榴丁 ) 。 P_apple=(1 1 -1) 指圓、細滑、輕的水果,那就是蘋果。 P_banana=( ) 指不圓、細滑、輕的水果,那就是香蕉。 P_grape_fruit=(1 -1 1) 指圓、粗、超過一磅的水果,那就是葡萄柚。
2.4 範例 如果吾人用一具有三輸入、兩輸出之認知 器當做水果分類器,首先把分類定義清楚, 圖 為 3-2 Perceptron 示意圖: a a Class 水果名 橘 蘋果 香蕉 葡萄柚
2.4 範例 W=[w11 w12 w13 w21 w22 w23] b=[b1;b2;b3] P=[p1;p2;p3] a=hardlims(W*P+b)
2.4 範例 % sort_fruits.m % Sort 4 different fruits such as orange, apple, % banana and grape fruit. % Input vector (shape, texture, weight) % shape: 1=round, -1=not round % texture: 1=smooth, -1=coarse % weight: 1=over 1 pound, -1=under 1 pound % output code:(a1 a0) % (-1 -1) = orange % (-1 1) = apple % ( 1 -1) = banana % ( 1 1) = grape fruit % Written by PenChen Chou,
2.4 範例 % Input and Target P=[ ]; T=[ ]; % Initial W and b W=[ ]; b=[ 0 0]; % Call learn_p [FW Fb]=learn_p(P,T,W,b,1,0.2,1) % Check result A=hardlims(FW*P+Fb*ones(1,4)); E=T-A % Check unlearned input patterns P2=[-1 1 1]'; % Pinapple A2=hardlims(FW*P2+Fb)
2.4 範例 執行程式結果 >> sort_fruits FW = Fb = E = % 分類完全正確 A2 = % 沒學過的鳳梨 (-1 1 1) 1 % 被分類成為葡萄柚,還不太離譜吧! 1
2.4 範例 [ 例題 2.4-3] 男女分類 (see sort_sex.m) 這個例子取自 Herve’ Abdi 等三人所著 Neural Networks, a Sage University Paper, 1999, P.14 。 把人依特徵分成 編碼 頭髮 長 短 眼睛 大 小 鼻子 小 大 嘴形 微笑 平常 耳朶 秀小 粗大 分類 女生 男生 圖 為特徵對照圖,圖 為男女生圖像範例。
2.4 範例
假設男女特徵向量共有六組,今以認知器做為人 的性別辨識,六組向量為 ( ) 女性 ( ) 女性 ( ) 女性 ( ) 男性 ( ) 男性 ( ) 男性 認知器的架構如圖 所示。
2.4 範例
sort_sex.m file 詳如下: % sort_sex.m % According to 5 features (hair, eyse, nose, mouth, ears) % of a person, a Perceptron is used to recognize whether % an input pattern is a male or a female. % Input pattern: ( ) i.e., a female % Output class : +1 is a female, 0 is a male. % Written by PenChen Chou, % I/O patterns P=[ ]' T=[ ]
2.4 範例 % Initial W and b [S,R]=size(P); W=randn(1,S); b=randn; % Call [FW, Fb]=learn_p(P,T,W,b,1,0.3,0) % Check error A=hardlim(FW*P+Fb*ones(1,R)); E=T-A % Unlearned patterns P2=[ ]' T2=[0 1] A2=hardlim(FW*P2+Fb*ones(1,2))
2.4 範例 執行結果顯示: >> sort_sex P = T = FW = Fb = % Perceptron 分辨正確 E = % 如果有沒學習過的特徵向量兩個,它是否能分辨? P2 = T2 =1 0 % 應分類 A2 =1 1 % 結果第二個特徵向量應為女生,誤判為男生
2.4 範例 造成誤判的原因是因為沒有學習過這個輸 入。認知器的學習法則是只要對目前訓練 的所有輸入圖樣判別正確以後就不再修正 權重及偏壓,所以沒訓練過的輸入,認知 器不一定能判出正確的結果。 本例其實最佳的為 W=[ ], b=0; 這 樣就不會對未學過輸入做出誤判 (Why? 讀者 可以想一想 ) 。