Backpropagation adalah suatu metode yang paling umum untuk digunakan sebagai pelatihan jaringan saraf tiruan (JST). atau juga disebut simulated neural network (SNN), atau umumnya hanya disebut neural network (NN)).

neural network (NN) itu sendiri adalah merupakan sebuah sistem pembelajaran terhadap penerimaan informasi yang memiliki kinerja layaknya sebuah jaringan syaraf pada manusia. NN diimplementasikan dengan menggunakan program komputer sehingga mampu menyelesaikan sejumlah proses perhitungan. Salah satu penggunaan NN adalah untuk pengenalan pola. Sistem pengenalan pola merupakan komponen penting dalam proses peniruan cara kerja sistem manusia

Sejarah Backpropagation

Metode Backpropagation ini pertama kali diperkenalkan oleh Paul Werbos pada tahun1974, kemudian dikemukakan kembali oleh David Parker di tahun 1982 dan kemudian dipopulerkan oleh Rumelhart dan McCelland pada tahun 1986. Pada Algoritma BackPropagationini, arsitektur jaringan menggunakan jaringan banyak lapis. Secara garis besar proses pelatihan pada jaringan saraf tiruan dikenal beberapa tipe pelatihan, yaitu :

  • Supervised Training
  • Unsupervised Training
  • Fixed-Weight Nets.

algoritma backpropagation

        Dari gambar diatas diperlihatkan bahwa NN terdiri atas satuan-satuan pemroses berupa neuron. Sedangkan Y sebagai output menerima input dari neuron X1, X2, X3, …, sampai Xn dengan bobot W1, W2, W3, …, Wn. Hasil penjumlahan seluruh input neuron dibandingkan dengan nilai ambang tertentu melalui fungsi aktivasi f pada setiap neuron. Kemudian fungsi aktivasi digunakan sebagai penentu keluaran suatu neuron.

        Salah satu metode pelatihan dalam NN adalah pelatihan terbimbing (supervised learning). Pada pelatihan terbimbing diperlukan sejumlah masukan dan target yang berfungsi untuk melatih jaringan hingga diperoleh bobot yang diinginkan.

        Pada setiap kali pelatihan, suatu input diberikan ke jaringan. Jaringan akan memproses dan mengeluarkan keluaran. Selisih antara keluaran jaringan dengan target merupakan kesalahan yang terjadi. Jaringan akan memodifikasi bobot sesuai dengan kesalahan tersebut. BPNN merupakan metode yang menggunakan supervised learning.

Pelatihan Backpropagation

  • Inisialisasikan semua input, target dan bias
  • Tentukan Epoch
  • Inisialisasi learning rate, maximum error

Proses Pelatihan Backpropagation

  • Hitung nilai masukan pada tiap pasangan elemen input pada hidden layer dengan formula :

    Perhitungan Back Propagation

  • Jika kita menggunakan fungsi aktivasi sigmoid, hitung output dengan :

    Perhitungan Back Propagation

  • Hitung sinyal keluaran dari hidden layer untuk mendapatkan keluaran output layer dengan menggunakan persamaan :

    Perhitungan Back Propagation

  • Jika kita menggunakan fungsi aktivasi sigmoid, hitung output dengan :

    Perhitungan Back Propagation

  • Kemudian, output jaringan dibandingkan dengan target, hitung error E dengan :

    Perhitungan Back Propagation

  • Selanjutnya Hitung MSE (Mean Square Error) :

    Perhitungan Back Propagation

    n adalah jumlah input masukan.
  • Pada tiap unit output, gunakan formula ini untuk memperbaiki nilai bobot dan bias :

    Perhitungan Back Propagation

  • Perbaiki nilai bobot dan bias dengan menggunakan formula :

    Perhitungan Back Propagation

  • Hitung sinyal balik dari output layer pada tiap unit di hidden layer :

    Perhitungan Back Propagation

  • Pada tiap unit hidden layer, hitung delta_1 untuk memperbaiki nilai bobot dan bias :

    Perhitungan Back Propagation

  • Perbaiki nilai bobot dan bias dengan menggunakan formula :

    Perhitungan Back Propagation

  • Untuk semua layer, perbaiki bobot dan bias :

    Perhitungan Back Propagation

  • Hitung MSE (Mean Square Error) dengan menggunakan formula :

    Perhitungan Back Propagation

  • Selanjutnya jika (Epoch < maximum Epoch) atau (MSE < Target Error), ulangi langkah pelatihan.

Contoh Program Backpropagation Menggunakan php

        Setelah sukses dengan teori sekarang kita akan mengimplementasikan algoritma backpropagation dengan menggunakan bahasa program yang cukup populer saat ini yaitu dengan menggunakan bahasa perogram PHP.

Baca Juga Artikel

         Disini kita akan menggunakan 4 hidden layer dan 4 input dengan 1 output, dengan target output yaitu 1 dan 0.

         Contoh kasus pada contoh ini adalah untuk mengetahui warna pada pixel. Dengan target 1 adalah menandakan warna biru dan 0 adalah warna merah. Berikut skript testing data dan target yang sudah di tentukan



Script PHP
 
                                <?php
                                require_once("class_neuralnetwork.php");
                                $n = new NeuralNetwork(4, 4, 1);
                                $n->setVerbose(false); 

                                //test data
                                $n->addTestData( array (0, 0, 255, 1), array (1)); // target keluaran 1
                                $n->addTestData( array (0, 0, 192, 1), array (1)); // target keluaran 1
                                $n->addTestData( array (208, 0, 49, 1), array (0)); // target keluaran 0
                                $n->addTestData( array ( 228,  105, 116, 1), array (0)); // target keluaran 0

                                $n->addTestData( array (128, 80, 255, 1), array (1)); // target keluaran 1
                                $n->addTestData( array ( 248,  80, 68, 1), array (0)); // target keluaran 0
                                ?>
                            


Skrip di atas adalah sampel data yang akan kita latih dengan target output 1 dan 0, kemudian selanjutnya kita tambahkan skript untuk membatasi waktu maximum load dan menentukan jumlah epoch dan maximum error.


Script PHP
 
                                <?php
                                $max = 3;
                                // pelatihan jaringan dengan epoch yaitu 1000, dengan max squared error=0.01
                                while (!($success=$n->train(1000, 0.01)) && $max-->0) {
                                    $n->initWeights();
                                }

                                if ($success) {
                                    $epochs = $n->getEpoch(); // menampilkan Training data Success pada epochs ke
                                }
                                ?>
                            


Setelah itu kita dapat menambahkan skript untuk menyimpan jaringan kedalam bentuk file.


Script PHP
 
                                <?php
                                $n->save('my_network.ini');
                                ?>
                            

File disimpan dengan format ini

Skript diatas berfungsi untuk membentuk jaringan neuron, jika ingin ketahap uji kita harus membuat satu file lagi seperti dibawah ini.


Script PHP
 
                                <?php
                                    require_once("class_neuralnetwork.php");
                                    $n = new NeuralNetwork(4, 4, 1); //initialize  neural network
                                    $n->setVerbose(false);
                                    $n->load('my_network.ini'); // Mengambil jaringan neuron yang telah di latih 

                                    $input = rray (0, 0, 255, 1);

                                    $result = $n->calculate($input);
                                    If($result>0.5) {
                                        echo"Data Uji adalah warna biru"; // Menampilkan hasil
                                    }
                                    else {
                                        echo"Data Uji adalah warna merah"; // Menampilkan hasil   
                                    }
                                ?>
                            

Bagi teman-teman yang ingin bertanya tentang algoritma backpropagation dengan php bisa meninggalkan komentar

;