Seputar Pembelajaran Jaringan Backpropagation (BPNN)

Pembelajaran jaringan backpropagation (backpropagation networks) atau bpnn adalah satu tipe pembelajaran terbimbing (supervised learning) yang diterapkan untuk jaringan syaraf tiruan (artificial neural networks) dalam memecahkan suatu masalah. Bpnn banyak diaplikasikan untuk pendeteksian dan pengklasifikasian pola, baik suara, bentuk tubuh, gambar seperti dalam pemrosesan image, fingerprint, face recognition, karakterisasi, juga banyak diterapkan dalam prediction dan approximation.

Algoritma pembelajaran bpnn pada tulisan ini menggunakan metode gradient descent, yang menerapkan aturan pembaharuan bobot (weight) secara iteratif :

w_k \longleftarrow w_k - \mu \frac{\partial E}{\partial w_k} …… (1)

hingga bobot w_k dalam jaringan konvergen ke nilai (solusi) yang diharapkan. Pada persamaan (1), \frac{\partial E}{\partial w_k} adalah turunan parsial (partial derivative) error jaringan E terhadap bobot w_k, sedanghkan laju perubahan (modifikasi) bobot di setiap iterasi dikontrol oleh \mu , yang disebut “laju pembelajaran” (learning rate).

Gambar 1. Struktur Algoritma Pembelajaran Jaringan Backpropagation

Pada gambar 1 neuron ke-m pada lapisan n yang mempunyai bobot k ditulis w_{km}^n, s_m^n menyatakan jumlah input yang telah diberi bobot, dan x_m^n=f(s_m^n) adalah output neuron. Sebagai contoh, x_k^{n-1} adalah output neuron ke-k pada lapisan (n-1); x_k^{n-1} juga input ke-k untuk tiap-tiap neuron pada lapisan n; yaitu, x_k^{n-1} dikoneksikan dengan bobot w_{km}^n, bobot ke-k untuk neuron ke-m di lapisan n.

Untuk menurunkan aturan pembaharuan bobot di algoritma bppn ini, digunakan aturan rantai (chain rule) :

\frac {\partial E}{\partial w_{km}^n}=\frac {\partial E}{\partial s_m^n}\frac {\partial s_m^n}{\partial w_{km}^n} …… (2)

Jumlah input yang telah diberi bobot untuk neuron ke-n sebelum masuk ke fungsi transfer non-linear adalah :

s_m^n=\displaystyle\sum_{j=1}^M w_{jm}^n x_j^{n-1} …… (3)

Atau dapat ditulis,

\frac {\partial s_m^n}{\partial w_{km}^n} = x_k^{n-1}. …… (4)

Dengan mensubstitusikan persamaan (4) ke persamaan (2) didapatkan :

\frac {\partial E}{\partial w_{km}^n}=x_k^{n-1} \frac {\partial E}{\partial w_m^n} ….. (5)

dan dengan menggunakan aturan rantai didapatkan :

\frac {\partial E}{\partial w_{km}^n}=x_k^{n-1} \frac {\partial E}{\partial x_m^n} \frac {\partial x_m^n}{s_m^n} …… (6)

Selanjutnya digunakan fungsi transfer non-linear yang bisa digunakan dalam jaringan, sebagai misal di sini digunakan fungsi sigmoid :

f(x) = \frac {1}{1 + e^{-x}} …… (7)

f'(x) = f(x)[1-f(x)] …… (8)

karena f(s_m^n)=x_m^n, persamaan (6) menjadi :

\frac {\partial E}{\partial w_{km}^n}=x_k^{n-1} f'(s_m^n) \frac {\partial E}{\partial x_m^n} …… (9)

Persamaan (9) adalah kunci di dalam penurunan karena menyatakan derivative suatu bobot terhadap error jaringan dalam pengertian derivative error jaringan terhadap output neuron. Langkah berikutnya adalah menemukan ekspresi rekursif yang juga menggunakan aturan rantai, sehingga diperoleh :

\frac {\partial E}{\partial x_m^n} = \sum_j w_{mj}^{n+1} f'(s_j^{n+1}) \frac {\partial E}{\partial x_j^{n+1}} …… (10)

selanjutnya dengan mendefiniskan :

\delta_m^n=f'(s_m^n) \frac {\partial E}{\partial x_m^n} …… (11)

dan menggunakan persamaan (9) didapatkan formula rekursif untuk bobot jaringan :

w_{km}^n \longleftarrow w_{km}^n - \mu \delta_m^n x_m^{n-1} …… (12)

dimana \mu adalah konstanta, learning rate. Dengan menggunakan persamaan (11) untuk neuron ke-m di lapisan output (lapisan N),

\delta_m^N=-2(y_m^N-x_m^N)f'(s_m^N) …… (13)

dimana y_m^N adalah target output  dan E=(y_m^N-x_m^N)^2. Untuk neuron di hidden layer n dapat digunakan ekspresi persamaan :

\delta_k^n=\sum_m w_{km}^{n+1} \delta_m^{n+1} …… (14)

Sebagai kesimpulan, persamaan (12), (13) dan (14) adalah persamaan kunci di dalam penurunan rumus yang bisa digunakan untuk memperbaharui bobot jaringan sehingga error jaringan konvergen ke nilai minimum.

Uji Coba Algoritma Pembelajaran Bppn dengan Java Library

Sebagai percobaan saya gunakan Java library di Neuroph yang terintegrasi dengan NetBeans untuk membangun arsitektur jaringan syaraf tiruan dengan jaringan bppn. Di sini saya menggunakan jaringan perseptron multilayer, dengan 2 neuron input, 3 hidden neuron dan 1 neuron output; learning rate di-set ke nilai 0.5. Dan untuk training set digunakan XOR gate :

Gambar 2. Training Set dengan XOR gate

Total eror jaringan konvergen ke :

Gambar 3. Jumlah Iterasi dan Error total jaringan

Setelah training di atas dilakukan sebanyak 1486 kali iterasi, jaringan di uji coba dengan menggunakan nilai input 1 XOR 0, hasilnya divisualisasikan dalam graph berikut :

Gambar 4. Graph Bpnn dengan Multilayer Perceptron

Dari graph pada gambar 4 terlihat nilai output jaringan 0,865 mendekati nilai 1, yang merupakan output yang diharapkan untuk nilai input 1 XOR 0.

Bacaan online :

Tiga Siswa Sekolah Menengah Membangun Segitiga Rascal

Dari website MAA (Mathematical Association of America) via blog Republik Matematika saya dapatkan berita ini. Tiga orang siswa yang berasal dari negara berbeda dan berjauhan berkolaborasi membuat sebuah cerita tentang matematika. Mereka adalah :

  • Alif Anggoro, siswa kelas 7 SMP Al Azhar, Bekasi, Jakarta, Indonesia.
  • Eddy Liu, siswa kelas 8 di Washington Middle School, Seattle, Washington, USA.
  • Angus Tulloch, siswa kelas 8 di Crestomere School in Rimbey, Alberta, Canada.

Hasil yang mereka temukan adalah Rascal Triangle, sebuah versi lain dari Segitiga Pascal dengan menggunakan aturan yang berbeda. Kalau di Segitiga Pascal kita menambahkan 2 bilangan di baris atas untuk menghasilkan satu bilangan tepat di tengah pada baris di bawahnya. Segitiga Rascal menggunakan dua baris atas; dua angka pada baris atas pertama (misalnya a dan b), dan 1 angka pada baris atas kedua (misalnya c). Kemudian mereka mengalikan dua bilangan pada baris atas pertama (a x b), menambahkan satu darinya (a x b + 1), kemudian membagi dengan bilangan yang berada di baris atas kedua untuk menghasilkan setiap bilangan di baris ketiga (a x b + 1)/c.

Saya acungkan jempol untuk mereka bertiga. Konon mereka tidak pernah bertemu satu sama lain, dan kolaborasinya dikerjakan via email.

Seputar Persamaan Kubik

Omar Khayyam (1048-1131) menghabiskan sebagian hidupnya sebagai penulis puisi Rubaiyat (quatrains), di samping bekerja kepada pemerintah (Sultan Malik Syah I) untuk memperbaiki sistem penanggalan kalender Persia. Namun sebagian besar hidupnya dicurahkan sebagai seorang ilmuwan, khususnya matematika dan astronomi. Salah satu bidang matematika yang diminatinya ialah memecahkan persamaan kubik berbentuk :

x^3 + ax^2 + bx + c = 0

Ada 8 kemungkinan persamaan untuk perubahan tanda a, b, dan c, Omar Khayyam mencoba menanganinya satu-persatu. Untuk menemukan solusinya, ia gambarkan dalam pengertian perpotongan dua kerucut, atau menyatakan solusinya sebagai absis dari perpotongan hiperbola dan lingkaran, atau antara dua parabola.

Dalam hal tersebut Omar Khayyam menyatakan dua persamaan :

x^3 + ax^2 + bx + c = 0 dan y = x^2

mempunyai solusi riil r apabila

(x+a)(y+b) = ab - c dan y = x^2.

Jadi r adalah solusi riil dari x^3 + ax^2 + bx + c = 0, jika r adalah absis suatu titik perpotongan hiperbola (x+a)(y+b) = ab - c dengan parabola y = x^2. Hiperbola memiliki asimtot x = -a dan y = -b. Melewati sebuah titik (0, \frac{-c}{a}) , asumsinya a\not=0.

Bukankah ini adalah teorema, yang oleh Omar Khayyam disebut sebagai solusi “trivial”?

Sebagai contoh, persamaan (x-1)(x-2)(x-3) = x^3 - 6x^2 + 11x - 6 = 0, mempunyai asimtot x = 6 dan y=-11 . Bagian kiri atas hiperbola berpotongan dengan parabola y = x^2 pada titik (1,1), (2, 4), dan (3, 9).

Terlepas dari permasalahan persamaan kubik yang hendak dipecahkannya, Omar Khayyam adalah seorang Muslim yang tunduk patuh pada agama, di bagian pendahuluan bukunya tentang persamaan kubik, Omar Khayyam menulis :

Praise be to God, lord of all worlds, a happy end to those who are pious, and ill-will to none but the merciless. May blessings repose upon the prophets, especially upon prophet Mohammed SAW.