學習規則,就修改神經網路的權值和偏置值的過程和方法,其目的是為了訓練網路來完成某些工作。
學習規則主要有3種型別:有監督學習、無監督學習和增強學習。
1,有監督學習
根據輸入和目標輸出(注意區分目標輸出和實際輸出!)來調整權值和偏置值。
2,無監督學習
僅僅根據網路的輸入調整網路的權值和偏值,沒有目標輸出。
3,感知機學習規則_有監督學習
4,hebb學習規則_無監督學習
線性聯想器:
hebb假設:若一條突觸兩側的兩個神經元同時被啟用,那麼突觸的強度將會增大!
hebb假設的數學解析:如果乙個正的輸入
或則寫成矩陣的形式:
說明:由於權值只是根據輸入向量和輸出向量來調整,與目標無關,因此這個規則是屬於無監督的學習規則!
5,hebb學習規則_有監督學習
將無監督的hebb學習規則中的實際輸出
將上式用矩陣的形式表示為:
使用說明:利用這個規則來求權值矩陣時,要求將輸入向量標準化(向量長度為1)!
6,仿逆規則
說明:這個規則是hebb有監督學習規則的模仿版!使用
使用說明:利用這個規則求權值矩陣,不用將輸入向量標準化!
7,hebb學習的變形_過濾學習
說明:8,hebb學習的變形_增量學習——widrow-hoff演算法
說明:增量規則調整權值以使均方誤差最小,因而它與仿逆規則得到的結果相同,仿逆規則使誤差平方和最小化。
優點:每輸入乙個模式,它就能更新一次權值,而仿逆規則要等待所有輸入/輸出模式已知後才能計算一次權值。這中順序的權值更新方法使得增量規則能適應變化的環境。
9,無監督hebb學習規則matlab實現
根據4的公式,可以編寫matlab實現**如下:
clear all
clc%6輸入,1輸出,每行的第1個元素為目標,第2~7個元素為輸入
ai=[1,1 0 1 1 1 0;
1,0 1 0 1 1 1;
1,1 1 1 1 0 0;
0,0 0 1 0 0 1;
0,1 0 0 1 0 0;
0,0 0 0 0 0 0];
iter=0; %實際迭代次數
a=1; %學習速率
maxiter=3; %最大迭代次數
counter=0; %正確輸出個數
[m n]=size(ai);
b=0; % 偏置值
w=ones(1, n-1)*0.1; %權值向量,初始化為0
t=ai(:,1); %正確結果,即是目標輸出!
a=ai(:,2:n); %訓練樣本 ,每行為乙個輸入向量!
y=zeros(1,m); %輸出結果
stop=0;
while ~stop&&iter
執行結果:
迭代次數:
iter = 6
權值:w = 50.1000 8.5000 25.1000 51.7000 2.1000 19.5000
目標:t = 1 1 1 0 0 0
輸出:y = 0.4000 1.6000 6.8000 17.8000 42.8000 69.4000
修改最大迭代次數:maxiter=100,再次執行:
迭代次數:
iter = 102
權值:w =1.0e+46 *
5.4217 0.9041 2.7061 5.5918 0.2146 2.0978
目標:t = 1 1 1 0 0 0
輸出:y = 1.0e+46 *
0.0444 0.1699 0.7328 1.9247 4.6361 7.5310
結論:對比目標和結果,可以知道w的調整是不對的!對比兩次的輸出結果可以發現,當迭代次數增加時,w的值也會變大。經過測試發現,w會隨著迭代次數的增加而趨向於無窮大!這是我們不願看到的!
將 w=w+a*r*x改為w=w+a*t(i)*x,將b=b+a*t(i)改為b=b+a*r,即可將無監督學習改為有監督學習。經測試發現,結果還是不行!
10,有監督hebb學習規則matlab實現
根據5的公式,可以程式設計如下:
clear
clc%目標向量,每1列為乙個目標
t=[1 1;
-1 1;
0 0];
%輸入向量,每1列為乙個輸入,它們是標準正交向量!
p=[0.5 0.5
-0.5 0.5
0.5 -0.5
-0.5 -0.5];
[m,n]=size(p);
[m2,n2]=size(t);
w=zeros(n, m); %權值向量,初始化為0
y=zeros(m2,1); %輸出結果
%根據hebb規則公式計算w
w=t*p';
%驗證w的準確性
y=w*p(:,2);
%輸出結果
fprintf(1,'權值:');
wfprintf(1,'輸出:');
y
輸出結果:
權值:w =
1 0 0 -1
0 1 -1 0
0 0 0 0
輸出:y =11
0
對比輸入結果和目標,發現結果是正確的!
參考資料
《神經網路設計》,機械工業出版社
hebb學習規則
learnh
神經網路學習(十)淺層BP神經網路總結
系列部落格是博主學習神經網路中相關的筆記和一些個人理解,僅為作者記錄筆記之用,不免有很多細節不對之處。我的這一階段目標是在學習完淺層bp神經網路的相關知識時,可以將手寫字的識別率達到98 在前面的幾次實驗中,mnist手寫字的識別率始終未達到98 以上,這樣的結果是有些讓人沮喪的。今天進過艱苦奮鬥,...
神經網路總結()
最近幾天綜合的看了一下以前上課用的cmu的tom m.mitchell的機器學習,michael a.nielsen,neural networks and deep learning 還有趙永科著的深度學習,21天實戰caffe。一次性接受的有點多。但是,萬變不離其宗,總歸是用反向傳播演算法。細緻...
神經網路設計學習筆記(7) 感知機學習規則(4)
本次部落格接上次的部落格,繼續闡述感知機的學習規則。在學習規則徹底學習結束,將用matlab進行簡單實踐。學習規則的構造 為了完成上次部落格所提到的測試問題,需要對學習規則進行構造,在訓練開始時,為網路的引數賦予一些初始值。這裡僅需對其兩個權值進行初始化。然後將輸入向量提供給網路。但是網路沒有返回正...