pemrograman adaline dengan matlab

17
PEMROGRAMAN ADALINE DENGAN MATLAB Kelompok: Asydicky Firmanto M. Dany Ridwan Fahril

Upload: herrizon

Post on 07-Dec-2015

328 views

Category:

Documents


34 download

DESCRIPTION

matlab

TRANSCRIPT

PEMROGRAMAN ADALINE DENGAN

MATLAB

Kelompok:Asydicky Firmanto

M. DanyRidwan Fahril

Pemrograman ADALINE• Pemrograman ADALINE (Linear Filter) mirip dengan

pemrograman Perceptron. Fasilitas yang disediakan Matlab: menhitung keluaran jaringan, menghitung perubahan robot, dan melakukan pelatihan.

• Spesifikasi ADALINE:a. Masukan dan target berbentuk bebasb. Fungsi aktifasi adalah fungsi identitas, tidak ada batas

ambang (threshold)c. Parameter pelatihan (bobot, bias, kriteria penghentian, batas

toleransi, dll) bisa diatur.d. Perubahan robot dilakukan sedemikian sehingga error

minimum (least mean square error)

Pembentukan Jaringan• Jaringan ADALINE harus dibentuk dengan perintah newlin yang

akan membentuk ADALINE dengan spec tertentu. Bentuk fungsi newlin:

net = newlin (PR,S,ID,LR)Dengan:

PR : matriks R x 2 yang berisi nilai minimum dan maksimum elemen masukan RS : jumlah elemen vektor keluaran.ID : Vektor delay masukan (default = [0])LR : laju pemahaman (default α = 0.01)Dan menghasilkan sebuah ADALINE (layer linier) baru.

• Laju pemahaman dapat diatur dari perintah newlin. Perintah newlin menset robot dan bias awal ke 0. seperti perceptron, untuk mengubahnya dapat digunakan penugasan net.IW{i, j} dan net.b {i}. Indeks i dan j dalam net.IW menunjukkan bobot awal dari layar –j ke-i.

• Misalkan ada 2 unit masukan dan 1 neuron target dengan bobot seperti gambar dan range [0, 10]. Perintah yang sesuai:

net = newlin ([0 10 ; 0 10],1)net.IW {1,1} = [2 3]net.b {1} = [-4]

Contoh 14.1Bentuklah perceptron untuk mengenali pola fungsi logika “dan” 2 variabel x1 dan x2 dengan masukan dan target bipolar.

PenyelesaianLogika “dan” dengan 2 variabel bipolar memiliki range [-1,1], dan sebuah target.

net = newlin ([-1 1 ; -1 1],1)Parameter [-1 1 ; -1 1] menunjukkan kedua unit masukan x1 dan x2 memiliki range [-1, 1]. Parameter s = 1 menunjukkan jaringan hanya memiliki sebuah target (neuron)

Pembentukan Vektor Masukan dan Target• Setelah membentuk ADALINE, berikutnya harus ditentukan pola

masukan dan target yang akan dikenali. Masukan dan keluaran berupa kolom. Jumlah unit tiap pola masukan serta range nilai harus sesuai dengan spec ADALINE yang dibuat.

Contoh 14.2Buatlah vektor masukan-keluaranADALINE dari contoh 14.1

Perintah matlab:net = newlin ([-1 1 ; 1 -1],1)p = [ [1 ; 1] [1 ; -1] [-1 ; 1] [-1 ; -1] ]t = [1 -1 -1 -1]

Menghitung Keluaran ADALINE• Setelah pola masukan diberikan, kita dapat menghitung keluaran

ADALINE. Perintah Matlab sama seperti Perceptron:[Y, Pf, Af, E, perf] = sim (net, P, Pi, Ai, T)

Parameter masukannet : nama jaringan dalam perintah NewlinP : Vektor masukan jaringanPi : Kondisi delay awal masukan, default = zerosAi : Kondisi delay layar. Default = zerosT : Vektor target jaringan. Default = zeros

Parameter hasilY : keluaran jaringanPf : kondisi akhir delay masukanAf : kondisi akhir delay layarE : error jaringan = T – Yperf : untuk kerja jaringan

• Pi, Ai, Pf, Af hanya dipakai bagi jaringan yang memiliki delay masukan dan layar.

y = sim (net, p);

Contoh 14.3Hitung keluaran jaringan contoh 14.1 dengan pola masukan 14.2, bobot awal w1 = 2, w2 = 3, bias = -4

Penyelesaiannet = newlin ([-1 1 ; -1 1],1);p = [ [1 ; 1] [1 ; -1] [-1 ; 1] [-1 ; -1] ];t = [1 -1 -1 -1];net.IW {1,1} = [2 3];net.b {1} = [-4];a = sim (net , p)

Hasil:a =

1 -5 -3 -9• Vektor a merupakan keluaran jaringan untuk p1 hingga p4

dengan bobot dan bias = [2 3] dan [-4]. f(net) = net.

• Perintah sim (net,p) hanya menampilkan hasil keluaran jaringan (f(net) pada tabel 14.2. untuk menampilkan besarnya error dan tingkat untuk kerja:[a, Pf, Af, e, perf] = sim (net, p, [ ], [ ], t)Jika perintah dijalankan, maka hasilnya:>> [a, Pf, Af, e, perf] = sim (net, p, [ ], [ ], t)a =

1 -5 -3 -9Pf =

[ ]Af =

[ ]e =

0 4 2 8perf =

21

Modifikasi Bobot dan Bias• Setelah menghitung keluaran jaringan, langkah berikutnya

mengubah bobot berdasarkan selisih antara keluaran jaringan dengan target. Untuk mengubah bobot dan bias digunakan learnwh (learn Widrow-Hoff)

[dw, LS] = learnwh(W, P, Z, N, A, T, E, gW, gA, D, LP, LS)[db, LS] = learnwh (b, ones (1,Q), Z, N, A, T, E, gW, gA, D, LP, LS)

DenganW : matriks bobotP : vektor masukanZ : vektor masukan dengan bobot

N : vektor masukan netA : vektor keluaranT : vektor layar targetE : vektor layar targetgW : gradien bobot thd unjuk kerjagA : gradien keluaran thd unjuk kerjaD : jarak neuronLP : parameter pemahamanLS : state pemahaman

Pelatihan Adaline

• Matlab menyediakan fasilitas pelatihan untuk memodifikasi bobot dalam adaline hingga memenuhi kriteria tertentu (misal jumlah epoch, error dll).

• Formatnya mirip dengan perceptron, hanya saja error dihitung berdasarkan rata-rata kuadrat kesalahan terkecil (LMS)

• Rata-rata uadrat MSE dihitung dengan rumus :

• MSE = 1/Q ∑ e2k = 1/Q ∑ ( tk – ak )2

• Q = jumlah pola yang dihitung• Tk = vektor target• Ak = vektor keluaran jaringan• Ek = tk - ak

• Contoh 14.4Hitunglah MSE untuk fungsi logika “dan” pada contoh 14.3Penyeleseaian

• Pada contoh 14.3, t = [1  -1  -1  -1] dan keluaran jaringan = a = [1  -5  -3  -9] sehingga error = =[0  4  2  8]

Maka MSE = ¼ (02 + 42 + 22 + 82) = 21

• Contoh 14.5Hitunglah bobot untuk mengenali fungsi logika “dan” menggunakan bobot dan bias awal seperti contoh 14.3PenyelesaianJika dalam contoh 14.3 ditambahkan perintah train (net,p), diperoleh hasil :

• >> train (net,p)• TRAINB, Epoch 0/100, MSE 29/0.• TRAINB, Epoch 25/100, MSE 3.76669/0.• TRAINB, Epoch 50/100, MSE 0.489239/0.• TRAINB, Epoch 75/100, MSE 0.0635452/0.• TRAINB, Epoch 100/100, MSE 0.00825362/0.• TRAINB, Maximum epoch reached.

• Default perintah train pada ADALINE adalah jumlah epoch = 100, dan error = 0. Iterasi akan dihentikan jika salah satunya tercapai.

• Umumnya error = 0 tidak pernah tercapai. Orang akan puas jika errornya cukup kecil dan dapat diabaikan.

•  Akan tetapi bobot setelah iterasi tidak dapat diperoleh. Untuk menyimpan perubahan bobot maka digunakan perintah :>> net = train (net,p,t)Hasilnya

• TRAINB, Epoch 0/100, MSE 21/0.• TRAINB, Epoch 25/100, MSE 2.94513/0.• TRAINB, Epoch 50/100, MSE 0.600059/0.• TRAINB, Epoch 75/100, MSE 0.295468/0.• TRAINB, Epoch 100/100, MSE 0.255906/0.• TRAINB, Maximum epoch reached.

• Bobot hasil iterasi bisa ditampilkan dengan perintah disp

>>disp (net.iw{1,1})0.5253     0.5422>>disp (net.b{1})-0.5590

• Keluaran jaringan setelah iterasi dilakukan dapat diketahui dengan perintah sim>>sim (net,p)

• Dan error yang terjadi = t – sim (net,p) :>> t – sim (net,p)

ans =    0.4916  -0.4241  -0.4578  0.6265• Maka MSE = ¼ (0.49162 + -0.42412 + -0.45782 + 0.62652) =

0.2559• Seperti yang ditampilkan pada MSE epoch 100.