Laboratorium Pembelajaran Ilmu Komputer Fakultas Ilmu Komputer Universitas Brawijaya

Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA
BAB : MADALINE
NAMA : REBECCA OCTAVIANI
NIM : 185150201111039
TANGGAL : 18/11/2020
ASISTEN : - GUSTAVO THIODORUS
- PANDU DEWABRATA

A. Praktikum
1. Buka Google Colaboratory melalui tautan ini.
2. Tulis kode berikut ke dalam setiap cell pada notebook tersebut.
a. Fungsi Step Bipolar

def bipstep(y, th=0):


return 1 if y >= th else -1

b. Fungsi Training Madaline

def fit(X, t, alpha=.01, max_err=.0001, max_epoch=10):


w = np.random.rand(len(X[0])+1, 2)
bias = np.ones((len(X), 1))
X = np.hstack((bias, X))
v = np.array([0.5, 0.5])
by = 0.5

stop = False
epoch = 0
while not stop and epoch < max_epoch:
epoch += 1
print('epoch:', epoch)
max_dw = 0
for x in range(len(X)):
zin = np.matmul(X[x], w)
z = np.array([(lambda zi : bipstep(zi))(zi) for zi in zin])
yin = by + np.dot(z, v)
y = bipstep(yin)

# print('y =', y, 'vs t =', t[x], end=' ')


if y != t[x]:
if t[x] == 1:
k = np.argmin(abs(zin))
dw = alpha*(1-zin[k])*X[x]
w[:,k] = w[:,k] + dw
max_dw = max(abs(np.max(dw)), max_dw)
# print('t = +1, max_dw:', max_dw)
else:
for k in range(len(zin)):
if z[k] > 0:
dw = alpha*(-1-zin[k])*X[x]
w[:,k] = w[:,k] + dw
max_dw = max(abs(np.max(dw)), max_dw)
# print('t = -1, max_dw:', max_dw)
else:
# print('lewat')
continue

if max_err > max_dw:


stop = True

print('Bobot akhir:')
print(w)
return w

c. Fungsi Testing Bipolar

def predict(X, w):


bias = np.ones((len(X), 1))
X = np.hstack((bias, X))

v = np.array([0.5, 0.5])
by = 0.5
Y = []

for x in X:
zin = np.matmul(x, w)
z = zin.copy()
z = np.array([(lambda zi : bipstep(zi))(zi) for zi in zin])
yin = by + np.dot(z, v)
y = bipstep(yin)
Y.append(y)
return Y

c. Fungsi Hitung Akurasi

def calc_accuracy(a, b):


s = [1 if a[i] == b[i] else 0 for i in range(len(a))]
return sum(s) / len(a)

d. Logika AND

train = (1, 1), (1, -1), (-1, 1), (-1, -1)


target = 1, -1, -1, -1
train = np.array(train)
w = fit(train, target, max_epoch=1000)
output = predict(train, w)
accuracy = calc_accuracy(output, target)
print('Output:', output)
print('Target:', target)
print('Accuracy:', accuracy)

e. Logika OR

train = (1, 1), (1, -1), (-1, 1), (-1, -1)


target = 1, 1, 1, -1
train = np.array(train)
w = fit(train, target, max_epoch=1000)
output = predict(train, w)
accuracy = calc_accuracy(output, target)

print('Output:', output)
print('Target:', target)
print('Accuracy:', accuracy)

f. Logika AND NOT

train = (1, 1), (1, -1), (-1, 1), (-1, -1)


target = -1, 1, -1, -1
train = np.array(train)
w = fit(train, target, max_epoch=1000)
output = predict(train, w)
accuracy = calc_accuracy(output, target)

print('Output:', output)
print('Target:', target)
print('Accuracy:', accuracy)

g. Logika XOR

train = (1, 1), (1, -1), (-1, 1), (-1, -1)


target = -1, 1, 1, -1
train = np.array(train)
w = fit(train, target, max_epoch=1000)
output = predict(train, w)
accuracy = calc_accuracy(output, target)

print('Output:', output)
print('Target:', target)
print('Accuracy:', accuracy)
B. Screenshot

a. Fungsi Step Bipolar

b. Fungsi Training Madaline


c. Fungsi Testing Bipolar

d. Fungsi Hitung Akurasi

e. Logika AND

Output:
f. Logika OR

Output:
g. Logika AND NOT

Output:
h. Logika XOR

Output:
C. Analisis
1. Pada fungsi training, apa yang dilakukan oleh baris z = np.array([(lambda zi :
bipstep(zi))(zi) for zi in zin]) tersebut?
Jawab:
Baris z = np.array([(lambda zi : bipstep(zi))(zi) for zi in zin])
merupakan inisialisasi variabel z dengan memasukan nilai zin pada fungsi
aktivasi step bipolar yang hasilnya dalam bentuk array.

2. Berbeda dengan JST sebelumnya, mengapa Madaline berhasil mempelajari


logika XOR dengan tepat? Jelaskan alasannya!
Jawab:
Madaline berhasil mempelajari XOR dengan tepat dikarenakan pada jaringan
ini terdapat hidden layer yang mampu menyelesaikan masalah lebih rumit (non-
linearly separable) meskipun proses training menjadi lebih rumit.

3. Lakukan proses training dan testing menggunakan data berikut.


Training: (-1, .5), (.5, .3), (1, 1.5), (3, 1.9)
Target: (-1, -1, 1, 1)
Berapakah akurasi yang didapatkan?
Soal ini pernah ditanyakan pada Modul Bab 2 dan akurasi yang didapatkan saat
itu adalah 75%. Menurut Anda apa yang membedakan Hebb Net dan Madaline
sehingga menghasilkan akurasi yang berbeda?
Jawab:
Akurasi yang didapatkan adalah 100% pada percobaan dibawah menggunakan
Madaline. Akurasi yang didapatkan pada jaringan Hebb Net dan Madaline
berbeda karena pada jaringan Madaline terdapat hidden layer yang mampu
menyelesaikan masalah rumit menggunakan non-linearly separable,
sedangkan jaringan Hebb Net tidak terdapat hidden layer dan menggunakan
linear.

Kode program:
Output:

D. Kesimpulan

Adaline (Adaptive Linear Neuron) adalah jaringan yang terdiri dari satu atau
lebih input dan satu ouput. Sedangkan, Madaline (Many Adaptive Linear Neuron)
adalah jaringan adaline yang menggunakan jaringan multilayer. Jaringan ini terdiri
dari satu atau lebih input, satu ouput dan satu hidden layer. Maka, perbedaan kedua
jaringan tersebut terdapat pada arsitektur yang digunakannya. Hal tersebut akan
berpengaruh pada kedua hasil jaringan tersebut yang dimana Adaline bersifat
linearly separable dan Madaline bersifat non-linearly separable.
Madaline menghasilkan decision boundary (garis pemisah) yang non-linear
karena adanya hidden layer. Jaringan tersebut hanya menghasilkan satu buah garis
tetapi dapat memisahkan sesuai kelasnya masing-masing karena adanya garis
pemisah yang non-linear.

You might also like