Membuat Program JST dengan menggunakan Software Scilab 5.4.1
Scilab adalah perangkat lunak aplikasi untuk menyelsaikan masalah komputasi, mirip seperti Matlab, perangkat lunak ini bersifat gratis dan dapat di download dilink berikut ini https://www.scilab.org
Pada tulisan kali ini saya akan mencoba menerangkan langkah demi langkah pembuatan program jaringan syaraf tiruan (JST) dengan menggunakan software Scilab 5.4.1
Jalankan software Scilab, maka akan tampak tampilan seperti gambar berikut ini:
pada menu kiri atas klik pada bagian Scinotes :
akan muncul tampilan Scinotes seperti ini :
Buat program JST di Scinotes seperti ini :
Catatan : Scinotes adalah editor untuk menuliskan program Scilab
Aturan penulisan program :
tanda " // " (garis miring dua kali) digunakan untuk menuliskan keterangan, jadi tidak akan diproses dalam program
tanda ";" (titik koma) untuk mengakhiri setiap perintah agar tidak muncul dalam editor consule di Scilab
Berikut ini gambar struktur JST yang akan kita buat programnya :
Berikut ini listring program JST pada Scinotes,
Setelah program dibuat jalankan program dengan men-klik run seperti gambar dibawah ini:
Kemudian simpanlah program yang dibuat di folder yang anda kehendaki.
Untuk melihat hasil run/exsekusi program dapat dilihat di menu editor Scilab pada posisi kanan atas, seperti gambar berikut:
untuk melihat nilai varibel yang telah dibuat dalam program klik pada bagian varibelnya maka akan muncul seperti ini:
(contoh melihat variabel w / bobot klik variabel w)
atau untuk melihat nilai variabel yang telah dibuat dalam program dapat dituliskan pada editor/consule Scilab, dilanjutkan dengan menekan tombol enter maka akan muncul nilai variabel seperti gambar dibawah ini:
gambar diatas memperlihatkan nilai a dan nilai target yang hampir sama, ini menunjukan program tersebut sudah berjalan dengan baik.
Tahap demi tahap program JST dapat dijabarkan sebagai berikut:
Inisialisasi awal menentukan struktur JST seperti:
- Jumlah masukan/input
- Jumlah neuron di lapisan tersembunyi (hidden layer)
- Jumlah keluaran/output
- Kecepatan Pembelajaran (Learing rate)
- Bobot awal input ke hidden layer
- Bobot awal hiden layer ke output layer
- Nilai masukan
- Target
Berikut ini listing programnya untuk menentukan nilai masukan, neuron di hidden layer, output layer, kecepatan pembelajaran,
Listing program untuk membuat/men-generate bobot awal di layer input ke layer hidden adalah sebagai berikut:
perhatikan banyaknya bobot antara masukan ke hidden layer adalah banyaknya input X banyaknya neuron di hidden layer atau jXi
program tersebut diatas dapat menghasilkan bobot sebanyak jXi
perhatikan notasi untuk w dimulai dari tujuan kemudian asal masukan atau ditulis w(j,i) , j=adalah neuron tujuan dan i=adalah masukan
Berikut ini listing program untuk membuat/men-generate bobot awal di hidden layer ke output layer:
program ini identik dengan program men-generate bobot awal w, bedanya hanya tergantung jumlah neuran di hidden layer dengan di output layer.
Pemberian nilai target dan masukan/input dapat ditulis sebagai berikut:
tanda ";"(titik koma) menyatakan bentuk matrix [ix1] kalau menggunakan "," (koma) matrix [1xi]
Perhatikan pada gambar dj, dalam bentuk persamaan matematiknya dapat ditulis :
dj= ∑ (pi.wji)
dalam bentuk program Scilab dapat ditulis :
perhatikan pada gambar hj:
hj=f1(dj) keluaran adalah fungsi aktifasi dari dj, jika menggunakan sigmoid fungsi dapat dituliskan
dalam bentuk program Scilab dapat ditulis:
Nilai keluaran neuron pada hidden layer merupakan masukan bagi neuron pada layer output,
persamaannya dapat ditulis:
dalam bentuk program scilab dapat ditulis:
dan Keluaran JST (a) tergantung dari aktivasi fungsi yang digunakan, apada contoh ini menggunakan sigmoid fungsi dengan rumusan sebagai berikut:
dalam bentuk program scilab dapat ditulis:
Dalam proses pembelajaran maka keluaran JST dibandingkan dengan target yang ingin dicapai, jika terjadi perbedaan ini berarti masih ada error/kesalahan
yang harus diperbaiki, persamaannya untuk error (e) dapat ditulis:
error = target - keluaran JST
atau
e = t -a
dalam bentuk program scilab dapat ditulis:
perhatikan listring program diatas banyaknya error(e) adalah sebanyak target /keluaran JST.
Setelah didapat error maka proses selanjutnya adalah "BACKPROPAGATION" yaitu proses meng-update bobot sehingga dihasilkan keluaran sesuai dengan target yang diinginkan, proses ini juga disebut proses belajar JST.
Secara umum update bobot dapat dirumuskan sebagai berikut:
artinya bobot berikutnya adalah bobot sekarang ditambah perubahan bobot, dimana perubahan bobot dapat ditulis:
persamaan diatas menunjukan perubahan bobot adalah negatif/berawanan dari adanya perubahan E terhadap w, dimana E adalah cost energi dari error (e) :
E=cost energi fungsi, e=error
Proses up-date bobot dilihat dari sisi kanan ke kiri atau dari sisi keluaran ke masukan JST,
error (e) bergerak ke belakang, untuk gambar JST diatas maka up-date bobot v (bobot antara hidden layer ke output layer) dilakukan terlebih dahulu, baru update bobot w (bobot antara masukan ke hidden layer).
perubahan bobot di hidden layer dapat dijabarkan sebagi berikut:
f'(q) dapat dicari sebagai berikut, jika mengunakan fungsi sigmoid :
maka :
jadi :
dalam bentuk program scilab dapat ditulis:
untuk perubahan w dapat dijabarkan sebagai berikut:
dalam bentuk scilab dapat ditulis:
Untuk meng-update bobot w dan v dapat dijabarkan sebagai berikut:
dan
dalam bentuk program scilab dapat dituliskan :
dan yang terakhir adalah untuk memyimpan data error :
Semua program mulai baris 31 s/d 104 berulang sampai k=iterasi, dimana banyaknya iterasi sdh di masukan pada inisilisasi awal.
Berikut ini ket program looping pada baris ke 30 dan diakhiri baris ke 105
Komentar
Posting Komentar