Anda di halaman 1dari 10

SOFT COMPUTING

PENGUNAAN BACKPROPAGATION PADA JARINGAN SYARAF TIRUAN

OLEH:
I Gusti Agung Arimantara
1805551122

Dosen Pengampu:
Prof. Dr. I Ketut Gede Darma Putra, S.Kom., MT.

PROGRAM STUDI TEKNOLOGI INFORMASI FAKULTAS TEKNIK


UNIVERSITAS UDAYANA
2020
Ada dua bagian utama pada JST (Jaringan Syaraf Tiruan), yaitu forward ropagation dan
backward propagation. Pada forward propagation, JST kan mencoba menghasilkan nilai y,
sedangkan pada backward propagation, JST akan memperbaiki dirinya (update bobot) sehingga
pada forward propagation berikutnya diharap bisa menghasilkan nilai y yang lebih baik atau
lebih mendekati label aslinya.

FORWARD PROPAGATION
Forward propagation adalah proses perhitungan secara “maju” dari input (disimbolkan  x ) hingga
diperoleh output model (disimbolkan  y ). Misal pada ilustrasi di bawah, adalah proses forward
propagation dari input  x menuju  y .

Untuk perhitungannya, nilai y1 diperoleh dengan menghitung nilai z1 terlebih dahulu


(perhitungan linier).
Setelah diperoleh z1 , output prediksi y1 diperoleh dengan menerapkan fungsi aktivasi terhadap
z1.

Perhitungan untuk semua y secara umum bisa menggunakan rumus:

CONTOH FORWARD PROPAGATION


Misalkan kita memiliki sebuah input X=[1,2,0.5] dengan nilai bobot dan bias di awal adalah
sebagai berikut :

Langka pertama forward propagation adalah menghitung nilai z. Pada contoh ini dapat kita
hitung nilai z1 adalah:

Lalu setelah itu kita hitung nilai y1:

Dengan cara perhitungan yang sama dengan di atas dapat diperoleh juga nilai y2 adalah 0.645.
Nilai tersebut adalah nilai prediksi, atau nilai yang dihasilkan oleh model JST kita. Seperti
disebutkan sebelumnya setiap data yang masuk memiliki label kelas atau nilai y yang
diharapkan, misalnya untuk data X di atas kita ingin model kita seharusnya bernilai berikut :

Dari sana tampak perbedaan nilai prediksi kita (y) dengan nilai target (t). Kita bisa menghitung
seberapa melenceng prediksi kita menggunakan rumus untuk menghitung error. Salah satunya
adalah dengan rumus Mean Square Error (MSE):

Sehingga untuk perhitungan kita di atas, dapat dihitung error E yang dihasilkan adalah sebesar:

Karena tujuan JST adalah untuk menghasikan nilai prediksi y yang semirip mungkin dengan t,
maka dapat disebut juga tujuan dari JST adalah meminimalkan nilai error E.

BACKPROPAGATION
Setelah mendapatkan nilai error, kita bisa mulai memperbaiki JST kita dengan backpropagation.
Rumus utama untuk memperbaiki suatu bobot w berdasarkan error E adalah:

Rumus ini juga berlaku untuk memperbaiki nilai bias:

Simbol α pada rumus di atas adalah learning rate, sebuah konstanta (biasanya antara 0-1) yang
menentukan seberapa cepat proses pembelajaran model dilakukan. Di tugas kali ini kita akan
∂E
menggunakan nilai α=0.5. Untuk menghitung , pertama-tama kita coba berjalan mundur
∂w
dulu. Urutan proses backward chaining digambarkan dengan garis merah pada gambar di bawah
ini. Dari mana nilai E didapatkan dan apa hubungannya dengan w11.

Nilai E diperoleh dari rumus Mean Square Error:

dari rumus di atas tidak ada variabel w11 tetapi kita bisa coba “jalan mundur” lagi. Kita ingat-
ingat lagi dari mana nilai setiap variabel y berasal.

Variabel y diperoleh dari menerapkan sebuah fungsi aktivasi terhadap variabel z. Sedangkan,
variabel z sendiri dihitung dengan:

dari sini terlihat variabel w11 ada di perhitungan z1 yang secara tidak langsung berpengaruh ke
nilai E. Hal ini yang disebut dengan chaining atau rantaian.
Setelah kita memahami hubungan E dan w11 langkah selanjutnya adalah kita pahami bagaimana
dasar menghitung turunannya. Disini kita menggunakan turunan parsial yang bedanya dengan
turunan biasa adalah fungsi bisa mengandung lebih dari satu variabel.
MENGHITUNG TURUNAN
UPDATE NILAI w11

Dengan beberapa langkah menggunakan aturan perhitungan yang disebutkan sebelumnya.


∂E
Menggunakan aturan no. 4 di atas, kita bisa mencari nilai dengan 2 langkah berikut:
∂ w 11

Langkah 1
Kita selesaikan bagian pertamanya, menggunakan aturan no. 3 dan no. 4 di atas, maka:

Langkah 2
Untuk bagian keduanya kita lihat kembali rumus asli untuk menghitung y1, yakni dengan
menggunakan fungsi sigma terhadap z1 :
Variabel w11 tidak langsung ditemukan dalam perhitungan variabel y1, melainkan perlu mundur
∂y1
lagi ke variabel z1. Dengan aturan no. 4, maka pada tahap ini kita bisa memecah
∂ w 11
menjadi 2 bagian lagi:

∂ y1
Kita selesaikan bagian pertama dengan aturan no. 5:
∂ z1

∂z 1
Kemudian untuk bagian kedua kita selesaikan menggunakan aturan no. 2 dan no. 3,
∂ w 11
menjadi:

Gabungkan semua
∂E
Secara ringkas dari perhitungan-perhitungan di atas, maka nilai dari adalah:
∂ w 11

Jika diinputkan dengan angka maka:


Sehingga untuk memperbarui bobot w11 nilai yang baru dengan nilai α=0.5 (contoh) adalah:

UPDATE NILAI b1
Chaining untuk mengupdate nilai bias dilakukan serupa dengan cara mengupdate nilai bobot.
Mulai dari paling belakang, telusuri tiap variabel dan pecah menurut perhitungan rumusnya,
sampai ditemukan variabel bias yang ingin diupdate. Untuk mengupdate bias b1, dapat dihitung
dengan :

Sehingga untuk memperbarui bias b1 yang baru dengan nilai α=0.5 (contoh) adalah:

MENGUPDATE SEMUA BOBOT


Perhitungan di atas belum selesai memperbarui semua bobot dan bias. Saat backpropagation,
proses di atas kita lakukan ke semua bobot w dan bias b.
karena sudah dapat rumus turunannya, kita bisa langsung lihat pola rumusnya. Misalnya untuk
∂z 1
w21 kita bisa cukup mengubah bagian nilai ketika menghitung turunan (karena w21
∂ w 21
masih sama-sama bagian dari y1).

Namun, agak berbeda jika kita ingin memperbarui nilai w12 hal ini karena jika diperhatikan w12
tidak ikut membangun nilai y1 tetapi berada di perhitungan y2. Berikut ilustrasinya:

Maka untuk menghitung turunannya menjadi sedikit beda:


Setelah melakukan backpropagation untuk semua bobot dan bias, maka akan diperoleh hasil
bobot sebagai berikut:

Untuk mengevaluasi kita bisa mengecek kembali hasilnya dengan forward propagation (tanpa
perlu backpropagation). Jika kita lakukan forward propagation, maka akan diperoleh nilai y
sebagai berikut:

Jika kita hitung errornya maka akan terjadi perubahan nilai dari sebelum dilakukan
backpropagation. Nilai error telah menjadi lebih kecil dari sebelumnya (error sebelumnya
0.3227):

Hal tersebut menandakan backpropagation kita telah berhasil

Anda mungkin juga menyukai