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:

awal


pada menu kiri atas klik pada bagian Scinotes  :

note-klik

akan muncul tampilan Scinotes  seperti ini :

note2

Buat program JST di Scinotes seperti ini :

note3

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 :

multilayer

Berikut ini listring program JST pada Scinotes,

scinote-jstscinote-jst1scinote-jst2scinote-jst3

Setelah program dibuat jalankan program dengan men-klik run seperti gambar dibawah ini:

note-run

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:

hasil

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)

hasil-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:

hasil-1

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,

inisialisasi1

Listing program untuk membuat/men-generate bobot awal di layer input ke layer hidden adalah sebagai berikut:

ini-w

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:

ini-v

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:

target

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 :

dj

perhatikan pada gambar hj:

hj=f1(dj)   keluaran adalah fungsi aktifasi dari dj, jika menggunakan sigmoid fungsi dapat dituliskan

hj

dalam bentuk program Scilab dapat ditulis:

programhj

Nilai keluaran neuron pada hidden layer merupakan masukan bagi neuron pada layer output,

persamaannya dapat ditulis:

qm

dalam bentuk program scilab dapat ditulis:

qm-scilab

dan Keluaran JST (a) tergantung dari aktivasi fungsi yang digunakan, apada contoh ini menggunakan sigmoid fungsi dengan rumusan sebagai berikut:

am

dalam bentuk program scilab dapat ditulis:

am-scilab

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:

error

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:

wk1

artinya bobot berikutnya adalah bobot sekarang ditambah perubahan bobot, dimana perubahan bobot dapat ditulis:

deltawk

persamaan diatas menunjukan perubahan bobot  adalah negatif/berawanan dari adanya perubahan E terhadap w, dimana E adalah cost energi dari error (e) :

cost

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:

dve

f'(q) dapat dicari sebagai berikut,  jika mengunakan fungsi sigmoid :

fq

maka :

   f'q

jadi :

aa1

dalam bentuk program scilab dapat ditulis:

dv-scilab

untuk perubahan  w  dapat dijabarkan sebagai berikut:

dw

dalam bentuk scilab dapat ditulis:

dw-scilab

Untuk meng-update bobot w dan v dapat dijabarkan sebagai berikut:

deltav

dan

wk1

dalam bentuk program scilab dapat dituliskan :

update-bobot

dan yang terakhir adalah untuk memyimpan data error :

data-e

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

looping


Komentar

Postingan Populer