競争神經網絡
競争型神經網絡是基于無監督學習(Unsupervised learning)方法的神經網絡的一種重要類型,它經常作為基本的網絡形式,構成其它一些具有自組織能力的網絡,如自組織映射網絡、自适應共振理論網絡、學習向量量化網絡等。
生物神經網絡存在一種側抑制的現象,即一個神經細胞興奮後,通過它的分支會對周圍其他神經細腦産生抑制,這種抑制使神經細胞之間出現競争:在開始階段,各神經元對相同的輸入具有相同的響應機會,但産生的興奮程度不同,其中興奮最強的一個神經細胞對周圍神經細胞的抑制作用也最強,進而使其它神經元的興奮得到最大程度的抑制,而興奮最強的神經細胞卻“戰勝”了其它神經元的抑制作用脫穎而出,成為競争的勝利者,并因為獲勝其興奮的程度得到進一步加強,正所謂“成者為王,敗者為寇”。
1、競争型神經網路模型:
關于輸入層到競争層有幾種不同的計算方法: 1、計算輸入向量和權值距離的負數,然後加上一個門檻值,結果大的那個神經元獲勝,獲勝為1,其他為0,然後調節獲勝神經元對應的門檻值。以下為步驟:
可以看出競争型神經網絡為單層網絡。||ndist|| 的輸入為輸入向量p和輸入權值向量IW,其輸出為S11的列向量,列向量中的每個元素為輸入向量p和輸入權值向量IW距離的負數(negative),在神經網絡工具箱中以距離函數negdist進行計算。
n1為競争層傳輸函數的輸入,其值為輸入向量p和輸入權值向量IW距離的負數與門檻值b1之和。如果所有的門檻值向量為0,則當輸入向量p和輸入權值向量IW相等時,n1為最大值0。
對于n1中最大的元素,競争層傳輸函數輸出1(即競争的“獲勝者”輸出為1),而其它元素均輸出0。如果所有的門檻值向量為0,則當神經元的權值向量最接近輸入向量時,它在n1各元素中的負值最小,而值最大,進而赢得競争,對應的輸出為1。
2、下面的Kohonen學習規則裡,讓輸入向量與門檻值向量相乘,比較輸出神經元的大小取最大值,為獲勝神經元,置為1,其他的為0。
3、《43個案例分析》裡的學習方法暫時不采用。
2、競争型神經網絡的學習
(1)Kohonen權值學習規則:
另外一種描述:
競争型神經網絡按Kohonen學習規則對獲勝神經元的權值進行調整。假若第i個神經元獲勝,則輸入權值向量的第i行元素(即獲勝神經元的各連接配接權)按下式進行調整:
而其它神經元的權值不變。
Kohonen學習規則通過輸入向量進行神經元權值的調整,是以在模式識别的應用中是很有用的。通過學習,那些最靠近輸入向量的神經元權值向量被修正,使之更靠近,其結果是獲勝的神經元在下一次相似的輸入向量出現時,獲勝的可能性會更大;而對于那些相差很遠的輸入向量,獲勝的可能性将變得很小。
這樣,當經過越來越多的訓練樣本學習後,每一個網絡層中的神經元的權值向量很快被調整為最接近某一類輸入向量的值。最終的結果是,如果神經元的數量足夠多,則具有相似輸入向量的各類模式作為輸入向量時,其對應的神經元輸出為1;而對于其它模式的輸入向量,其對應的神經元輸出為0。是以,競争型網絡具有對輸入向量進行學習分類的能力。
(2)門檻值學習規則
說明:門檻值學習規則也與上面不同的輸入層到競争層兩種不同的計算方法相對應。那個有門檻值的計算方法剛好包含了門檻值學習規則。
3、競争型神經網絡存在的問題
對于模式樣本本身具有較明顯的分類特征,競争型神經網絡可以對其進行正确的分類,網絡對同一類或相似的輸入模式具有較穩定的輸出響應。但也存在一些問題:
(1)當學習模式樣本本身雜亂無章,沒有明顯的分類特征時,網絡對輸入模式的響應呈現振蕩的現象,即對同一類輸入模式的響應可能激活不同的輸出神經元,進而不能實作正确的分類。當各類模式的特征相近時,也會出現同樣的狀況。
(2)在權值和門檻值的調整過程中,學習率的選擇在學習速率和穩定性之間存在沖突,而不象前面我們介紹的其它學習算法,可以在剛開始時采用較大的學習率,而在權值和門檻值趨于穩定時,采用較小的學習率。而競争型神經網絡當增加新的學習樣本時,權值和門檻值可能需要比前一次更大的調整。
(3)網絡的分類性能與權值和門檻值的初始值、學習率、訓練樣本的順序、訓練時間的長短(訓練次數)等都有關系,而又沒有有效的方法對各種因素的影響加以評判。
(4)在MATLAB神經網絡工具箱中,以trainr函數進行競争型神經網絡的訓練,使用者隻能限定訓練的最長時間或訓練的最大次數,以此終止訓練,但終止訓練時網絡的分類性能究竟如何,沒有明确的名額進行評判。
%% Matlab神經網絡43個案例分析
% 單層競争神經網絡的資料分類—患者癌症發病預測
%% 清空環境變量
clc
clear
%% 錄入輸入資料
% 載入資料并将資料分成訓練和預測兩類 60組樣本,每組樣本有114個資料。
load gene.mat;
data=gene; %60*114
P=data(1:40,:);
T=data(41:60,:);
% 轉置後符合神經網絡的輸入格式
P=P'; %114*40 矩陣相乘放在後邊,114與權值相乘。
T=T'; %114*20
% 取輸入元素的最大值和最小值Q:
Q=minmax(P); %求每一行的最小值和最大值。實際求的是,114個元素,在40個樣本中的最大值和最小值。
%% 網絡建立和訓練
% 利用newc( )指令建立競争網絡:2代表競争層的神經元個數,也就是要分類的個數。0.1代表學習速率。
net=newc(Q,2,0.1)
% 初始化網絡及設定網絡參數:
net=init(net);
net.trainparam.epochs=20;
% 訓練網絡:
net=train(net,P);
%% 網絡的效果驗證
% 将原資料回帶,測試網絡效果:
a=sim(net,P);
ac=vec2ind(a)
% 這裡使用了變換函數vec2ind(),用于将單值向量組變換成下标向量。其調用的格式為:
% ind=vec2ind(vec)
% 其中,
% vec:為m行n列的向量矩陣x,x中的每個列向量i,除包含一個1外,其餘元素均為0。
% ind:為n個元素值為1所在的行下标值構成的一個行向量。
%% 網絡作分類的預測
% 下面将後20個資料帶入神經網絡模型中,觀察網絡輸出:
% sim( )來做網絡仿真
Y=sim(net,T)
yc=vec2ind(Y)