0% found this document useful (0 votes)
102 views

Laboratorium Pembelajaran Ilmu Komputer Fakultas Ilmu Komputer Universitas Brawijaya

The document describes a lab experiment using Madaline neural networks. It includes functions for the step bipolar activation, training Madaline, testing predictions, and calculating accuracy. Various logic functions are tested, including AND, OR, AND NOT, and XOR. XOR is able to be learned accurately due to Madaline having a hidden layer, allowing it to solve non-linearly separable problems. Testing on another dataset yields 100% accuracy compared to 75% for Hebb Net, due to Madaline using a non-linear decision boundary from its hidden layer.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
102 views

Laboratorium Pembelajaran Ilmu Komputer Fakultas Ilmu Komputer Universitas Brawijaya

The document describes a lab experiment using Madaline neural networks. It includes functions for the step bipolar activation, training Madaline, testing predictions, and calculating accuracy. Various logic functions are tested, including AND, OR, AND NOT, and XOR. XOR is able to be learned accurately due to Madaline having a hidden layer, allowing it to solve non-linearly separable problems. Testing on another dataset yields 100% accuracy compared to 75% for Hebb Net, due to Madaline using a non-linear decision boundary from its hidden layer.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 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