neural networkebook.repo.mercubuana-yogya.ac.id/fti/materi_doc_20161... · 2018-08-01 · 1 logika...
TRANSCRIPT
1
Logika Fuzzy
Neural Network
Neural network merupakan jaringan artifisial (buatan) yang kerjanya meniru prinsip kerja saraf
dalam otak manusia yang disebut neuron. Gambar berikut adalah arsitektur neuron dalam
neural network.
Variabel x1, x2, …..,xn adalah input neuron, dan variabel w1, w2, …, wn adalah bobot yang terkait
dengan input neuron. Keluaran y ditentukan dengan formula:
Dengan
xi adalah input neuron wi adalah bobot terkait input t adalah nilai ambang (ditentukan oleh user) F(s) adalah fungsi nonlinier yang digunakan untuk mengambil keputusan. Misalnya digunakan fungsi sigmoid sbb:
2
Gambar berikut memperlihatkan sistem neural network yang sederhana dengan satu input dan
satu output; sistem terdiri atas 3 lapis. Lapis pertama disebut lapis input dan lapis terakhir
disebut lapis output; selain kedua lapis ini disebut lapis tersembunyi atau hidden layer. Pada
gambar terdapat satu lapis tersembunyi yang terdiri atas 4 elemen; contoh ini disebut sistem
neural network 1X4X1. Sistem neural network bisa memiliki lebih dari satu lapis tersembunyi.
Neural network menggunakan dataset pelatihan dan dataset pengujian untuk menentukan
outputnya. Bobot pada setiap lapis yaitu wijk pada awalnya dapat ditentukan secara acak dan
selama proses pelatihan neural network maka dilakukan update bobot sehingga pada akhir
pelatihan diperoleh bobot yang dapat memberikan output dengan kesalahan minimal. Pada
setiap pelatihan dengan satu data tertentu, maka output yaitu f(x)output akan dibandingkan nilai
aktualnya (sebenarnya); selisih yang terjadi disebut dengan error.
3
Pada contoh ini, maka error terkait langsung dengan lapis ke-3 dari neural network. Oleh
karenanya maka error ini harus didistribusikan ke lapis tersembunyi; tekniknya disebut back
propagation.
Error dikaitkan dengan elemen-elemen yang berbeda dalam lapis tersembunyi dan dihitung
sbb. Misalkan Ej adalah error pada elemen ke-j (lihat gambar di bawah); dan wnj adalah bobot
pada garis yang menghubungkan elemen n ke elemen j; dan I adalah input pada unit n. Maka
error untuk elemen n dihitung sbb:
Untuk fungsi sigmoid
maka
Bobot di-update dengan formula:
dengan : konstanta pembelajaran E : error xi : input
Neural network dapat digunakan untuk membangun fungsi keanggotaan bagi sebuah dataset
input. Dataset dibagi menjadi dua bagian; sebagian digunakan untuk dataset pelatihan dan
sebagian yang lain digunakan untuk dataset pengujian. Dataset pelatihan digunakan untuk
4
melatih (training) neural network yang digunakan. Misalkan pada gambar berikut. Pada gambar
a diperlihatkan dataset pelatihan 2 dimensi yang dinyatakan dengan 2 koordinat. Untuk
kepentingan proses pelatihan, maka setiap data dalam dataset pelatihan ini telah diketahui
kelasnya (untuk data real dari lapangan, maka dapat diperoleh dari tenaga ahli pada bidangnya
masing-masing). Pada contoh ini, dataset terbagi ke dalam 3 kelas yaitu R1, R2, dan R3.
Perhatikan data pertama (dari data pelatihan) yaitu x1 = 0,7 dan x2 = 0,8 (gambar d hingga f).
Karena data ini berada dalam wilayah R2 maka kita berikan keanggotaan penuh pada R2 dan
keanggotaan nol untuk kelas R1 dan R3. Dengan cara yang sama maka data yang berikutnya
diberikan keanggotaan penuh pada R3. Proses ini dilakukan untuk semua data yang ada dalam
dataset pelatihan; sehingga setelah proses ini selesai maka neural network dikatakan telah
“terlatih”.
5
Neural network yang telah “terlatih” ini kemudian dapat digunakan untuk menentukan nilai
fungsi keanggotaan setiap data dalam dataset pengujian atau data yang lain yang sama sekali
baru. Perhatikan gambar berikut.
Pada gambar g sebuah data dari dataset pengujian yaitu x1 = 0,5 dan x2 = 0,5 akan menjadi
input bagi neural network yang telah “terlatih” (gambar h) dan hasilnya adalah tabel pada
gambar i dimana data tersebut mempunyai nilai keanggotaan = 0,1 pada R1, nilai keanggotaan =
0,8 pada R2 dan nilai keanggotaan = 0,1 pada R3. Hasil ini dapat diplot ke dalam fungsi
keanggotaan seperti gambar berikut.
Algoritma Genetik
Algoritma genetik menggunakan konsep teori Darwin mengenai evolusi. Teori Darwin
pada dasarnya berfokus pada kenyataan bahwa eksistensi semua makhluk hidup itu berdasar
pada aturan “yang terbaik dapat bertahan”. Darwin juga membuat postulat bahwa jenis
6
silangan baru atau kelas baru dari makhluk hidup bisa bertahan melalui tiga proses yaitu
reproduksi, crossover, dan mutasi di antara organisme-organisme yang ada.
Konsep dalam teori evolusi ini telah diadaptasi ke algoritma untuk mencari solusi
terhadap suatu masalah dengan cara yang lebih “alamiah”. Pertama, dibuat sebanyak mungkin
solusi yang mungkin untuk memecahkan masalah. Solusi-solusi ini lalu dites kinerjanya;
sejumlah solusi yang baik dipilih dan yang lain dieliminasi. Solusi-solusi yang telah terpilih
kemudian akan dikenai proses reproduksi, crossover, dan mutasi untuk membuat solusi-solusi
generasi baru yang diharapkan mempunyai kinerja lebih baik daripada generasi sebelumnya.
Proses ini diulang-ulang hingga diperoleh konvergensi dalam satu generasi.
Misalkan terdapat data dua dimensi (x, y) dan diinginkan untuk membuat garis lurus
(kurva linier) melalui data-data ini. Sebuah garis lurus dinyatakan dengan persamaan
y=C1x + C2. Untuk mendapatkan kurva ini, akan dibuat sandi biner berupa deretan bit untuk
konstanta C1 dan C2. Jumlah bit yang digunakan dapat dipilih oleh perancangnya. Deretan bit
dapat dipetakan ke nilai parameter Ci (dengan i=1,2) dengan hubungan
Dengan b adalah bilangan desimal yang dinyatakan dalam bentuk biner (misalnya 152 =
10011000), L adalah panjang deret bit (misalnya 8), Cmax dan Cmin adalah konstanta yang dipilih
oleh user dimana C1 dan C2 bervariasi linier.
Berikut akan dijelaskan lebih mendetail mengenai 3 proses dasar dalam algoritma
genetic yaitu reproduksi, crossover, dan mutasi. Ketiga proses ini akan selalu ada dalam proses
untuk menemukan solusi yang terbaik.
Misal, dibuat populasi awal n string (untuk n parameter) yang mempunyai panjang L.
String dibuat dengan cara random, yaitu nilai-nilai parameter disandikan dalam string dengan
cara random atau acak (dengan cara secara acak menempatkan nilai nol dan 1 dalam string).
Setiap string diterjemahkan ke dalam satu set parameter yang diwakilinya. Satu set parameter
ini lalu dilewatkan melalui suatu model numeris dari permasalahan yang akan dicari solusinya.
7
Output model numeris ini berupa solusi yang didasarkan pada input parameter. Kemudian
berdasarkan kualitas solusi, setiap string dicari nilai kelayakannya (fitness values). Dengan nilai
kelayakan ini, ketiga operator genetik akan digunakan untuk membuat string generasi baru
yang diharapkan mempunyai kinerja (nilai kelayakan) yang lebih baik daripada generasi
sebelumnya. String generasi baru ini kemudian dikenakan proses yang sama (diterjemahkan
dan dievaluasi) sehingga diperoleh string generasi yang berikutnya. Proses ini dilakukan terus-
menerus hingga dicapai konvergensi dalam populasi.
Proses reproduksi adalah proses dimana string dengan nilai kelayakan yang lebih baik
mendapatkan kesempatan yang lebih baik pula untuk tetap ada dalam generasi berikutnya.
Dengan kata lain bahwa harus dipastikan bahwa string tersebut tetap berperan dalam generasi
berikutnya. Cara ini juga memastikan bahwa string yang paling layak tetap bertahan. Oleh
karena jumlah total string dalam setiap generasi dibuat tetap (supaya ekonomis dan efektif
dalam komputasinya), string dengan nilai kelayakan yang lebih rendah harus dieliminasi.
Proses atau operasi crossover adalah proses dimana beberapa string dapat melakukan
mix and match dengan cara yang random atau acak. Proses ini juga bertujuan untuk
meningkatkan nilai kelayakan pada generasi berikutnya. Setelah reproduksi, proses crossover
berlangsung dalam 3 langkah sederhana.
1. Dua string baru dipilih secara acak (gambar a)
2. Sebuah lokasi dalam kedua string dipilih secara acak (gambar b)
3. Sebagian string pada kedua string tersebut dipertukarkan (gambar c)
Dengan cara tersebut di atas maka sebagian solusi berkualitas tinggi dipertukarkan dan
dikombinasi.
8
Proses crossover dalam algoritma genetik
Proses reproduksi dan crossover paling banyak dilakukan dalam algoritma genetik
dibandingkan dengan proses mutasi. Proses mutasi digunakan untuk meningkatkan
kemampuan algoritma genetik dalam rangka menemukan solusi yang terbaik. Untuk
memahami tentang mengapa dibutuhkan mutasi, misalkan ada sebuah kasus dimana
reproduksi dan crossover tidak mungkin menghasilkan solusi yang paling optimum. Selama
proses tersebut mungkin saja terjadi bahwa keseluruhan string yang ada kehilangan (missing)
satu bit penting/vital (misalnya tidak ada string yang mempunyai bit bernilai “1” pada lokasi ke-
empat); sedangkan bit tersebut menentukan solusi yang paling mendekati optimum. Jika
keadaannya demikian maka generasi berikutnya tidak akan menghasilkan solusi yang optimum
(jika hanya menggunakan operator reproduksi dan crossover). Sehingga proses mutasi menjadi
sangat penting. Biasanya nilai pada lokasi tertentu dalam string diubah; dari “0” ke “1” atau
sebaliknya. Dengan demikian proses mutasi memastikan bahwa bit penting tersebut ada pada
generasi berikutnya. Seperti halnya di alam, mutasi sangat jarang terjadi (dalam orde satu per
ribuan lokasi bit dalam string; menurut Forrest ordenya 0,005/bit/generasi).
9
Contoh:
Misalkan sebuah data set pada tabel berikut. Akan dilakukan fitting curve data tersebut menjadi garis lurus dengan persamaan
y = C1x + C2.
Tabel 1. Data set
No Data
x y’
1 1 1
2 2 2
3 4 4
4 6 6
Table 2. Iterasi pertama menggunakan algoritma genetik diperlihatkan pada tabel berikut.
1 2 3 4 5 6 7 8 9 10 11 12 13 No
String String C1
(decimal) C1 C2
(decimal) C2 y1 y2 y3 y4 f(x)=400-(yi-yi’)2 f/fav Jml
duplikat
1 000111 010100 7 -1,22 20 0,22 -1,00 -2,22 -4,66 -7,11 131,3 0,43 0
2 010010 001100 18 0,00 12 -0,67 -0,67 -0,67 -0,67 -0,67 332,22 1,1 1
3 010101 101010 21 0,33 42 2,67 3,33 5,00 5,00 4,67 391,44 1,29 2
4 100100 001001 36 2,00 9 3,00 3,00 3,67 3,67 11,00 358,00 1,18 1
Sum = f = 1212,96 Rerata = sum/4 = fav = 303,24
Maks = 391,44
10
Langkah pengerjaan:
1. Parameter yang harus dicari adalah C1 dan C2. Sandikan kedua parameter ini dalam bentuk
string bit. String dapat dibuat dengan menempatkan bit ‘0’ atau ‘1’ pada lokasi yang
berbeda secara acak. Untuk persoalan di atas dimulai dengan populasi awal yang terdiri atas
4 string yang berbeda (sesuai dengan jumlah data pada soal).
2. Akan digunakan string sepanjang L = 12 bit; 6 bit pertama merupakan sandi untuk
parameter C1, dan 6 bit kedua merupakan sandi untuk parameter C2. String yang dibuat
secara acak diperlihatkan pada kolom 2.
3. Kolom 3 merupakan pernyataan C1 dalam bentuk decimal; kolom 5 merupakan pernyataan
C2 dalam bentuk decimal.
Untuk string no 1
000111 010100 C1 = 000111 decimal 7 (kolom 3)
C2 = 010100 decimal 20 (kolom 5)
4. Menggunakan persamaan
maka nilai biner untuk C1 dan C2 kemudian dipetakan ke nilai yang sesuai. Dalam hal ini
dipilih Cmax = 5 dan Cmin = -2 (pilihan ini adalah sembarang, ditentukan oleh user). Variabel b
adalah bilangan decimal pada kolom 3 atau 5 (b = C1 atau b = C2 ), L adalah panjang deret bit
(dalam hal ini L = 6).
Kolom 4 merupakan nilai C1 dari perhitungan untuk masing-masing string.
Kolom 6 merupakan nilai C2 dari perhitungan untuk masing-masing string.
11
Untuk string no 1
22,1
))2(5(12
72
)(12
6
minmaxmin1
CCb
CCL
kolom 4
22,0
))2(5(12
202
)(12
6
minmaxmin2
CCb
CCL
kolom 6
5. Kolom 7, 8, 9, dan 10 merupakan nilai y hasil perhitungan menggunakan persamaan
y = C1x + C2.
dengan C1 dan C2 diperoleh dari kolom 4 dan 6, sedangkan x diperoleh dari data set pada
tabel 1 (ada 4 nilai x yang berbeda).
Untuk string no 1
x = 1 y1 = -1,22x + 0,22 = -1 kolom 7
x = 2 y2 = -1,22x + 0,22 = -2,22 kolom 8
x = 4 y3 = -1,22x + 0,22 = -4,66 kolom 9
x = 6 y4 = -1,22x + 0,22 = -7,11 kolom 10
6. Nilai y kemudian dibandingkan dengan nilai yang sebenarnya yaitu y’ (tabel 1); kemudian
dihitung kuadrat error-nya dan untuk setiap x dihitung besaran
f(x) = 400 - ( yi - yi’ )2
Hasilnya diperlihatkan pada kolom 11. Konstanta 400 digunakan untuk membuat soal
menjadi persoalan maksimisasi. Nilai pada kolom 11 ini merupakan nilai kelayakan untuk
12
masing-masing string. Pada tabel juga diperlihatkan hasil jumlahan, rerata, dan nilai
maksimumnya.
Untuk string no 1
3,131
7,268400
)9,171758,174(400
))611,7()466,4()222,2()11((400
)(400)(
2222
2'
ii yyxf
kolom 11
7. Kolom 12 memperlihatkan hasil estimasi relatif nilai kelayakan satu terhadap yang lain
dengan menghitung f/fav. Nilai pada kolom ini dapat digunakan sebagai panduan untuk
memilih string mana yang harus dieliminasi dan string yang mana pula yang akan
direproduksi pada generasi selanjutnya.
Untuk string no 1
f/fav = 131,3/303,24 = 0,43 kolom 12
8. Kolom 13 memperlihatkan jumlah duplikat (copies) dari setiap string yang akan digunakan
untuk membuat string generasi berikutnya. Nilai pada kolom 13 diperoleh dari kolom 12
dengan menerapkan nilai cut off sebesar 0,8.
9. Tabel 3 memperlihatkan hasil iterasi kedua menggunakan algoritma genetik. Kolom
pertama memperlihatkan string yang telah terseleksi pada iterasi pertama; perhatikan
bahwa string 010101 101010 muncul 2 kali (hasil pada iterasi pertama kolom 13). String
kemudian dikenakan operasi crossover pada lokasi yang ditandai dan hasilnya diperlihatkan
pada kolom 2. String yang ada pada kolom 2 kemudian dikenakan perlakuan yang sama
dengan langkah 3 – 8. Terlihat pada tabel bahwa rerata kelayakan untuk string generasi
13
kedua lebih besar daripada pada generasi pertama. Proses iterasi dilanjutkan hingga
diperoleh solusi yang konvergen.
Kolom pertama tabel 3 diperoleh dari hasil iterasi pertama; bahwa
String no 1 dieliminasi
String no 2 dipertahankan 1 duplikat jumlah populasi tetap 4
String no 3 dipertahankan 2 duplikat
String no 4 dipertahankan 1 duplikat
String no 3 muncul 2 kali pada kolom pertama (duplikat = 2). Pada string di kolom pertama
ini kemudian dikenakan operasi crossover.
Dua string yang pertama, dipilih lokasi setelah bit ke-empat untuk operasi crossover
Dua string yang lain, dipilih lokasi setelah bit ke-sembilan untuk operasi crossover
Kolom ke-3 pada tabel 3 memperlihatkan hasil operasi crossover; string pertama dan kedua
dipertukarkan mulai bit kelima, string ke-tiga dan ke-empat dipertukarkan mulai bit ke-
sepuluh. Hasil operasi crossover inilah yang merupakan string generasi baru.
Tugas:
Perlihatkan proses hitungan matematis untuk:
1. Tabel 2 baris ke-2
2. Tabel 2 baris ke-3
3. Tabel 2 baris ke-4
4. Tabel 3 baris ke-1
5. Tabel 3 baris ke-2
6. Tabel 3 baris ke-3
7. Tabel 3 baris ke-4
Adakah selisih antara yang tertera dalam tabel dengan perhitungan anda sendiri? Yang
mana saja?
14
Table 3. Iterasi kedua menggunakan algoritma genetik diperlihatkan pada tabel berikut.
1 2 3 4 5 6 7 8 9 10 11 12 13
String lama String baru C1 (decimal)
C1 C2 (decimal) C2 y1 y2 y3 y4 f(x)=400-(yi-yi’)2 f/fav Jml aktual
0101|01 101010 010110 001100 22 0,44 12 -0,67 -0,22 0,22 1,11 2,00 375,78 1,15 1
0100|10 001100 010001 101010 17 -0,11 42 2,67 2,56 2,44 2,22 2,00 380,78 1,17 2
010101 101|010 010101 101001 21 0,33 41 2,56 2,89 3,22 3,89 4,56 292,06 0,90 1
100100 001|001 100100 001010 36 2,0 10 -0,89 1,11 3,11 7,11 11,11 255,73 0,78 0
Sum 1304,35 Rerata 326,09 Maks 380,78