|
Metode dan Algoritma | Contoh Jaringan Saraf Tiruan Backpropagation di PHP - Contoh Program + Source Code . Anda bisa melakukan konsultasi tentang Contoh Jaringan Saraf Tiruan Backpropagation di PHP - Contoh Program + Source Code melalui form di samping kanan !!!
Algoritma ini melakukan dua tahap perhitungan yaitu perhitungan maju untuk menghitungerror antara keluaran aktual dan target, dan perhitungan mundur yang mempropagasikan balik error tersebut untuk memperbaiki bobot sinaptik pada semua neuron yang ada. Fungsi aktivasi yang digunakan harus memenuhi beberapa syarat, yaitu kontinu, terdiferensial dengan mudah dan merupakan fungsi yang tidak turun. Fungsi yang akan digunakan dalam sistem ini adalah funngsi sigmoid biner.
Pelatihan backpropagation meliputi 3 fase. Fase pertama adalah fase maju. Pola masukan dihitung maju mulai dari layar masukan hingga layar keluaran menggunakan fungsi aktivasi yang ditentukan. fase kedua adalah fase mundur. Selisih antara keluaran jaringan dengan target yang diinginkan merupakan kesalahan yang terjadi. Kesalahan tersebut dipropagasikan mundur, dimulai dari garis yang berhubungan langsung dengan unit-unit di layar keluaran. Fase ketiga adalah modifikasi bobot untuk menurunkan kesalahan yang terjadi.
- inisialisasi bobot (ambil bobot awal dengan nilai random yang cukup kecil).
- Tetapkan : Maksimum Epoh, Target error, dan Learning Rate(a).
- Inisialisasi : Epoh = 0
- Kerjakan langkah-langkah berikut selama (Epoh < Maksimum Epoh) dan (MSE < Target error):
- Epoh = epoh + 1
- Untuk tiap-tiap pasangan elemen yang akan dilakukan pembelajaran, kerjakan:
Feedforward:
- Tiap-tiap unit input (Xi, i=1,2,3,…,n) menerima sinyal xi dan meneruskan sinyal tersebut ke semua unit pada lapisan yang ada di atasnya (lapisan tersembunyi).
- Tiap-tiap unit pada lapisan tersembunyi (Zj, j=1,2,3,…,p) menjumlahkan sinyal-sinyal input terbobot:
z_inj = b1j +
gunakan fungsi aktivasi untuk menghitung sinyal outputnya:
zj = f(z_inj)
dan sinyal ini dikirimkan ke semua unit di lapisan atasnya (unit-unit output). Langkah ini diulang sebanyak jumlah lapisan tersembunyi.
- Tiap-tiap unit output (Yk, k=1,2,3,..,m) menjumlahkan sinyal-sinyal input terbobot.
y_ink = b2k +
gunakan fungsi aktivasi untuk menghitung sinyal outputnya:
yk = f (y_ink)
Backpropagation
- Tiap-tiap unit output (Yk, k=1,2,3,…,m) menerima target pola yang berhubungandengan pola input pembelajaran, hitung informasi errornya:
dk = (tk – yk) f’(y_ink)
kemudian hitung koreksi bobot (yang nantinya digunakan untuk mengubah nilai wjk):
Dwjk = a dk zj
hitung nilai bias (yang nantinya digunakan untuk memperbaiki nilai b2k):
Db2k = a dk
- Tiap-tiap unit tersembunyi (Zj, j=1,2,3,…,p) menjumlahkan delta inputnya (dari unit-unit yang berada pada lapisan di atasnya)
d_inj =
kalikan nilai ini dengan turunan fungsi aktivasinya untuk menghitung informasi error :
dj = d_inj f’(z_inj)
kemudian hitung nilai koreksi bobot (yang nantinya akan digunakan untuk memperbaiki nilai vij):
Dvij = a dj xi
hitung juga koreksi bias (yang nantinya akan digunakan untuk memperbaiki nilai b1j)
Db1j = a dj
- Tiap-tiap unit output (Yk, k=1,2,3,…,m) memperbaiki bias dan bobotnya (j=0,1,2,..,p):
wjk(baru) = wjk(lama) + Dwjk
b2k(baru) = b2k(lama) + Db2k
Tiap-tiap unit tersembunyi (Zj, j=1,2,3,…,p) memperbaiki bias dan bobotnya (i=0,1,2,..,n):
vij(baru) = vij(lama) + Dvij
b1j(baru) = b1j(lama) + Db1j
- Hitung error
E =
Kecerdasan Buatan(bahasa Inggris: Artificial Intelligence atau AI) didefinisikan sebagai kecerdasan yang ditunjukkan oleh suatu entitas buatan. Sistem seperti ini umumnya dianggap komputer. Kecerdasan diciptakan dan dimasukkan ke dalam suatu mesin (komputer) agar dapat melakukan pekerjaan seperti yang dapat dilakukan manusia. Dorongan utama dari Artificial Intelligence (AI) adalah pengembangan fungsi normal komputer yang digabungkan dengan kecerdasan manusia, seperti memberi alasan, menarik kesimpulan, belajar dan memecahkan masalah.
Untuk membangun aplikasi kecerdasan buatan ada 2 bagian utama yang sangat dibutuhkan, yaitu:
Knowledge base (Basis pengetahuan), berisi fakta-fakta, teori, pemikiran dan hubungan antara satu dengan lainnya.
Inference engine (Mesin penyimpul), yaitu kemampuan menarik kesimpulan berdasarkan pengalaman.
Gambar 2.1 Penerapan kecerdasan buatan di komputer
Jaringan Syaraf Tiruan
Gambaran Umum
Jaringan syaraf tiruan adalah suatu arsitektur jaringan untuk memodelkan cara kerja sistem syaraf manusia (otak) dalam melaksanakan tugas tertentu. pemodelan ini didasari oleh kemampuan otak manusia dalam mengorganisasi sel-sel penyusunnya (yang disebut neuron), sehingga memiliki kemampuan untuk melaksanakan tugas-tugas tertentu khususnya pengenalan pola dengan efektivitas jaringan yang sangat tinggi.Tetapi, model ini tentu saja sangat jauh lebih sederhana dibandingkan sistem syaraf manusia yang sebenarnya
Jaringan syaraf tiruan sederhana pertama kali diperkenalkan oleh McCulloch dan Pitts di tahun 1943. McCulloch dan Pitts menyimpulkan bahwa kombinasi beberapa neuron sederhana menjadi suatu system neural akan meningkatkan kemampuan komputasinya. Bobot dalam jaringan yang diusulkan McCulloch dan Pitts diatur untuk melakukan fungsi sederhana. Fungsi aktivasi yang dipakai adalah fungsi threshold.
Jaringan syaraf tiruan dibentuk sebagai generalisasi model matematika dari jaringan saraf biologi, dengan asumsi bahwa :
- Pemrosesan informasi terjadi pada banyak elemen sederhana (neuron)
- Sinyal dikirimkan diantara neuron-neuron melalui penghubung-penghubung
- Penghubung antar neuron memiliki bobot yang akan memperkuat atau memperlemah sinyal
- Untuk menentukan output, setiap neuron menggunakan fungsi aktivasi (biasanya bukan fungsi linier) yang dikenakan pada jumlahan input yang diterima. Besarnya output ini selanjutnya dibanding dengan suatu batas ambang.
Jaringan syaraf tiruan ditentukan oleh 3 hal :
- Pola hubungan antar neuron (disebut arsitektur jaringan)
- Metode untuk menentukan bobot penghubung (disebut metode learning/algoritma)
- Fungsi aktivasi
Gambar 2.2 Contoh Fungsi Aktivasi
Pada gambar tersebut sebuah neuron akan mengolah N input (x1, x2, …, xN) yang masing-masing memiliki bobot w11, w2, …, wN dengan rumus :
y_in =
Kemudian fungsi aktivasi F akan mengaktivasi y_in menjadi output jaringan y.
Arsitektur Jaringan Syaraf Tiruan
Hubungan antar neuron dalam jaringan syaraf tiruan mengikuti pola tertentu tergantung arsitektur jaringan sarafnya. beberapa arsitektur jaringan yang sering dipakai antara lain :
- Jaringan Layar Tunggal (Single Layer Network)
Arsitektur jaringan ini memiliki ciri-ciri yaitu hanya terdiri dari satu lapisan input dan satu lapisan output, tanpa lapisan tersembunyi. Dalam jaringan ini, semua unit inputdihubungkan dengan semua unit output, meskipun dengan bobot yang berbeda-beda. Tidak ada unit input yang dihubungkan dengan unit input lainnya. Demikian pula unit output.
Jaringan Layar Jamak (Multi Layer Network)
Jaringan ini merupakan perluasan dari jaringan layar tunggal. Memiliki satu atau lebih lapisan yang terletak diantara lapisan input dan output (memiliki satu atau lebih lapisan tersembunyi).
Gambar 2.3 Jaringan layar jamak (multi layer network)
Jaringan Recurrent
Arsitektur ini memungkinkan hubungan antar neuron. terdapat neuron output yang memberikan sinyal pada unit input (sering disebut feedback loop).
Fungsi Aktivasi
Fungsi aktivasi digunakan untuk menentukan keluaran suatu neuron. Argumen fungsi aktivasi adalah net masukan (kombinasi linier masukan dan bobotnya). Beberapa fungsi aktivasi yang sering digunakan, antara lain :
- Fungsi threshold (batas ambang)
f(x) =
Untuk beberapa kasus fungsi threshold yang dibuat tidak berharga 0 atau 1, tapi berharga -1 atau 1 (sering disebut threshold bipolar)
Fungsi hard limit (undak biner)
Jaringan dengan lapisan tunggal sering menggunakan fungsi undak untuk mengkonversikan input dari suatu variabel yang bernilai kontinu ke suatu output biner.
f(x) =
Fungsi linear (Identitas)
f(x) = x
Fungsi identitas sering dipakai apabila kita menginginkan keluaran jaringan berupa sebarang bilangan riil (bukan hanya pada range [0,1] atau [-1,1])
Fungsi sigmoid biner
Fungsi sigmoid biner memiliki nilai pada range 0 sampai 1. Fungsi ini sering digunakan untuk jaringan syaraf yang membutuhkan nilai output yang terletak pada interval 0 sampai 1. Namun, fungsi ini bisa juga digunakan oleh jaringan syaraf yang nilai outputnya 0 atau 1. Fungsi sigmoid biner dirumuskan :
f(x) =
dengan: f’(x) = sf(x)[1-f(x)]
Source Code :
[sourcecode language="php"]
<?php
///////////////////////////////////////////////////
//MLP neural network in PHP
//Original source code by Phil Brierley
//www.philbrierley.com
//Translated into PHP – dspink Sep 2005
//Modified by Phil July 2009
//This code may be freely used and modified at will
////////////////////////////////////////////////
//Tanh hidden neurons
//Linear output neuron
//To include an input bias create an
//extra input in the training data
//and set to 1
//////////////////////////////// User settings //////////////////
$numEpochs = 500;
$numHidden = 3;
$LR_IH = 0.7;
$LR_HO = 0.07;
//////////////////////////////// Data dependent settings //////////////////
$numInputs = 3;
$numPatterns = 4;
////////////////////////////////////////////////////////////////////////////////
$patNum;
$errThisPat;
$outPred;
$RMSerror;
$trainInputs = array();
$trainOutput = array();
// the outputs of the hidden neurons
$hiddenVal = array();
// the weights
$weightsIH = array();
$weightsHO = array();
main();
//==============================================================
//********** THIS IS THE MAIN PROGRAM **************************
//==============================================================
function main()
{
global $numEpochs;
global $numPatterns;
global $patNum;
global $RMSerror;
// initiate the weights
initWeights();
// load in the data
initData();
// train the network
for($j = 0;$j <= $numEpochs;$j++)
{
for($i = 0;$i<$numPatterns;$i++)
{
//select a pattern at random
//srand();
$patNum = rand(0,$numPatterns-1);
//calculate the current network output
//and error for this pattern
calcNet();
//change network weights
WeightChangesHO();
WeightChangesIH();
}
//display the overall network error
//after each epoch
calcOverallError();
if (gmp_mod($j,50) == 0)
print "epoch = ".$j." RMS Error = ".$RMSerror."</br>";
}
//training has finished
//display the results
displayResults();
}
//============================================================
//********** END OF THE MAIN PROGRAM **************************
//=============================================================
//***********************************
function calcNet()
{
global $numHidden;
global $hiddenVal;
global $weightsIH;
global $weightsHO;
global $trainInputs;
global $trainOutput;
global $numInputs;
global $patNum;
global $errThisPat;
global $outPred;
//calculate the outputs of the hidden neurons
//the hidden neurons are tanh
for($i = 0;$i<$numHidden;$i++)
{
$hiddenVal[$i] = 0.0;
for($j = 0;$j<$numInputs;$j++)
{
$hiddenVal[$i] = $hiddenVal[$i] + ($trainInputs[$patNum][$j] * $weightsIH[$j][$i]);
}
$hiddenVal[$i] = tanh($hiddenVal[$i]);
}
//calculate the output of the network
//the output neuron is linear
$outPred = 0.0;
for($i = 0;$i<$numHidden;$i++)
{
$outPred = $outPred + $hiddenVal[$i] * $weightsHO[$i];
}
//calculate the error
$errThisPat = $outPred – $trainOutput[$patNum];
}
//************************************
function WeightChangesHO()
//adjust the weights hidden-output
{
global $numHidden;
global $LR_HO;
global $errThisPat;
global $hiddenVal;
global $weightsHO;
for($k = 0;$k<$numHidden;$k++)
{
$weightChange = $LR_HO * $errThisPat * $hiddenVal[$k];
$weightsHO[$k] = $weightsHO[$k] – $weightChange;
//regularisation on the output weights
if ($weightsHO[$k] < -5)
{
$weightsHO[$k] = -5;
}
elseif ($weightsHO[$k] > 5)
{
$weightsHO[$k] = 5;
}
}
}
//************************************
function WeightChangesIH()
//adjust the weights input-hidden
{
global $trainInputs;
global $numHidden;
global $numInputs;
global $hiddenVal;
global $weightsHO;
global $weightsIH;
global $LR_IH;
global $patNum;
global $errThisPat;
for($i = 0;$i<$numHidden;$i++)
{
for($k = 0;$k<$numInputs;$k++)
{
$x = 1 – ($hiddenVal[$i] * $hiddenVal[$i]);
$x = $x * $weightsHO[$i] * $errThisPat * $LR_IH;
$x = $x * $trainInputs[$patNum][$k];
$weightChange = $x;
$weightsIH[$k][$i] = $weightsIH[$k][$i] – $weightChange;
}
}
}
//************************************
function initWeights()
{
global $numHidden;
global $numInputs;
global $weightsIH;
global $weightsHO;
for($j = 0;$j<$numHidden;$j++)
{
$weightsHO[$j] = (rand()/getrandmax() – 0.5)/2;
for($i = 0;$i<$numInputs;$i++)
{
$weightsIH[$i][$j] = (rand()/getrandmax() – 0.5)/5;
}
}
}
//************************************
function initData()
{
global $trainInputs;
global $trainOutput;
print "initialising data</br>";
// the data here is the XOR data
// it has been rescaled to the range
// [-1][1]
// an extra input valued 1 is also added
// to act as the bias
// the output must lie in the range -1 to 1
$trainInputs[0][0] = 1;
$trainInputs[0][1] = -1;
$trainInputs[0][2] = 1; //bias
$trainOutput[0] = 1;
$trainInputs[1][0] = -1;
$trainInputs[1][1] = 1;
$trainInputs[1][2] = 1; //bias
$trainOutput[1] = 1;
$trainInputs[2][0] = 1;
$trainInputs[2][1] = 1;
$trainInputs[2][2] = 1; //bias
$trainOutput[2] = -1;
$trainInputs[3][0] = -1;
$trainInputs[3][1] = -1;
$trainInputs[3][2] = 1; //bias
$trainOutput[3] = -1;
}
//************************************
function displayResults()
{
global $numPatterns;
global $patNum;
global $outPred;
global $trainOutput;
for($i = 0;$i<$numPatterns;$i++)
{
$patNum = $i;
calcNet();
print "pat = ".($patNum+1)." actual = ".$trainOutput[$patNum]." neural model = ".$outPred."</br>";
}
}
//************************************
function calcOverallError()
{
global $numPatterns;
global $patNum;
global $errThisPat;
global $RMSerror;
$RMSerror = 0.0;
for($i = 0;$i<$numPatterns;$i++)
{
$patNum = $i;
calcNet();
$RMSerror = $RMSerror + ($errThisPat * $errThisPat);
}
$RMSerror = $RMSerror/$numPatterns;
$RMSerror = sqrt($RMSerror);
}
?>
[/sourcecode]
CONTOH SOURCE CODE
Kode ini dapat digunakan / ditambahkan dalam aplikasi apapun dengan hanya menambahkan kelas yang ada ke dalam kode sumber Anda. Proses lainnya telah diimplementasikan dalam format yang mudah untuk dimengerti dan tepat sesuai dengan fleksibilitas program yang anda butuhkan.
Download Contoh Program + Source Code Artikel di Atas
Artikel lainnya : + Source Code ASP.NET + Source Code C++ + Source Code C-Sharp + Source Code Delphi + Source Code Java + Source Code JavaScript + Source code MATLAB + Source Code Ruby + Source Code VB.6.0 + Source Code VB.Net - Adaptive Resonance Theory (ART) - Algoritma & Pemrograman - Algoritma Backpropagation - Algoritma Blowfish - Algoritma Cipher - Algoritma Clustering Gaussians - Algoritma Eigenface - Algoritma Fuzzy C-Means - Algoritma Genetika - Algoritma Huffman - Algoritma Komputer Quantum - Algoritma LOKI - Algoritma MD5 - Algoritma Persamaan Diophantine - Algoritma Rijndael - Algoritma Semut - Algoritma Tabu Search - Analisis Kriteria Majemuk - Analytical Hierarchy Sistem (AHP) - Ant Colony System - Case Based Reasoning (CBR) - Chaotic Encryption Algorithm - Data Encryption Standard (DES) - Discrete Wavelet Transform - Elliptic Curve Digital Signature Algorithm (ECDSA) - Haar Wavelet - Hidden Markov Model (HMM) - JST Hopfield - Least Significant Bit (LSB) - Metode Analisis Heuristik - Metode Analisis Regresi - Metode Burrows-Wheeler Transform - Metode Forward Chaining - Metode Gost - Metode Huffman Statis - Metode Hybrid - Metode Insertion Heuristic - Metode Maksimum Likelihood - Metode Newton- Raphson - Metode Otsu - Metode Penyetaraan Histogram - Optical Character Recognition (OCR) - Propagasi Balik - Self Organizing Map (SOM) - Tabu Search - Teorema Bayes - Transformasi Wavelet Kontinyu Uncategorized ~ Artificial Intelligence ~ Blind Signature ~ Data Mining ~ Decission Support Sistem ~ Digital Signal Processing (DSP) ~ Digital Signature ~ Enkripsi & Dekripsi ~ Image & Data Prossesing ~ Jaringan MANET ~ Jaringan Neural Quantum ~ Jaringan Syaraf Tiruan ~ Judul Skripsi Tesis Informatika ~ Kecerdasan Buatan ~ Kriptografi ~ Model Pemrograman Linear (MPL) ~ Multiple Trip Vehicle Routing Problem (MTVRP) ~ Neural Network ~ Pengenalan Pola ~ Pengenalan Wajah ~ Pengolahan Citra ~ Penjadwalan ~ Pewarnaan Simpul Graph ~ Recognition ~ Sistem Pakar ~ Steganography ~ Tanda Tangan Digital ~ Traveling Salesman Problem (TSP) ~ Watermarking
Contoh Jaringan Saraf Tiruan Backpropagation di PHP - Contoh Program + Source Code
ActionScript AS3 ASP.NET AJAX C / C++ C# Clipper COBOL ColdFusion DataFlex Delphi Emacs Lisp Fortran FoxPro Java J2ME JavaScript JScript Lingo MATLAB Perl PHP PostScript Python SQL VBScript Visual Basic 6.0 Visual Basic .NET Flash MySQL Oracle Android
Rating: 100% based on 99998 ratings. 5 user reviews.
Ditulis Oleh hank2
{ 0 komentar... Views All / Send Comment! }
Posting Komentar