Download - El4233 Dasar Sistem Dan Kendali Cerdas
EL4233 DASAR SISTEM DAN KENDALI CERDAS
PEMANFAATAN JARINGAN SYARAF TIRUAN DENGAN METODA BACKPROPAGATION UNTUK MEMPREDIKSI KEMENANGAN PADA PERMAINAN ONLINE BACCARAT
Oleh :
Erich Pratama Saputra (13210140)
SEKOLAH TEKNIK ELEKTRO DAN INFORMATIKAINSTITUT TEKNOLOGI BANDUNG
2015
Disclaimer :Data sepenuhnya diambil tanpa rekayasa
dari situs gamble online m88en.com. Situs
tersebut dapat diakses sepenuhnya oleh
publik secara bebas. Hasil gambling
ditampilkan secara live dan tidak terbatas
pada orang yang ikut permainan saja tetapi
bagi siapa saja yang mengakses situs
tersebut. Penulis tidak ada sangkut pautnya
dengan situs tersebut di atas dan hanya
mengakses untuk memperoleh data.
Abstrak
Saat ini telah banyak bermunculan situs
gambling online yang menawarkan
berbagai permainan yang dapat diakses
secara publik. Pemain dapat
mendepositokan uangnya dan menukarnya
dengan chip yang digunakan untuk
bermain. Pada beberapa permainan seperti
baccarat , tingkat kemenangan
dipengaruhi oleh kemampuan untuk
memprediksi kartu dan pola yang ada.
Pada laporan ini akan digunakan algortima
backpropagation untuk memprediksi
kemenangan pada permainan judi dengan
mengamati pola dan menghitung peluang
berdasarkan hasil sebelumnya.
Pendahuluan
Permainan baccarat merupakan salah satu
permainan sederhana pada kasino yang
melibatkan dua pihak. Satu pihak
bertindak sebagai banker (bandar) dan
pihak lain disebut player (pemain).
Sebelum permainan dimulai, setiap player
akan memasang chip taruhan pada satu
atau lebih dari 3 posisi berikut :
Banker Win : sisi banker memliki
kartu yang lebih besar.
Player win : sisi player memiliki
kartu yang lebih besar.
Tie(seri) : banker dan player
memiliki kartu yang besarnya
sama.
Selanjutnya, banker akan membagikan 2
buah kartu dari deck masing-masing
kepada banker dan player. Pemenang
adalah sisi yang memiliki kartu paling
besar.
Landasan Teori
Jaringan Syaraf Tiruan
Jaringan syaraf tiruan (JST) sesuai
namanya merupakan sistem yang
menyerupai sistem syaraf. Dalam sistem
JST ini ada beberapa hal yang perlu
diperhatikan, yaitu :
1. Adanya input
2. Adanya target untuk input tertentu
yang sudah diketahui
3. Adanya sistem jaringan syaraf
tiruan sebagai blackbox
Berdasarkan target tersebut, sistem JST
dapat melakukan proses pembelajaran
dengan membandingkan outputnya dengan
target serta melakukan koreksi.
Berikut ini merupakan gambar JST dimana
terdapat sejumlah input, layer dan output.
Metode Backpropagation
Metode backpropagation merupakan
sebuah metode sistematik pada jaringan
syaraf tiruan (JST) dengan menggunakan
algoritma pembelajaran yang terawasi dan
biasanya digunakan oleh perceptron
dengan banyak layar lapisan untuk
mengubah bobot-bobot yang ada pada
lapisan tersembunyinya (hidden layer).
Backpropagation ini merupakan pelatihan
jenis terkendali dimana digunakan pola
penyesuaian bobot untuk mencapai nilai
kesalahan yang minimum antara keluaran
hasil prediksi dengan keluaran nyata.
Secara umum, algoritma pembelajaran
backpropagasi terdiri atas 2 tahapan, yaitu
propagasi dan update bobot.
Pada laporan ini metode pelatihan
backpropagation terdiri dari 3 fase, yaitu :
1. Fase maju, yaitu pola masukan
dihitung maju mulai dari layar
masukan hingga layar keluaran
menggunakan fungsi aktivasi yang
ditentukan.
2. Fase mundur, yaitu selisih antara
keluaran jaringan dengan target
yang diinginkan merupakan nilai
error. Kemudian error tersebut di
propagasikan mundur dimulai dari
garis yang berhubungan langsung
dengan unit-unit di layar keluaran.
3. Modifikasi bobot untuk
memperbaiki dan menurunkan
kesalahan yang terjadi.
Untuk hal tersebutlah dibuat inisialisasi
nilai-nilai. Berikut ini adalah penentuan
inisialisasi nilai yang ditentukan.
Inisialisasi bobot dengan
mengambil nilai random bobot
awal yang cukup kecil.
Menetapkan nilai maksimum
epoch, target error serta learning
rate (α).
Inisialisasi nilai epoch = 0.
Ketika kondisi (epoch <
maksimum epoch) dan (MSE <
target error), maka dilakukan hal
berikut :
o Epoch = epoch + 1
o Tiap-tiap pasangan elemen yang
dilakukan pembelajaran,
dikerjakan feedforward dan
backpropagation.
o Hitung MSE
o Pengujian sistem
Feedforward
Merupakan pola masukan dihitung maju
mulai dari layar masukan hingga layar
keluaran menggunakan fungsi aktivasi
yang ditentukan. Berikut ini merupakan
langkah-langkah feedforward.
Tiap unit input (Xi, i = 1, 2, 3, …,
n) menerima sinyal xi dan
meneruskan sinyal tersebut ke
semua unit pada lapisan yang ada
diatasnya (hidden layer).
Tiap unit pada hidden layer (Zj, j =
1, 2, 3, …, p) menjumlahkan
sinyal-sinyal input terbobot :
z¿ j=b 1 j+∑i=1
n
x i v j
dimana :
n : jumlah unit tersembunyi
i,j : 0, 1, 2, …, n
b1 : bias input ke hidden
x : bobot input
v : bobot input ke hidden
z_in: jumlah sinyal hidden, dengan
menggunakan fungsi aktivasi untuk
menghitung sinyal outputnya.
Tiap unit output (Yk, k = 1, 2, 3,
…, m) menjumlahkan sinyal-sinyal
input terbobot.
y¿k=b2k+∑i=1
p
z i w jk
dimana :
p : jumlah unit keluaran
i,j, k : 0, 1, 2, …, p
b2 : bias hidden ke output
w : bobot hidden ke output
y_in : jumlah sinyal output,
dengan menggunakan fungsi
aktivasi untuk menghitung sinyal
outputnya.
Backpropagation
Tiap unit output (Yk, k = 1, 2, 3,
…, m) menerima target pola yang
berhubungan dengan pola yang
berhubungan dengan pola input
pembelajaran dengan menghitung
errornya :
δ k=(t k− yk ) f ' ( y¿ ink)
dimana :
δ merupakan nilai error dan t
adalah target.
Menghitung koreksi bobot yang
nantinya digunakan untuk
mengubah nilai wjk.
Δw jk=α δ k z j
dimana :
α merupakan learning rate
Kemudian nilai bias baru dapat
digunakan untuk memperbaiki nilai b2k :
Δb 2k=α δ k
Tiap unit hidden (Zj, j = 1, 2, 3, …,
p) menjumlahkan delta inputnya
dari unit yang berada pada lapisan
atasnya.
δ ¿ j=∑k=1
p
δ k w jk
Tiap unit output (Yk, k = 1, 2, 3,
…, m) memperbaiki bias dan
bobotnya (j = 1, 2, 3, …, p).
w jk ( baru )=w jk ( lama )+Δw jk
b 2k (baru )=b 2k ( lama )+ Δb2k
MSE (Mean Square Error)
MSE=∑k=1
m
(tk− yk)2
dimana MSE merupakan mean square
error (nilai rata-rata error).
Hasil Percobaan
Pada metoda prediksi ini, digunakan 2
buah input sebagai tolok ukur prediksi.
Input tersebut merupakan kondisi dari 3
posisi bermain (lihat pendahuluan) dan
pola dari hasil sebelumnya. Dari output
tersebut akan diprediksi sisi banker (1)
atau player(0) yang akan keluar.
Datasheet yang digunakan diperoleh dari
liver streaming M88 Baccarat
Kondisi Bobot
Banker Win 0.6
Player Win 0.7
Tie 0.1
Datasheet kondisi bermain
Pola Sebelumnya Bobot
Banker menang
sebelumnya0
Banker 2 kali 0.6
menang berturut-
turut
Banker 3 kali
menang berturut-
turut
1
Player menang
sebelumnya1
Player 2 kali
menang berturut-
turut
0.6
Player 3 kali
menang berturut-
turut
0
Datasheet pola kartu sebelumnya
Inisialisasi sistem dilakukan sebagai
berikut :
Jumlah hidden layer : 10
Learning rate (α) : 0.5
Jumlah maksimal epoch :
1000
Maksimum MSE : 10^-5
Berdasarkan hasil percobaan pada piranti
lunak MATLAB diperoleh grafik MSE
terhadap rentang pewaktu(epoch).
Perbandingan MSE terhadap epoch
Berdasarkan kurva error tersebut
diketahui bahwa algoritma yang dirancang
belum sepenuhnya mencapai akurasi 100%
(error sama dengan nol). Ada beberapa
faktor yang berpengaruh antara lain masih
banyak kemungkinan kombinasi pola yang
tidak dilibatkan.
Walaupun demikian secara umum
sistem memiliki tingkat akurasi 70,6 %
dengan jumlah data test yang benar adalah
12 dari 17 sampel.
Kesimpulan :Berdasarkan hasil pengujian di atas dapat
disimpulkan bahwa algortima yang
dirancang dapat memprediksi kartu
pemenang dari permainan baccarat.
Kombinasi input serta pengamatan pola
merupakan faktor penting dalam sistem
ini. Walaupun demikian sistem yang
dirancang mampu memberikan ketelitian
hingga 70,6%.
Source Code
%Nama : Erich Pratama Saputra%NIM : 13210140%file : sistem prediksi bakarat clcclearP= [0.7 0; 0.6 0; 0.6 0.6; 0.7 0; 0.6 0; 0.6 0.6; 0.7 1; 0.6 0; 0.6 0.6; 0.6 1; 0.6 1; 0.7 1; 0.7 0.6; 0.6 0; 0.6 0.6; 0.6 1; 0.6 1; 0.7 1; 0.7 0.6; 0.6 0; 0.7 1; 0.7 0.6; 0.6 0; 0.7 1; 0.7 0.6; 0.7 0; 0.7 0; 0.7 0; 0.6 0; 0.7 1; 0.7 0.6; 0.6 0; 0.1 0; 0.7 1; 0.7 0.6; 0.7 1; 0.6 0; 0.6 0.6; 0.7 1; 0.7 0.6; 0.7 0; 0.7 0; 0.7 0; 0.7 0; 0.7 0; 0.6 0; 0.7 1; 0.7 0.6; 0.6 0;];
T = [1;1;0;1;1;0;1;1;1;1;0;0;1;1;1;1;0;0;1;0;0;1;0;0;0;0;0;1;0;0;1;0;0;0;0;1;1;0;0;0;0;0;0;0;1;0;0;1;1]; Pola = length(P(:,1));DimPola = length(P(1,:));Oneuron = length(T(1,:)); Hneuron = 10;LR =0.5;Epoch = 1000;MaxMSE=10^-5; W1 = []; for ii=1:Hneuron, W1=[W1;(rand(1,DimPola)*2-1)];endW1=W1'; W2=[];for jj=1:Oneuron, W2=[W2;(rand(1,Hneuron)*2-1)];endW2=W2'; MSEepoch = MaxMSE+1MSE=[];ee=1; while (ee<=Epoch)&(MSEepoch > MaxMSE) MSEepoch =0; for pp = 1:Pola, CP=P(pp,:); CT=T(pp,:); %perhitungan maju untuk mendapatkan output, error dan MSE A1=[]; for ii=1:Hneuron, v=CP*W1(:,ii); A1=[A1 1/(1+exp(-v))]; end A2=[]; for jj=1:Oneuron, v=A1*W2(:,jj); A2=[A2 1/(1+exp(-v))]; end Error = CT-A2; for kk =1:length(Error), MSEepoch= MSEepoch+Error(kk)^2; end %perhitungan mundur untuk mengupdate W1 dan W2 for kk=1:Oneuron, D2(kk)=A1(kk)*(1-A2(kk))*Error(kk); end
dW2=[]; for jj=1:Hneuron, for kk=1:Oneuron, delta2(kk)=LR*D2(kk)*A1(jj); end dW2=[dW2;delta2]; end for jj=1:Hneuron, D1(jj)=A1*(1-A1)'*D2*W2(jj,:)'; end dW1=[]; for ii= 1:DimPola, for jj=1:Hneuron, delta1(jj)=LR*D1(jj)*CP(ii); end dW1=[dW1; delta1]; end W1 = W1+dW1; W2 = W2+dW2; end MSE=[MSE (MSEepoch/Pola)]; ee=ee+1;endplot(MSE);xlabel('Epoch')ylabel('MSE')save TResult.mat W1 W2 MSE Hneuron Oneuron LR
%Nama : Erich Pratama Saputra%NIM : 13210140%file : Test Bakarat clcclearload TResult.mat TestSet=[0.7 1; 0.6 0; 0.7 1; 0.7 0.6; 0.6 0; 0.7 1; 0.7 0.6; 0.7 0; 0.7 0; 0.7 0; 0.6 0; 0.7 1; 0.7 0.6; 0.6 0; 0.7 1; 0.7 0.6; 0.7 0; ];TestKelas = [1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1]; Pola =length(TestSet(:,1));JumBenar = 0;for pp =1:Pola, CP=TestSet(pp,:); A1=[]; for ii=1:Hneuron, v=CP*W1(:,ii); A1=[A1 1/(1+exp(-v))]; end A2=[]; for jj=1:Oneuron, v=A1*W2(:,jj); A2=[A2 1/(1+exp(-v))]; end %pemetaan A2 menjadi kelas keputusan for jj=1:Oneuron, if A2(jj)<0.5 Kelas = 0; else Kelas = 1; end end if Kelas==TestKelas(pp) JumBenar = JumBenar+1; endenddisplay('Akurasi JST = ', num2str(JumBenar/Pola));