Penerapan Backpropagation untuk mengenali karater Alfabet A-Z menggunakan MATLAB


%Tugas Praktikum II Kecerdasan Komputasional
%Muhammad Iqbal

 
daftaralfabet = [‘A’ ‘B’ ‘C’ ‘D’ ‘E’ ‘F’ ‘G’ ‘H’ ‘I’ ‘J’ ‘k’ ‘L’ ‘M’ ‘N’ ‘O’ ‘P’ ‘Q’ ‘R’ ‘S’ ‘T’ ‘U’ ‘V’ ‘W’ ‘X’ ‘Y’ ‘Z’];
[alfabet target] = prprob;
net = newff(minmax(alfabet), [10 26], {‘tansig’ ‘logsig’});
net.trainParam.epochs = 1000;
net.trainParam.mu = 25;
net = train(net, alfabet, target);
for j = 1:5
fprintf(‘\nDerau : %i / 100\n’,j);
fprintf(‘==================\n’);
jumlahbenar(j) = 0;
derau(j) = 0.01*j;
alfabetderau{j} = alfabet + randn(size(alfabet))*derau(j);
hasilsim{j} = sim(net,alfabetderau{j});
hasilperiksa{j} = dist(target’,hasilsim{j});
diaghasilperiksa{j} = diag(hasilperiksa{j});
for i = 1 : 26
minimal = min(hasilperiksa{j}(i,:));
if (minimal == diaghasilperiksa{j}(i))
fprintf(‘Huruf %s berhasil diklasifikasi\n’,daftaralfabet(i));
jumlahbenar(j) = jumlahbenar(j)+1;
end
end
fprintf(‘Jumlah benar = %i\n’, jumlahbenar(j));
fprintf(‘Persentase = %d persen\n\n’, (jumlahbenar(j)/26)*100);
end

Output

Derau 1/100

Huruf A berhasil diklasifikasi
Huruf B berhasil diklasifikasi
Huruf C berhasil diklasifikasi
Huruf D berhasil diklasifikasi
Huruf E berhasil diklasifikasi
Huruf F berhasil diklasifikasi
Huruf G berhasil diklasifikasi
Huruf H berhasil diklasifikasi
Huruf I berhasil diklasifikasi
Huruf J berhasil diklasifikasi
Huruf k berhasil diklasifikasi
Huruf L berhasil diklasifikasi
Huruf M berhasil diklasifikasi
Huruf N berhasil diklasifikasi
Huruf O berhasil diklasifikasi
Huruf P berhasil diklasifikasi
Huruf Q berhasil diklasifikasi
Huruf R berhasil diklasifikasi
Huruf S berhasil diklasifikasi
Huruf T berhasil diklasifikasi
Huruf U berhasil diklasifikasi
Huruf V berhasil diklasifikasi
Huruf W berhasil diklasifikasi
Huruf X berhasil diklasifikasi
Huruf Y berhasil diklasifikasi
Huruf Z berhasil diklasifikasi

Jumlah benar = 26
Persentase = 100 persen

dst……..

Derau 2/100, …, derau 5/100

Berdasarkan hasil pengujian diatas Backpropagation lebih baik dari pada pengujian sebelumnya yang menggunakan Perceptron.

Penerapan Precepton untuk mengenali karater Alfabet A-Z menggunakan MATLAB


% Penerapan precepton umtuk masalah yang sederhana
% sumber data matlab untuk mengenali karater lapabet A-Z

>> [alfabet, target]=prprob;          % ambil karakter A
>> A=alfabet(:,1)

A =

0
0
1
0
0
0
1
0
1
0
0
1
0
1
0
1
0
0
0
1
1
1
1
1
1
1
0
0
0
1
1
0
0
0
1

>> plotchar(A);                          % menampilakn A

>> E=alfabet(:,5)

E =

1
1
1
1
1
1
0
0
0
0
1
0
0
0
0
1
1
1
1
0
1
0
0
0
0
1
0
0
0
0
1
1
1
1
1

>> plotchar(E);                   % ambil karakter E
>> target= eye(26)            % MEMBUAT MATRIK IDENTITAS UKURAN 26 X 26

target =

Columns 1 through 20

1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
0     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
0     0     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
0     0     0     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
0     0     0     0     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
0     0     0     0     0     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0
0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0     0     0     0     0
0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0     0     0     0
0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0     0     0
0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0     0
0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0
0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0
0     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0
0     0     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0
0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0
0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0
0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0
0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1     0
0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     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     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     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     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     0     0     0     0

Columns 21 through 26

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     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     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     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     0     0     0     0
1     0     0     0     0     0
0     1     0     0     0     0
0     0     1     0     0     0
0     0     0     1     0     0
0     0     0     0     1     0
0     0     0     0     0     1

>> net=newp (minmax (alfabet), 26);
>> net.trainParam.epochs=1000;
>> net=train(net, alfabet,target);
TRAINC, Epoch 0/1000
TRAINC, Epoch 14/1000
TRAINC, Performance goal met.

% berhasil setelah 14 epoch
%kemampuan generalisasi object
% tambahakan noise (rendam) untuk mengenali apakah masih bisa mengenali

>> A=A+randn(size(A))*0.2;
>> plotchar(A);                               % lihat gambarnya

>> alfabet=alfabet+randn(size(alfabet))*0.01;                         % beri noise alfabetnya
>> sim(net,alfabet(:,1))

ans =

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