XÂY DỰNG MỘT SỐ MẠNG NƠRON TRÊN MATLAB-SIMULINK

Một phần của tài liệu Tài liệu học tập điều khiển mờ và mạng nơron (Trang 95 - 101)

3.3.1. Thiết lập và mô phỏng mạng Perceptron trên Matlab

+ Mô hình mạng nơron Perceptron trên Matlab

Hình 3.17. Mô hình mạng nơron Perceptron trên Simulink

+ Thiết lập mạng Perceptron

Để thiết lập mạng nơron perceptron trên Matalb ta dùng lệnh newp với cú pháp:

96 Trong đó PR là ma trận Rx2 vùng các giá trị của tín hiệu vào (min và max), S là số nơron. Perceptron tạo ra với ma trận trọng số và vector phân cực bằng 0.

Lưu ý: Khi dùng lệnh này mà ta không dùng dấu (;) ở cuối câu lệnh thì trên cửa sổ CommandWindow của Matlab sẽ hiển thị đầy đủ thông tin về cấu trúc mạng vừa khởi tạo và các hàm lệnh liên quan. Dưới đây sẽ trình bày một số lệnh đó.

Ví dụ: Tạo perceptron có hai ngõ vào tầm [-2,2] và một nơron:

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

Muốn đặt trước các trọng số và bias ta dùng lệnh sau:

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

Muốn tìm đáp ứng ra của mạng net theo ngõ vào P, dùng lệnh sim(net,P)

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

Kết quả: a1=1

P2=[1;1]; a2=sim(net,P2)

Kết quả: a2=0

Muốn đọc trị số của các trọng số và bias ta viết:

Wts=net.IW{1,1} Kết quả: Wts= -1 1 Bias=net.b{1} Kết quả: Bias=1

Muốn xóa các trị trên về zero dùng lệnh net=init(net)

+ Huấn luyện mạng Perceptron

Thuật toán perceptron được thực hiện nhờ hàm learnp. Quy luật học như sau: Wmới=wcũ +ePT

bmới= bcũ +e; E=T-P

Ví dụ: Trở lại mạng ở trên với trọng số [1 -0.8] và ta muốn huấn luyện mạng để khi

ngõ vào là [1 2] thì ngõ ra là -1. net.b{1}=0; w=[1 -0.8]; net.IW{1,1}=w P=[1;2] %Ngo vao T=[1] %Ngo ra

a=sim(net,P) %Tinh ngõ ra và sai số e=T-a %Kết quả bằng 1

dw=learnp(w,P,[],[],[],[],e,[],[],[],[],[]]) % học và tìm sự thay đổi của trọng số

97 Kết quả: dw= 1 2 w=w+dw %Trọng số mới Kết quả: w= 2.0000 1.20000

+ Hàm huấn luyện mạng train

[NET,TR] = train(NET,X,T)

Hàm huấn luyện cho mạng nơron NET, với tập dữ liệu vào X và dữ liệu ra Ỵ Kết thúc quá trình huấn luyện mạng hàm trả về giá trị là mạng nơron NET đã được huấn luyện và các giá trị huấn luyện TR.

Chú ý: Hàm train huấn luyện mạng theo thuật toán học của mạng nơron được thiết lập

Các tham số cài đặt cơ bản cho hàm train:

net.trainParam.epochs -chu kỳ huấn luyện net.trainParam.goal -sai số huấn luyện net.trainParam.lr -hệ số học

net.trainParam.show -vùng hiển thị trong quá trình huấn luyện

Thay vì dùng hàm learnp nhiều lần ta có thể dùng hàm train, trở lại mạng trên với tập huấn luyện:

{[2;2] .0} ; {[1;-2],1] ; {[2;-2],0] ; {[-1;1],1]

net=newp([-2 2;-2 2],1); %khởi tạo mạng có trọng số và bias 0 net.trainParam.epochs=1; %thử một chu kỳ huấn luyện

P=[[2;2] [1;-2] [-2;2] [-1;1]]; %tập huấn luyện T=[0 1 0 1];

net=train(net,P,T); %huấn luyện 1 bước

a=sim(net,P) % kiểm tra thấy sai tăng lên 3 chu kỳ Kết quả: a=

0 0 1 1

net.trainParam.epochs=3; %thử một chu kỳ huấn luyện net=train(net,P,T); a=sim(net,P) Kết quả: a= 0 1 0 1 w=net.IW{1,1} b=net.b{1}

98 Khi cần xem cấu trúc mạng ta dùng lệnh view(net). Hoặc khi cần truy suất mạng sang mô hình Simulink ta dùng lệnh:

gensim(net,st) trong đó st là thời gian lấy mẫu (mặc định bằng 1), thông thường ở dạng số thực dương. Nếu mạng không có trễ thì giá trị đó là -1.

Kết quả hiện ra cấu trúc mạng Perceptron như sau:

Trong trường hợp trị số vector P chênh lệch nhiều có thể gây khó khăn cho quá trình học, ta có thể dùng thuật toán: Wmới=Wcũ+e(PT||p||) với hàm tương ứng là

learnpn

3.3.2. Thiết lập và mô phỏng mạng Adaline + Mô hình mạng Adaline trên Matlab

Hình 3.18. Mô hình mạng nơron Adaline trên Simulink

+ Thiết lập mạng Adaline

Để thiết lập mạng Adaline trên Matlab ta dùng lệnh newlin. Với cú pháp tương tự như lệnh newp. Ví dụ tạo mạng hai ngõ vào, một nơron:

99 Với trọng số và bias khởi đầu là giá trị 0.

Ta có thể tự tạo mạng thỏa mãn yêu cầu với dữ liệu vào bằng lệnh newlind:

P=[1 2 3]; % dữ liệu vào T=[2.0 4.1 5.9]; % dữ liệu ra

net=newlind(P,T); % tạo mạng theo yêu cầu y=sim(net,P); % kiểm tra

+ Huấn luyện mạng Adaline

Các thông số mạng được tính theo thuật toán cực tiểu trung bình bình phương sai số LMS. Bài toán cực tiểu được giải nhờ thuật toán lặp Widrow – Hoff. Lệnh learnwh tính sự thay đổi của w và b ở mỗi bước. Lệnh train dùng huấn luyện mạng.

Ví dụ: Huấn luyện mạng tuyến tính

P=[2 1 -2 -1;2 -2 2 1]; %tập dữ liệu vào T=[0 1 0 1]; % tập đích mong muốn net=newlin([-2 2;-2 2],1); % tạo mạng net.trainParam.goal=0.001; % sai số tối đa [net,tr]=train(net,P,T); Weight=net.IW{1,1} %đọc thông số mạng Bias=net.b(1)

A=sim(net,P); %Kiểm tra

Err=T- sim(net,P); %Kiểm tra sai lệch

3.3.3. Thiết lập và mô phỏng mạng truyền thẳng nhiều lớp + Mô hình mạng truyền thẳng nhiều lớp trên Matlab

Hình 3.19. Mô hình mạng nơron truyền thẳng nhiều lớp trên Simulink

100 Để thiết lập mạng truyền thẳng nhiều lớp trên Matlab ta dùng lệnh newff, có bốn đối số vào, đầu tiên là ma trận Rx2 cho biết tầm của biến vào, kế đến là các mảng cho biết số lượng nơron mỗi lớp, rồi đến mảng cho biết tên các hàm chuyển đổi dùng trong mỗi lớp, và cuối cùng là tên hàm dùng để huấn luyện mạng.

Ví dụ: Tạo mạng hai lớp, hai đầu vào có tầm [-1 2] và [0 5], lớp một có ba nơron, lớp ra có một nơron, hàm chuyển đổi lớp đầu vào là tan-sigmoid, lớp ra là lớp tuyến tính, hàm huấn luyện là traingd, các thông số của mạng được khởi động theo thuật toán đặt trước.

net=newff([-1 2;0 5],[3,1],{'tansig','purelin'},'traingd');

+ Huấn luyện mạng

Việc huấn luyện mạng dùng luật học lan truyền ngược để cập nhật thông số mạng, điểm cơ bản của thuật toán là LMS, việc cập nhật được tiến hành ngược rừ lớp ra lùi lại đến các lớp trước, có nhiều lệnh của Matlab huấn luyện mạng theo thuật toán lan truyền ngược.

traingd - Gradient descent backpropagation

raingdm - Gradient descent with momentum

backpropagation

raingdx - Variable Learning Rate Gradient Descent

trainrp - Resilient Backpropagation

traincgf - Fletcher-Powell Conjugate Gradient

traincgp - Polak-Ribiére Conjugate Gradien

traincgb - Conjugate Gradient with Powell/Beale Restarts

trainscg - Scaled Conjugate Gradient

trainbfg - BFGS Quasi-Newton

trainoss - One Step Secant

trainlm - Levenberg-Marquardt

trainbr - Bayesian Regularization

Ví dụ: Huấn luyện mạng P=[-1 -1 2 2;0 5 0 5]; %tập dữ liệu vào T=[-1 -1 1 1]; % tập đích mong muốn net=newff(minmax(P), [3,1],{'tansig','purelin'},'traingd'); %tạo mạng net.trainParam.show=50; net.trainParam.lr=0.05; %Hệ số học

net.trainParam.epochs=300; %Chu kỳ huấn luyện net.trainParam.goal=1e-5; %Sai so huan luyen [net,tr]=train(net,P,T);

101

Một phần của tài liệu Tài liệu học tập điều khiển mờ và mạng nơron (Trang 95 - 101)

Tải bản đầy đủ (PDF)

(134 trang)