báo cáo phân loại gạch men

30 0 0
Tài liệu đã được kiểm tra trùng lặp
báo cáo phân loại gạch men

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

- Rút ra một số phân tích và nhận xét về kết quả sau quá trình huấn luyện.1.3... Nhận xét- Sau nhiều lần huấn luyện.. ta đã tìm được giá trị ma trận trọng số ban đầu w để có thể huấn luy

Trang 2

- Rút ra một số phân tích và nhận xét về kết quả sau quá trình huấn luyện.1.3 Quá trình huấn luyện

clcclear all

%B1: Chọn tốc độ học

eta = 1;

%B2: Khởi động

K = 10; Emax=0.0000001; E = 0;x = [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ;

0.958 1.043 1.907 0.78 0.579 0.003 0.001 0.014 0.007 0.004; 0.003 0.001 0.003 0.002 0.001 0.105 1.748 1.839 1.021 0.214];d = [1 1 1 1 1 0 0 0 0 0];

w = zeros(3,K+1);w(:,1) = rand(3,1);maxepoch = 100000;flag = 0; lamda = 1;E = zeros(maxepoch, 1);

%B3: Bắt đầu quá trình huấn luyệnfor i = 1: maxepoch

for k = 1:K

net = w(:,k)'*x(:,k);

y = 1/(1+exp(-lamda*net)); %learning signal

delta = (d(k)-y)*lamda*y*(1-y); %B4: Cập nhật vecto trọng số

w(:,k+1) = w(:,k)+eta*delta*x(:,k);

%B5:Tính sai số tích lũy

E(i) = E(i)+0.5*(d(k)-y)^2; end

%Kết thúc một chu kỳ huấn luyện (epoch)

if E(i) < Emax

Trang 3

flag = i; break; else

%bắt đầu 1 chu kỳ huấn luyện mới

w(:,1) = w(:,K+1); end

plot(1:1:maxepoch, E);title('Errors');

xlabel('epoch');ylabel('error');grid on

- Lần học thứ nhất: Chọn tốc độ học eta = 1, maxepoch = 10000 và random giá trị trọng số ban đầu w:

Trang 4

w = [3.70678912967926; 13.3964800971174; -4.49193589240130]Tại epoch thứ 10000, sai số E = 3.202100643186678e-04

Đồ thị sai số E

→ Dựa vào độ thị, ta nhận thấy quá trình huấn luyện đang đi theo đúng hướng Sai số E khá nhỏ nhưng vẫn chưa đạt được như mong muốn là E = Emax = 10^(-7).

- Lần học thứ hai: Giữ nguyên tốc độ học eta = 1, maxepoch = 10000, lấy trọng số ban đầu là trọng số cuối cùng của lần học thứ nhất:

Trọng số ban đầu:

w = [3.70678912967926; 13.3964800971174; -4.49193589240130]

Trang 5

Dựa vào kết quả, ta thấy với Emax = 10^(-7) thì kết quả huấn luyện vẫn chưa thành công (flag = 0)

Trọng số cuối cùng:

w = [4.02381955956304; 14.5599870393751; -4.80565977300544]Tại epoch thứ 10000, sai số E = 1.584453250579297e-04

Trang 6

33.5 10

- Lần học thứ ba: Giữ nguyên tốc độ học eta = 1, tăng maxepoch = 100000, lấy ma trận trọng số ban đầu là ma trận trọng số cuối cùng của lần học thứ hai:

Trọng số ban đầu:

w = [4.02381955956304; 14.5599870393751; -4.80565977300544]

Trang 7

Dựa vào kết quả, ta thấy với Emax = 10^(-7) thì kết quả huấn luyện vẫn chưa thành công (flag = 0)

Trọng số cuối cùng:

w = [4.20859970696047; 15.2373304981175; -4.98671172763254]Tại epoch thứ 100000, sai số E = 1.051122732604029e-04

Trang 8

11.11.21.31.41.51.6 10

Trang 9

Dựa vào kết quả, ta thấy với Emax = 10^(-7) thì kết quả huấn luyện đã thành công (flag = 1)

1 10

Đồ thị sai số E

Trang 10

→ Từ đồ thị ta thấy E = Emax như mong muốn.

→ Ma trận trọng số ban đầu có ảnh hưởng đến kết quả huấn luyện.

1.4 Kiểm tra kết quả huấn luyện

function y = TEST_GACHMEN_PERCEPTRON_HALFLINEAR(x1,x2)w = [7.35866362314930; 26.7072923569441; -7.91299372490831];x=[-1;x1;x2];

y = 1/(1+exp(-lamda*net));

Các kết quả từ bộ mẫu:

Trang 11

→ Kết quả đúng với kết quả của bộ mẫu và có sai số rất thấp dường như không đáng kể so với bộ mẫu.

1.5 Kiểm tra lại sai số Eclc

clear all

x = [0.958 1.043 1.907 0.78 0.579 0.003 0.001 0.014 0.007 0.004; 0.003 0.001 0.003 0.002 0.001 0.105 1.748 1.839 1.021 0.214];d = [1 1 1 1 1 0 0 0 0 0];

K=10; y=0; E=0;for k=1:K

y = TEST_GACHMEN_PERCEPTRON_HALFLINEAR(x(1,k),x(2,k)); E = E + 0.5*(d(k)-y)^2

end

Trang 12

→ Ta thấy sai số E rất nhỏ, có thể bỏ qua.1.6 Nhận xét

- Sau nhiều lần huấn luyện ta đã tìm được giá trị ma trận trọng số ban đầu w để có thể huấn luyện mạng thành công với sai số E tiến về Emax = 10^(-7) như mong muốn.

- Trong suốt quá trình huấn luyện, ta nhận thấy tốc độ học, ma trận trọng số

Trang 13

ban đầu ảnh hưởng rất nhiều đến sai số và kết quả huấn luyện mạng.

→ Perceptron Half Linear chỉ hoạt động thực sự tốt khi dữ liệu phân tách tuyếntính (linearly separable), tức có thể dùng đường thẳng, mặt phẳng, siêu phẳng để làm biên giới, nếu dữ liệu không thỏa điều kiện này, không những

perceptron mà bất kì thuật toán phân loại tuyến tính nào cũng sẽ khó thành công.

2 Phân loại hoa lan

2.1 Quá trình huấn luyệnA

clcclear all%Khởi động

eta = 0.1; lamda = 1;E = 0; Emax = 0.001;

x = [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;

5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 5.4 4.8 4.8 4.3 5.8 5.7 5.4 5.1 5.7 5.1 5.4 5.1 4.6 5.1 4.8 5 5 5.2 5.2 4.7 4.8 5.4 5.2 5.5 4.9 5 5.5 4.9 4.4 5.1 5 4.5 4.4 5 5.1 4.8 5.1 4.6 5.3 5 7 6.4 6.9 5.5 6.5 5.7 6.3 4.9 6.6 5.2 5 5.9 6 6.1 5.6 6.7 5.65.8 6.2 5.6 5.9 6.1 6.3 6.1 6.4 6.6 6.8 6.7 6 5.7 6.3 5.8 7.1 6.3 6.5 7.6 4.9 7.3 6.7 7.2 6.5 6.4 6.8 5.7 5.8 6.4 6.5 7.7 7.7;

3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 3.7 3.4 3 3 4 4.4 3.9 3.5 3.8 3.8 3.4 3.7 3.6 3.3 3.4 3 3.4 3.5 3.4 3.2 3.1 3.4 4.1 4.2 3.1 3.2 3.5 3.1 3 3.4 3.5 2.3 3.2 3.53.8 3 3.8 3.2 3.7 3.3 3.2 3.2 3.1 2.3 2.8 2.8 3.3 2.4 2.9 2.7 2 3 2.2 2.9 2.9 3.1 32.7 2.2 2.5 3.2 2.8 2.5 2.8 2.9 3 2.8 3 2.9 2.8 3.3 2.7 3 2.9 3 3 2.5 2.9 2.5 3.6 3.2 2.7 3 2.5 2.8 3.2 3 3.8 2.6;

1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 1.5 1.6 1.4 1.1 1.2 1.5 1.3 1.4 1.7 1.5 1.7 1.5 1 1.7 1.9 1.6 1.6 1.5 1.4 1.6 1.6 1.5 1.5 1.4 1.5 1.2 1.3 1.5 1.3 1.5 1.3 1.3 1.3 1.6 1.9 1.4 1.6 1.4 1.5 1.4 4.7 4.5 4.9 4 4.6 4.5 4.7 3.3 4.6 3.9 3.5 4.2 44.7 3.6 4.4 4.5 4.1 4.5 3.9 4.8 4 4.9 4.7 4.3 4.4 4.8 5 4.5 4.1 6 5.1 5.9 5.6 5.8 6.6 4.5 6.3 5.8 6.1 5.1 5.3 5.5 5 5.1 5.3 5.5 6.7 6.9;

0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 0.2 0.2 0.1 0.1 0.2 0.4 0.4 0.3 0.3 0.3

Trang 14

0.2 0.4 0.2 0.5 0.2 0.2 0.4 0.2 0.2 0.2 0.2 0.4 0.1 0.2 0.1 0.2 0.2 0.1 0.2 0.2 0.30.3 0.2 0.6 0.4 0.3 0.2 0.2 0.2 0.2 1.4 1.5 1.5 1.3 1.5 1.3 1.6 1 1.3 1.4 1 1.5 1 1.4 1.3 1.4 1.5 1 1.5 1.1 1.8 1.3 1.5 1.2 1.3 1.4 1.4 1.7 1.5 1.3 2.5 1.9 2.1 1.8 2.2 2.1 1.7 1.8 1.8 2.5 2 1.9 2.1 2 2.4 2.3 1.8 2.2 2.3];

d = [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1];K=length(x);

%trọng số ban đầu

w = zeros(5, K+1);w(:,1) = rand(5,1);v1 = zeros(5, K+1);v2 = zeros(5, K+1);v3 = zeros(5, K+1);v4 = zeros(5, K+1);v1(:,1) = rand(5,1);v2(:,1) = rand(5,1);v3(:,1) = rand(5,1);v4(:,1) = rand(5,1);maxepoch = 100000;flag = 0;

z2 = 1/(1 + exp(-lamda*netq2)); netq3 = v3(:,k)'*x(:, k);

z3 = 1/(1 + exp(-lamda*netq3)); netq4 = v4(:,k)'*x(:, k);

z4 = 1/(1 + exp(-lamda*netq4)); %Lớp ra

z = [-1; z1; z2; z3; z4];

Trang 15

neti = w(:, k)'*z; y = neti;

%Lan truyền ngược sai số

%Lớp ra

delta_o1 = d(k) - y;

w(:, k+1) = w(:, k) + eta*delta_o1*z; %Lớp ẩn

delta_h1 = (delta_o1*w(2, k))*lamda*z1*(1-z1); v1(:, k+1) = v1(:, k) + eta*delta_h1*x(:, k);

delta_h2 = (delta_o1*w(3, k))*lamda*z2*(1-z2); v2(:, k+1) = v2(:, k) + eta*delta_h2*x(:, k); delta_h3 = (delta_o1*w(4, k))*lamda*z3*(1-z3); v3(:, k+1) = v3(:, k) + eta*delta_h3*x(:, k); delta_h4 = (delta_o1*w(5, k))*lamda*z4*(1-z4); v4(:, k+1) = v4(:, k) + eta*delta_h4*x(:, k); %Sai số tích lũy

E(i) = E(i)+0.5*((d(k)-y)^2); end

if E(i) < Emax flag = i; break; else

%bắt đầu 1 chu kỳ huấn luyện mới

w(:,1) = w(:,K+1); v1(:,1) = v1(:,K+1); v2(:,1) = v2(:,K+1); v3(:,1) = v3(:,K+1); v4(:,1) = v4(:,K+1); end

%Đồ thị E

plot(1:1:maxepoch, E);title('Errors');

Trang 16

xlabel('epoch');ylabel('error');grid on

Lần học thứ nhất: Chọn tốc độ học eta = 1, maxepoch = 10000, Emax = 0.01, random giá trị ma trận trọng số ban đầu:

Trang 17

Đồ thị sai số E

→ Quá trình huấn luyện không thành công (flag = 0).

→ Sai số E tăng cao lên tới 252 sau đó giảm xuống còn 0 do tốc độ học khá cao.

Lần học thứ hai: Giảm tốc độ học eta = 0.1, maxepoch = 10000, Emax = 0.01, random giá trị ma trận trọng số ban đầu:

Trang 18

→ Quá trình huấn luyện vẫn chưa thành công, flag = 0.

Đồ thị sai số E

→ Dựa vào kết quả, ta thấy quá trình huấn luyện đang đi theo đúng hướng

Trang 19

→ Ta thấy, tại epoch thứ 10000, E = 0.727957090525557, sai số E đang giảm dần và tiến về phía Emax = 0.01.

Lần học thứ ba: Chọn tốc độ học eta = 0.1, tăng maxepoch = 100000, Emax = 0.01.

Giá trị ma trận trọng số ban đầu:

w = [3.67239224246024; 1.14664381058791; 1.55662795714228; 2.11872148639627; 2.55720126727612];

v1 = [4.15647787622659; 23.3853763451955; 7.98386479916448; 17.7776699579060; -19.7116029508462];

v2 = [45.3794317586718; 20.4729286188721; 60.7924929956459; 5.58483564714580; -57.9449234427248];

-v3 = [30.0443293008160; -8.53938231659503; -8.86869587091134; 11.4448635577124; 29.8805101169067];

v4 = [3.11967487560311; 4.21475536388363; -21.3823635343125; 3.31754466832756; 22.6160707928666];

Trang 20

v1 = [3.19053754838647; 26.5400438557788; 8.70978892974719; 19.9351852763160; -24.6827539701645];

v2 = [50.8552189712903; 22.8760367539838; 69.8918499871949; 7.31132599140268; -65.7549982890038];

Trang 21

-v3 = [32.8945212199779; -9.50167133197749;-10.3044355398110; 12.7032135449231; 33.8424342710494];

v4 = [3.28807771893940; 5.10249540227170; -22.7485041345838; 2.81593852478400; 23.2687863281966];

Trang 22

v1 = [0.401336428369001; 31.0508937337369; 10.3334775741227; 23.4144898864225; -30.3332268438649];

v2 = [60.0147685748641; 27.4124860333053; 85.4382245915543; 9.43017448840452; -79.6942991424913];

-v3 = [38.0827022399293; -11.3066162560625; -12.7503262880973; 14.9901016827064; 40.9653033769125];

Trang 23

v4 = [3.68930361064137; 6.30680630439473; -26.1889907375190; 2.71444910084081; 26.2042781225628];

2 10

Đồ thị sai số E

Trang 24

→ Dựa vào kết quả, ta nhận thấy với Emax = 0.0015 thì kết quả huấn luyện đã thành công (flag = 365706).

Giá trị ma trận trọng số cuối cùng:

w = [3.59237666147708; 1.05042597758022; 1.53803990316092; 2.04926017497824; 2.54369771586919];

v1 = [0.324405603445450; 31.1491922138041; 10.3793713408128; 23.4952026366810; -30.4318671472851];

v2 = [60.2131718477820; 27.5164746381601; 85.7896635782199; 9.47124375346754; -80.0185870200435];

-v3 = [38.2036620803459; -11.3494112556368; -12.8059154991202; 15.0430949177526; 41.1294348642890];

v4 = [3.69872983217509; 6.33163077190324; -26.2699143844420; 2.71711302682242; 26.2788462498564];

2.2 Kiểm tra kết quả huấn luyện

function y = Test_HoaLan(x1,x2,x3,x4)x=[-1;x1;x2;x3;x4];

%Emax = 0.0015

w = [3.59237666147708; 1.05042597758022; 1.53803990316092; 2.04926017497824; 2.54369771586919];

v1 = [0.324405603445450; 31.1491922138041; 10.3793713408128; 23.4952026366810; -30.4318671472851];

v2 = [60.2131718477820; 27.5164746381601; 85.7896635782199; 9.47124375346754; -80.0185870200435];

-v3 = [38.2036620803459; -11.3494112556368; -12.8059154991202; 15.0430949177526; 41.1294348642890];

Trang 25

v4 = [3.69872983217509; 6.33163077190324; -26.2699143844420; 2.71711302682242; 26.2788462498564];

z1 = 1/(1 + exp(-lamda*netq1));z2 = 1/(1 + exp(-lamda*netq2));z3 = 1/(1 + exp(-lamda*netq3));z4 = 1/(1 + exp(-lamda*netq4));z = [-1; z1; z2; z3; z4];

neti = w'*z;y = neti;end

Kết quả kiểm tra một vài mẫu sau khi học thành công :

Trang 27

3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 3.7 3.4 3 3 4 4.4 3.9 3.5 3.8 3.8 3.4 3.7 3.6 3.3 3.4 3 3.4 3.5 3.4 3.2 3.1 3.4 4.1 4.2 3.1 3.2 3.5 3.1 3 3.4 3.5 2.3 3.2 3.53.8 3 3.8 3.2 3.7 3.3 3.2 3.2 3.1 2.3 2.8 2.8 3.3 2.4 2.9 2.7 2 3 2.2 2.9 2.9 3.1 32.7 2.2 2.5 3.2 2.8 2.5 2.8 2.9 3 2.8 3 2.9 2.8 3.3 2.7 3 2.9 3 3 2.5 2.9 2.5 3.6 3.2 2.7 3 2.5 2.8 3.2 3 3.8 2.6;

1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 1.5 1.6 1.4 1.1 1.2 1.5 1.3 1.4 1.7 1.5 1.7 1.5 1 1.7 1.9 1.6 1.6 1.5 1.4 1.6 1.6 1.5 1.5 1.4 1.5 1.2 1.3 1.5 1.3 1.5 1.3

Trang 28

1.3 1.3 1.6 1.9 1.4 1.6 1.4 1.5 1.4 4.7 4.5 4.9 4 4.6 4.5 4.7 3.3 4.6 3.9 3.5 4.2 44.7 3.6 4.4 4.5 4.1 4.5 3.9 4.8 4 4.9 4.7 4.3 4.4 4.8 5 4.5 4.1 6 5.1 5.9 5.6 5.8 6.6 4.5 6.3 5.8 6.1 5.1 5.3 5.5 5 5.1 5.3 5.5 6.7 6.9;

0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 0.2 0.2 0.1 0.1 0.2 0.4 0.4 0.3 0.3 0.3 0.2 0.4 0.2 0.5 0.2 0.2 0.4 0.2 0.2 0.2 0.2 0.4 0.1 0.2 0.1 0.2 0.2 0.1 0.2 0.2 0.30.3 0.2 0.6 0.4 0.3 0.2 0.2 0.2 0.2 1.4 1.5 1.5 1.3 1.5 1.3 1.6 1 1.3 1.4 1 1.5 1 1.4 1.3 1.4 1.5 1 1.5 1.1 1.8 1.3 1.5 1.2 1.3 1.4 1.4 1.7 1.5 1.3 2.5 1.9 2.1 1.8 2.2 2.1 1.7 1.8 1.8 2.5 2 1.9 2.1 2 2.4 2.3 1.8 2.2 2.3];

d = [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1];K=length(x); y=0; E=0;

for k=1:K

y = Test_HoaLan(x(1,k),x(2,k),x(3,k),x(4,k)); E = E + 0.5*(d(k)-y)^2

end

Trang 29

2.4 Nhận xét

- Sau nhiều lần huấn luyện ta đã tìm được giá trị ma trận trọng số ban đầu w để có thể huấn luyện mạng thành công với sai số E tiến về Emax = 0.01 như mong muốn.

- Trong suốt quá trình huấn luyện, ta nhận thấy tốc độ học, ma trận trọng số ban đầu ảnh hưởng rất nhiều đến sai số và kết quả huấn luyện mạng.

1 → Ưu điểm:

o Khả năng học tập phức tạp: Mạng nhiều lớp có khả năng học tập

các hàm phức tạp, giúp giải quyết các vấn đề phân loại, dự đoán và xửlý dữ liệu không tuyến tính.

o Tính linh hoạt: Có thể tùy chỉnh kiến trúc mạng bằng cách thêm hoặc

bớt lớp ẩn, điều chỉnh số lượng nơ-ron, và sử dụng các hàm kích hoạt khác nhau.

o Hiệu suất tốt: Với đủ dữ liệu huấn luyện và tinh chỉnh thích hợp,

mạng nhiều lớp có thể đạt hiệu suất tốt trên nhiều tác vụ.

Trang 30

2 Nhược điểm:

o Phức tạp trong huấn luyện: Huấn luyện mạng nhiều lớp đòi hỏi

nhiều thời gian và tài nguyên tính toán Việc tối ưu hóa trọng số và bias có thể khó khăn và dễ gặp vấn đề về overfitting.

o Khó hiểu và khó giải thích: Kiến trúc phức tạp của mạng nhiều lớp

làm cho việc hiểu và giải thích cách mạng hoạt động trở nên khó khăn.

Ngày đăng: 13/05/2024, 14:44

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan