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 :

25 thoughts on “Seputar Pembelajaran Jaringan Backpropagation (BPNN)

  1. assalamualaikum mas kalo pengenalan sidik jari atau iris mata pake jaringan syaraf tiruan itu gimana? masukannya harus berupa angka gitu? cara ngerubahnya gimana? terus nanti outputnya juga berupa apa, mohon pencerahannya mas

  2. Assalamualaikum, pak mau tanya, skripsi saya kan membahas tentang pengenalan pola sidik jari menggunakan backpro, saya bingung, setelah sidik jari saya ubah ke bentuk matriks menggunakan matlab, langkah selanjutnya sya tdk tau, soalnya pikselnya sampai ribuan, mana yang saya gunakan untuk pola inputnya. apakah semua piksel. masalahnya saya juga mau menyelesaikannya secara manual.

  3. hallo mas, terima kasih untuk info yang anda tulis diblog ini.
    saya ingin bertanya mas, inputan dari BPNN ini kan dari fitur-fitur yang ada, nah fitur tersebut tidak harus biner kan? karena setelah saya melakukan preprocessing (grayscale, threshold, thinning, ekstrasi ciri Direction Featur Extraction ) hasilnya bukan biner tp angka biasa seperti 8,12,24,15,12,8,36,22,14,25,26. apakah bisa dijadikan input?
    pertanyaan keduanya layer outputnya 1 saja cukup tidak kalo untuk pengenalan pola penulisan tangan?
    terima kasih🙂

  4. hallo mas… mw tx ni…
    bpnn tu bsa tdk digunakan buat peramalan? atw cuma klasifikasi aja..??
    Trus tuk slesaikannya pke program apa..???
    klo bisa, tlg ya post tutorialnya mas… mkasih…

    • – penentuan jml node/neuron pada input layer ditentukan dari banyaknya sifat/ciri yang akan diekstraksi. perhatikan rumus matematikanya atau teori tentang iris mata, berapa banyak ciri yang dibutuhkan untuk membuat klasifikasi/pengenalan/pencocokan. semakin banyak sifat/ciri seharusnya semakin banyak informasi yang bisa diekstraksi, sehingga bisa meningkatkan kinerja pengenalan. tapi perhatikan juga dimensi matriks seperti jumlah level keabuan dan jarak piksel antar tetangga (bin), sudut orientasi, agar sesuai dengan kinerja alat. maka pemilihan daerah ROI (region of interest) juga penting dilakukan agar komputasi berjalan efektif.

      – penentuan jml node pd output layer ditentukan dari keputusan akhir klasifikasi/pengenalan/pencocokan, mslnya 3 node : besar, kecil, medium; 2 node : cocok atau tidak cocok; atau cukup 1 node bila hasil akhirnya adalah prosentase kecocokan, dll.

      – penentuan hidden layer dan jumlah node/neuron-nya ditentukan dari eksperimen. buat design eksperimen dengan variasi jumlah hidden layer dan jumlah node/neuron-nya. kinerja pengenalan yang paling optimal dan stabil maka itulah yg dipilih buat rencana implementasi berikutnya.

      • mas saya baru dapet literatur, link nya nggak bisa dicopy ni, mungkin masnya kalo mau lihat di google, kata kuncinya ppt backpropagation benyamin kusumoputro, disitu disebutkan kalo menentukan jumlh neuron output berdasarkan jumlah kelas pola. bingung saya mana yg bener🙂 maaf saya newbie

      • 🙂 maksud saya dan pak Benyamin itu sama aja. kalau tujuannya klasifikasi citra iris mata, maka hasil akhir keputusan adalah masuk kelas iris mata mana citra yang kita olah. jumlah neuron pd output layer ditentukan dari kelas pola iris mata yang ada di basis data. asumsinya, basis data kelas pola iris mata sudah dibuat sebelumnya. Jadi iris mata yang diolah akan diuji masuk ke kelas yang mana.

        bila tujuan akhirnya adalah pengenalan dan pencocokan, maka hasil akhirnya adalah kelas kecocokan (cocok atau tidak cocok), atau secara eksaknya bisa dengan angka prosentase kecocokan : apakah citra iris mata tersebut berasal dari mata orang yang sama. begitulah kira-kira maksudnya.

  5. mas, saya mau tanya.
    kebetulan skripsi saya tentang backpropagation untuk pengenalan huruf arab.

    sebenernya bpnn itu digunakan untuk mencari apa ya?saya sampai saat ini masih buntu untuk itu. saya baca juga ada algoritma pelatihan dan algoritma pengujian. untuk algoritma pelatihan, itu kita mencari apa ya?

    mohon penjelasannya mas.
    thanks

    • Ok, thanks komentarnya. bpnn salah satunya bisa digunakan untuk character recognition, sebagai misal untuk mengenali pola data dari pengenalan pola hasil training.
      untuk pelatihannya sendiri di bpnn menggunakan supervised learning, artinya telah tersedia database contoh data input dan target ouptnya. sebagai misal, mengenali teks arabic dan mengubahnya ke dalam format digital, disini 28 karakter huruf arab dan 10 angka arab digunakan sebagai data latihan (input dan target output). Dengan training, jaringan akan belajar mengenali pola melalui algoritma pembelajaran bpnn sehingga didapat lokal minimum/global minimum tergantung database training jaringan yang tersedia (semakin representatif data training, semakin baik).

  6. mas, saya mau tanya.
    kebetulan skripsi saya tentang backpropagation untuk pengenalan huruf arab.

    sebenernya bpnn itu digunakan untuk mencari apa ya?saya sampai saat ini masih buntu untuk itu. saya baca juga ada algoritma pelatihan dan algoritma pengujian. untuk algoritma pelatihan, itu kita mencari apa ya?

    mohon penjelasannya mas. thanks

    • Hi, terima kasih komentarnya. Engga, jumlah neuron input ditentukan dari dimensi data input dan permasalahannya (ini biasanya didefinisikan dulu secara matematis sebelum menentukan desain jaringan). untuk mengetahui dimensi datanya dilihat dari database yang akan dijadikan sample training jaringan (input dan target ouput).

      untuk desain NN-nya sendiri memang tidak ada prosedur baku, pemilihannya tergantung dari dimensi permasahan, faktor2 dan parameter apa saja yg terlibat di permasalahan, fungsi nonlinier, serta minimalisasi error jaringan selama pembelajaran

  7. Pingback: Ekspresi Rekursif Algoritma BPNN « matematika-ku

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s