Bahan 10 JST

Anda mungkin juga menyukai

Anda di halaman 1dari 14

BAHAN 10

NEURAL NETWORK/JARINGAN SYARAF TIRUAN


I. Pendahuluan
Komputasi Neural merupakan jenis komputasi baru yang diharapkan dapat
mengatasi kelemahan sistem komputasi konvensional yang berbasis von
Neumann machine.
Kelebihan von Neumann machines
1. Fast arithmetic
2. Doing precise what the programmers programm them to do
Kelemahan von Neumann machines
1. Peka terhadap noise.
2. Data struktur harus dalam format yang precise
3. Sulit mengimplementasikan massive parallelism (paralelisme secara
besar-besaran)
4. Tidak fault tolerant. (Misal memory rusak, program berantakan.)
5. Sulit beradaptasi dengan keadaan
Latar Belakang Neural Computing
1. Melihat kemampuan manusia dalam memproses informasi, mengenal
wajah, tulisan, dsb. Melihat wajah dari sudut pandang yang belum pernah
dialami sebelumnya.
2. Bahkan anak-anak dapat melakukan hal tsb.
3. Masih belum tahu algoritma yang digunakan.
4. Melihat analogi biologis.
5. Otak manusia berisi kira-kira 20 billion (210) nerve cells.
6. Dipercayai bahwa kekuatan komputasi otak terletak pada
a. hubungan antar nerve cells / sel saraf,
b. hierarchical organization,
c. firing characteristics,
d. banyaknya jumlah hubungan
Harapan atas Neural Comp.
1. Membantu dalam pemecahan masalah yang
a. Algoritmanya tidak diketahui secara pasti
b. memiliki banyak contoh
c. ingin diketahui strukturnya dari contoh-contoh tsb.
Arsitektur Komputasi Neural
1. Memiliki beberapa hal yang menarik
a. Komputasi lokal, adaptive interaction between elements
b. Paralel
c. Simple processing elements
d. High degree of interconnections
e. Masalah sering direpresentasikan dalam struktur
f. Memungkinkan implementasi hardware (vlsi, optical)
g. Biological computation?

PERKEMBANGAN NEURAL NETWORK


1. Tahun 1940-an : masa permulaan neural network
a. Neuran McMulloch-Pitts
WarrenMcCulloch dan Walter Pitts mendesain apa yang dianggap sebagai
neural network yang pertama (1943). Keduanya mendapati bahwa
mengkombinasi neural ke dalam system neural akan meningkatkan
kemampuan komputasi. Berat dari tiap neuron dari system McMullochPitts diset sehingga neuron membentuk sutu fungsi logika dimana
rangkaian neuron yang berbeda akan membentuk fungsi yang berbeda.
Neuron-neuron dapat dirangkai menjadi jaringan untuk menghasilkan
output yang merepresentasikan suatu fungsi tertentu.
b. Hebb learning
Donald Hebb, psikolog dari McGill University, mendesain hukum
pembelajaran pertama dalam jaringan saraf tiruan (Hebb, 1949). Dia
menyatakan bahwa jika ada dua neuron diaktifkan bersamaan, kekuatan
koneksi / hubungan di antara kedua neuron itu akan meningkat.
2. Tahun 1950-1960 : masa kejayaan pertama
a. Percepton
Percepton diperkenalkan dan dikembangkan oleh Frank Rosenblatt.
Percepton terdiri dari lapisan input yang dihubungkan melalui jaringan
dengan berat yang tetap ke rangkaian neuron, dimana berat pada neuron
dapat diset. Sistem pembelajaran pada percepton menggunakan iterasi
dari pengesetan berat neuron. Aturan dalam percepton mengatur
hubungan berat ke unit ketika inputnya tidak tepat. Aturan dibuat untuk
mengurangi perbedaan antara input dengan output dan output yang
diinginkan. Hal ini akan menghasilkan error yang semakin mengecil.
b.

Adaline
Adaline adalah adaptive linier system. Adaline dikembangkan oleh
Bernard Widrow dan Marcian. Adaline hampir sama dengan percepton
hanya saja aturan pembelajarannya pada single layer adalah perintis
aturan backpropagation pada multi layer.

3. Tahun 1970-an : masa tenang


a. Kohonen
Metode percepton mengalami keterbatasan pada kasus-kasus yang
sangat kompleks. Kohonen mengembangkan suatu metode yang
berkaitan dengan asosiasi memori dalam neural network. Metode yang
diperkenalkannya banyak dikembangkan untuk pengelompokkan data
(clustering) dan self-organizing mapping. Metode ini dipakai dalam
speech recognizing, penyelesaian Traveling Salesman Problem dll.
b. Anderson
James Anderson mengembangkan metode asosiasi memori kohonen. Ide
yang dikembangkannya memotong output linier dari model asal untuk
menjaga output agar tidak terlalu besar ketika melakukan iterasi untuk
menghasilkan solusi yang stabil.
c. Grossberg
Stephen Grossberg mengembangkan metode yang sangat matematis dan
biologis dalam pengembangan neural network.

d. Carpenter
Carpenter mengembangkan teori self-organizing neural network yang
dikenal dengan adaptive resonance teori
4. Tahun 1980 : masa pemulihan
a. Backpropagation
Salah satu hal yang menghambat perkembangan neural network pada
tahun 70-an adalah kegagalan percepton single layer
dalam
menyelesaikan kasus-kasus sederhana dan kekurangan metode umum
untuk pembelajaran system multi layer . Metode perambatan informasi
kesalahan pada unit output ke lapisan hidden layer mampu mengurangi
kesalahan output. Metode ini merupakan salah satu cara untuk
mengoptimalkan neural network.
b. Hopfield nets
Hopfield mengembangkan sejumlah neural network yang didasarkan pada
fixed weight dan adaptive activation. Jaringan yang dikembangkannya
mampu berfungsi sebagai asosiasi memori dan dapat menyelesaikan
beberapa persoalan seperti Salesman Traveling Problem.
c. Neocognitron
Neocognitron merupakan searangkaian neural network yang berfungsi
untuk mengenal pola karakter. Neocognitron dikembangkan oleh Kunihiko
Fukushima di laboratorium NHK , Tokyo.
Aplikasi ANN
1. Bisnis
a. Memprediksi perubahan stok
b. Memprediksi market
2. Medis
a. Membantu diagnosis dokter
3. Pemrosesan sinyal
a. Adaptive noise cancellation (misalnya : mengurangi noise pada sinyal
telpon, gelombang radio)
b. Anti lock breaking system (ABS)
4. Kendali
a. Kendali robot
b. kendali peralatan industri
5. Pengenalan pola (pattern recognition)
a. Pengenalan pola gambar (image). misal untuk video surveillance,
pengenalan wajah, huruf, tanda tangan
b. Pengenalan pola suara (speech recognition).
c. Pengenalan pola data (data mining)
6. Speech prodution
a. Untuk mensintesis suara manusia
b. Mensintesis suara musik
Ada beberapa definisi untuk mendeskripsikan Artificial Neural Network (Jaringan
Saraf Tiruan ) antara lain :
1. A Neural Network is an interconnected assembly of simple procesing
elements / units / nodes, whose functionality is loosely based on the animal
neuron. The processing ability of the network is stored in the inter-unit
connection strengths, or weights, obtained by a process of adaptation to, or
learnig from, a set of training patterns.
(K. Gurney )
3

2. An artificial neural network is an information processing system that has


certain performance characteristics in common with biological neural network.
( Laurene Fausett )
ANN dikembangkan sebagai generalisasi metode matematis kesadaran
(cognition) manusia atau jaringan saraf (neural) didasarkan pada :
1. Pemrosesan informasi terjadi pada banyak elemen sederhana yang
disebut saraf neural)
2. Sinyal dilewatkan di antara saraf melalui suatu titik / node / connection
3. Setiap connection mempunyai suatu asosiasi berat yang mempengaruhi
sinyal yang dilewatkan
4. Setiap neuron menerapkan suatu fungsi aktivasi ke jaringan input untuk
menentukan sinyal output
Neural Network dikarakteristikkan dengan :
1. Jenis hubungan tiap koneksi antar neuron ( architektur)
2. Metode menyatakan berat pada tiap koneksi (training, learning, algoritma)
3. Fungsi aktivasi (penggerak)
Terdapat kesamaan dalam merepresentasikan sel saraf dan pemrosesan elemen
dalam neural network.
1. Komponen utama sel saraf adalah
a. Soma (cell body)
b. Axon (output)
c. Dendrites (input)
2. Synapse: hubungan axonic nerve fiber dengan soma atau dendrite dari
neuron lain
3. Sebuah neuron memiliki 1000 s/d 10.000 synapes

Gambar 1. Sel Saraf

II.

Konsep Dasar Artificial Neural Network

A. Arsitektur Neural Network


Arsitekur neural network adalah susunan neuron dalam layer (lapisan) dan
pola koneksi untuk tiap neuron. Ada 3 jenis arsitektur neural network
berdasarkan bentuk umum lapisannya, yaitu :
1. Jaringan single layer
Jaringan single-layer merupakan bagian dari jaringan feedforward, dimana
sinyal datang dari input mengalir ke ouput. Jaringan single layer hanya
mempunyai satu lapisan koneksi. Dalam system single layer, unit dapat
dibedakan sebagai unit input dan unit output secara jelas. Biasanya dalam
model single layer setiap unit input terhubung ke unit output tetapi tidak
terhubung ke unit input lainnya. Contoh single layer dapat dilihat pada
Gambar 2.

x1
x2

w1
w2

x3

w3

Y1

Y2

wb

x4

ouput

input
Gambar 2. Single-Layer Net

2. Jaringan multi layer


Jaringan multi layer adalah jaringan yang mempunyai lebih dari satu lapisan
nodes (titik hubung / koneksi) di antara input dan outputnya. Biasanya ada
lapisan untuk menyatakan berat (weight) di antara dua level yang berdekatan.
Jaringan multi layer dapat menyelesaikan permasalahan yang lebih
kompleks. Contoh jaringan multi layer dapat dilihat pada Gambar 3.

Gambar 3. Multi-Layer Nets

3. Competitive layer
Competitive layer merupakan bentuk yang banyak dipakai dalam aplikasi
neural network. Dalam competitive layer pemisahan unit input dan output sulit
dibedakan karena unit input bisa menjadi unit output yang lain begitu juga
sebaliknya. Contoh competitive layer dapat dilihat dalam Gambar 4.
A1

A2

A3

A4
Gambar 4. Competitive Layer

B. Menentukan berat (weight)


Metode menentukan berat (weight) merupakan salah satu hal penting dalam
menyusun neural network. Secara umum ada dua metode yang dipakai
dalam menentukan weight yaitu metode training (supervised dan
unsupervised) dan penentuan weight dengan nilai yang tetap (fixed-weight
nets).
1. Supervised training
pada metode supervised training dilakukan dengan menentukan
rangkaian vector training atau pola yang masing-masing diasosiasikan
dengan target outputnya. Berat akan disesuaikan dengan algoritma
pembelajarannya.
2. Unsupervised training
Metode unsupervised training hampir sama dengan metode supervised,
hanya saja dalam metode ini tidak ada vector target yang dispesifikkan.
Jaringan akan memodifikasi berat sehingga vector input yang mirip akan
ditempatkan dalam vector output yang sama.
3. Fixed-weight nets
Dalam metode fixed-weight nets, nilai berat untuk tiap unit input dibuat
tetap, sehingga tidak memberikan training untuk menyesuaikan nilai berat.
C. Fungsi aktivasi dasar
Salah satu operasi dasar dalam neural network adalah operasi penjumlahan
berat sinyal input untuk menghasilkan output atau fungsi aktivasi. Dalam unit
input, fungsi ini adalah fungsi identitas yang dinyatakan dengan :
f x x untuk semua x
sedangkan untuk fungsi aktivasinya ada beberapa macam, yang sering
digunakan adalah :
1.

Fungsi identitas
Fungsi identitas dinyatakan dengan ;
f x x untuk semua x
Grafik dari fungsi identitas dapat dilihat pada Gambar 5.

f(x)

x
Gambar 5. Fungsi Identitas
2.

Fungsi step biner


Fungsi step dinyatakan dengan :

1 jika __ x 0
f x
o jika __ x0
Fungsi step biner sering disebut juga fungsi threshold (ambang batas).

x
Gambar 6. Fungsi Step Biner

3.

Fungsi sigmoid
Fungsi sigmoid merupakan fungsi yang sangat berguna dalam fungsi
aktivasi. Fungsi sigmoid sangat berguna dalam training dengan metode
backpropagation dikarenakan kesederhanaan hubungan antara nilai
fungsi pada suatu titik dan nilai derivatif (turunan) pada titik tersebut yang
mengurangi beban komputasi selama proses training. Fungsi sigmoid
dinyatakan dengan :
f x

1
1 exp( x)

f ' x f x 1 f x

D. Neuron McMulloch-Pitts
Secara umum arsitektur neural McMulloch-Pitts menerima sinyal dari
sejumlah neuron. Setiap koneksi bisa mendukung, berat w>0, atau menghalangi,
berat p (p>0). Misalkan ada sejumlah n input yang beratnya berbilai positif dan
m input yang beratnya bernilai negatif maka fungsi aktivasinya adalah :

1 jika_in 0
yf _in
0 jika_in0
dimana ;

y_in = total sinyal input yang diterima


0 = adalah ambang batas

X1
w

Xn

-p

Xn+m
Gambar 7. Arsitektur McMulloch Pitts

Contoh program sederhana menggunakan matlab :


% Program sederhana kasus AND dengan Neural Networks
% tanpa training
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function output=SimpleAnd(x1, x2)
% inisialisasi
threshold=2;
w1=1;
w2=1;
% penjumlahan bobot dan masukan
O=x1*w1+x2*w2;
% keluaran dari jaringan
if(O>=threshold)
output=1;
else
output=0;

end

% Program sederhana kasus NOT dengan Neural Networks


% tanpa training
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function output=SimpleNot(x)
% inisialisasi
threshold=-0.5;
w=-1;
% penjumlahan bobot dan masukan
O=x*w;
% keluaran dari jaringan
if(O>=threshold)
output=1;
else
output=0;
end
% Program sederhana kasus Or dengan Neural Networks
% tanpa training
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function output=SimpleOr(x1, x2)
% inisialisasi
threshold=2;
w1=2;
w2=2;
% penjumlahan bobot dan masukan
O=x1*w1+x2*w2;
% keluaran dari jaringan
if(O>=threshold)
output=1;
else
output=0;
end
% Deskripsi : Program untuk menyelesaikan kasus AND dengan Neural
Networks
%
dengan pembelajaran memakai bias
% Input : input = input yang akan dites
%
contoh input=[0 1]
% Output : output = hasil dari AND
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%data input
x=[0 0;
0 1;
1 0;
1 1];
%data target
t=[0 ;0 ;0 ;1];
% Pembelajaran untuk mendapatkan bobot terbaik
w=getWeights1(x, t, 0.1, 10)
% Test dengan input
output=RunNN1(input, w, t);
function w=getWeights(input, target, LR, jumlahiterasi)

10

% Deskripsi : untuk mencari weight (bobot) pada Neural Networks


% Input : input = input pada Neural Networks
%
target = target pada Neural Networks
%
LR = Learning rate untuk update bobot
%
jumlahiterasi = jumlah iterasi
% Output : w = bobot yang dihasilkan
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jumlahpattern=size(input,1);
jumlahinput=size(input,2);
jumlahtarget=size(target,2);
%menambah bias pada jaringan input
for p=1:jumlahpattern
input(p,jumlahinput+1)=1;
end
%inisialisasi bobot
w=[];
for j=1:jumlahinput+1
for i=1:jumlahtarget
w(j,i)=0.15*(2*rand-1);
end
end
%pembelajaran untuk mendapatkan bobot terbaik
for itr=1:jumlahiterasi
error=0.0;
for p=1:jumlahpattern
for i=1:jumlahtarget
O(i)=input(p,:)*w(:,i);
if(O(i)>0.0)
out(i)=1;
else
out(i)=0;
end
ERR(i)=target(p,i)-out(i);
error=error+abs(ERR(i));
if(ERR(i)~=0)
for j=1:jumlahinput+1
w(j,i)=w(j,i)+LR*input(p,j)*ERR(i);
end
end
end
end
error=error/jumlahpattern;
fprintf('%2d %.2f\n',itr,error);
e(itr)=error;
end
function output=RunNN(input, w, jumlahoutput)
% Deskripsi : untuk menjalankan Neural Networks
% Input : input = input pada Neural Networks
%
w = bobot pada Neural Networks
%
jumlahoutput = jumlah output pada Neural Networks
% Output : output = output yang dihasilkan
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

11

%menghitung keluaran jaringan


jumlahinput=size(input,2);
jumlahtarget=size(jumlahoutput,2);
input(jumlahinput+1)=1;
output=zeros(jumlahtarget,1);
for i=1:jumlahtarget
out=input*w(:,i);
if(out>0.0)
output(i)=1;
else
output(i)=0;
end
end

function output=LearnXOR(input)
% Deskripsi : Program untuk menyelesaikan kasus XOR dengan Neural
Networks
%
dengan memakai bias.
%
Arsitektur NN :
%
input units = 2 (+1 bias)
%
hidden units = 2 (+1 bias)
%
output units = 1
% Input : input = input yang akan dites
%
contoh input=[0 1]
% Output : output = hasil dari AND
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
clc
%data input
x=[0 0;
0 1;
1 0;
1 1];
%data target
t=[0 1 1 0];
% Pembelajaran untuk mendapatkan bobot terbaik
[w,s]=getWeights_XOR(x, 2, t, 0.1, 2000);
%running
output=RunNN_XOR(input,w,s);
function [w,s]=getWeights_XOR(input, jumlahhidden, target, LR, jumlahiterasi)
% Deskripsi : untuk mencari weight (bobot) pada Neural Networks
%
yang mempunyai hidden layer pada kasus XOR
% Input : input = input pada Neural Networks
%
target = target pada Neural Networks
%
jumlahhidden = jumlah hidden unit pada Neural Networks
%
LR = Learning rate untuk update bobot
%
jumlahiterasi = jumlah iterasi
% Output : w = bobot yang dihasilkan dari lapisan input ke lapisan tersembunyi
%
s = bobot yang dihasilkan dari lapisan tersembunyi ke lapisan output
%

12

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jumlahpattern=size(input,1);
jumlahpattern
jumlahinput=size(input,2);
jumlahtarget=size(target,2);
%menambah bias pada jaringan input
for p=1:jumlahpattern
input(p,jumlahinput+1)=1;
end
y(jumlahhidden+1)=1;
%inisialisasi bobot
for j=1:jumlahhidden
for i=1:jumlahinput+1
w(j,i)=0.15*(2*rand-1);
end
end
for k=1:jumlahhidden+1
s(k)=0.15*(2*rand-1);
end
%pembelajaran untuk mendapatkan bobot terbaik
for l=1:jumlahiterasi
error=0.0;
for p=1:jumlahpattern
O=zeros(1,2);
for j=1:jumlahhidden
O(j)=input(p,:)*w(j,:)';
y(j)=sigmoid(O(j));
end
O1=y*s';
z=sigmoid(O1);
g1=z*(1-z);
delta_o=(target(p)-z)*g1;
f1=y.*(1-y);
for j=1:jumlahhidden
delta_h(j)=f1(j)*delta_o*s(j);
end
s=s+LR*delta_o*y;
for j=1:jumlahhidden
for i=1:jumlahinput+1
w(j,i)=w(j,i)+LR*delta_h(j)*input(p,i);
end
end
error=error+((target(p)-z)*(target(p)-z))/2;
end
error=error/4;
fprintf('%d %.2f\n',l,error)
e(l)=error;
end
plot(e)
function output=RunNN_XOR(input,w,s)
% Deskripsi : untuk menjalankan Neural Networks
% Input : input = input pada Neural Networks
%
w = bobot pada unit input ke unit tersembunyi pada Neural Networks

13

%
s = bobot pada unit tersembunyi ke unit output pada Neural Networks
% Output : output = output yang dihasilkan
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jumlahinput=size(input,2);
jumlahinput
jumlahhidden=size(input,2);
input(jumlahinput+1)=1; % menentukan biasnya
input
O=input*w';
O
w
for j=1:2.
y(j)=sigmoid(O(j));
end
y(jumlahhidden+1)=1; % bias hidden layer
Out=y*s';
Out
z=sigmoid(Out);
if (z<0.5)
output=0;
else
output=1;
end

14

Anda mungkin juga menyukai