BukuJSTMathlab PDF
BukuJSTMathlab PDF
DAN PEMROGRAMANNYA
DENGAN MATLAB
J.J. Siang
2 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Untuk Kevin,
Secara garis besar, buku ini terdiri dari 2 bagian yaitu teori JST (bab 1
9) dan pemrograman JST (bab 10 16)
Pada bab 1 dijelaskan tentang pengertian dasar JST sebagai tiruan dari
jaringan syaraf biologi, sejarah perkembangan serta aplikasinya.
Bab 3 berisi tentang konsep dasar JST, arsitektur, fungsi aktivasi , serta
cara kerja model JST
j_j_siang@yahoo.com
6 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Daftar Isi
BAGIAN I : JARINGAN SYARAF TIRUAN
Celah
Sinapsis
Celah
Sinapsis Dendrit
Axon dari neuron lain
neuron lain
Gambar 1.1
2 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
c. Fungsi aktivasi
x1
w1
x2 w2 Y
w3
x3
Gambar 1.2
4 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
b. Signal Processing
c. Peramalan
SOAL-SOAL LATIHAN
1. Apa kelebihan dan kekurangan penggunaan jaringan syaraf tiruan
dibandingkan dengan metode analitik ?
2.1 Vektor
Vektor adalah n tupel bilangan-bilangan riil. Notasinya adalah huruf
kecil seperti x, y, z ...
x1
x2
x= dengan x1, x2, ... , xn adalah bilangan-bilangan riil
...
xn
x1 y1
x2 y2
= apabila x1 = y1, x2 = y2, xn = yn
... ...
xn yn
Misalkan k adalah skalar dan xt = (x1, x2, ... , xn) adalah vektor.
Hasil kali k dengan x (ditulis kx) didefinisikan sebagai suatu n
tupel bilangan-bilangan riil yang elemennya adalah elemen-
elemen vektor x dikalikan dengan k
k x1
k x2
kx =
...
k xn
x1 y1 x1 y1 x1 y1 x1 y1
x2 y2 x2 y2 x2 y2 x2 y2
+ = ; - =
... ... ... ... ... ...
xn yn xn yn xn yn xn yn
x1 y1
x2 y2
Jika x = dan y = maka x.y = x1 y1 + x2 y2 +... + xn yn
... ...
xn yn
ii. Asosiatif : x + (y + z) = (x + y) + z
iii. Distributif : c1 (x + y) = c1 x + c1 y
(c1 + c2) x = c1 x + c2 x
i. Komutatif : x .y = y .x
iii. Distributif : x . (y + z) = x . y + x .z
iv. x. x = 0 jika x = 0
Contoh 2.1
Diketahui vektor xt = (1, 2, 3), yt = (2, -3, 1) dan zt = (3, 2, -1).
Hitunglah :
a. x z
b. 3 (x 7y)
c. 2 x .y
DASAR-DASAR MATEMATIKA 11
Penyelesaian
1 3 1 3 2
a. x z = 2 - 2 = 2 2 = 0
3 1 3 ( 1) 4
1 2 1 14 13
b. 3 (x 7y) = 3 ( 2 - 7 3 ) = 3( 2 - 21 ) = 3 23 =
3 1 3 7 4
39
69
12
Contoh 2.2
Diketahui vektor x, y dan z seperti contoh 2.1. Carilah vektor v
yang memenuhi 2x y + v = 7v + z
Penyelesaian
2x y + v = 7v + z
6 v = 2x y z
12 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
1 2 3 3
Maka x = 1
6 (2x y z) = 1
6 (2 2 - 3 - 2 ) = 1
6 ( 5 ) =
3 1 1 6
1
2
5
6
Contoh 2.3
Diketahui vektor xt = (1, 2) dan yt = (-3, 2). Carilah skalar c1 dan c2
sehingga c1 xt + c2 yt = (5, 2)
Penyelesaian
1 3 5
c1 + c2 =
2 2 2
c1 3c2 5
=
2c1 2c2 2
c1 - 3 c2 = 5
2 c1 + 2 c2 = 2
Contoh 2.4
Tentukan vektor-vektor yang tegak lurus dengan vektor xt = (1, -2)
DASAR-DASAR MATEMATIKA 13
Penyelesaian
Dua buah vektor saling tegak lurus (ortogonal) bila hasil kali titiknya =
0. Vektor yt = (y1, y2) yang tegak lurus dengan x akan memenuhi
persamaan : 1 y1 + (-2) y2 = 0 atau y1 = 2 y2.
2 y2 2s
Maka vektor yang tegak lurus dengan x berbentuk y = =
y2 s
dengan s = bilangan riil
Jadi ada tak berhingga vektor yang tegak lurus dengan vektor x.
Semua vektor-vektor tersebut memiliki arah yang sama
x
c. adalah vektor searah dengan x dengan panjang = 1.
x
2 2 2
d. Pertidaksamaan Cauchy-Schwartz : xy x y
Contoh 2.5
Misalkan xt = (1, -3, 2) dan yt = (2, 2, -4). Hitunglah :
14 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
a. 2x y
b. x y
1
c. y
y
1
d. y
y
Penyelesaian
1 2 4
a. 2x + y = 2 3 + 2 = 4
2 4 0
Maka 2x y = 42 ( 4)2 02 = 4 2
b. x y = 12 ( 3)2 22 + 22 22 ( 4) 2 = 14 24
c. y = 22 22 ( 4)2 = 24
2 1
2 24 6
1 1 2 1
Maka y = 2 = =
y 24 24 6
4
4 2
24 6
DASAR-DASAR MATEMATIKA 15
2 2 2
1 2 2 4
d. y = = 1
y 24 24 24
1
Perhatikan bahwa y = 1 untuk sembarang vektor y
y
Contoh 2.6
Jika x t = (1, 2, 4), carilah semua skalar c sehingga cx 3
Penyelesaian
cx c x c 12 22 42 c 21
Didapat c 21 = 3 atau c = 3
21
Contoh 2.7
Tentukan apakah vektor-vektor xt = (2, -1, 4), yt = (3, 6, 2) dan zt = (2,
10, -4) merupakan vektor-vektor yang bebas linier.
16 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Penyelesaian
Persamaan c1xt + c2yt + c3 zt = 0 berarti c1 (2, -1, 4) + c2 (3, 6, 2) + c3 (2,
10, -4) = 0 atau
2 c1 + 3 c2 + 2 c3 = 0
- c1 + 6 c2 + 10 c3 = 0
4 c1 + 2 c2 4 c3 = 0
2.2 Matriks
Matriks adalah kumpulan bilangan-bilangan yang disusun dalam larik
baris dan kolom. Umumnya matriks diberi notasi huruf kapital A, B,
...
Jika matriks A terdiri dari m baris dan n kolom (sering disebut ordo
mxn), maka A dapat ditulis sebagai :
a11 0 ... 0
0 a22 ... 0
D= dengan tidak semua a11, a22, ... , ann = 0
...
0 0 ... ann
1 0 ... 0
0 1 ... 0
I =
...
0 0 ... 1
b. Penjumlahan/pengurangan matriks
c. Perkalian matriks
d. Transpose matriks
Contoh 2.8
Diketahui matriks A, B, dan C sebagai berikut :
2 1 2 3 1
4 0 1
A= 0 1 1 ; B= 1 2 ; C =
2 2 1
4 1 4 1 0
a. 2 A
b. A + B
c. A B
d. B A
e. (C B)t
Penyelesaian
2 1 2 4 2 4
a. 2 A = 2 0 1 1 = 0 2 2
4 1 4 8 2 8
20 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
2 1 2 3 1 3 4
c. A B = 0 1 1 1 2 = 0 2
4 1 4 1 0 9 2
3 1
4 0 1 13 4
e. C B = 1 2 =
2 2 1 9 2
1 0
13 9
Maka (C B)t =
4 2
2 1 2 1 0 0 2 1 2
f. AI = 0 1 1 0 1 0 = 0 1 1
4 1 4 0 0 1 4 1 4
SOAL-SOAL LATIHAN
1
1. Tunjukkan bahwa untuk sembarang vektor x, maka x =1
x
DASAR-DASAR MATEMATIKA 21
a. x. (y.z) c. x. y
b. (x.y) + z d. c. (x + y)
x1
x2
6. Misalkan x = adalah suatu vektor dan A adalah sembarang
...
xn
matriks bujur sangkar berordo nxn
0
2 0
8. Diketahui A = 3 1 2 ; B= 4 ; C= ;
1 3
1
22 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
2 0 1
D= 2 3 1 . Hitunglah (jika dapat dilakukan)
1 4 1
a. ABC c. Bt D
b. BAC
Bab 3
MODEL NEURON
Neuron adalah unit pemroses informasi yang menjadi dasar dalam
pengoperasian jaringan syaraf tiruan. Neuron terdiri dari 3 elemen
pembentuk :
Misalkan x1, x2, ... , xm adalah unit-unit input dan wj1, wj2, ... , wjm
adalah bobot penghubung dari unit-unit tersebut ke unit keluaran
Yj, maka unit penjumlah akan memberikan keluaran sebesar uj =
x1 wj1 + x2 wj2 + ... + xm wjm
w11
x1 Y1
wj1
wm1
w1i
wji
xi Yj
wmi
w1n
wjn
xn wmn
Ym
Gambar 3.1
x1 v11
Y1
w11
vp1
...
...
z1 wj1
w1i wm1
...
xi w1p
Yj
wpi
...
...
zp wjp
v1n
wmp
xn vpn Ym
Gambar 3.2
Gambar 3.2 adalah jaringan dengan n buah unit input (x1, x2, ... ,
xn), sebuah layar tersembunyi yang terdiri dari p buah unit (z1, ... ,
zp) dan m buah unit output (Y1, Y2, ... , Ym)
c. Jaringan Reccurent
1 jika x a
f(x) =
0 jika x a
1 jika x a
f(x) =
1 jika x a
b. Fungsi sigmoid
1
f(x) = x
1 e
Fungsi sigmoid sering dipakai karena nilai fungsinya yang terletak
antara 0 dan 1 dan dapat diturunkan dengan mudah.
c. Fungsi identitas
f(x) = x
MODEL NEURON 27
net = b xi wi
i
1 jika net 0
f (net) =
1 jika net 0
x1
w1
x2 w2 Y
b
1
Gambar 3.3
Contoh 3.1
28 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Suatu jaringan layar tunggal seperti gambar 3.3 terdiri dari 2 input x1
= 0.7 dan x2 = 2.1 dan memiliki bias. Bobot garis w1 = 0.5 dan w2 =
-0.3 dan bobot bias = b = 1.2. Tentukan keluaran neuron Y jika fungsi
aktivasinya adalah fungsi threshold bipolar
Penyelesaian
net = b xi wi = 1.2 + (0.7 * 0.5) + (2.1 * -0.3) = 0.92
i
Contoh model yang masuk dalam kategori ini antara lain model
Hebbian, Perceptron, ADALINE, Boltzman, Hopfield,
Backpropagation, dll
Contoh model yang masuk dalam kategori ini antara lain model
Competitive, Hebbian, Kohonen, LVQ (Learning Vektor
Quantization), Neocognitron, dll
c. Reccurent
a. Klasifikasi
b. Pengenalan Pola
Model yang bisa digunakan untuk aplikasi ini antara lain : ART
(Adaptive Resonance Theory), LVQ, Backpropagation,
Neocognitron, dll
c. Peramalan
d. Optimisasi
x1
w
...
xn w Y
-p
xn+1
-p
...
xn+m
Gambar 3.4
1 jika net a
Fungsi aktivasi neuron Y adalah f (net) =
0 jika net a
MODEL NEURON 33
Contoh 3.2
Fungsi logika dan dengan 2 masukan x1 dan x2 akan memiliki
keluaran Y = 1 bila dan hanya bila kedua masukan bernilai 1.
Tabel 3.1
x1 x2 y
1 1 1
1 0 0
0 1 0
0 0 0
Penyelesaian
Model neuron fungsi dan tampak pada gambar 3.5. Bobot tiap garis
adalah = 1 dan fungsi aktivasi memiliki nilai threshold = 2.
x1
1
Y 2
1
x2
Gambar 3.5
34 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Tabel 3.2
x1 x2 2
y = f(net) = 1 jika net 2
net = xi w 0 jika net 2
i 1
1 1 1.1 + 1.1 = 2 1
1 0 1.1 + 0.1 = 1 0
0 1 0.1 + 1.1 = 1 0
0 0 0.1 + 0.1 = 0 0
f (0,1)=0 f (1,1)=1
f (0,0)=0 f (1,0)=0
Gambar 3.6
Besarnya nilai threshold dapat diganti menjadi suatu bias dengan nilai
yang sama. Dengan menggunakan nilai bias, batas garis pemisah
ditentukan dari persamaan
net = b xi wi = 0
i
w1 b
b x1w1 x2 w2 0 atau x2 x1
w2 w2
Contoh 3.3
Buatlah model neuron McCulloch-Pitts untuk menyatakan fungsi
logika atau
Penyelesaian
Fungsi logika atau dengan 2 masukan x1 dan x2 akan memiliki
keluaran Y = 1 bila dan hanya bila salah satu masukannya bernilai 1.
36 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Tabel 3.3
x1 x2 y
1 1 1
1 0 1
0 1 1
0 0 0
Model neuron fungsi atau tampak pada gambar 3.7. Bobot tiap garis
adalah = 1 dan fungsi aktivasi memiliki nilai threshold = 1.
x1
1
Y 1
1
x2
Gambar 3.7
Tabel 3.4
x1 x2 2
y = f(net) = 1 jika net 1
net = xi w 0 jika net 1
i 1
1 1 1.1 + 1.1 = 2 1
1 0 1.1 + 0.1 = 1 1
0 1 0.1 + 1.1 = 1 1
MODEL NEURON 37
0 0 0.1 + 0.1 = 0 0
Contoh 3.4
Buatlah model neuron McCulloch-Pitts dengan 2 masukan x1 dan x2
untuk menyatakan fungsi logika x1 x2
Penyelesaian
Tabel kebenaran fungsi x1 x2 tampak pada tabel 3.5
Tabel 3.5
x1 x2 y
1 1 0
1 0 1
0 1 0
0 0 0
x1
2
Y 2
-1
x2
38 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Gambar 3.8
Contoh 3.5
Buatlah model neuron McCulloch-Pitts dengan 2 masukan x1 dan x2
untuk menyatakan fungsi logika XOR
Penyelesaian
Tabel kebenaran fungsi XOR tampak pada tabel 3.6
Tabel 3.6
x1 x2 y
1 1 0
1 0 1
0 1 1
0 0 0
f (0,1)=1 f (1,1)=0
f (0,0)=0 f (1,0)=1
MODEL NEURON 39
Gambar 3.9
2
x1 2 z1
1
-1
Y 1
-1
1
x2 2 z2
2
Gambar 3.10
Tabel 3.4 a
Tabel 3.4 b
z1 z2 net Y = f(net)
0 0 0.1 + 0.1 = 0 0
1 0 1.1 + 0.1 = 1 1
0 1 0.1 + 1.1 = 1 1
0 0 0.1 + 0.1 = 0 0
SOAL-SOAL LATIHAN
1
1. Buktikan bahwa fungsi aktivasi sigmoid f(x) = x
memiliki
1 e
turunan f(x) = f(x) (1 f(x))
b. Sigmoid
N1 1 N3
2
1
N5
2
2
N2 -1 N4
Gambar 3.11
b
x1
w1
x2 w2 Y
...
wn
xn
Gambar 5.1
w1 x1 + w2 x2 + ... + wn xn + b = dan
w1 x1 + w2 x2 + ... + wn xn + b =
Contoh 5.1
Buatlah perceptron untuk mengenali fungsi logika dan dengan
masukan dan keluaran bipolar. Untuk inisialisasi, gunakan bobot dan
bias awal = 0, = 1 dan threshold = = 0
Penyelesaian
Tabel masukan dan target fungsi logika dan dengan masukan dan
keluaran bipolar tampak dalam tabel 5.1
Tabel 5.1
Masukan Target
x1 x2 1 t
1 1 1 1
PERCEPTRON 63
1 -1 1 -1
-1 1 1 -1
-1 -1 1 -1
Iterasi untuk seluruh pola yang ada disebut epoch Tabel 5.2
menunjukkan hasil pada epoch pertama.
Tabel 5.2
inisialisasi (0 0 0)
(1 1 1) 1 0 0 (1 1 1) (1 1 1)
(1 -1 1) -1 1 1 (-1 1 -1) (0 2 0)
(-1 -1 1) -1 -3 -1 (0 0 0) (1 1 -1)
Input pola kedua dan seterusnya dihitung secara analog. Pada pola
terakhir (x1, x2 1) = (-1 -1 1), harga f(net) = -1 yang sama dengan
targetnya. Maka bobot tidak diubah. Hal ini dinyatakan dengan
kondisi w = 0
x2 x2 x2
-1 1 -1 1 -1 1
1 1 1
x1 x1 x1
-1 1 -1 1 -1 1
-1 -1 -1
-1 -1 -1 -1 -1 -1
Tabel 5.3
(1 1 1) (1 1 1) x1 + x2 = -1
PERCEPTRON 65
(1 -1 1) (0 2 0) x2 = 0
(-1 1 1) (1 1 -1) x1 + x2 = 1
(-1 -1 1) (1 1 -1) x1 + x2 = 1
Mengingat tidak semua f(net) pada tabel 5.2 sama dengan target t,
maka iterasi dilanjutkan pada epoch kedua. Semua pola kembali
dimasukkan ke jaringan dengan menggunakan bobot terakhir yang
diperoleh sebagai bobot awalnya. Diperoleh hasil iterasi seperti yang
tampak pada tabel 5.4
Tabel 5.4
(1 1 1) 1 1 1 (0 0 0) (1 1 -1)
(1 -1 1) -1 -1 -1 (0 0 0) (1 1 -1)
66 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
(-1 1 1) -1 -1 -1 (0 0 0) (1 1 -1)
(-1 -1 1) -1 -3 -1 (0 0 0) (1 1 -1)
Contoh 5.2
Ulangi contoh 5.1, tapi menggunakan masukan biner dan keluaran
bipolar. Gunakan = 1 dan threshold = = 0.2
Penyelesaian
Dengan threshold = 0.2, maka fungsi aktivasi menjadi :
Tabel 5.5
inisialisasi (0 0 0)
(1 1 1) 1 0 0 (1 1 1) (1 1 1)
(1 0 1) -1 2 1 (-1 0 -1) (0 1 0)
(0 1 1) -1 1 1 (0 -1 -1) (0 0 -1)
(0 0 1) -1 -1 -1 (0 0 0) (0 0 -1)
Tampak hanya pola masukan terakhir saja yang benar (f(net) = target).
Maka iterasi harus dilanjutkan ke epoch berikutnya.
PERCEPTRON 67
x2
-1 1
1
x1
-1 1
-1 -1
-1
x1+x2 = -0.8
x1+x2 = -1.2
Gambar 5.3
Tabel 5.6 adalah hasil iterasi epoch kedua. Tampak bahwa belum
semua pola dikenali. Hanya pola terakhir saja yang memiliki f (net) = t
Tabel 5.6
(1 1 1) 1 -1 -1 (1 1 1) (1 1 0)
(0 1 1) -1 0 0 (0 -1 -1) (0 0 -2)
(0 0 1) -1 -2 -1 (0 0 0) (0 0 -2)
68 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Tabel 5.7
epoch 3 :
(1 1 1) 1 -2 -1 (1 1 1) (1 1 -1)
(0 1 1) -1 -1 -1 (0 0 0) (0 1 -2)
(0 0 1) -1 -2 -1 (0 0 0) (0 1 -2)
epoch 4 :
(1 1 1) 1 -1 -1 (1 1 1) (1 2 -1)
(0 1 1) -1 0 0 (0 -1 -1) (0 1 -3)
(0 0 1) -1 -3 -1 (0 0 0) (0 1 -3)
epoch 5 :
(1 1 1) 1 -2 -1 (1 1 1) (1 2 -2)
(1 0 1) -1 -1 -1 (0 0 0) (1 2 -2)
(0 1 1) -1 0 0 (0 -1 -1) (1 1 -3)
(0 0 1) -1 -3 -1 (0 0 0) (1 1 -3)
epoch 6 :
PERCEPTRON 69
(1 1 1) 1 -1 -1 (1 1 1) (2 2 -2)
(0 1 1) -1 -1 -1 (0 0 0) (1 2 -3)
(0 0 1) -1 -3 -1 (0 0 0) (1 2 -3)
epoch 7 :
(1 1 1) 1 0 0 (1 1 1) (2 3 -2)
(0 1 1) -1 0 0 (0 -1 -1) (1 2 -4)
(0 0 1) -1 -4 -1 (0 0 0) (1 2 -4)
epoch 8 :
(1 1 1) 1 -1 -1 (1 1 1) (2 3 -3)
(1 0 1) -1 -1 -1 (0 0 0) (2 3 -3)
(0 1 1) -1 0 0 (0 -1 -1) (2 2 -4)
(0 0 1) -1 -4 -1 (0 0 0) (2 2 -4)
epoch 9 :
(1 1 1) 1 0 0 (1 1 1) (3 3 -3)
(0 1 1) -1 -1 -1 (0 0 0) (2 3 -4)
(0 0 1) -1 -4 -1 (0 0 0) (2 3 -4)
epoch 10 :
(1 1 1) 1 1 1 (0 0 0) (2 3 -4)
70 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
(1 0 1) -1 -2 -1 (0 0 0) (2 3 -4)
(0 1 1) -1 -1 -1 (0 0 0) (2 3 -4)
(0 0 1) -1 -4 -1 (0 0 0) (2 3 -4)
x2
-1 1
1
2x1+3x2 = 4.2
-1 1 x1
2x1+3x2 = 3.8
-1 -1
-1
Gambar 5.4
Contoh 5.3
Diketahui perceptron dengan 3 masukan biner x1, x2, x3, sebuah bias
dan sebuah keluaran bipolar. Carilah bobot yang akan mengenali pola
sebagai berikut : target keluaran bernilai 1 apabila semua masukan
bernilai 1, dan target bernilai = -1 apabila tepat salah satu dari
masukan bernilai 0 (tidak diketahui bagaimana target apabila ada 2
atau lebih masukan yang bernilai 0). Gunakan bobot awal dan bias =
0 dengan laju pemahaman = =1 dan threshold = = 0.1
Penyelesaian
Bentuk pola masukan dan targetnya tampak pada tabel 5.8. Bentuk ini
sama dengan pola yang tidak dapat diselesaikan dengan model Hebb
pada contoh 4.2
PERCEPTRON 71
Tabel 5.8
Masukan Target
x1 x2 x3 t
1 1 1 1
1 1 0 -1
1 0 1 -1
0 1 1 -1
Iterasi yang dilakukan tampak pada tabel 5.9. Kolom perubahan bobot
yang kosong berarti ( w1 w2 w3 b ) = (0 0 0 0) . Ini terjadi jika
f (net) = t
Tabel 5.9
epoch 1 : inisialisasi (0 0 0)
(1 1 1 1) 1 0 0 (1 1 1 1) (1 1 1 1)
(1 1 0 1) -1 3 1 (-1 -1 0 -1) (0 0 1 0)
(0 1 1 1) -1 -1 -1 (-1 0 0 -1)
epoch 2 :
(1 1 1 1) 1 -2 -1 (1 1 1 1) (0 1 1 0)
72 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
(1 0 1 1) -1 -1 -1 (-1 0 1 -1)
epoch 3 :
(1 1 1 1) 1 -4 -1 (1 1 1 1) (0 0 1 -1)
(1 1 0 1) -1 -1 -1 (0 0 1 -1)
(0 1 1 1) -1 -2 -1 (-1 0 0 -2)
epoch 4 :
(1 1 1 1) 1 -3 -1 (1 1 1 1) (0 1 1 -1)
(1 0 1 1) -1 -2 -1 (-1 0 1 -2)
(0 1 1 1) -1 -1 -1 (-1 0 1 -2)
epoch 5 :
(1 1 1 1) 1 -2 -1 (1 1 1 1) (0 1 2 -1)
(1 0 1 1) -1 -1 -1 (-1 0 2 -2)
epoch 10 :
(1 1 1 1) 1 -3 -1 (1 1 1 1) (1 1 2 -3)
(1 1 0 1) -1 -1 -1 (1 1 2 -3)
(0 1 1 1) -1 -2 -1 (0 1 1 -4)
epoch 20 :
(1 1 1 1) 1 -2 -1 (1 1 1 1) (2 2 4 -6)
(1 1 0 1) -1 -2 -1 (2 2 4 -6)
(0 1 1 1) -1 -2 -1 (1 2 3 -7)
epoch 25 :
(1 1 1 1) 1 0 0 (1 1 1 1) (3 4 4 -7)
(1 0 1 1) -1 -2 -1 (2 3 4 -8)
(0 1 1 1) -1 -1 -1 (2 3 4 -8)
epoch 26 :
(1 1 1 1) 1 1 1 (2 3 4 -8)
(1 1 0 1) -1 -3 -1 (2 3 4 -8)
(1 0 1 1) -1 -2 -1 (2 3 4 -8)
(0 1 1 1) -1 -1 -1 (2 3 4 -8)
74 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Contoh 5.4
Diketahui 6 buah pola masukan seperti gambar 5.5 :
. . # # . . . # # # # # # . . . # # # # #
. . . # . . . . # . . . . # . # . . . . #
. . . # . . . . # . . . . # # . . . . . .
. . # . # . . . # . . . . # # . . . . . .
. . # . # . . . # # # # # . # . . . . . .
. # # # # # . . # . . . . # # . . . . . .
. # . . . # . . # . . . . # # . . . . . .
. # . . . # . . # . . . . # . # . . . . #
# # # . # # # # # # # # # . . . # # # # .
Pola 1 Pola 2 Pola 3
. . . # . . . # # # # # # . . . # # # . .
. . . # . . . # . . . . . # . # . . . # .
. . . # . . . # . . . . . # # . . . . . #
. . # . # . . # . . . . . # # . . . . . .
. . # . # . . # # # # # # . # . . . . . .
. # . . . # . # . . . . . # # . . . . . .
. # # # # # . # . . . . . # # . . . . . #
. # . . . # . # . . . . . # . # . . . # .
. # . . . # . # # # # # # . . . # # # . .
Pola 4 Pola 5 Pola 6
Gambar 5.5
Penyelesaian
Untuk menentukan vektor masukan, tiap titik dalam pola diambil
sebagai komponen vektor. Jadi tiap vektor masukan memiliki 9*7 = 63
komponen. Titik dalam pola yang bertanda # diberi nilai = +1 dan
titik bertanda . diberi nilai -1. Pembacaan pola dilakukan dari kiri
ke kanan, dimulai dari baris paling atas.
76 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
(-1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1
-1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1
-1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 )
(1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1
-1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1
-1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 )
(-1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1
1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1
1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 )
(-1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1
-1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1
-1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 )
(1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1
1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1
1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 )
(-1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1
1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1
1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1)
Tabel 5.10
Pola 1 1
Pola 2 -1
Pola 3 -1
Pola 4 1
Pola 5 -1
Pola 6 -1
b1
x1 w11
bm
y1
w12
x2 wm1 ...
w1n
... ym
wm2
wmn
xn
Gambar 5.6
bj (baru) = bj (lama) + tj
Contoh 5.5
Diketahui 6 buah pola masukan seperti gambar 5.5
Penyelesaian
Mula-mula dibuat 6 buah vektor masukan seperti conton 5.4. Ada 3
buah vektor keluaran yang masing-masing menyatakan bahwa pola
menyerupai huruf A, B atau C.Vektor target tampak pada tabel
5.11
Tabel 5.11
Pola Masukan t1 t2 t3
Pola 1 1 -1 -1
Pola 2 -1 1 -1
80 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Pola 3 -1 -1 1
Pola 4 1 -1 -1
Pola 5 -1 1 -1
Pola 6 -1 -1 1
Selanjutnya iterasi dapat dibuat seperti contoh 5.2 dan 5.3, dengan
beberapa perubahan sebagai berikut :
Vektor masukan terdiri dari 36 elemen x1, x2, , x36 dan
sebuah bias b
Ada 3 target t1, t2 dan t3
Ada 3 kolom net yaitu net1, net2 dan net3, masing-
masing merupakan hasil kali bobot dengan vektor
masukan
Ada 3 buah y yang merupakan fungsi aktivasi ketiga
kolom net. y1 = f(net1), y2 = f(net2), y3 = f(net3)
Ada 3*63 buah kolom perubahan bobot yaitu
w11 , w12 , ... , w1,63 , w21 , w22 , ... , w2,63 , ,
w31 , w32 , ... , w3,63
Ada 3*63 buah bobot, masing-masing :
w11 , w12 , ... , w1,63 , w21 , w22 , ... , w2,63 , , w31 , w32 , ... , w3,63
SOAL-SOAL LATIHAN
1. Selesaikan kembali contoh 5.3 tapi dengan menggunakan laju
pemahaman yang lebih kecil yaitu 0.5. Apa pengaruhnya
terhadap jumlah iterasi yang dibutuhkan ?
b. menggunakan bias
Masukan Target
x1 x2 x3 x4 t
1 1 1 1 1
-1 1 -1 -1 1
1 1 1 -1 -1
1 -1 -1 1 -1
net = xi wi b
i
y = f (net) = net = xi wi b
i
bobot adalah :
84 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
y = f (net) = net
wi (baru) = wi (lama) + (t y) xi
b (baru) = b (lama) + (t y)
1. Inisialisasi semua bobot dan bias dengan bobot dan bias hasil
pelatihan
net = xi wi + b
i
1 jika net 0
y=
1 jika net 0
Contoh 6.1
Gunakan model ADALINE untuk mengenali pola fungsi logika dan
dengan masukan dan target bipolar :
Tabel 6.1
Masukan Target
x1 x2 t
1 1 1
1 -1 -1
-1 1 -1
-1 -1 -1
Penyelesaian
Dengan = 0.1, maka perubahan bobotnya = wi = 0.1 (t f(net)) xi =
0.1 (t y) xi. Iterasi untuk epoch-1 tampak pada tabel 6.2. Dalam tabel
6.2, f(net) = net
Tabel 6.2
Inisialisasi (0 0 0)
(-1 1 1) -1 0.21 0.21 -1.21 (0.12 -0.12 -0.12) (0.11 0.09 -0.13)
(-1 -1 1) -1 -0.33 -0.33 -0.67 (0.07 0.07 -0.07) (0.18 0.16 -0.2)
Tabel 6.3
(-1 1 1) -1 -0.04 -0.04 -0.96 (0.1 -0.1 -0.1) (0.27 0.24 -0.3)
(-1 -1 1) -1 -0.8 -0.8 -0.2 (0.02 0.02 -0.02) (0.29 0.26 -0.32)
ADALINE 87
Tabel 6.4
Masukan net y
x1 x2
1 1 0.23 1
1 -1 -0.29 -1
-1 1 -0.35 -1
-1 -1 -0.87 -1
Contoh 6.2
Ulangi contoh 6.1, tapi menggunakan = 0.2
Penyelesaian
Tabel 6.5 merupakan hasil iterasi ADALINE dengan menggunakan
= 0.2
88 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Tabel 6.5
Inisialisasi (0 0 0)
(-1 1 1) -1 0.44 0.44 -1.44 (0.29 -0.29 -0.29) (0.25 0.15 -0.33)
(-1 -1 1) -1 -0.73 -0.73 -0.27 (0.05 0.05 -0.05) (0.3 0.21 -0.38)
Dari contoh 6.1 dan 6.2 tampak bahwa penggunaan yang lebih
besar akan menyebabkan iterasi menjadi lebih cepat. Akan tetapi
penggunaan yang terlalu besar akan menyebabkan iterasi
melompat terlalu jauh sehingga melewati bobot optimalnya.
6.2 MADALINE
Beberapa ADALINE dapat digabungkan untuk membentuk suatu
jaringan baru yang disebut MADALINE (many ADALINE). Dalam
MADALINE terdapat sebuah layar tersembunyi. Gambar 6.1
menunjukkan arsitektur MADALINE untuk 2 buah masukan x1 dan
x2, sebuah layar tersembunyi yang terdiri dari 2 unit neuron
tersembunyi z1 dan z2, dan sebuah keluaran Y. Arsitektur
ADALINE 89
MADALINE untuk lebih dari 2 unit masukan (atau lebih dari 2 unit
tersembunyi) dapat dibentuk secara analog.
1
1
b1
x1 w11 z1 b3
v1
w21 w12
Y
v2
x2 w22 z2
b2
Gambar 6.1
2.2. Hitung net input untuk setiap unit tersembunyi ADALINE (z1,
z2, ...)
zin_ j = bj + xi w ji
i
1 jika zin _ j 0
zj = f (zin_ j) =
1 jika zin _ j 0
y_in = bk + z jv j
j
1 jika yin 0
y = f (y_in) =
1 jika yin 0
ADALINE 91
Jika y target :
Untuk t = -1, ubah semua bobot ke unit zk yang zin nya positip
sebagai berikut :
Contoh 6.2
Gunakan MADALINE mula-mula untuk mengenali pola fungsi logika
XOR dengan 2 masukan x1 dan x2. Gunakan = 0.5 dan toleransi =
0.1
Penyelesaian
Fungsi logika XOR memiliki pasangan masukan-target seperti yang
tampak pada tabel 6.6
Tabel 6.6
Masukan Target
x1 x2 t
1 1 -1
1 -1 1
-1 1 1
-1 -1 -1
Tabel 6.7
Ke unit tersembunyi
Dari unit z1 z2
1
1
0.3
x1 0.05 z1 0.5
0.5
0.1 0.2
Y
0.5
x2 0.2 z2
0.15
Gambar 6.2
Disini hanya akan dilakukan iterasi untuk pola pertama saja. Pelatihan
pola-pola selanjutnya dilakukan secara analog dan diserahkan kepada
pembaca untuk latihan.
Pola 1 : Masukan : x1 = 1, x2 = 1, t = -1
Maka y = f (y_in) = 1
w11 baru = w11 lama + (-1 zin_1) x1 = 0.05 + 0.5 (-1 0.55) = -0.725
w12 baru = w12 lama + (-1 zin_1) x2 = 0.2 + 0.5 (-1 0.55) = -0.575
w21 baru = w21 lama + (-1 zin_2) x1 = 0.1 + 0.5 (-1 0.45) = -0.625
w22 baru = w22 lama + (-1 zin_2) x2 = 0.2 + 0.5 (-1 0.45) = -0.525
Tabel 6.8
Karena masih ada (bahkan semua) perubahan bobot > toleransi yang
ditetapkan, maka iterasi dilanjutkan untuk pola 2.
SOAL-SOAL LATIHAN
1. Apakah kelebihan ADALINE dibandingkan dengan Perceptron ?
Y1 Yk Ym
1 z1 zj zp
Gambar 7.1
BACK PROPAGATION 99
1
f ( x) = dengan turunan f ' ( x ) = f ( x ) (1 f ( x ) )
1 + e x
Grafik fungsinya tampak pada gambar 7.2
1
f(x)
0.5
x
0
Gambar 7.2
Fungsi lain yang sering dipakai adalah fungsi sigmoid bipolar yang
bentuk fungsinya mirip dengan fungsi sigmoid biner, tapi dengan
range (-1, 1).
f ( x) =
2
1 dengan turunan f ' ( x ) =
(1 + f ( x ) ) (1 f ( x ) )
x
1+ e 2
Grafik fungsinya tampak pada gambar 7.3.
1
f(x)
-1
Gambar 7.3
1
zj = f (z_net j ) = z _ net j
1+ e
Langkah 5 : Hitung semua keluaran jaringan di unit yk (k = 1,
2, ... , m)
p
y_net k = wko + zj =1
j wk j
1
yk = f (y_net k ) =
1 + e y _ netk
k = ( tk yk ) f ' ( y _ netk ) = ( tk yk ) yk (1 yk )
k merupakan unit kesalahan yang akan dipakai dalam
perubahan bobot layar di bawahnya (langkah 7)
Hitung suku perubahan bobot wkj (yang akan dipakai nanti
untuk merubah bobot wkj) dengan laju percepatan
wkj = k z j ; k = 1, 2, ... ,m ; j = 0, 1, ... , p
Contoh 7.1
Gunakan Backpropagation dengan sebuah layar tersembunyi (dengan
3 unit) untuk mengenali fungsi logika XOR dengan 2 masukan x1 dan
x2. Buatlah iterasi untuk menghitung bobot jaringan untuk pola
pertama (x1 = 1, x2 = 1 dan t = 0). Gunakan laju pemahaman = 0.2
Penyelesaian
Arsitektur Backpropagation dengan 1 layar tersembunyi yang terdiri
dari 3 unit untuk mengenali fungsi XOR tampak pada gambar 7.4
1 z1 z2 z3
v10
v20 v21 v22 v32
v11 v31 v12
v30
1 x1 x2
Gambar 7.4
BACK PROPAGATION 105
Mula-mula bobot diberi nilai acak yang kecil (range [-1, 1]). Misal
didapat bobot seperti tabel 7.1 (bobot dari layar masukan ke layar
tersembunyi = vji) dan 7.2 (bobot dari layar masukan ke layar
tersembunyi = wkj)
Tabel 7.1
z1 z2 z3
Tabel 7.2
z1 0.5
z2 -0.3
z3 -0.4
1 -0.1
1 1 1
z1 = 0.2
= 0.55 ; z2 = 0.7
= 0.67 ; z3 = =
1+ e 1+ e 1 + e 0.1
0.52
Tabel 7.3
z1 z2 z3
Tabel 7.4
z1 z2 z3
v ji (lama )
c. Bobot yang dipakai sebagai inisialisasi = vj i =
vj
Contoh 7.2
Buatlah bobot awal ke unit tersembunyi contoh 7.1 menggunakan
modifikasi bobot Nguyen Widrow
Penyelesaian
Dalam contoh 7.1, n = jumlah unit masukan = 2 dan p = jumlah unit
tersembunyi = 3. Bobot lama (vji lama) yang didapat secara acak
tampak dalam tabel 7.5
Tabel 7.5
z1 z2 z3
= 0.7 2 3 = 1.21
v2 = 2
v21 + v22
2
= 0.32 + 0.12 = 0.32
BACK PROPAGATION 111
v3 = v31
2
+ v32
2
= ( 0.1) 2 + ( 0.1) 2 = 0.14
Tabel 7.6
z1 z2 z3
Bias yang dipakai adalah bilangan acak antara -1.21 hingga 1.21
Untuk jaringan dengan 80 bobot dan tingkat akurasi 0.1, maka 800
pola masukan diharapkan akan mampu mengenali dengan benar 90 %
pola diantaranya.
Umumnya data dibagi menjadi 2 bagian saling asing, yaitu pola data
yang dipakai sebagai pelatihan dan data yang dipakai untuk
pengujian. Perubahan bobot dilakukan berdasarkan pola pelatihan.
Akan tetapi selama pelatihan (misal setiap 10 epoch), kesalahan yang
terjadi dihitung berdasarkan semua data (pelatihan dan pengujian).
Selama kesalahan ini menurun, pelatihan terus dijalankan. Akan tetapi
jika kesalahannya sudah meningkat, pelatihan tidak ada gunanya
untuk diteruskan lagi. Jaringan sudah mulai mengambil sifat yang
hanya dimiliki secara spesifik oleh data pelatihan (tapi tidak dimiliki
oleh data pengujian) dan sudah mulai kehilangan kemampuan
melakukan generalisasi.
BACK PROPAGATION 113
7.3.1 Momentum
Pada standar Backpropagation, perubahan bobot didasarkan atas
gradien yang terjadi untuk pola yang dimasukkan saat itu. Modifikasi
yang dapat dilakukan adalah melakukan perubahan bobot yang
didasarkan atas arah gradien pola terakhir dan pola sebelumnya
(disebut momentum) yang dimasukkan. Jadi tidak hanya pola
masukan terakhir saja yang diperhitungkan.
dan
114 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
v ji (t + 1) = v ji (t ) + j xi + ( v ji (t ) v ji (t 1) )
Contoh 7.2
Perhatikan kembali iterasi pola pertama fungsi logika XOR dengan
Backpropagation pada contoh 7.1. Lakukan iterasi untuk pola kedua
(x1 = 1, x2 = 0, dan t = 1) dengan menggunakan suku momentum ( =
0.5)
Penyelesaian
Iterasi untuk pola kedua sebenarnya sama dengan iterasi contoh 7.1.
Hanya saja perhitungan bobot baru pada langkah 8 dilakukan dengan
menambahkan momentum (bobot pada waktu (t-1) = bobot awal)
Hasil iterasi yang diperoleh dari pola pertama tampak pada tabel 7.7
dan 7.8
Tabel 7.7
z1 z2 z3
Tabel 7.8
z1 0.49
z2 -0.31
BACK PROPAGATION 115
z3 -0.41
1 -0.12
Tabel 7.9
z1 z2 z3
(k = 1 ; j = 0, 1, ... , 3)
Suku k z j adalah hasil yang didapat dari langkah 6.
v ji (t + 1) = v ji (t ) + j xi + ( v ji (t ) v ji (t 1) )
(j = 1, 2, 3 ; i = 0, 1, 2)
v ji (t ) adalah bobot awal yang dipakai dalam contoh 7.2 (hasil
iterasi vji pada contoh 7.1), sedangkan v ji (t 1) adalah bobot
awal yang dipakai dalam contoh 7.1. Keduanya bernilai sama
sehingga suku momentum (v ji (t ) v ji (t 1) ) = 0.
wkj (t + 1) = wkj (t ) + kj (t + 1) k z j
Jumlah data dalam satu periode ini dipakai sebagai jumlah masukan
dalam backpropagation. Sebagai targetnya diambil data bulan
pertama setelah periode berakhir. Pada data bulanan dengan periode
satu tahun, maka masukan backpropagation yang dipakai terdiri dari
12 masukan. Keluaran adalah 1 unit.
Contoh 7.3
Diketahui data bulanan penjualan suatu produk makanan kaleng
selama 2 tahun terakhir seperti tampak pada tabel 7.10. Buatlah model
backpropagation untuk memperkirakan jumlah produk yang terjual
bulan depan
BACK PROPAGATION 121
Tabel 7.10
Penyelesaian
Gambar 7.5 adalah grafik penjualan contoh 7.3. Tampak bahwa pola
datanya periodik dalam jangka waktu 12 bulan. Maka model
Backpropagation yang dipakai memiliki 12 unit masukan dan sebuah
keluaran.
16000
14000
12000
10000
Penjualan
8000
6000
4000
2000
0
Apr 03
Apr 04
Okt 03
Okt 04
Jan 03
Jan 04
Jul 03
Jul 04
Bulan
Gambar 7.5
122 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
0.8 ( x a )
x' = + 0.1
ba
Dalam tabel 7.10, a = 1070 dan b = 13780. Dengan transformasi ini
maka data terkecil akan menjadi 0.1 dan data terbesar akan menjadi
0.9. Tabel 7.11 adalah hasil transformasi data tabel 7.10 yang nantinya
dipakai sebagai data pelatihan Backpropagation.
Tabel 7.11
Pola yang dipakai merupakan data selama 12 bulan dan target adalah
data penjualan pada bulan ke-13. Jadi ada 12 pola data dalam sebuah
epochnya seperti yang tampak dalam tabel 7.12. Jumlah layar
tersembunyi bisa dicoba-coba mulai dengan sebuah layar tersembunyi
dengan 3 unit.
BACK PROPAGATION 123
Tabel 7.12
Apabila data yang tersedia cukup banyak, data bisa dibagi menjadi 2
bagian yaitu data yang dipakai untuk pelatihan dan data yang dipakai
124 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
SOAL-SOAL LATIHAN
1. Buktikan bahwa turunan fungsi aktivasi sigmoid bipolar
f ( x) =
2
1 adalah f '( x ) =
(1 + f ( x ) ) (1 f ( x ) )
x
1+ e 2
2. Mengapa fungsi aktivasi yang dipakai dalam backpropagation
harus merupakan fungsi yang turunannya mudah dihitung ?
z1 z2
x1 -0.4 0.3
x2 0.1 -0.2
1 -0.1 0.3
z1 0.7
z2 -0.2
1 0.4
Salah satu model jaringan tanpa supervisi yang sering dipakai adalah
jaringan kompetisi. Dalam model ini, neuron dipaksa untuk
berkompetisi sehingga hanya satu diantaranya yang menjadi aktif
(signal keluaran > 0). Prinsip seperti ini sering disebut winner takes
all.
8.2 MaxNet
MaxNet merupakan model yang menggunakan dasar kompetisi.
Selama proses, bobot dalam Maxnet dibuat tetap. Tidak ada proses
pelatihan. MaxNet dapat dipakai sebagai bagian dari model jaringan
lain untuk memperoleh neuron dengan masukan terbesar.
1 1
A1 Am
Ai Aj
1 1
Gambar 8.1
JARINGAN KOMPETISI DENGAN BOBOT TETAP 129
x jika x 0
f ( x)
0 jika x 0
1 jika i j
Inisialisasi bobot wi j w ji
jika i j
a j (baru ) = f a j (lama) ak ( lama)
k j
Perhatikan bahwa dalam langkah (2), masukan fungsi aktivasi adalah
jumlah semua masukan ke titik aj).
Contoh 8.1
Misalkan jaringan MaxNet seperti pada gambar 8.1 memiliki bobot
= 0.2 dengan nilai masukan mula-mula :
a1 = 0.2 ; a2 = 0.4 ; a3 = 0.6 ; a4 = 0.8
Penyelesaian
130 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
a j (baru ) = f a j (lama) ak ( lama)
k j
Maka iterasi 1 menghasilkan :
Tabel 8.1
Iterasi a1 a2 a3 a4
2 0 0 0.192 0.48
3 0 0 0.096 0.442
4 0 0 0.008 0.442
5 0 0 0 0.421
Pada iterasi ke-5, hanya a4 saja yang bernilai positip. Maka iterasi
dihentikan dengan masukan terbesar = a4
JARINGAN KOMPETISI DENGAN BOBOT TETAP 131
w1
w1 w1
w2 w2
Gambar 8.2
c1 0 untuk k 0, ... R1
Inisialisasi bobot wk
c2 0 untuk k R1 1, ... R2
Inisialisasi xi = 0 (i = 1, 2, ... , n)
t=0
3. x_max = max xi
i
5. t = t + 1
Contoh 8.2
Gunakan algoritma topi meksiko pada vektor masukan x dengan 7
unit : (0.0 0.5 0.8 1.0 0.8 0.5 0.0). Gunakan parameter R1 = 1, R2
= 2, c1 = 0.6 dan c2 = -0.4
Penyelesaian
Modifikasi nilai x1 dalam iterasi pertama dapat dijelaskan dalam
gambar 8.3. Perhatikan bahwa titik sekitar x1 hanyalah titik yang
berada di kanannya karena x1 terletak pada posisi paling kiri.
x1 x2 x3 x4 x5 x6 x7
0.6
0.0 0.5 0.8 1.0 0.8 0.5 0.0
-0.4
0.6
Gambar 8.3
Iterasi 1 (t = 1)
x3 = - 0.4 (0.0) + 0.6 (0.5) + 0.6 (0.8) + 0.6 (1.0) 0.4 (0.8) = 1.06
x4 = - 0.4 (0.5) + 0.6 (0.8) + 0.6 (1.0) + 0.6 (0.8) 0.4 (0.5) = 1.16
x5 = - 0.4 (0.8) + 0.6 (1.0) + 0.6 (0.8) + 0.6 (0.5) 0.4 (0.0) = 1.06
Iterasi 2 (t = 2)
x3 = -0.4 (0.0) + 0.6 (0.38) + 0.6 (1.06) + 0.6 (1.16) 0.4 (1.06) = 1.14
x4 = -0.4 (0.38) + 0.6 (1.06) + 0.6 (1.16) + 0.6 (1.06) 0.4 (0.38) = 1.66
x5 = -0.4 (1.06) + 0.6 (1.16) + 0.6 (1.06) + 0.6 (0.38) 0.4 (0) = 1.14
1.6 t=0
t=1
1.4
t=2
1.2
Nilai xi
0.8
0.6
0.4
0.2
0
x1 x2 x3 x4 x5 x6 x7
Gambar 8.4
136 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
y1 y2
b1 w24
w11 w13
b2 w12 w23 w14
w21 w22
1 x1 x2 x3 x4
Gambar 8.5
Misalkan :
e(1), e(2), ... , e(m) adalah m buah vektor contoh, dengan masing-
masing e(j) terdiri dari n komponen. e(j) = (e1(j), e2(j), ... , en(j))
JARINGAN KOMPETISI DENGAN BOBOT TETAP 137
ei ( j )
w ji ; i = 1, 2, ... , n ; j = 1, 2, ... , m
2
n
Inisialisasi bias b j ; (j = 1, 2, ... , m)
2
1. Untuk setiap vektor masukan x, lakukan langkah 2 4
2. Hitung y_netj = b j x w
i
i ji (j = 1, ... , m)
Contoh 8.3
Diketahui 2 buah vektor contoh e(1) = (1, -1, -1, -1) dan e(2) = (-1, -1, -1,
1). Gunakan jaringan Hamming untuk menentukan vektor contoh
yang paling mirip dengan masing-masing dari 4 buah vektor berikut
ini : (1, 1, -1, -1), (1, -1, -1, -1), (-1, -1, -1, 1) dan (-1, -1, 1, 1)
Penyelesaian
Langkah pertama adalah menghitung bobot berdasarkan vektor
contoh e(1) dan e(2).
138 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
a1(1) = f(3 0.2 (1)) = f(2.8) = 2.8 ; a2(1) = f(1 0.2 (3)) = f(0.4) = 0.4
a1(2) = f(2.8 0.2 (0.4))) = f(2.72) = 2.72 ; a2(2) = f(0.4 0.2 (2.8)) = f(-
0.16) = 0
y_net terbesar adalah y_net1, maka vektor x = (1, -1, -1, -1) paling
cocok dengan vektor contoh e(1) = (1, -1, -1, -1)
y_net terbesar adalah y_net2, maka vektor x = (-1, -1, -1, 1) paling
cocok dengan vektor contoh e(2) = (-1, -1, -1, 1)
SOAL-SOAL LATIHAN
1. Ulangi contoh 8.2 dengan parameter R1 = 1 dan R2 = 3.
Gambarkan grafiknya untuk t = 0, t = 1, dan t = 2. Bagaimana
pengaruh penambahan selisih R2 - R1 terhadap grafik yang
terbentuk
. # . # # # . # . # . #
. # . . # . # # # . # .
. # . # # # . # . # . #
a. # # #
# . #
# # #
b. # # .
. # .
. # #
Bab 9
JARINGAN KOHONEN
Jaringan yang ditemukan oleh Kohonen merupakan salah satu
jaringan yang banyak dipakai. Jaringan Kohonen dipakai untuk
membagi pola masukan kedalam beberapa kelompok (cluster)
y1 ... yj ... ym
w1 n
w1i wj1 wj n wm1
wj i wm n
w11 wmi
x1 ... xi ... xn
heksagonal, hanya ada 6 vektor di sekitar vektor w (gambar 9.3 (b)).
Gambar 9.1
Gambar 9.2
(a) (b)
Gambar 9.3
vektor sekitar w
berjarak 2
* * * * * * * * * * * * * *
R=2
R =2 * * * * * * * * * * * * * *
* * * * * * * * * * * * * *
R=1
R =1 w * * * w * * *
* * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * *
JARINGAN KOHONEN 143
berikut :
0. Inisialisasi
wbaru
ji
wlama
ji
xi wlama
ji
Kondisi penghentian iterasi adalah selisih antara wji saat itu dengan
wji pada iterasi sebelumnya. Apabila semua wji hanya berubah sedikit
saja, berarti iterasi sudah mencapai konvergensi sehingga dapat
dihentikan.
Contoh 9.1
Diketahui 4 buah vektor x(1) = (1, 1, 0, 0), x(2) = (0, 0, 0, 1), x(3) = (1, 0,
0, 0) dan x(4) = (0, 0, 1, 1).
144 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Penyelesaian
Inisialisasi bobot : Kolom matriks bobot menyatakan jumlah
komponen dalam sebuah vektor (dalam kasus ini = 4) dan baris
menyatakan jumlah maksimum kelompok yang akan dibentuk (dalam
kasus ini = 2). Misalkan secara acak didapat bobot awal :
D(1) = (0.2 1)2 + (0.6 1)2 + (0.5 0)2 + (0.9 0)2 = 1.86
D(2) = (0.8 1)2 + (0.4 1)2 + (0.7 0)2 + (0.3 0)2 = 0.98
w21 = 0.8 + 0.6 (1 0.8) = 0.92 ; w22 = 0.4 + 0.6 (1 0.4) = 0.76
w23 = 0.7 + 0.6 (0 0.7) = 0.28 ; w24 = 0.3 + 0.6 (0 0.3) = 0.12
D(1) = (0.2 0)2 + (0.6 0)2 + (0.5 0)2 + (0.9 1)2 = 0.66
D(2) = (0.92 0)2 + (0.76 0)2 + (0.28 0)2 + (0.12 1)2 = 2.28
w11 = 0.2 + 0.6 (0 0.2) = 0.08 ; w12 = 0.6 + 0.6 (0 0.6) = 0.24
w13 = 0.5 + 0.6 (0 0.5) = 0.2 ; w14 = 0.9 + 0.6 (1 0.9) = 0.96
D(1) = (0.08 1)2 + (0.24 0)2 + (0.2 0)2 + (0.96 0)2 = 1.87
D(2) = (0.92 1)2 + (0.76 0)2 + (0.28 0)2 + (0.12 0)2 = 0.68
w21 = 0.92 + 0.6 (1 0.92) = 0.968 ; w22 = 0.76 + 0.6 (0 0.76) = 0.304
w23 = 0.28 + 0.6 (0 0.28) = 0.112 ; w24 = 0.12 + 0.6 (0 0.12) = 0.048
D(1) = (0.08 0)2 + (0.24 0)2 + (0.2 1)2 + (0.96 1)2 = 0.7056
D(2) = (0.968 0)2 + (0.304 0)2 + (0.112 1)2 + (0.048 1)2 = 2.724
w11 = 0.08 + 0.6 (0 0.08) = 0.032 ; w12 = 0.24 + 0.6 (0 0.24) = 0.096
w13 = 0.2 + 0.6 (1 0.2) = 0.68 ; w14 = 0.96 + 0.6 (1 0.96) = 0.984
0 0 0.5 1
w
1 0.5 0 0
JARINGAN KOHONEN 147
Secara analog, untuk x(2) = (0, 0, 0, 1), D(1) = 0.25 dan D(2) = 2.25
sehingga x(2) masuk dalam kelompok ke-1
Untuk x(3) = (1, 0, 0, 0), D(1) = 2.25 dan D(2) = 0.25 sehingga x(2)
masuk dalam kelompok ke-2
Untuk x(4) = (0, 0, 1, 1), D(1) = 0.25 dan D(2) = 3.25 sehingga x(2)
masuk dalam kelompok ke-1
Contoh 9.2
Diketahui pola huruf A, B, C, D, E, J dak K dalam 3 font berbeda
seperti yang tampak pada gambar 9.4. Buatlah rancangan jaringan
148 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
A1 B1 C1 D1 E1 J1 K1
. . . # . . . # # # # # # . . . # # # . . # # # # # . . # # # # # # # . . . . . # . # . . . . # .
. . . # . . . # . . . . . # . # . . . # . # . . . . # . # . . . . . . . . . . . # . # . . . # . .
. . . # . . . # . . . . . # # . . . . . # # . . . . . # # . . . . . . . . . . . # . # . . # . . .
. . # . # . . # . . . . . # # . . . . . . # . . . . . # # . . . . . . . . . . . # . # . # . . . .
. . # . # . . # # # # # # . # . . . . . . # . . . . . # # # # # # . . . . . . . # . # # . . . . .
. # . . . # . # . . . . . # # . . . . . . # . . . . . # # . . . . . . . . . . . # . # . # . . . .
. # # # # # . # . . . . . # # . . . . . # # . . . . . # # . . . . . . . # . . . # . # . . # . . .
. # . . . # . # . . . . . # . # . . . # . # . . . . # . # . . . . . . . # . . . # . # . . . # . .
. # . . . # . # # # # # # . . . # # # . . # # # # # . . # # # # # # # . . # # # . . # . . . . # .
A2 B2 C2 D2 E2 J2 K2
. . . # . . . # # # # # # . . . # # # . # # # # # # . . # # # # # # # . . . . # # # # # # . . # #
. . . # . . . . # . . . . # . # . . . # # . # . . . # . . # . . . . # . . . . . # . . # . . . # .
. . # . # . . . # . . . . # # . . . . . # . # . . . . # . # . . # . . . . . . . # . . # . . # . .
. . # . # . . . # # # # # . # . . . . . . . # . . . . # . # # # # . . . . . . . # . . # . # . . .
. # . . . # . . # . . . . # # . . . . . . . # . . . . # . # . . # . . . . . . . # . . # # . . . .
. # # # # # . . # . . . . # # . . . . . . . # . . . . # . # . . . . . . . . . . # . . # . # . . .
# . . . . . # . # . . . . # # . . . . . # . # . . . . # . # . . . . . . . . . . # . . # . . # . .
# . . . . . # . # . . . . # . # . . . # . . # . . . # . . # . . . . # . # . . . # . . # . . . # .
# # . . . # # # # # # # # . . . # # # . . # # # # # . . # # # # # # # . . # # # . . # # # . . # #
A3 B3 C3 D3 E3 J3 K3
Gambar 9.4
Penyelesaian
Pola yang akan dikelompokkan dijadikan bentuk vektor biner, yang
setiap vektornya terdiri dari 9*7 = 63 komponen (x1, ... x63). xi = 0 jika
elemen yang direpresentasikan berupa suatu titik (.) dan xi = 1 jika
elemen yang direpresentasikan berupa #.
Iterasi yang dilakukan tidak jauh berbeda dengan contoh 9.1. Langkah
2 algoritma Kohonen dilakukan untuk setiap pola (jadi dilakukan
sebanyak 21 kali). Untuk suatu pola, dihitung jarak vektor pola
tersebut dengan bobot tiap kelompok. Bobot kelompok yang
JARINGAN KOHONEN 149
SOAL-SOAL LATIHAN
1. Ulangi iterasi contoh 9.1, tetapi pada tiap iterasi, bobot yang
dimodifikasi juga neuron di sekitar neuron pemenang (selain
neuron pemenang seperti contoh 9.1) dengan laju pemahaman
awal (0) = 0.4 dan (t+1) = 0.5 (t)
Dalam buku ini dibahas mengenai pemakaian Matlab versi 6.1 (atau
6.5) untuk membantu menyelesaikan model jaringan syaraf tiruan. Bab
10-12 membahas tentang dasar-dasar penggunaan Matlab. Dalam bab
tersebut diperkenalkan dasar-dasar manipulasi matriks dan vektor.
Gambar 10.1
c. Jendela launch pad seperti yang tampak di bagian kiri atas gambar
10.1. Jendela ini berisi fasilitas yang disediakan Matlab untuk
menjalankan paket perangkat lunak (toolbox) untuk
menyelesaikan masalah tertentu. Sebagai contoh, untuk melihat
demo program jaringan syaraf tiruan, anda bisa memilih folder
Neural Network Toolbox, dan memilih subfolder demo.
e. Jendela direktori
f. Jendela workspace
array of ones.
Gambar 10.2
11.1 Matriks
Matriks adalah elemen dasar dalam Matlab. Ada 2 macam matriks
yang dapat dipakai yaitu matriks yang dimasukkan oleh pemakai dan
matriks khusus yang disediakan oleh Matlab
1 3 2 4
Matriks A = 4 2 1 2 dituliskan dalam jendela perintah
3 2 1 4
sebagai :
>> A = [1 -3 2 4 ; 4 2 -1 2 ; -3 -2 1 -4 ]
atau
>> A = [1 -3 2 4 ;
4 2 -1 2 ;
-3 -2 1 -4 ]
156 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
>> A = [2 3 1 ; 3 2 a]
??? Undefined function or variable 'a'.
MATRIKS DAN MANIPULASINYA 157
a. Matriks Diagonal.
b. Matriks Identitas
c. Matriks random
d. Matriks Nol
e. Matriks satuan
f. Matriks pascal
Tabel 11.1
11.2 Vektor
Vektor merupakan kasus khusus matriks yaitu hanya terdiri dari
sebuah baris (disebut vektor baris) atau sebuah kolom (disebut vektor
kolom).
>> x = [2 3 -1]
x =
2 3 -1
>> y = [2 ; 3 ; -1]
y =
2
3
162 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
-1
Tabel 11.2
Operator Keterangan
+ Penjumlahan 2 skalar
- Pengurangan 2 kalar
* Perkalian 2 skalar
/ Pembagian 2 skalar
^ Perpangkatan
mod (m,n) Sisa hasil bagi m dengan n
mod (a, b) = 1
3 1 4 2 1 3
Misalkan A = dan B = . Hasil operasi
2 1 5 1 1 3
kedua matriks adalah sebagai berikut :
>> A = [3 1 -4 ; 2 1 5]
A =
3 1 -4
2 1 5
>> B = [2 -1 3 ; 1 1 -3]
B =
2 -1 3
1 1 -3
>> A+B
ans =
5 0 -1
3 2 2
164 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
>> A-B
ans =
1 2 -7
1 0 8
>> A*B
??? Error using ==> *
Inner matrix dimensions must agree.
-1 2
6 2
-8 -3
>> floor (X)
ans =
-2 2
6 2
-9 -4
x.y = xi y i
i
166 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
4
Misalkan u = 1 3 4 dan v = 2 . Hasil perkalian kedua
3
vektor adalah sebagai berikut :
>> u = [-1 3 4]
u =
-1 3 4
>> v = [4 ; -2 ; 3]
v =
4
-2
3
>> u*v
ans =
2
>> v*u
MATRIKS DAN MANIPULASINYA 167
ans =
-4 12 16
2 -6 -8
-3 9 12
a. Transpose matriks
3 1 4
Jika A = , maka keluaran Matlab terhadap perintah
2 1 5
A adalah sebagai berikut :
>> A'
ans =
3 2
1 1
-4 5
b. Ordo matriks
168 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
3 1 4
Misalkan sudah dimasukkan matriks A = .
2 1 5
>> A = [3 1 -4 ; 2 1 5]
A =
3 1 -4
2 1 5
c. Invers matriks
>> A = [2 -1 -1 ; -3 2 1 ; 2 5 1]
A =
MATRIKS DAN MANIPULASINYA 169
2 -1 -1
-3 2 1
2 5 1
>> A*B
ans =
1.0000 0 -0.0000
0 1.0000 0.0000
0 0 1.0000
4 2 1
Sebagai contoh, jika B = 3 1 8 , maka trace (B) = 4+1+2 = 7
9 3 2
>> B = [4 2 -1 ; 3 1 8 ; 9 3 2]
B =
170 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
4 2 -1
3 1 8
9 3 2
0
0
8
>> v = [4 ; -2 ; 3]
>> sum (v)
ans =
5
>> u = [-1 3 4]
>> sum (u)
ans =
6
ans =
-3 -5 1
1 2 2
2 3 4
>> sort (A,2)
ans =
1 1 3
-3 2 4
-5 2 2
>> B = [2 3 1 ; -3 2 4 ; 2 -5 2]
B =
2 3 1
-3 2 4
2 -5 2
MATRIKS DAN MANIPULASINYA 173
h. Norma Vektor
5 11 10 8
9 7 6 12
4 14 15 1
>> A(4,2)
ans =
14
4 14 15 1
>> A(4,:)
ans =
4 14 15 1
>> A(:,4)
ans =
13
8
12
1
>> A(2:3,4)
ans =
8
12
>> A(4,5) = 7
A =
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 7
1 1 1 1
1 1 1 1
A =
1 1 1 1 0 0
1 1 1 1 12 12
1 1 1 1 12 12
1 1 1 1 12 12
Apabila indeks matriks berada dalam range matriks mula-mula,
maka efeknya adalah mengganti (bukan menambah) elemen
semula.
>> A = ones (4)
A =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
>> A(:,3) = []
A =
16 2 13
5 11 8
9 7 12
4 14 1
>> A(2,:)=[]
A =
16 2 13
180 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
9 7 12
4 14 1
>> [A magic(4)]
ans =
1 1 1 1 16 2 3 13
1 1 1 1 5 11 10 8
1 1 1 1 9 7 6 12
1 1 1 1 4 14 15 1
MATRIKS DAN MANIPULASINYA 181
>> [A ; magic(4)]
ans =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
SOAL-SOAL LATIHAN
1. Diketahui matriks A, B, dan C sebagai berikut :
2 1 2 3 1
4 0 1
A= 0 1 1 ; B= 1 2 ; C =
2 2 1
4 1 4 1 0
a. AC
b. Apakah AB = BA ?
d. A-1 A
x
9. Diketahui x = [ 5 4 2 -3 ]. Hitunglah . Cobalah beberapa
x
kali untuk vektor baris maupun kolom x dengan ordo berbeda-
beda ? Apakah hasilnya selalu sama ?
2 0 4
A= 0 1 2
4 2 1
Bab 12
PEMROGRAMAN MATLAB
Jendela M-file dapat dibuka melalui menu File New M file atau
dengan menekan Ctrl-N. Jendela M-file tampak pada gambar 12.1.
Bagian-bagiannya mirip dengan editor teks biasa. Bagian tengah
dipakai untuk mengetikkan program. Di bagian atas adalah menu
yang dapat dipakai untuk mengedit dan menjalankan (running)
program.
186 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Gambar 12.1
Fungsi dalam Matlab terdiri dari 2 bagian yaitu definisi fungsi dan
tubuh fungsi
a. Definisi fungsi
argumen masukan
nama fungsi
argumen keluaran
kata kunci
PEMROGRAMAN MATLAB 187
Sintaksnya adalah :
nama_variabel = input('teks')
Sebagai contoh, untuk memasukkan data vektor dari keyboard ke
dalam variabel x, digunakan perintah :
x = input ('data = ')
Apabila di-run, maka di monitor akan tampak teks data = , dan
menunggu input data dari user yang diakhiri dengan penekanan
enter. Apabila langsung ditekan enter, maka x akan berisi matriks
kosong.
% -12.5 e
konversi karakter (harus ada)
Tabel 12.1
Konversi Keterangan
%c Karakter tunggal
%e Notasi eksponensial
Tabel 12.2
Karakter Keterangan
\b backspace
Tabel 12.3
Permission Keterangan
r Buka file hanya untuk dibaca (default)
Agar berkas yang dibuka dapat ditulisi dengan baik, maka berkas
harus ditutup kembali dengan perintah fclose (fid). fid adalah
variabel nama berkas yang digunakan dalam perintah fopen.
Contoh 12.1
Buatlah program untuk menghitung rata-rata dan standar deviasi
sejumlah data yang dimasukkan dalam sebuah vektor.
192 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Penyelesaian
Misalkan x = ( x1 x2 ... xn )
x i
Maka rata-rata x = x = i =1
n
n
x 2
i
Standar deviasi = = (x)
i =1 2
n
Untuk membuat program dibutuhkan fungsi untuk menghitung n
(banyaknya data), jumlah data ( x ) dan jumlah kuadrat data
( x 2
).
expression
ya Statements
benar ?
tidak
Perintah setelah
end
Gambar 12.1
expression
Statements 2 tidak ya Statements 1
benar ?
Perintah setelah
end
Gambar 12.2
Tabel 12.4
Operator Arti
< Lebih kecil dari
== Sama dengan
Contoh 12.2
Buatlah program untuk menentukan apakah 2 buah matriks A dan B
yang dimasukkan sama.
Penyelesaian
Untuk menentukan apakah 2 buah matriks sama (semua elemennya
sama), digunakan perintah isequal. Perintah isequal merupakan
perintah logika yang bernilai 1 (true) jika kedua matriks sama dan
bernilai false jika keduanya tidak sama.
function cekmatriks
clc
a = input ('masukkan matriks A = ')
b = input ('masukkan matriks B = ')
if isequal (a,b)
disp ('kedua matriks sama')
else
disp ('kedua matriks tidak sama')
end
2 5 3
Jika dijalankan dengan menginputkan A = dan B =
1 2 8
2 5 3
1 2 8 , diperoleh hasil sebagai berikut :
masukkan matriks A = [2 5 -3 ; 1 2 8]
a =
2 5 -3
1 2 8
masukkan matriks B = [2 5 -3 ; 1 2 8]
b =
2 5 -3
1 2 8
Contoh 12.3
Misal A adalah matriks bujur sangkar. Buatlah program untuk
menghitung Ak dengan k = bilangan bulat positip yang diinputkan.
Penyelesaian
Untuk menentukan apakah matriks yang diinputkan adalah matriks
bujur sangkar atau bukan, digunakan perintah size. Statemen
[m,n] = size (A) akan menghasilkan m = jumlah baris dan n =
jumlah kolom matriks A. Matriks A merupakan matriks bujur sangkar
jika m = n.
a =
2 -1
3 2
ak =
-10 -9
27 -10
a. Struktur For
b. Struktur While
Struktur for dapat dibuat bersarang (nested loop). Pada kasus ini,
loop For yang paling dalam akan dieksekusi dahulu hingga selesai,
baru kemudian ke loop For sebelah luarnya.
Contoh 12.4
Misal A adalah matriks bujur sangkar dan k adalah bilangan bulat
positip yang diinputkan. Buatlah program untuk mencetak matriks A,
A2, ... Ak
Penyelesaian
Program ini mirip dengan contoh 12.3. Hanya saja disini akan
ditampilkan semua matriks Ai (i = 1, 2, ... , k). Untuk itu digunakan
struktur For.
function pangkatmatriks2
clc
a = input ('masukkan matriks A = ');
k = input ('masukkan pangkat matriks = ');
[m,n] = size (a);
if m == n
for i = 1:k
ak = a^i;
fprintf ('a^%d = \n',i)
disp (ak)
end
else
disp ('matriks bukan bujur sangkar')
end
2 -1
Bila dijalankan untuk A = dan k = 3, diperoleh keluaran :
3 2
PEMROGRAMAN MATLAB 201
masukkan matriks A = [2 -1 ; 3 2]
masukkan pangkat matriks = 3
a^1 =
2 -1
3 2
a^2 =
1 -4
12 1
a^3 =
-10 -9
27 -10
Contoh 12.5
Misal A adalah matriks bujur sangkar. Buatlah program untuk
mengganti setiap elemen pada diagonal sekunder (elemen-elemen
sepanjang kanan atas hingga kiri bawah matriks) dengan negatifnya.
Penyelesaian
Untuk memproses diagonal utama (elemen dari kiri atas hingga kanan
bawah matriks) dapat dipakai perintah diag. Akan tetapi tidak ada
perintah untuk memproses diagonal sekunder. Untuk mengubah nilai
diagonal sekunder, haruslah dilakukan iterasi dengan struktur For
function diagsekunder
clc
a = input ('masukkan matriks A = ')
[m,n] = size (a);
if m == n
for i = 1:n
a(i,n-i+1) = -1 * a(i,n-i+1);
end
fprintf ('matriks A baru = \n')
disp (a)
else
disp ('matriks bukan bujur sangkar')
end
2 -1
Bila dijalankan untuk matriks A = , diperoleh hasil :
3 2
masukkan matriks A = [2 -1 ; 3 2]
a =
2 -1
3 2
matriks A baru =
2 1
-3 2
PEMROGRAMAN MATLAB 203
Contoh 12.6
Misalkan A adalah matriks bujur sangkar ordo nxn. A disebut matriks
ajaib (magic square) apabila elemen dalam A adalah bilangan 1, 2, ... ,
n2, dan jumlahan semua elemen dalam satu baris, satu kolom dan
diagonalnya sama.
8 1 6
Sebagai contoh matriks A = 3 5 7 merupakan matriks ajaib
4 9 2
karena jumlah tiap baris = jumlah tiap kolom = jumlah tiap diagonal =
15.
204 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Penyelesaian
Mula-mula dihitung ordo matriks A yang diinputkan dengan
menggunakan perintah size, dan diuji apakah matriksnya
merupakan matriks bujur sangkar.
Jika matriksnya bujur sangkar (ordo nxn), hitung jumlah baris-1 (atau
kolom-1) dalam matriks. Untuk memudahkan, gunakan perintah
sum(A(1,1:n)). Misal jumlahnya adalah jum.
i = 2;
while ((ajaib) & (i <= n))
PEMROGRAMAN MATLAB 205
j = 1;
while ((ajaib) & (j <= n))
% cek jumlah per kolom
fprintf ('jum kolom %d = %d\n',
j, sum (a(1:n,j)))
if (sum (a(1:n,j)) ~= jum)
ajaib = 0
end
j = j+1;
end
if (ajaib)
fprintf ('matriks A = ajaib\n')
else
fprintf ('matriks A = bukan ajaib\n')
end
else
disp ('matriks bukan bujur sangkar sehingga
bukan matriks ajaib')
end
8 1 6
Contoh keluaran untuk matriks 3 5 7 adalah sebagai berikut :
4 9 2
masukkan matriks A = [8 1 6 ; 3 5 7 ; 4 9 2]
a =
PEMROGRAMAN MATLAB 207
8 1 6
3 5 7
4 9 2
jum baris 1 = 15
jum baris 2 = 15
jum baris 3 = 15
jum kolom 1 = 15
jum kolom 2 = 15
jum kolom 3 = 15
jum diag utama = 15
jum diag sekunder = 15
matriks A = ajaib
Gambar 12.3
function grafik
210 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
x = -5:0.02:5;
p1 = [1 2 -5]
p2 = [1 0 0]
y1 = polyval (p1,x);
y2 = polyval (p2,x);
figure(1)
subplot(1,1,1)
plot(x,y1, x,y2);
Jika program dijalankan, maka akan muncul jendela grafik seperti
gambar 12.4
Gambar 12.4
Dari jendela editor properti ini kita bisa menambah judul grafik, label
sumbu, warna, skala tick mark, dll. Kita juga bisa mengedit kurva
(misal menambah legenda, dll) dengan memilih combo box di sebelah
atas. Pembaca bisa mencoba-coba mengedit grafik dengan
Gambar 12.5
SOAL-SOAL LATIHAN
1. Buatlah program (tanpa menggunakan perintah Pascal) untuk
membentuk matriks segitiga pascal. Masukan adalah ordo
matriks bujur sangkar dan bentuk keluaran sama dengan perintah
Pascal dalam Matlab.
r =
x yi i nx y
( x 2
n x 2 ) ( y2 n y 2 )
0 1
Sebagai contoh, matriks P = merupakan matriks
0.2 0.8
reguler karena meskipun P memuat elemen 0, tapi semua elemen
0.2 0.8
dalam P2 = tidak memuat 0
0.16 0.84
Buatlah program untuk menguji apakah matriks yang diinputkan
merupakan matriks probabilitas. Gunakan perintah all (atau all
(all) untuk menguji ada/tidaknya elemen 0 dalam matriks
Bab 13
PEMROGRAMAN PERCEPTRON
DENGAN MATLAB
1 jika net 0
f ( net ) =
0 jika net < 0
214 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
p jika (t a ) > 0
w = p jika (t a ) < 0 dan wbaru = wlama + w
0 jika (t a ) = 0
Perubahan bobot hanya dilakukan jika target keluaran jaringan.
Perintah newp juga akan menset bobot dan bias awal ke 0. Untuk
mengubahnya, gunakan penugasan terhadap net.IW{i,j} dan
net.b {i} (perhatikan bahwa yang dipakai adalah kurung kurawal).
Indeks i dan j dalam net.IW menunjukkan bobot awal dari layar j ke
layar i. Dalam perceptron hanya dikenal layar masukan dan
keluaran, sehingga net.IW menunjukkan bobot awal dari layar
masukan ke neuron targetnya.
Misalkan ada 3 buah unit masukan dan 2 buah neuron target seperti
gambar 13.1
b1
x1 w11
b2
w12
y1
x2 w21
w13
y2
w22
w23
x3
Gambar 13.1
Contoh 13.1
Bentuklah perceptron untuk mengenali pola fungsi logika dan 2
variabel x1 dan x2
Penyelesaian
Fungsi logika dan dengan 2 variabel masing-masing memiliki range
nilai masukan [0,1], dan sebuah target. Maka perintah yang dibuat
adalah
net = newp ([0 1 ; 0 1],1)
Baris pertama matriks ( [0 1] ) menunjukkan range nilai x1, sedangkan
baris kedua matriks menunjukkan range x2. s = 1 menunjukkan
bahwa jaringan hanya memiliki sebuah target (dalam Matlab, target
disebut neuron)
Contoh 13.2
PEMROGRAMAN PERCEPTRON DENGAN MATLAB 217
Penyelesaian
Fungsi logika dan memiliki 4 pola masukan (masing-masing
masukan terdiri dari 2 unit) seperti tampak pada tabel 13.1
Tabel 13.1
p1 1 1
1
p2 1 0
0
p3 0 0
1
p4 0 0
0
Perintah Matlab adalah sebagai berikut :
net = newp ([0 1 ; 0 1],1)
net.IW {1,1} = [-1 1]
net.b {1} = [1]
p = [ [1 ; 1] [1 ; 0] [0 ; 1] [0 ; 0] ]
t = [1 0 0 0]
218 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Pi, Ai, Pf, Af hanya dipakai bagi jaringan yang memiliki delay
masukan dan layar. Untuk sekedar menghitung keluaran jaringan,
dapat dipakai statemen sederhana
y = sim (net,p);
Perhatikan bahwa untuk menghitung keluaran jaringan, kita tidak
perlu mengetahui targetnya. Akan tetapi jika ingin dihitung kesalahan
yang terjadi (selisih antara target dengan keluaran jaringan), maka
harus diketahui targetnya.
PEMROGRAMAN PERCEPTRON DENGAN MATLAB 219
Contoh 13.3
Hitunglah keluaran jaringan contoh 13.1 menggunakan bobot awal
seperti contoh 13.2.
Penyelesaian
Setelah perintah seperti pada contoh 13.2, ditambahkan perintah :
a = sim (net,p)
Diperoleh hasil
>> a = sim (net,p)
a =
1 1 1 1
Vektor a merupakan keluaran jaringan untuk p1 hingga p4 dengan
menggunakan bobot dan bias masing-masing = [-1 1] dan [1].
Perhitungan manualnya tampak pada tabel 13.2. Hasil f(net)
ditampilkan oleh Matlab dalam variabel a di atas
Tabel 13.2
1 1 (-1) + 1 (1) + 1 = 1 1
p1 =
1
1 1 (-1) + 0 (1) + 1 = 0 1
p2 =
0
0 0 (-1) + 1 (1) + 1 = 2 1
p3 =
1
220 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
0 0 (-1) + 0 (1) + 1 = 1 1
p4 =
0
Pf =
[]
Af =
[]
e =
0 -1 -1 -1
PEMROGRAMAN PERCEPTRON DENGAN MATLAB 221
perf =
0.7500
Dari 4 pola yang diberikan, hanya pola pertama saja yang dikenali
dengan benar (ditunjukkan dengan a[1] = 0). Berarti 3 pola lain
belum dikenali. Dengan demikian performanya = = 0,75. Pf dan
Af = [ ] karena memang delay awal = Pi = Ai = []
Contoh 13.4
Hitunglah perubahan bobot setelah perintah sim pada contoh 13.3
1 1 0 0
dijalankan berturut-turut pada pola , , ,
1 0 1 0
Penyelesaian
Misalkan pola-pola tersebut adalah p1, p2, p3, dan p4 (dengan target
masing-masing = 1, 0, 0, 0) seperti pada contoh 13.2
Untuk pola p1 :
p = [p1 p2 p3 p4];
t = [t1 t2 t3 t4];
net = newp ([0 1 ; 0 1],1);
bobot = [-1 1];
net.IW {1,1} = bobot ;
bias = [1];
net.b {1} = bias;
e1 =
0
dW =
0 0
bobot =
-1 1
e2 =
-1
dW =
-1 0
bobot =
PEMROGRAMAN PERCEPTRON DENGAN MATLAB 225
-2 1
pola p3 :
a3 =
1
e3 =
-1
dW =
0 -1
bobot =
-2 0
pola p4 :
a4 =
1
e4 =
-1
dW =
0 0
bobot =
-2 0
226 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
>> e = t-a
e =
0 -1 -1 -1
Contoh 13.5
Carilah bobot pengenalan pola contoh 13.2
228 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Penyelesaian
Untuk mencari bobot optimal, kita bisa menggunakan perintah sim
dan learnp berulang-ulang. Akan tetapi akan lebih mudah jika kita
memakai perintah train saja.
net = newp ([0 1 ; 0 1],1);
net.IW {1,1} = [-1 1];
net.b {1} = [1];
p = [ [1 ; 1] [1 ; 0] [0 ; 1] [0 ; 0] ];
t = [1 0 0 0];
net = train (net, p, t);
Keluarannya berupa sebuah grafik seperti gambar 13.2 dan keterangan
tentang selesainya iterasi
PEMROGRAMAN PERCEPTRON DENGAN MATLAB 229
Gambar 13.2
p = [ [1 ; 1] [1 ; 0] [0 ; 1] [0 ; 0] ];
t = [1 0 0 0];
e = 9999;
while e > 0
net.trainParam.epochs = 1;
% pause training untuk tiap epoch
net = train (net, p, t);
bobot = net.IW {1,1}
bias = net.b {1}
a = sim (net,p)
e = sum (t-a)
end
0 0
bias =
-2
a =
0 0 0 0
e =
1
-3
a =
0 0 0 0
e =
1
1 0 0 0
e =
0
SOAL-SOAL LATIHAN
1. Ulangi contoh 13.5, tapi menggunakan masukan bipolar (masukan
1 atau 1), target biner (0 atau 1). Apakah bobot akhir yang
diperoleh tetap sama ?
2. Ulangi contoh 13.5 tapi dengan bobot awal [0 0] dan bias awal =
[0]. Apakah jumlah epoch yang dibutuhkan tetap sama ?
Perintah newlin juga akan menset bobot dan bias awal ke 0. Seperti
pada Perceptron, untuk mengubahnya dapat digunakan penugasan
terhadap net.IW{i,j} dan net.b {i}. Indeks i dan j dalam
net.IW {I,j} menunjukkan bobot awal dari layar j ke layar i.
Dalam ADALINE hanya ada sebuah layar masukan dan keluaran,
sehingga net.IW {1,1} menunjukkan bobot awal dari layar
masukan ke neuron targetnya.
Misalkan ada 2 buah unit masukan dan 1 buah neuron target dengan
bobot seperti gambar 14.1. Misalkan pula kedua masukannya
memiliki range [0, 10]. Maka perintah yang sesuai adalah :
1
-4
x1 2 y
x2
Gambar 14.1
net = newlin ([0 10 ; 0 10],1)
net.IW {1,1} = [2 3]
net.b {1} = [-4]
Contoh 14.1
Bentuklah perceptron untuk mengenali pola fungsi logika dan 2
variabel x1 dan x2 dengan masukan dan target bipolar.
Penyelesaian
Fungsi logika dan dengan 2 variabel bipolar memiliki range nilai
masukan [-1, 1], dan sebuah target. Maka perintah yang dibuat adalah
net = newlin ([-1 1 ; -1 1],1)
Parameter [-1 1 ; -1 1] menunjukkan bahwa kedua unit masukan x1,
dan x2 memiliki range [-1, 1]. Parameter s = 1 menunjukkan bahwa
jaringan hanya memiliki sebuah target (dalam Matlab, target disebut
neuron)
Contoh 14.2
Buatlah vektor masukan-keluaran ADALINE contoh 14.1
Penyelesaian
Fungsi logika dan memiliki 4 pola masukan (masing-masing
masukan terdiri dari 2 unit) sebagai berikut :
Tabel 14.1
p1 1 1
1
p2 1 -1
1
p3 1 -1
1
p4 1 -1
1
Contoh 14.3
Hitunglah keluaran jaringan contoh 14.1 dengan pola masukan seperti
pada contoh 14.2, menggunakan bobot awal w1 = 2, w2 = 3 dan bias =
-4
Penyelesaian
net = newlin ([-1 1 ; -1 1],1);
p = [ [1 ; 1] [1 ; -1] [-1 ; 1] [-1 ; -1] ];
t = [1 -1 -1 -1];
net.IW {1,1} = [2 3];
net.b {1} = [-4];
a = sim (net,p)
Diperoleh hasil
a =
1 -5 -3 -9
Tabel 14.2
1 1 (2) + 1 (3) 4 = 1 1
p1 =
1
1 1 (2) + -1 (3) 4 = -5 -5
p2 =
1
1 -1 (2) + 1 (3) - 4 = -3 -3
p3 =
1
1 -1 (2) + -1 (3) - 4 = -9 -9
p4 =
1
a =
1 -5 -3 -9
Pf =
[]
Af =
[]
e =
0 4 2 8
perf =
21
Dari 4 pola yang diberikan, hanya pola pertama saja yang dikenali
dengan benar (ditunjukkan dengan a[1] = 0).
[db,LS] =
learnwh(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS)
dengan
W : matriks bobot (atau matriks bias)
P : vektor masukan
Z : vektor masukan dengan bobot
N : vektor masukan net
A : vektor keluaran
T : vektor layar target
E : vektor layar error
gW : gradien bobot terhadap unjuk kerja
gA : gradien keluaran terhadap unjuk kerja
D : jarak neuron
LP : parameter pemahaman
LS : state pemahaman
Untuk ADALINE sederhana, parameter yang perlu diberikan
hanyalah W, P dan E (yang didapat dari sim (net,p) t)
Q Q
1 1 2
MSE = ek2 tk ak dengan
Q k 1 Q k 1
tk = vektor target
ek = tk - ak
Contoh 14.4
Hitunglah MSE untuk fungsi logika dan pada contoh 14.3
Penyelesaian
Pada contoh 14.3, t = [1 -1 1 -1] dan keluaran jaringan =
a = [1 -5 -3 -9] sehingga error = [0 4 2 8]
1 2
Maka MSE = 0 42 22 82 = 21
4
Contoh 14.5
Hitunglah bobot untuk mengenali fungsi logika dan menggunakan
bobot dan bias awal seperti contoh 14.3
Penyelesaian
Jika dalam contoh 14.3 ditambahkan perintah train (net,p),
diperoleh hasil :
>> train (net,p)
TRAINB, Epoch 0/100, MSE 29/0.
PEMROGRAMAN ADALINE DENGAN MATLAB 245
Default perintah train pada ADALINE adalah jumlah epoch = 100, dan
error = 0. Iterasi akan dihentikan apabila salah satunya tercapai. Dalam
kasus ini, jumlah epoch yang tercapai lebih dahulu. Matlab akan
menampilkan MSE pada epoch kelipatan 25.
Gambar 14.2
SOAL-SOAL LATIHAN
1. Ulangi contoh 14.5, tapi menggunakan masukan biner (masukan 1
atau 0), target biner (0 atau 1). Apakah jaringan mampu mengenali
polanya ? Apakah bobot akhir yang diperoleh sama dengan
contoh 14.5 ?
2
tansig (sigmoid bipolar). f ( net ) = 1 . Fungsi ini adalah
1 + e net
default yang dipakai. Fungsi sigmoid bipolar memiliki range [-1,
1].
PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 251
1
logsig (sigmoid biner) f ( net ) = . Fungsi sigmoid biner
1 + e net
memiliki bentuk serupa dengan sigmoid bipolar, hanya rangenya
adalah [0, 1]
Contoh 15.1
Buatlah inisialisasi Backpropagation untuk melatih jaringan yang
terdiri dari 2 masukan, sebuah layar tersembunyi yang terdiri dari 3
unit, dan sebuah keluaran (sering dituliskan sebagai 2-3-1). Data yang
dipakai pelatihan tampak dalam tabel 15.1 :
252 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Tabel 15.1
x1 x2 t
-1 0 -1
-1 5 -1
2 0 1
2 5 1
Penyelesaian
Untuk pelatihan berkelompok, maka perintah Matlab yang dipakai
adalah :
>> p = [-1 -1 2 2 ; 0 5 0 5]
>> t = [-1 -1 1 1]
>> net = newff ([-1 2;0 5], [3,1], {'tansig',
'purelin'});
Contoh 15.2
Buatlah jaringan Backpropagation 2 4 3 1 (semua masukan
adalah bilangan antara -1 dan 2) dengan semua fungsi aktivasi
sigmoid bipolar. Beri bobot dan bias tampak dalam tabel 15.2 15.4
Tabel 15.2
Layar x1 x2 bias
Tersembunyi 1
z2 0.5 0 -0.1
Tabel 15.3
LT-2 z1 z2 z3 z4 bias
Tabel 15.4
Keluaran z1 z2 z3 bias
Penyelesaian
Arsitektur jaringan yang diinginkan tampak seperti gambar 15.1.
1.4088 1.2247
-1.3366 1.3030
1.7287 -0.7043
-0.0543 -1.8659
>> net.b{1}
ans =
-4.1167
0.9501
0.4212
-1.8399
>> net.LW{2,1}
ans =
0.8664 0.7870 -0.8727 1.1239
-0.2290 1.7469 -0.3905 -0.3716
0.3303 0.6816 1.2460 1.1263
>> net.b{2}
ans =
-1.8425
0
1.8425
>> net.LW{3,2}
ans =
-1.1025 -0.3669 0.7809
256 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
>> net.b{3}
ans =
0
1 v1 v2 v3
1 x1 x2
Gambar 15.1
Contoh 15.3
Hitunglah keluaran jaringan contoh 15.2 jika diberikan masukan x1 =
0.5 dan x2 = 1.3
Penyelesaian
Sebelum menghitung keluaran, lebih dahulu ditentukan pola
masukannya. Dengan menggunakan bobot dan bias awal seperti
contoh 15.2, diperoleh hasil keluaran y = -0.9188.
>> p = [0.5 ; 1.3];
>> net = newff ([-1 2;-1 2], [4,3,1]);
258 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Pf =
[]
Af =
[]
PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 259
e =
1.9188
perf =
3.6818
Jika wk adalah vektor bobot pada iterasi ke-k, gk adalah gradien dan
k adalah laju pemahaman, maka metode penurunan gradien
memodifikasi bobot dan bias menurut persamaan wk+1 = wk - k gk
Contoh 15.4
Diketahui pasangan vektor masukan dan target seperti yang tampak
pada tabel 15.5. Buatlah jaringan Backpropagation 2 3 1, dan
latihlah dengan metode penurunan tercepat. Gunakan fungsi aktivasi
sigmoid bipolar pada layar tersembunyi dan fungsi identitas pada
layar keluarannya.
Tabel 15.5
x1 x2 t
-1 0 -1
-1 5 -1
PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 261
2 0 1
2 5 1
Penyelesaian
>> p = [-1 -1 2 2 ; 0 5 0 5];
>> t = [-1 -1 1 1];
>> net = newff (minmax (p), [3,1], {'tansig',
'purelin'}, 'traingd');
Sebelum melatih, mungkin kita perlu melihat bobot dan bias yang
dipakai sebagai inisialisasi (jika anda mencobanya, anda mungkin
mendapatkan hasil yang berbeda karena bobot dan biasnya
ditentukan secara acak).
>> net.IW {1,1}
ans =
1.5227 -0.3257
-1.3301 0.5512
1.6164 0.0150
>> net.b{1}
ans =
-2.3721
262 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
-0.7131
1.5791
>> net.LW{2,1}
ans =
0.4189 -0.1422 -0.3908
>> net.b{2}
ans =
-0.6207
Pf =
[]
Af =
[]
e =
0.1028 0.1963 1.6235 2.2442
PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 263
perf =
1.9303
Gambar 15.2
>> net.b{1}
ans =
-2.2595
-0.7387
1.5762
PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 265
>> net.LW{2,1}
ans =
0.5655 -0.4887 0.0831
>> net.b{2}
ans =
-0.0821
Pf =
[]
Af =
[]
e =
-0.0681 0.1319 0.0337 0.0546
perf =
0.0065
Contoh 15.5
Ulangi contoh 15.4 dengan menggunakan = 0.9.
Penyelesaian
Setelah menuliskan perintah seperti pada contoh 15.4, berikutnya
jaringan perlu diinisialisasi untuk memperoleh bobot baru (acak)
268 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Contoh 15.6
Ulangi contoh 15.4 jika pelatihan dilakukan dengan menggunakan
metode penurunan tercepat dengan momentum.
Penyelesaian
Perintah-perintahnya sama seperti contoh 15.4, hanya fungsi
pelatihannya diganti dengan traingdm. Jika sebelumnya semua
perintah contoh 15.4 sudah dijalankan, anda tinggal menginisialisasi
bobot (perintah init) dan mengganti fungsi pelatihan perintah
newff.
>> p = [-1 -1 2 2 ; 0 5 0 5];
>> t = [-1 -1 1 1];
>> net = newff (minmax (p), [3,1], {'tansig',
'purelin'}, 'traingdm');
>> net = train (net,p);
TRAINGDM, Epoch 0/100, MSE 0.484221/0, Gradient
2.84339/1e-010
TRAINGDM, Epoch 25/100, MSE 0.0841663/0,
Gradient 0.694831/1e-010
PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 271
Contoh 15.7
Ulangi contoh 15.4 (toleransi 10-5) jika pelatihan dilakukan dengan
menggunakan
Penyelesaian
a. >> p = [-1 -1 2 2 ; 0 5 0 5];
>> t = [-1 -1 1 1];
>> net = newff (minmax (p), [3,1], {'tansig',
'purelin'}, 'traingda');
>> net.trainParam.goal = 1e-5;
>> net = train (net,p);
TRAINGDA, Epoch 0/100, MSE 1.43535/1e-005,
Gradient 3.17068/1e-006
TRAINGDA, Epoch 25/100, MSE 0.0656913/1e-005,
Gradient 0.559132/1e-006
TRAINGDA, Epoch 50/100, MSE 0.00570113/1e-005,
Gradient 0.0709822/1e-006
TRAINGDA, Epoch 75/100, MSE 3.52108e-005/1e-005,
Gradient 0.00555578/1e-006
TRAINGDA, Epoch 79/100, MSE 6.9582e-006/1e-005,
Gradient 0.00246968/1e-006
TRAINGDA, Performance goal met.
Gambar 15.3
Gambar 15.4
Contoh 15.8
Ulangi contoh 15.4 jika pelatihan dilakukan dengan menggunakan
resilient Backpropagation dengan batas toleransi 10-5
Penyelesaian
>> net = init (net);
>> net = newff (minmax (p), [3,1], {'tansig',
'purelin'}, 'trainrp');
>> net.trainParam.goal = 1e-5;
>> net = train (net,p);
TRAINRP, Epoch 0/100, MSE 0.208973/1e-005,
Gradient 0.925565/1e-006
TRAINRP, Epoch 17/100, MSE 5.20266e-006/1e-005,
Gradient 0.0048596/1e-006
TRAINRP, Performance goal met.
Gambar 15.5
PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 277
Contoh 15.9
Ulangi contoh 15.4 jika pelatihan dilakukan dengan menggunakan
gradien conjugate dengan batas toleransi 10-5
a. Metode Fletcher-Reeves
b. Metode Polak-Ribiere
Penyelesaian
a. >> net = init (net);
>> net = newff (minmax (p), [3,1], {'tansig',
'purelin'}, 'traincgf');
>> net.trainParam.goal = 1e-5;
>> net = train (net,p);
TRAINCGF-srchcha, Epoch 0/100, MSE 0.372691/1e-
005, Gradient 1.88631/1e-006
278 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
puluhan kali lebih cepat. Akan tetapi perlu dicatat bahwa metode yang
cepat dalam suatu kasus belumlah cepat untuk kasus/pola data yang
lain. Pembaca dapat mencoba-coba metode-metode tersebut untuk
berbagai kasus.
Contoh 15.10
Selesaikanlah masalah peramalan contoh 7.3 (lihat bab 7 tentang teori
Backpropagation) hingga toleransi 10-5
Penyelesaian
Perhatikan kembali data contoh 7.3 tentang peramalan penjualan
produk makanan kaleng. Berdasarkan data bulanan selama 2 tahun
tersebut dibentuk jaringan dengan 12 masukan dan 1 target.. Data
yang dimasukkan adalah hasil transformasi data asli ke [0.1, 0.9].
Fungsi aktivasi yang dipakai bisa berupa sigmoid biner (logsig)
karena semua data berada dalam range [0, 1].
Gambar 15.6
Tabel 15.6
12 2 1 226
12 3 1 216
PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 281
12 4 1 223
12 5 1 214
12 6 1 210
Tabel 15.7
traingda 232
traingdx 226
trainrp 10
traincgf 2
traincgp 3
traincgb 3
282 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
SOAL-SOAL LATIHAN
1. Apa keuntungan dan kerugian penggunaan fungsi aktivasi
identitas dibandingkan dengan fungsi aktivasi sigmoid ?
2. Diketahui data nilai tukar US$ selama 14 hari terakhir (dari H-14
hingga H-1).
Nilai Tukar
8.475 8.491 8.512 8.508 8.521 8.610 8.590
(ribuan)
Nilai Tukar
8.620 8.637 8.650 8.625 8.624 8.637 8.672
(ribuan)
y1 yk
b1 w wk1 w1 n wkn
11
b2
1 x1 ... xn
Gambar 16.1
286 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Contoh 16.1
Diketahui 14 buah vektor masukan (masing-masing terdiri dari 2
komponen x1, x2) sebagai berikut :
p=
0.8
0.6
x2
0.4
0.2
0
0 0.2 0.4 0.6 0.8 1
x1
Gambar 16.2
288 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Penyelesaian
Mula-mula dimasukkan data vektor (x1, x2) yang hendak
dikelompokkan. Semua elemennya berada dalam range [0, 1].
>> p = [ 0.1987 0.2722 0.0153 0.4451 0.466
0.8462 0.2026 0.8381 0.6813 0.8318
0.7095 0.3046 0.1934 0.3028 ;
0.6038 0.1988 0.7468 0.9318 0.4186
0.5252 0.6721 0.0196 0.3795 0.5028
0.4289 0.1897 0.6822 0.5417 ]
>> net = newc ([0 1 ; 0 1],5);
Untuk melihat bobot dan bias awalnya dapat digunakan perintah
net.IW dan net.b
>> net.IW {1,1}
ans =
0.5000 0.5000
0.5000 0.5000
0.5000 0.5000
0.5000 0.5000
0.5000 0.5000
13.5914
13.5914
13.5914
Tampak bahwa semua bobot awalnya terletak pada titik tengah nilai
minimum dan maksimum vektor masukan, yaitu interval [0, 1].
(4,10) 1
(2,11) 1
(3,12) 1
(5,13) 1
(5,14) 1
Perhatikan cara pembacaan keluaran perintah sim. b(i,j) berarti vektor
masukan ke-j masuk dalam kelompok ke-i. Sebagai contoh, keluaran
pada baris pertama adalah b (5,1) yang berarti bahwa vektor masukan
pertama = (0.1987 , 0.6038) masuk dalam kelompok ke-5. Keluaran
baris kedua adalah b(3,2) yang berarti bahwa vektor masukan ke-2 =
(0.2722 , 0.1988) masuk dalam kelompok ke-3. Demikian seterusnya
hingga vektor masukan ke-14 yang masuk dalam kelompok ke-5.
init, berarti bobot yang kita pakai adalah bobot terakhir yang kita
dapatkan)
>> ac = vec2ind(b)
ac =
Columns 1 through 10
3 2 3 5 2 4 3 1 1 4
Columns 11 through 14
4 2 3 5
PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB 293
0.8
0.6
x2
0.4
0.2
0
0 0.2 0.4 0.6 0.8 1
x1
Gambar 16.2
0.8
0.6
x2
0.4
0.2
0
0 0.2 0.4 0.6 0.8 1
x1
294 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Gambar 16.3
Contoh 16.2
Gambarkan 30 neuron topologi jaringan Kohonen (2 dimensi) dalam 5
baris dan 6 kolom
Penyelesaian
>> pos = gridtop (5,6)
pos =
Columns 1 through 7
0 1 2 3 4 0 1
0 0 0 0 0 1 1
Columns 8 through 14
2 3 4 0 1 2 3
1 1 1 2 2 2 2
Columns 15 through 21
4 0 1 2 3 4 0
2 3 3 3 3 3 4
Columns 22 through 28
1 2 3 4 0 1 2
4 4 4 4 5 5 5
Columns 29 through 30
3 4
5 5
Keluaran Matlab diatas menunjukkan koordinat 30 neuron yang
dibentuk. Neuron-1 berada pada posisi (0,0), neuron-2 pada posisi (1,0)
dan seterusnya ... hingga neuron 30 yang berada pada posisi (4,5).
Untuk menggambarkannya dipakai perintah plotsom
296 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
Gambar 16.4
Columns 13 through 18
2.0000 3.0000 4.0000 0.5000 1.5000 2.5000
1.7321 1.7321 1.7321 2.5981 2.5981 2.5981
Columns 19 through 24
3.5000 4.5000 0 1.0000 2.0000 3.0000
2.5981 2.5981 3.4641 3.4641 3.4641 3.4641
Columns 25 through 30
4.0000 0.5000 1.5000 2.5000 3.5000 4.5000
3.4641 4.3301 4.3301 4.3301 4.3301 4.3301
Gambar 16.5
Columns 1 through 6
0.4283 1.0135 1.9000 2.4413 3.3665 0.6426
0.1021 0.2244 0.3569 0 0.2046 1.0208
Columns 7 through 12
1.5397 1.9318 3.0462 3.5441 0 1.1125
0.9950 0.8354 1.0808 1.0696 1.4595 1.2949
Columns 13 through 18
1.5389 2.3176 3.1029 0.3545 1.3109 2.0709
1.3875 1.5800 1.3856 2.2981 2.3869 2.1406
Columns 19 through 24
3.0034 3.4445 0.3745 1.0492 1.8715 2.5628
2.1917 2.2623 2.5986 2.7713 2.8305 2.7951
Columns 25 through 30
3.1184 0.4401 1.2425 1.9196 2.7788 3.7570
2.6802 3.5662 3.4987 3.5737 3.6515 3.5236
Gambar 16.6
Jarak Euclidis (dist) adalah jarak yang antara 2 titik dalam posisi
berbeda yang kita kenal sehari-hari. Misal (x1, y1) dan (x2, y2) adalah
koordinat 2 buah neuron. Jarak kedua neuron didefinisikan sebagai
2 2
d x2 x1 y2 y1
Jarak Manhattan (mandist) antara vektor x (x1, x2, ..., xn) dan vektor y
n
= (y1, y2, ... , yn) didefinisikan sebagai : sum (abs (x-y)) = xi yi
i 1
Jika x = (x1, x2) dan y = (y1, y2) menyatakan koordinat neuron yang
dibentuk melalui topologi tertentu, maka jarak Manhattan antara
neuron x dan y adalah D = x1 y1 x2 y2
300 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
neuron sekitar p
dengan jarak = 1
neuron sekitar p
dengan jarak = 2
Gambar 16.7
neuron sekitar p
dengan jarak = 1
p
neuron sekitar p
dengan jarak = 2
neuron sekitar q
dengan jarak = 1
q
Gambar 16.8
Contoh 16.3
Misalkan terdapat 6 buah neuron dalam topologi gridtop (2,3).
Hitunglah jarak antar neuron menggunakan
Jarak Euclidis (dist)
Boxdist
Linkdist
PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB 301
Penyelesaian
>> pos = gridtop (2,3)
pos =
0 1 0 1 0 1
0 0 1 1 2 2
Enam neuron yang terbentuk masing-masing memiliki koordinat :
Neuron-1 = (0,0), neuron-2 = (1,0), ... , dst hingga neuron 6 = (1,2)
neuron-5 neuron-6
neuron-3 neuron-4
neuron-1 neuron-2
Jarak Euclidis
302 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
2 2 1 1 0 1
2 2 1 1 1 0
Jarak persegi setiap neuron dengan dirinya sendiri = 0. Hal ini tampak
pada jarak sepanjang diagonal utamanya. Jarak persegi neuron-1
(koordinat (0,0)) dengan neuron sekitarnya yaitu neuron-2, neuron-3
dan neuron-4 (lihat topologinya pada gambar 16.9) = 1. Neuron-
neuron sekitar neuron-3 adalah semua neuron lainnya (lihat gambar
16.9). Ini berarti jarak persegi antara neuron 3 dan semua titik lainnya
= 1.
dengan
Contoh 16.4
Gunakan jaringan Kohonen untuk mengelompokkan 20 buah vektor
masukan dalam dimensi 2 yang diberikan secara acak pada range [0, 1]
dengan topologi hextop [2, 3].
Penyelesaian
Mula-mula dibentuk 20 vektor 2 dimensi secara acak dalam matriks
2x20
>> p = rand (2,20);
Untuk melihat grafiknya dapat digunakan perintah plot yang
hasilnya tampak pada gambar 16.10 (jika anda mencobanya mungkin
akan memperoleh grafik berbeda karena vektor tersebut dibentuk
secara acak). Warna titik diatur lewat parameter .blue dan besarnya
PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB 307
Gambar 16.10
Gambar 16.11
ac =
Columns 1 through 10
5 1 4 5 2 1 6 3 4 2
Columns 11 through 20
1 3 1 1 4 1 5 6 5 4
Gambar 16.12
310 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab
SOAL-SOAL LATIHAN
1. Buatlah jaringan dengan masukan 25 titik berikut ini ke dalam
maksimum 9 kelompok (topologi rand (3,3)) dengan metode
Kohonen
0 0 0 0 0 1 1 1 1 1 2 2 2 2 2
0 1 2 3 4 0 1 2 3 4 0 1 2 3 4
3 3 3 3 3 4 4 4 4 4
0 1 2 3 4 0 1 2 3 4
2. Topologinya heksagonal
3. topologinya grid
Demuth, H., Beale, M., Neural Network Toolbox, For Use with MATLAB,
The MathWorks, 2001
SINOPSIS