Melanjutkan tulisan saya sebelumnya tentang algoritma perceptron,kali ini saya akan menulis tentang conto perhitungan manual algoritma perceptron. Untuk contoh kasusnya saya menggunakan data logika AND. Cekidot....
- Algoritma
Data yang kita gunakan sebagai contoh adalah data logika AND sebagai berikut:
x1 | x2 | target |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
tentukan bobot awal secara acak, saya pakai contoh w1 = 0,w2 =0, learning rate = 1, bias = 0,maksimal epoh = 10. Disini saya memakai fungsi aktivasi undak biner.
Epoh ke 1
Data ke satu x = {0,0}, bobot w = {0,0},b=0,target = 0
y_in = (x1*w1)+(x2*w2)+b = (0*0)+(0*0)+0 = 0
y = sign(0) = 1
karena y != target maka hitung error dan update bobot
error = target - y = 0 - 1 = -1
w1_baru = w1_lama +(learning_rate*error*x1)
= 0 + (1*(-1)*0) = 0
w2_baru = w2_lama +(learning_rate*error*x2)
= 0+(1*(-1)*0) = 0
bias_baru = bias_lama + (learning_rate*error)
= 0 +(1*(-1)) = -1
Data ke dua x = {0,1},w = {0,0} ,b=-1,target = 0
y_in = (x1*w1)+(x2*w2)+b = (0*0)+(1*0)+(-1) = -1
y = sign(-1) = 0
karena y == target maka tidak perlu dilakukan perbaikan bobot dan lanjutkan untuk data yang ke tiga
Data ke tiga x = {1,0},w = {0,0},b = -1 target = 0
y_in = (x1*w1)+(x2*w2) +b= (1*0)+(0*0)+(-1) = -1
y = sign(-1) = 0
karena y == target maka tidak perlu dilakukan perbaikan bobot dan lanjutkan untuk data yang ke empat
Data ke empat x = {1,1} w = {0,0},b = -1 target = 1
y_in = (x1*w1)+(x2*w2)+b = (1*0)+(1*0)+(-1) = -1
y = sign(-1) = 0
karena y != target maka hitung error dan update bobot
error = target - y = 1 - 0 = 1
w1_baru = w1_lama +(learning_rate*error*x1)
= 0 + (1*(1)*1) = 1
w2_baru = w2_lama +(learning_rate*error*x2)
= 0+(1*(1)*1) = 1
bias_baru = bias_lama + (learning_rate*error)
= -1 +(1*1) = 0
maka didapat bobot baru w = {1,1},b = 0 dan lanjutkan untuk data selanjutnya
karena di epoh pertama masih ada eror, maka perhitungan di lanjutkan ke epoh berikutnya
Epoh ke dua
Data ke satu dengan x = {0,0},w = {1,1},b=0,target = 0
y_in = (x1*w1)+(x2*w2)+b = (0*1)+(0*1)+0 = 0
y = sign(0) = 1
karena y != target maka hitung error dan update bobot
error = target - y = 0 - 1 = -1
w1_baru = w1_lama +(learning_rate*error*x1)
= 1 + (1*(-1)*0) = 1
w2_baru = w2_lama +(learning_rate*error*x2)
= 1+(1*(-1)*0) = 1
bias_baru = bias_lama + (learning_rate*error)
= 0 +(1*(-1)) = -1
maka didapat bobot baru w = {1,1},b=-1 dan lanjutkan untuk data yang ke dua
Data ke dua dengan x = {0,1},w = {1,1},b=-1,target = 0
y_in = (x1*w1)+(x2*w2)+b = (0*1)+(1*1)+(-1) = 0
y = sign(0) = 1
karena y != target maka hitung error dan update bobot
error = target - y = 0 - 1 = -1
w1_baru = w1_lama +(learning_rate*error*x1)
= 1 + (1*(-1)*0) = 1
w2_baru = w2_lama +(learning_rate*error*x2)
= 1+(1*(-1)*1) = 0
bias_baru = bias_lama + (learning_rate*error)
= -1 +(1*(-1)) = -2
maka didapat bobot baru w = {1,0},b=-2 dan lanjutkan untuk data yang ke tiga
Data ke tiga dengan x = {1,0}, w = {1,0}, b=-2, target = 0
y_in = (x1*w1)+(x2*w2)+b = (1*1)+(0*0)+(-2) = -1
y = sign(-1) = 0
karena y == target maka tidak perlu dilakukan perbaikan bobot dan lanjutkan untuk data yang ke empat
Data ke empat dengan x ={1,1},w ={1,0},b=-2, target = 1
y_in = (x1*w1)+(x2*w2)+b = (1*1)+(1*0)+(-2) = -1
y = sign(-1) = 0
karena y != target maka hitung error dan update bobot
error = target - y = 1 - 0 = 1
w1_baru = w1_lama +(learning_rate*error*x1)
= 1 + (1*1*1) = 2
w2_baru = w2_lama +(learning_rate*error*x2)
= 0+(1*1*1) = 1
bias_baru = bias_lama + (learning_rate*error)
= -2 +(1*1) = -1
maka didapat bobot baru w = {2,1},b=-1. Karena di epoh ke dua masih ada error,maka di lanjut ke epoh selanjutnya.
Epoh ke tiga
Data ke satu dengan x = {0,0},w = {2,1},b=-1,target = 0
y_in = (x1*w1)+(x2*w2)+b = (0*2)+(0*1)+(-1) = -1
y = sign(-1) = 0
karena y == target maka tidak perlu dilakukan perbaikan bobot dan lanjutkan untuk data yang ke dua
Data ke dua dengan x = {0,1},w = {2,1},b=-1,target = 0
y_in = (x1*w1)+(x2*w2)+b = (0*2)+(1*1)+(-1) = 0
y = sign(0) = 1
karena y != target maka hitung error dan update bobot
error = target - y = 0 - 1 = -1
w1_baru = w1_lama +(learning_rate*error*x1)
= 2 + (1*(-1)*0) = 2
w2_baru = w2_lama +(learning_rate*error*x2)
= 1+(1*(-1)*1) = 0
bias_baru = bias_lama + (learning_rate*error)
= -1 +(1*(-1)) = -2
maka didapat bobot baru w = {2,0},b=-2 dan lanjutkan untuk data yang ke tiga
Data ke tiga dengan x = {1,0}, w = {2,0}, b=-2, target = 0
y_in = (x1*w1)+(x2*w2)+b = (1*2)+(0*0)+(-2) = 0
y = sign(0) = 1
karena y != target maka hitung error dan update bobot
karena y != target maka hitung error dan update bobot
error = target - y = 0 - 1 = -1
w1_baru = w1_lama +(learning_rate*error*x1)
= 2 + (1*(-1)*1) = 1
w2_baru = w2_lama +(learning_rate*error*x2)
= 0+(1*(-1)*0) = 0
bias_baru = bias_lama + (learning_rate*error)
= -2 +(1*(-1)) = -3
maka didapat bobot baru w = {1,0},b=-3 dan lanjutkan untuk data yang ke empat
Data ke empat dengan x ={1,1},w ={1,0},b=-3, target = 1
y_in = (x1*w1)+(x2*w2)+b = (1*1)+(1*0)+(-3) = -2
y = sign(-2) = 0
karena y != target maka hitung error dan update bobot
error = target - y = 1 - 0 = 1
w1_baru = w1_lama +(learning_rate*error*x1)
= 1 + (1*1*1) = 2
w2_baru = w2_lama +(learning_rate*error*x2)
= 0+(1*1*1) = 1
bias_baru = bias_lama + (learning_rate*error)
= -3 +(1*1) = -2
maka didapat bobot baru w = {2,1},b=-2. Karena di epoh ke dua masih ada error,maka di lanjut ke epoh selanjutnya.
Epoh ke empat
Data ke satu dengan x = {0,0},w = {2,1},b=-2,target = 0
y_in = (x1*w1)+(x2*w2)+b = (0*2)+(0*1)+(-2) = -2
y = sign(-2) = 0
karena y == target maka tidak perlu dilakukan perbaikan bobot dan lanjutkan untuk data yang ke dua
Data ke dua dengan x = {0,1},w = {2,1},b=-2,target = 0
y_in = (x1*w1)+(x2*w2)+b = (0*2)+(1*1)+(-2) = -1
y = sign(-1) = 0
karena y == target maka tidak perlu dilakukan perbaikan bobot dan lanjutkan untuk data yang ke tiga
Data ke tiga dengan x = {1,0}, w = {2,1}, b=-2, target = 0
y_in = (x1*w1)+(x2*w2)+b = (1*2)+(0*1)+(-2) = 0
y = sign(0) = 1
karena y != target maka hitung error dan update bobot
karena y != target maka hitung error dan update bobot
error = target - y = 0 - 1 = -1
w1_baru = w1_lama +(learning_rate*error*x1)
= 2 + (1*(-1)*1) = 1
w2_baru = w2_lama +(learning_rate*error*x2)
= 1+(1*(-1)*0) = 1
bias_baru = bias_lama + (learning_rate*error)
= -2 +(1*(-1)) = -3
maka didapat bobot baru w = {1,1},b=-3 dan lanjutkan untuk data yang ke empat
Data ke empat dengan x ={1,1},w ={1,1},b=-3, target = 1
y_in = (x1*w1)+(x2*w2)+b = (1*1)+(1*1)+(-3) = -1
y = sign(-1) = 0
karena y != target maka hitung error dan update bobot
error = target - y = 1 - 0 = 1
w1_baru = w1_lama +(learning_rate*error*x1)
= 1 + (1*1*1) = 2
w2_baru = w2_lama +(learning_rate*error*x2)
= 1+(1*1*1) = 2
bias_baru = bias_lama + (learning_rate*error)
= -3 +(1*1) = -2
maka didapat bobot baru w = {2,2},b=-2. Karena di epoh ke dua masih ada error,maka di lanjut ke epoh selanjutnya sampai tidak ada error untuk setiap data dalam satu iterasi atau epoh mencapai maksimal epoh.
Setelah iterasi berhenti,entah itu karena tidak ada error atau jumlah epoh terpenuhi,maka nilai bobot w dan bias b di gunakan dalam proses klasifikasi dengan rumus :
y_in = (input_1*bobot_1)+(input_2*bobot_2)+......(input_n*bobot_n)+b
output = sign(y_in)
Sementara cukup sekian tulisan saya kali ini. Untuk tulisan selanjutnya akan saya beri contoh program sederhana implementasi dari algoritma perceptron ini. See you.
0 Komentar