You are on page 1of 25

CẤU TRÚC DỮ LIỆU

1. Cấu trúc đầu vào song song với Network tĩnh (không có phản hồi
hoặc giữ chậm)

Tạo mạng tuyến tính

Gán các giá trị trọng lượng

bằng lệnh gán


Giả định đưa vào 4 vectơ đồng thời:

Các vectơ này được biểu diễn dưới dạng ma trận:

Thực hiện mô phỏng mạng:

Mạng này tương tự mạng gồm 4 nơron hoạt động song song và mỗi mạng có
2 đầu vào và 1 đầu ra
2. Cấu trúc đầu vào nối tiếp với mạng động học

1
Lệnh khởi tạo mạng này:

Gán trọng số cho mạng:

Giả định dãy đầu vào

và được biểu diễn dưới dạng mảng các phần tử:

Thực hiện mô phỏng mạng:

Giải thích kết quả:

3. Cấu trúc đầu vào song song đối với mạng động học
Trong một số trường hợp, mạng phải phản ứng với nhiều dãy đầu vào nối
tiếp trong cùng một thời gian. Khi này sẽ biểu diễn mạng dưới dạng một tập
song song các đầu vào nối tiếp nhau.
Ví dụ có 2 dãy đưa vào mạng:

2
Cấu trúc mạng động học giống như trong phần 2:

Lệnh khởi tạo mạng này:

Gán trọng số cho mạng:

Đầu vào P là một mảng, mỗi phần tử của mảng bao gồm 2 phần tử của 2 dãy
và xuất hiện cùng thời điểm:

Thực hiện mô phỏng mạng:

nhận được:

Giải thích kết quả:

3
CÁC KIỂU LUYỆN MẠNG
Luyện tăng dần Incremental Training, trong đó trọng lượng và bias được cập nhật
mỗi lần khi đầu vào (input) đưa đến mạng.
Luyện cả khóa Batch Training , trong đó trọng lượng và bias được cập nhật chỉ khi
tất cả các đầu vào được đưa đến mạng
1. Incremental Training với mạng tĩnh (Incremental Training with
Static Networks)
(File Incremental_Training_1)
Xem lại mạng tĩnh trong ví dụ đầu tiên:

Để luyện mạng tăng dần, trọng lượng và bias được cập nhật mỗi lần khi đầu vào
(input) đưa đến mạng, sử dụng hàm adapt.
Giả định muốn luyện mạng để tạo ra một hàm tuyến tính:

Các đầu vào:

Hàm target phải đạt được:

Thực hiện khởi động mạng với các trọng lượng và bias bằng không:

Biểu diễn đầu vào và target dưới dạng dãy:

Thực hiện luyện mạng tăng dần:


[net,a,e,pf] = adapt(net,P,T);
nhận được:
a = [0] [0] [0] [0]
e = [4] [5] [7] [7]

4
Kết quả đầu ra của mạng luôn bằng không, vì trọng số và bias của mạng cho
bằng không và tốc độ luyện mạng cũng bằng không.

Khi luyện mạng với tốc độ học , mạng sẽ điều chỉnh sau mỗi lần đưa đến
đầu vào:

Giải thích kêt quả adapt:


Đối với :

Vì nên trọng số và bias của mạng phải thay đổi:

Đối với :

Vì nên trọng số và bias của mạng phải thay đổi:

Đối với :

Vì nên trọng số và bias của mạng phải thay đổi:

Đối với :

5
Vì nên trọng số và bias của mạng phải thay đổi:

1. Incremental Training với mạng động học (Incremental Training with


Dynamic Networks) (file )

Thực hiện khởi động mạng tuyến tính với các trọng lượng và bias ban đầu bằng
không, tốc độ học :

Để luyện mạng động học này, đưa vào đầu vào và target:

% - Đầu vào ban đầu bị giữ chậm (we assign the first
term in the sequence as the initial condition for the delay)
Luyện mạng sử dụng lệnh adapt:

Giải thích kết quả:


Đối với : % Thực ra đầu vào là , trong đó được
nhân với trọng số , nhân với trọng số

Vì nên trọng số và bias của mạng phải thay đổi:

6
Đối với : % Thực ra đầu vào là , trong đó được
nhân với trọng số , nhân với trọng số

Vì nên trọng số và bias của mạng phải thay đổi:

Đối với : % Thực ra đầu vào là , trong đó được


nhân với trọng số , nhân với trọng số

Batch Training
Batch Training với mạng tĩnh (Batch Training with Static Networks)
(file Batch_Training_1)

Batch Training có thể được dùng với adapt or train, nhưng train hay dùng
hơn (adapt chỉ dùng cho Incremental training).
Khởi tạo mạng:
net = newlin([-1 1;-1 1],1,0,0.1);
net.IW{1,1} = [0 0];
net.b{1} = 0;

P = [1 2 2 3; 2 1 3 1];
T = [4 5 7 7];
For batch training of a static network with adapt, the input vectors must be
placed in one matrix of concurrent vectors.

Khi sử dụng lệnh adapt, sẽ dẫn tới trains, (hàm thích nghi mặc định cho mạng
tuyến tính) và learnwh (hàm học mặc định cho trọng lượng và bias)
[net,a,e,pf] = adapt(net,P,T);
a=0000
e=4577
Giá trị trọng số và bias sau khi Batch Training:

7
Giải thích kết quả:
Đối với , , , vì trọng
lượng và bias không được cập nhật nên các đầu ra đều bằng 0
Thực hiện cập nhật với đầu vào thứ nhất (nhưng không sử dụng để tính )

Thực hiện cập nhật với đầu vào thứ hai (nhưng không sử dụng để tính )

Thực hiện cập nhật với đầu vào thứ ba (nhưng không sử dụng để tính )

Thực hiện cập nhật với đầu vào thứ bốn (kết thúc)

8
Khi sử dụng lệnh train (file Batch_Training_2 ), các phần tử của mảng vectơ
đầu vào nối tiếp được chuyển vào được chuyển thành ma trận vectơ đầu vào
song song:
net = newlin([-1 1;-1 1],1,0,0.1);
net.IW{1,1} = [0 0];
net.b{1} = 0;

P = [1 2 2 3; 2 1 3 1]; % ma trận vectơ đầu vào song song:

T = [4 5 7 7];
Hàm luyện mặc định cho mạng tuyến tính là hàm trainc, hàm học mặc định
cho trọng lượng và bias là learnwh:
net.inputWeights{1,1}.learnParam.lr = 0.1;
net.biases{1}.learnParam.lr = 0.1;
net.trainParam.epochs = 1;
net = train(net,P,T);
Kết quả nhận được cũng giống như khi sử dụng lệnh adapt:
»net.IW{1,1}
ans = 4.9000 4.1000
»net.b{1}
ans = 2.3000

Batch Training với mạng động học (Batch Training With Dynamic Networks)
(file Batch_Training_3)

net = newlin([-1 1],1,[0 1],0.02);


net.IW{1,1}=[0 0];
net.biasConnect=0;
net.trainParam.epochs = 1;
Pi = {1};
P = {2 3 4};
T = {3 5 6};
net=train(net,P,T,Pi);
net.IW{1,1}
%ans = 0.9000 0.6200
Giải thích kết quả:

9
Đối với : % Thực ra đầu vào là , trong đó được
nhân với trọng số , nhân với trọng số

Vì nên trọng số và bias của mạng phải thay đổi:

Đối với : % Thực ra đầu vào là , trong đó được


nhân với trọng số , nhân với trọng số

Vì nên trọng số và bias của mạng phải thay đổi:

Đối với : % Thực ra đầu vào là , trong đó được


nhân với trọng số , nhân với trọng số

10
PERCEPTRON
Perceptron là 1 nơron, sử dụng hàm chuyển đổi hardlim:

Mỗi một đầu vào đươc trọng lượng hóa với trọng lượng , được
lấy tổng cùng với bias thành và sau đó qua hàm hardlim. Đầu ra của
Perceptron bằng 1 nếu , ngược lại, .
Ứng dụng Perceptron trong phân loại mẫu (xem Matlab – Demos – Perceptron
– decision boundary nnd4db )
Nếu đường phân chia đi qua gốc tọa độ, nếu cho phép phân loại
2 tập đầu vào không nằm trên 2 phía khác nhau của trục tọa độ

11
Cấu trúc Perceptron

Khởi tạo Perceptron:


net = newp(PR, S)
PR là ma trận Rx2 các giá trị min và max của R đầu vào, S là số lượng nơron
Mô phỏng Perceptron:
Sim (net,P)

Ví dụ: dùng Perceptron phân chia loại mẫu:


net = newp([-2 2;-2 +2],1);
net.IW{1,1}= [-1 1];
net.b{1} = [1];
p1 = [1;1];
a1 = sim(net,p1) % cho ra kết quả bằng 1

12
p2 = [1;-1]
a2 = sim(net,p2) % cho ra kết quả bằng 0

% P1 P2 tương tự p3 = {[1;1] [1;-1]};


a3 = sim(net,p3); % kết quả a3 = [1] [0]

Reset các tham số trọng lượng và bias Perceptron về 0:


Initialization (init)
net = newp([-2 2;-2 +2],1);
wts = net.IW{1,1} % cho ra kết quả wts = 0 0
bias = net.b{1} % cho ra kết quả bias = 0
Khởi tạo:
% cho ra kết quả wts = 3 4
net.IW{1,1} = [3,4];
net.b{1} = 5; % cho ra kết quả bias = 5
Reset:
net = init(net); % cho ra kết quả wts = 0 0 ; bias = 0

Luật học của Perceptron (mạng nơron)


Luật học là các thủ tục nhằm thay đổi trọng lượng và bias của mạng. Luật học
được ứng dụng để luyện mạng nhằm thực hiện một mục đích cụ thể (thực tế).
Luật học có 2 loại: supervised learning, and unsupervised learning.
Khi học có giám sát: luật học được cung cấp một tập các mẫu:

Trong đó p là đầu vào, t là target. Đầu ra của mạng so sánh với target, có sai số
sẽ quay về thay đổi trọng số mạng để sai số tiến đến 0.
Khi học không giám sát: Trọng lượng các phần tử của mạng và bias thay đổi
chỉ theo đầu vào và không có tập target. Luật học này thường được thực hiện
cho các mạng nơron thực hiện việc phân nhóm loại đầu vào thành các nhóm.
Lệnh (luật học) learnp sẽ thay đổi trọng lượng đối với đầu vào p và bias theo
sai số e=t-a. Vectơ target t phải chứa các phần tử 0 hoặc 1

Ví dụ

13
Quá trình sẽ được lặp đi lặp lại cho đến khi không còn sai số.
Demo luật học Perceptron (xem Matlab – Demos – Perceptron – Perceptron
Learning Rule nnd4pr )

Luyện Perceptron
(File Perceptron_1)

Để minh họa cho việc luyện Perceptron, xem xét một bài toán phân loại đơn
giản khi dùng Perceptron để phân loại 4 vectơ đầu vào, mỗi vectơ có hai phần
tử:

Đặt giá trị trọng lượng và bias ban đầu:

EPOCH thứ nhất


Đầu ra a của Perceptron đối với vectơ đầu vào đầu tiên :

14
Như vậy đầu ra không đúng với hàm đích , do đó, sử dụng quy tắc học
của Perceptron để tìm sự thay đổi của trọng lượng và bias:

Khi đó:

Khi này đưa đến vectơ đầu vào thứ hai ; đầu ra Perceptron khi này:

Vì target , do đó sai số khi này bằng 0 và sẽ không thay đổi trọng lượng
và bias:

Tiêp tục đối với vectơ đầu vào nhận được:

Vì , do đó , trọng lượng và bias được giữ nguyên:

Đối với vectơ đầu vào :

15
Vì , do đó , trọng lượng và bias được thay đổi:

;
Để xác định lời giải có đúng hay không, cần phải thực hiện một pass qua tất cả
các vectơ đầu vào (trong trường hợp này là 4). Dùng chung ;
cho các đầu vào nhận được
và không đúng với target.
Việc tính một chu trình cho từng vectơ đầu vào (trong trường hợp này là 4)
được gọi là một EPOCH
EPOCH thứ hai:
Đối với vectơ thì nên ;
Đối với vectơ :

Vì , do đó , trọng lượng và bias phải thay đổi:

Đối với vectơ :

Vì nên ;

Đối với vectơ :

Vì nên ;
Thực hiện pass qua tất cả 4 vectơ đầu vào, dùng chung
cho cả nhận được hoàn toàn đúng
với target.

16
(File Perceptron_1)
p = [[2;2] [1;-2] [-2;2] [-1;1]];
t =[0 1 0 1];
net = newp([-2 2;-2 +2],1);
net.trainParam.epochs = 3;
net = train(net,p,t);

a = sim(net,p)
a=
[0] [0] [1] [1]
Graphical User Interface (GUI)

KHỞI TẠO MẠNG (nntool)


Gõ lệnh nntool, xuất hiện cửa sổ Network/Data Manager

Nhập dữ liệu Input và Target:

Chạy file nntool_1 để lấy P và T từ cửa sổ Matlab:

17
P= [0 0 1 1;0 1 0 1];
T =[0 0 0 1];

Vào Import, sẽ xuất hiện P và T, đặt P vào Input Data, T vào Target Data,
sau đó Close.

Tạo mạng:
Vào New, xuất hiện cửa sổ Create New Data :

Tên mặc định là Network1 (có thể đổi tên khác)


Chọn Network Type là Perceptron.
Chọn Select a Input là P
Chọn Select a Target là T
Chọn Transfer function là Harlim
Chọn Learning function là Learnp
Kích vào View để quan sát hình ảnh của Network

18
Luyện mạng:
Trên cửa sổ Create New Data, kích đúp vào Create
Khi này, quay trở lại cửa sổ Network/Data Manager sẽ thấy tên mạng là
Network1 tại ô Network, input P tại ô Input Data, target T tại ô Target Data:

Kích đúp vào ô Open nằm ở phía dưới cửa sổ Network/Data Manager, sẽ
xuất hiện cửa sổ Network: Network1:

19
Kích vào ô Train và chọn:
Input =P
Target =T
Đặt tên cho Training Results – Outputs là Network_ouputs (có thể đổi tên)
Training Results – Errors là Network_errors (có thể đổi tên)
như dưới đây:

sau đó kích vào ô Train Network nằm ở phía dưới.


Kết quả sẽ xuất hiện cửa sổ Neural Network Training (nntraintool):

20
Đánh giá kết quả luyện mạng:

Theo cửa sổ Neural Network Training (nntraintool) nhận được ở trên, đánh
giá được:
Số EPOCH luyện mạng là 5,
Sai số (performance) bằng không.

Quay trở lại cửa sổ Network/Data Manager, sẽ xuất hiện thêm:


dòng chữ Network_ouputs tại ô Output Data
dòng chữ Network_errors tại ô Error Data:

21
Kích vào các dòng P,T, Network_ouputs, Network_errors để kiểm tra lại.
Trong cửa sổ Network: Network1, vào ô Simulate, đặt P,T, đặt tên cho
Outputs và Errors (kèm theo chữ S), rồi kích vào Simulate Network.

Quay trở lại cửa sổ Network/Data Manager để kiểm tra việc mô phỏng.
Ô Reinitialize dùng để đặt trọng lượng và bias.
Ô View/Edit Weights dùng để đặt hoặc kiểm tra trọng lượng và bias sau khi
luyện mạng:
Kết quả W=[2 1] , b=[-3]

22
Chuyển mạng và các dữ liệu ra cửa sổ Matlab
Từ cửa sổ Network/Data Manager, kích vào ô Export, toàn bộ các dữ liệu
P,T, mạng Network1 và Outputs, Errors được chuyển ra cửa số Matlab:

Khi này có thể kiểm tra:


network1.iw{1,1} % kết quả [2 1]
network1.b{1,1} % kết quả [-3]
Chọn Select All sẽ xuất hiện:

23
Kích vào Save để lưu dưới định dạng .MAT, đặt tên file là nntool_2.
Muốn mở file nntool_2, từ cửa sổ Matlab, gõ nntool > Network/Data
Manager>Import>Load from Disk File>Browse>nntool_2:

Chọn Network1>Load, P>Load,T>Load…. để xây dựng lại mạng

24
CÁC LĨNH VỰC ỨNG DỤNG MẠNG RƠ RON
1. Phân loại, nhận dạng mẫu (chữ viết)
2. Dự báo (giá cổ phiếu, tỷ giá)
QUÁ TRÌNH LUYỆN MẠNG NƠ RON
Cơ sở dữ Mạng đã
liệu huấn luyên
Sai số nhỏ

Lựa chọn
Mạng Nơ Tính sai
mẫu
ron số

Điều chỉnh Sai sô lớn


tham sô
(w)

25

You might also like