Ukuran: px
Mulai penontonan dengan halaman:

Download ""

Transkripsi

1

2

3

4

5

6

7

8

9

10

11 JARINGAN SYARAF TIRUAN DAN PEMROGRAMANNYA DENGAN MATLAB J.J. Siang

12 2 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Untuk Kevin, yang senyumnya membangkitkan semangat dan harapan Being wise is better than being strong. Wisdom is better than strength

13 Kata Pengantar Neural Network (Jaringan Syaraf Tiruan = JST) merupakan topik yang hangat dibicarakan dan mengundang banyak kekaguman dalam dasa warsa terakhir. Hal ini disebabkan karena kemampuan JST untuk meniru sifat sistem yang diinputkan. Mata kuliah JST muncul di hampir semua kurikulum program studi yang berhubungan dengan komputer. Ditambah lagi begitu banyaknya mahasiswa yang membuat skripsinya dengan topik JST. Akan tetapi hal ini tidak didukung tersedianya buku acuan berbahasa indonesia yang memadai. Hal ini dirasa sangat ironis. Buku berjudul Jaringan Syaraf Tiruan dan Pemrogramannya dengan Matlab ini disusun untuk mengatasi kesenjangan tersebut Buku ini diperuntukkan bagi mahasiswa yang ingin mempelajari JST dari dasar, sesuai dengan silabus mata kuliah JST. Oleh karena itu dicantumkan juga bab tentang dasar-dasar matematika JST, konsep dasar JST, serta dasar-dasar pemrograman Matlab. Bagi pembaca yang sudah mengetahui konsep dasar JST atau terbiasa dengan Matlab, babbab tersebut dapat dilewati. Dari pengalaman mengajar penulis, seluruh cakupan buku ini akan selesai dipelajari dalam kuliah sebanyak 2-3 SKS dengan praktikum 2 jam per minggu. Secara garis besar, buku ini terdiri dari 2 bagian yaitu teori JST (bab 9) dan pemrograman JST (bab 0 6) Pada bab dijelaskan tentang pengertian dasar JST sebagai tiruan dari jaringan syaraf biologi, sejarah perkembangan serta aplikasinya. Bab 2 menjelaskan tentang dasar-dasar matematika yang dibutuhkan untuk JST. Mayoritas berisi tentang matriks, vektor serta konsep dasar fungsi. Bagi yang memiliki dasar matematika yang memadai, bab ini bisa dilewatkan

14 4 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Bab 3 berisi tentang konsep dasar JST, arsitektur, fungsi aktivasi, serta cara kerja model JST Bab 4 9 menjelaskan tentang model-model JST. Dimulai dengan model yang sangat sederhana dan analitik yang ditemukan oleh McCulloch Pitts, jaringan Hebb, hingga jaringan dengan supervisi yang umum dipakai seperti Perceptron, ADALINE, serta Back Propagation. Juga dibahas tentang jaringan tanpa supervisi seperti jaringan Hamming serta Kohonen. Dalam setiap bab dijelaskan tentang arsitektur jaringan, algoritma pelatihan serta contoh-contoh cara iterasinya Bab 0 2 dijelaskan tentang dasar-dasar Matlab. Bab 0 berisi tentang penjelasan antarmuka dan cara pemakaian Matlab. Bab berisi tentang cara manipulasi matriks sebagai dasar pemrograman Matlab. Dalam bab 2 dijelaskan cara pembuatan program dengan Matlab, sintaks perintah, hingga cara pembuatan grafik Bab 3 6 menjelaskan cara pembuatan program model JST yang dijelaskan pada bab 5 9. Bahasa yang dipakai adalah Matlab 6.5. Akan tetapi semua perintah yang dipakai juga dapat digunakan dengan Matlab versi 6.. Dalam setiap perintah dijelaskan secara rinci tentang format, sintaks dan manfaat setiap perintah yang dipakai. Ini bertujuan agar pembaca tidak menjadi burung beo saja yang meniru perintah yang tertulis. Setiap kali membaca tentang pemrogramannya, sebaiknya pembaca juga membaca bab tentang dasar teorinya. Hal ini perlu dilakukan mengingat kadangkala Matlab menggunakan pendekatan berbeda dengan algoritma dasar yang dijelaskan dalam bab 5 9. Hal ini beralasan karena banyaknya variasi model JST yang ditemukan. Teori yang dibahas dalam bab 5 9 adalah konsep aslinya, sedangkan yang dipakai oleh Matlab kadangkala adalah pengembangannya yang sudah sedikit mengalami perbedaan. Penulis sangat berterima kasih pada keluarga atas dorongan dan pengertiannya selama menghabiskan waktu dan pikiran untuk

15 Kata Pengantar 5 menyelesaikan buku ini. Terima kasih juga penulis sampaikan pada semua pejabat di fakultas MIPA, terutama program studi ilmu komputer Universitas Sanata Dharma Jogjakarta yang memberi kesempatan, dorongan dan fasilitas untuk menyelesaikan buku ini. Terima kasih juga penulis sampaikan pada penerbit Andi Offset yang bersedia menerbitkan buku ini. Banyak pengorbanan, kesulitan yang penulis alami selama penyusunan buku ini. Hanya dengan pertolongan Tuhanlah penulis mengatasi semuanya itu. Winner never quit. Quitter never win. Kritik dan saran untuk penyempurnaan materi buku ini sangat penulis harapkan dari pembaca. Jogjakarta, Juli 2004 j_j_siang@yahoo.com

16 6 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Daftar Isi BAGIAN I : JARINGAN SYARAF TIRUAN BAB PENDAHULUAN.... Jaringan Syaraf Biologi dan Tiruan..... Jaringan Syaraf Biologi Jaringan Syaraf Tiruan Sejarah Jaringan Syaraf Tiruan Aplikasi Jaringan Syaraf Tiruan... 5 BAB 2 DASAR-DASAR MATEMATIKA Vektor Operasi-Operasi Vektor Norma Vektor Ketergantungan Linier Matriks Jenis-jenis Matriks Operasi pada Matriks... 7 SOAL-SOAL LATIHAN BAB 3 MODEL NEURON Arsitektur Jaringan Fungsi Aktivasi Bias dan Threshold Pelatihan Supervised dan Unsupervised Taksonomi Jaringan Syaraf Tiruan Neuron McCulloch Pitts... 3 SOAL-SOAL LATIHAN BAB 4 MODEL HEBB Jaringan Hebb Jaringan Hebb Untuk Pengenalan Pola SOAL-SOAL LATIHAN BAB 5 PERCEPTRON Arsitektur Jaringan Pelatihan Perceptron Pengenalan Pola Karakter... 74

17 Daftar Isi Pengenalan Sebuah Pola Karakter Pengenalan Beberapa Pola Karakter SOAL-SOAL LATIHAN BAB 6 ADALINE Pelatihan ADALINE MADALINE SOAL-SOAL LATIHAN BAB 7 BACK PROPAGATION Standar Backpropagation Arsitektur Backpropagation Fungsi Aktivasi Pelatihan Standar Backpropagation Optimalitas Arsitektur Backpropagation Pemilihan Bobot dan Bias Awal Jumlah Unit Tersembunyi Jumlah Pola Pelatihan Lama Iterasi Variasi Backpropagation Momentum Delta Bar Delta Perubahan Bobot Berkelompok Aplikasi Backpropagation Dalam Peramalan... 9 SOAL-SOAL LATIHAN BAB 8 JARINGAN KOMPETISI DENGAN BOBOT TETAP Pelatihan Tanpa Supervisi MaxNet Topi Meksiko (Mexican Hat) Jaringan Hamming SOAL-SOAL LATIHAN BAB 9 JARINGAN KOHONEN Arsitektur Jaringan Kohonen Algoritma Jaringan Kohonen Pengenalan Pola SOAL-SOAL LATIHAN... 49

18 8 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab BAGIAN 2 : PEMROGRAMAN JARINGAN SYARAF TIRUAN BAB 0 PENGENALAN MATLAB Matlab Sebagai Alat Komputasi Matriks Memulai Matlab BAB MATRIKS DAN MANIPULASINYA Matriks Matriks Umum Matriks Khusus Vektor Operasi Skalar Manipulasi Matriks Mengakses Elemen Matriks SOAL-SOAL LATIHAN... 8 BAB 2 PEMROGRAMAN MATLAB Membentuk M-File Masukan dan Keluaran Perintah Masukan-Keluaran dari Keyboard Perintah Masukan-Keluaran Dari Berkas Statemen Kendali Statemen Perulangan Struktur For Struktur While Pembuatan Grafik SOAL-SOAL LATIHAN... 2 BAB 3 PEMROGRAMAN PERCEPTRON DENGAN MATLAB Spesifikasi Perceptron Dalam Matlab Pembentukan Jaringan Pembentukan Vektor Masukan dan Target Menghitung Keluaran Perceptron Modifikasi bobot dan Bias Pelatihan Perceptron SOAL-SOAL LATIHAN BAB 4 PEMROGRAMAN ADALINE DENGAN MATLAB Pemrograman ADALINE Pembentukan Jaringan Pembentukan Vektor Masukan dan Target Menghitung Keluaran ADALINE Modifikasi Bobot dan Bias

19 Daftar Isi Pelatihan ADALINE SOAL-SOAL LATIHAN BAB 5 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB Membentuk Jaringan Inisialisasi Jaringan Inisialisasi Bobot Simulasi Jaringan Pelatihan Backpropagation Pelatihan Kelompok Pelatihan Backpropagation Mempercepat Pelatihan Backpropagation Metode Penurunan Gradien dengan Momentum (traingdm) Variabel Laju Pemahaman (traingda, traingdx) Resilient Backpropagation (trainrp) Algoritma Gradien Conjugate (traincgf, traincgp, traincgb) SOAL-SOAL LATIHAN BAB 6 PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB Jaringan Kompetitif Pengaturan Mandiri Topologi Jaringan Jarak Antar Neuron Pengelompokan Pola Jaringan Kohonen SOAL-SOAL LATIHAN... 30

20 Bab PENDAHULUAN. Jaringan Syaraf Biologi dan Tiruan.. Jaringan Syaraf Biologi Otak manusia memiliki struktur yang sangat kompleks dan memiliki kemampuan yang luar biasa. Otak terdiri dari neuron-neuron dan penghubung yang disebut sinapsis. Neuron bekerja berdasarkan impuls/sinyal yang diberikan pada neuron. Neuron meneruskannya pada neuron lain. Diperkirakan manusia memiliki 0 2 neuron dan sinapsis. Dengan jumlah yang begitu banyak, otak mampu mengenali pola, melakukan perhitungan, dan mengontrol organ-organ tubuh dengan kecepatan yang lebih tinggi dibandingkan komputer digital. Sebagai perbandingan, pengenalan wajah seseorang yang sedikit berubah (misal memakai topi, memiliki jenggot tambahan, dll) akan lebih cepat dilakukan manusia dibandingkan komputer. Axon dari neuron lain Celah Sinapsis Dendrit Dendrit neuron lain Axon dari neuron lain Gambar. Celah Sinapsis Dendrit neuron lain

21 2 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Pada waktu lahir, otak mempunyai struktur yang menakjubkan karena kemampuannya membentuk sendiri aturan-aturan/pola berdasarkan pengalaman yang diterima. Jumlah dan kemampuan neuron berkembang seiring dengan pertumbuhan fisik manusia, terutama pada umur 0-2 tahun. Pada 2 tahun pertama umur manusia, terbentuk juta sinapsis per detiknya. Neuron memiliki 3 komponen penting yaitu dendrit, soma dan axon. Dendrit menerima sinyal dari neuron lain. Sinyal tersebut berupa impuls elektrik yang dikirim melalui celah sinaptik melalui proses kimiawi. Sinyal tersebut dimodifikasi (diperkuat/diperlemah) di celah sinaptik. Berikutnya, soma menjumlahkan semua sinyal-sinyal yang masuk. Kalau jumlahan tersebut cukup kuat dan melebihi batas ambang (threshold), maka sinyal tersebut akan diteruskan ke sel lain melalui axon. Frekuensi penerusan sinyal berbeda-beda antara satu sel dengan yang lain. Neuron biologi merupakan sistem yang fault tolerant dalam 2 hal. Pertama, manusia dapat mengenali sinyal input yang agak berbeda dari yang pernah kita terima sebelumnya. Sebagai contoh, manusia sering dapat mengenali seseorang yang wajahnya pernah dilihat dari foto, atau dapat mengenali seseorang yang wajahnya agak berbeda karena sudah lama tidak dijumpainya. Kedua, otak manusia tetap mampu bekerja meskipun beberapa neuronnya tidak mampu bekerja dengan baik. Jika sebuah neuron rusak, neuron lain kadang-kadang dapat dilatih untuk menggantikan fungsi sel yang rusak tersebut...2 Jaringan Syaraf Tiruan Jaringan syaraf tiruan (JST) adalah sistem pemroses informasi yang memiliki karakteristik mirip dengan jaringan syaraf biologi.

22 PENDAHULUAN 3 JST dibentuk sebagai generalisasi model matematika dari jaringan syaraf biologi, dengan asumsi bahwa : Pemrosesan informasi terjadi pada banyak elemen sederhana (neuron) Sinyal dikirimkan diantara neuron-neuron melalui penghubung-penghubung Penghubung antar neuron memiliki bobot yang akan memperkuat atau memperlemah sinyal Untuk menentukan output, setiap neuron menggunakan fungsi aktivasi (biasanya bukan fungsi linier) yang dikenakan pada jumlahan input yang diterima. Besarnya output ini selanjutnya dibandingkan dengan suatu batas ambang. JST ditentukan oleh 3 hal : a. Pola hubungan antar neuron (disebut arsitektur jarigan) b. Metode untuk menentukan bobot penghubung (disebut metode training/learning/algoritma) c. Fungsi aktivasi Sebagai contoh, perhatikan neuron Y pada gambar.2 x w x 2 w 2 Y x 3 w 3 Gambar.2

23 4 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Y menerima input dari neuron x, x 2 dan x 3 dengan bobot hubungan masing-masing adalah w, w 2 dan w 3. Ketiga impuls neuron yang ada dijumlahkan net = x w + x 2w 2 + x 3w 3 Besarnya impuls yang diterima oleh Y mengikuti fungsi aktivasi y = f(net). Apabila nilai fungsi aktivasi cukup kuat, maka sinyal akan diteruskan. Nilai fungsi aktivasi (keluaran model jaringan) juga dapat dipakai sebagai dasar untuk merubah bobot.2 Sejarah Jaringan Syaraf Tiruan Jaringan syaraf tiruan sederhana pertama kali diperkenalkan oleh McCulloch dan Pitts di tahun 943. McCulloch dan Pitts menyimpulkan bahwa kombinasi beberapa neuron sederhana menjadi sebuah sistem neural akan meningkatkan kemampuan komputasinya. Bobot dalam jaringan yang diusulkan oleh McCulloch dan Pitts diatur untuk melakukan fungsi logika sederhana. Fungsi aktivasi yang dipakai adalah fungsi threshold. Tahun 958, Rosenblatt memperkenalkan dan mulai mengembangkan model jaringan yang disebut Perceptron. Metode pelatihan diperkenalkan untuk mengoptimalkan hasil iterasinya. Widrow dan Hoff (960) mengembangkan perceptron dengan memperkenalkan aturan pelatihan jaringan, yang dikenal sebagai aturan delta (atau sering disebut kuadrat rata-rata terkecil). Aturan ini akan mengubah bobot perceptron apabila keluaran yang dihasilkan tidak sesuai dengan target yang diinginkan. Apa yang dilakukan peneliti terdahulu hanya menggunakan jaringan dengan layer tunggal (single layer). Rumelhart (986) mengembangkan perceptron menjadi Backpropagation, yang memungkinkan jaringan diproses melalui beberapa layer.

24 PENDAHULUAN 5 Selain itu, beberapa model jaringan syaraf tiruan lain juga dikembangkan oleh Kohonen (972), Hopfield (982), dll. Pengembangan yang ramai dibicarakan sejak tahun 990 an adalah aplikasi model-model jaringan syaraf tiruan untuk menyelesaikan berbagai masalah di dunia nyata..3 Aplikasi Jaringan Syaraf Tiruan Beberapa aplikasi jaringan syaraf tiruan adalah sebagai berikut : a. Pengenalan Pola (Pattern Recognition) Jaringan syaraf tiruan dapat dipakai untuk mengenali pola (misal huruf, angka, suara atau tanda tangan) yang sudah sedikit berubah. Hal ini mirip dengan otak manusia yang masih mampu mengenali orang yang sudah beberapa waktu tidak dijumpainya (mungkin wajah/bentuk tubuh nya sudah sedikit berubah). b. Signal Processing Jaringan syaraf tiruan (model ADALINE) dapat dipakai untuk menekan noise dalam saluran telpon. c. Peramalan Jaringan syaraf tiruan juga dapat dipakai untuk meramalkan apa yang akan terjadi di masa yang akan datang berdasarkan pola kejadian yang ada di masa yang lampau. Ini dapat dilakukan mengingat kemampuan jaringan syaraf tiruan untuk mengingat dan membuat generalisasi dari apa yang sudah ada sebelumnya. Disamping area-area tersebut, jaringan syaraf tiruan juga dilaporkan dapat menyelesaikan masalah dalam bidang kontrol, kedokteran, dan lan-lain. Meskipun banyak aplikasi menjanjikan yang dapat dilakukan oleh jaringan syaraf tiruan, namun jaringan syaraf tiruan juga memiliki

25 6 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab beberapa keterbatasan umum. Pertama adalah ketidak akuratan hasil yang diperoleh. Jaringan syaraf tirun bekerja berdasarkan pola yang terbentuk pada inputnya. SOAL-SOAL LATIHAN. Apa kelebihan dan kekurangan penggunaan jaringan syaraf tiruan dibandingkan dengan metode analitik? 2. Sebutkan komponen-komponen pembentuk jaringan syaraf tiruan 3. Apakah yang disebut fungsi aktivasi? Apa manfaatnya? 4. Model jaringan syaraf tiruan apakah yang dipakai dalam metode peramalan? 5. Apakah dalam mengaplikasikan jaringan syaraf tiruan mutlak dibutuhkan bantuan program komputer? mengapa?

26 Bab 2 DASAR-DASAR MATEMATIKA Proses yang terjadi dalam jaringan syaraf tiruan banyak berhubungan dengan matriks dan vektor. Untuk itulah bab ini membahas beberapa konsep dasar matematika yang banyak dipakai dalam jaringan syaraf tiruan. 2. Vektor Vektor adalah n tupel bilangan-bilangan riil. Notasinya adalah huruf kecil seperti x, y, z... x = x x2... x n dengan x, x 2,..., x n adalah bilangan-bilangan riil Secara geometris, vektor x menyatakan garis berarah di ruang dimensi n dari titik awal (0, 0,...,0) ke titik terminal (x, x 2,..., x n). Transpose x (simbol x t ) adalah suatu vektor x yang dinyatakan dalam sebuah baris. x t = x x2... x n Tidaklah penting apakah sebuah vektor dinyatakan dalam sebuah baris ataupun sebuah kolom. Maka kadang-kadang yang disebut suatu vektor x adalah x t

27 8 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Dua buah vektor x dan y dikatakan sama (simbol x = y) apabila semua komponen yang bersesuaian sama. x x2... x n = y y2... y n apabila x = y, x 2 = y 2, x n = y n 2.. Operasi-Operasi Vektor Beberapa operasi yang dapat dilakukan pada vektor antara lain : a. Perkalian vektor dengan skalar Misalkan k adalah skalar dan x t = (x, x 2,..., x n) adalah vektor. Hasil kali k dengan x (ditulis kx) didefinisikan sebagai suatu n tupel bilangan-bilangan riil yang elemennya adalah elemenelemen vektor x dikalikan dengan k kx = kx kx... kx 2 n Secara geometris, jika k 0, maka kx menyatakan vektor di ruang dimensi n yang panjangnya k kali panjang vektor x. Jika k > 0 maka arah vektor kx sama dengan arah vektor x. Sebaliknya, jika k < 0, maka arah vektor kx berlawanan dengan arah vektor x. Jika k = 0 maka semua elemen vektor kx = 0. Vektor dengan semua elemen = 0 sering disebut vektor 0.

28 DASAR-DASAR MATEMATIKA 9 b. Penjumlahan 2 buah vektor Misalkan x dan y adalah 2 buah vektor pada ruang dimensi yang sama (misal dimensi n). Penjumlahan/pengurangan vektor x dan y (simbol x + y) adalah suatu vektor di dimensi n yang elemenelemennya adalah penjumlahan/pengurangan elemen x dengan elemen y. x x2... x n + y y2... y n = x x2 y2... x n y y n ; x x2... x n - y y2... y n = x x2 y2... x n y y n c. Hasil kali titik 2 vektor Misalkan x dan y adalah 2 buah vektor pada ruang dimensi yang sama (misal dimensi n). Perkalian titik vektor x dengan vektor y (sering disebut dot product x dan y) adalah suatu skalar yang merupakan jumlahan dari hasil kali elemen-elemen vektor x dan y yang bersesuaian Jika x = x x2... x n dan y = y y2... y n maka x.y = x y + x 2 y x n y n Perhatikan bahwa hasil kali titik 2 buah vektor menghasilkan suatu skalar, bukan suatu vektor. Dua buah vektor x dan y (keduanya bukan vektor 0) disebut ortogonal apabila xy = 0. Misalkan x, y dan z adalah vektor-vektor dalam ruang yang sama, 0 adalah vektor nol, dan c, c 2 adalah skalar. Beberapa sifat operasi vektor adalah sebagai berikut :

29 0 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab a. Operasi penjumlahan vektor dan perkalian dengan skalar i. Komutatif : x + y = y + x ii. Asosiatif : x + (y + z) = (x + y) + z c (c 2 x) = (c c 2) x iii. Distributif : c (x + y) = c x + c y (c + c 2) x = c x + c 2 x iv. Elemen Identitas x + 0 = 0 + x = 0 b. Operasi perkalian titik i. Komutatif : x.y = y.x ii. Asosiatif : (c x).y = c (x. y) = x. (c y) iii. Distributif : x. (y + z) = x. y + x.z iv. x. x = 0 jika x = 0 Contoh 2. Diketahui vektor x t = (, 2, 3), y t = (2, -3, ) dan z t = (3, 2, -). Hitunglah : a. x z b. 3 (x 7y) c. 2 x.y

30 DASAR-DASAR MATEMATIKA Penyelesaian a. x z = 2-2 = 2 2 = ( ) b. 3 (x 7y) = 3 ( ) = 3 ( 2-2 ) = 3 23 = d. 2 x.y = 2 ( (-3) + 3.) = 2 (-) = -2 Contoh 2.2 Diketahui vektor x, y dan z seperti contoh 2.. Carilah vektor v yang memenuhi 2x y + v = 7v + z Penyelesaian 2x y + v = 7v + z 6 v = 2x y z

31 2 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Maka x = 6 (2x y z) = 6 ( ) = 6 ( ) = Contoh 2.3 Diketahui vektor x t = (, 2) dan y t = (-3, 2). Carilah skalar c dan c 2 sehingga c x t + c 2 y t = (5, 2) Penyelesaian c c2 2 = 5 2 c 3c 2 2c 2c 2 = 5 2 Menurut kesamaan dua vektor, maka berarti c - 3 c 2 = 5 2 c + 2 c 2 = 2 Yang jika diselesaikan menghasilkan c = 2 dan c 2 = - Contoh 2.4 Tentukan vektor-vektor yang tegak lurus dengan vektor x t = (, -2)

32 DASAR-DASAR MATEMATIKA 3 Penyelesaian Dua buah vektor saling tegak lurus (ortogonal) bila hasil kali titiknya = 0. Vektor y t = (y, y 2) yang tegak lurus dengan x akan memenuhi persamaan : y + (-2) y 2 = 0 atau y = 2 y 2. Maka vektor yang tegak lurus dengan x berbentuk y = dengan s = bilangan riil 2y y 2 2 = 2s s Jadi ada tak berhingga vektor yang tegak lurus dengan vektor x. Semua vektor-vektor tersebut memiliki arah yang sama 2..2 Norma Vektor Misalkan x t = (x, x 2,..., x n) adalah suatu vektor. Norma/panjang vektor x didefinisikan sebagai x x x2... x n Beberapa sifat norma vektor adalah sebagai berikut : a. Jika c adalah sembarang bilangan riil, maka cx c x b. Jarak 2 buah vektor x dan y adalah x y c. x x adalah vektor searah dengan x dengan panjang =. d. Pertidaksamaan Cauchy-Schwartz : x y x y Contoh 2.5 Misalkan x t = (, -3, 2) dan y t = (2, 2, -4). Hitunglah :

33 4 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab a. 2x y b. x y c. y y d. y y Penyelesaian a. 2x + y = = Maka 2x y = ( 4) 0 = 4 2 b. x y = ( 3) ( 4) = 4 24 c. y = ( 4) = 24 Maka y y = = =

34 DASAR-DASAR MATEMATIKA 5 d. y y = = Perhatikan bahwa y y = untuk sembarang vektor y Contoh 2.6 Jika x t = (, 2, 4), carilah semua skalar c sehingga cx 3 Penyelesaian cx c x c 2 4 c 2 3 Didapat c 2 = 3 atau c = Ketergantungan Linier Himpunan vektor-vektor {x, x 2,..., x n} dikatakan bergantung linier apabila terdapat skalar c, c 2,..., c n yang tidak semuanya 0 sedemikian hingga c x + c 2x c nx n = 0. Jika tidak ada skalar dengan sifat demikian, maka himpunan vektor {x, x 2,..., x n} disebut bebas linier. Di ruang dimensi n (= R n ), terdapat paling banyak n buah vektor yang bebas linier. Setiap vektor dalam R n dapat dinyatakan sebagai kombinasi vektor-vektor yang bebas linier tersebut. Maka dikatakan bahwa vektor-vektor yang bebas linier tersebut membentuk basis bagi R n Contoh 2.7 Tentukan apakah vektor-vektor x t = (2, -, 4), y t = (3, 6, 2) dan z t = (2, 0, -4) merupakan vektor-vektor yang bebas linier.

35 6 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Penyelesaian Persamaan c x t + c 2y t + c 3 z t = 0 berarti c (2, -, 4) + c 2 (3, 6, 2) + c 3 (2, 0, -4) = 0 atau 2 c + 3 c c 3 = 0 - c + 6 c c 3 = 0 4 c + 2 c 2 4 c 3 = 0 Ketiga persamaan linier tersebut menghasilkan penyelesaian c = c 2 = c 3 = 0. Berarti ketiga vektor tersebut bebas linier 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 : A = a ij = a a... a 2 n a a... a n... a a... a m m2 mn Perhatikan bahwa matriks yang terdiri dari kolom sama dengan suatu vektor Jenis-jenis Matriks Matriks nol adalah matriks yang semua elemennya = 0

36 DASAR-DASAR MATEMATIKA 7 Matriks bujur sangkar adalah matriks yang jumlah baris = jumlah kolom Matriks diagonal D adalah matriks bujur sangkar dimana semua elemen di luar diagonal utama = 0, dan tidak semua elemen pada diagonal utama = 0. D = a a ann dengan tidak semua a, a 22,..., a nn = 0 Jika semua elemen diagonal utama pada matriks diagonal = maka matriks tersebut disebut matriks identitas (= I). I = Operasi pada Matriks Beberapa operasi yang dapat dilakukan pada matriks antara lain : a. Perkalian matriks dengan skalar Jika A adalah sembarang matriks dan c adalah skalar, maka ca adalah matriks yang elemennya merupakan perkalian elemen matriks A dengan skalar c. ca = ca ca... ca 2 n ca ca... ca n... ca ca... ca m m2 mn

37 8 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab b. Penjumlahan/pengurangan matriks Dua buah matriks dapat dijumlahkan/dikurangkan jika ordonya sama. Hasil penjumlahan/pengurangan 2 buah matriks sama dengan penjumlahan/pengurangan elemen-elemen matriks yang seletak. Jika A = maka A + B = c. Perkalian matriks a a... a 2 n a a... a n... a a... a m m2 mn dan B = a b a b... a b 2 2 n n a b a b... a b n 2n... a b a b... a b m m m2 m2 mn mn b b... b 2 n b b... b n... b b... b m m2 mn Matriks A dapat dikalikan dengan matriks B apabila jumlah kolom matriks A = jumlah baris matriks B. Apabila A berordo mxn dan B berordo nxp, maka C = A.B berordo mxp dengan elemen : c ik = n j a b = a b a 2b2... a b ij d. Transpose matriks jk i k i k in nk Transpose matriks A (simbol A t ) diperoleh dari matriks A dengan cara menukar baris dan kolomnya. Jika A berordo mxn, maka A t berordo nxm

38 DASAR-DASAR MATEMATIKA 9 Jika A = a a... a 2 n a a... a n... a a... a m m2 mn maka A t = a a... a 2 n a a... a 2 22 n2... a a... a m 2m nm Jika suatu matriks sama dengan transposenya, maka matriks tersebut dinamakan matriks simetris. Contoh 2.8 Diketahui matriks A, B, dan C sebagai berikut : A = ; B = ; C = Hitunglah (jika mungkin) : a. 2 A b. A + B c. A B d. B A e. (C B) t f. A I (dengan I adalah matriks identitas) Penyelesaian a. 2 A = =

39 20 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab b. A + B tidak mungkin dilakukan karena ordonya tidak sama (ordo A = 3x3 sedangkan ordo B = 3x2) c. A B = = d. BA tidak mungkin dilakukan karena jumlah kolom B (= 2) tidak sama dengan jumlah baris A (= 3). Kenyataan ini menunjukkan bahwa perkalian matriks tidaklah komutatif (meskipun perkalianperkalian tersebut dapat dilakukan). Secara umum AB BA e. C B = = Maka (C B) t = f. A I = = Secara umum, untuk sembarang matriks bujur sangkar A, A I = I A = A SOAL-SOAL LATIHAN. Tunjukkan bahwa untuk sembarang vektor x, maka x x =

40 DASAR-DASAR MATEMATIKA 2 2. Jelaskan mengapa operasi hasil kali titik pada sembarang vektorvektor x, y, z dan skalar c berikut ini tidak dapat dilakukan a. x. (y.z) c. xy. b. (x.y) + z d. c. (x + y) 3. Tentukan c jika vektor x t = (c, ) dan y t = (4, 3) ortogonal 4. Misalkan x.y = x.z dengan x 0. Apakah y = z? 5. Ulangi soal 4 jika x, y dan z merupakan matriks-matriks bujur sangkar dengan ordo yang sama. 6. Misalkan x = x x2... x n matriks bujur sangkar berordo nxn adalah suatu vektor dan A adalah sembarang a. Apakah operasi xa dapat dilakukan? Jika dapat, berapa ordo matriks hasilnya? b. Apakah operasi Ax dapat dilakukan? Jika dapat, berapa ordo matriks hasilnya? c. Apakah operasi x x t dapat dilakukan? Jika dapat, apakah hasilnya berupa matriks, vektor atau skalar? 7. Tunjukkan bahwa untuk setiap konstanta c, c 2 dan matriks A, berlakulah (c c 2) A = c (c 2 A) 8. Diketahui A = 3 2 ; B = 0 4 ; C = ;

41 22 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab D = Hitunglah (jika dapat dilakukan) a. ABC c. B t D b. BAC

42 Bab 3 MODEL NEURON Neuron adalah unit pemroses informasi yang menjadi dasar dalam pengoperasian jaringan syaraf tiruan. Neuron terdiri dari 3 elemen pembentuk :. Himpunan unit-unit yang dihubungkan dengan jalur koneksi. Jalur-jalur tersebut memiliki bobot/kekuatan yang berbeda-beda. Bobot yang bernilai positip akan memperkuat sinyal dan yang bernilai negatif akan memperlemah sinyal yang dibawanya. Jumlah, struktur dan pola hubungan antar unit-unit tersebut akan menentukan arsitektur jaringan (dan juga model jaringan yang terbentuk). 2. Suatu unit penjumlah yang akan menjumlahkan input-input sinyal yang sudah dikalikan dengan bobotnya. Misalkan x, x 2,..., x m adalah unit-unit input dan w j, w j2,..., w jm adalah bobot penghubung dari unit-unit tersebut ke unit keluaran Y j, maka unit penjumlah akan memberikan keluaran sebesar u j = x w j + x 2 w j x m w jm 3. Fungsi aktivasi yang akan menentukan apakah sinyal dari input neuron akan diteruskan ke neuron lain ataukah tidak.

43 24 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 3. Arsitektur Jaringan Beberapa arsitektur jaringan yang sering dipakai dalam jaringan syaraf tiruan antara lain : a. Jaringan Layar Tunggal (single layer network) Dalam jaringan ini, sekumpulan input neuron dihubungkan langsung dengan sekumpulan outputnya. Dalam beberapa model (misal perceptron), hanya ada sebuah unit neuron output. x Y w m w j w wi x i w ji Y j w mi w n x n w mn w jn Gambar 3. Y m Gambar 3. menunjukkan arsitektur jaringan dengan n unit input (x, x 2,...,x n) dan m buah unit output (Y, Y 2,..., Y m). Perhatikan bahwa dalam jaringan ini, semua unit input dihubungkan dengan semua unit output, meskipun dengan bobot yang berbeda-beda. Tidak ada unit input yang dihubungkan dengan unit input lainnya. Demikian pula dengan unit output. Besaran w ji menyatakan bobot hubungan antara unit ke-i dalam input dengan unit ke-j dalam output. Bobot-bobot ini saling independen. Selama proses pelatihan, bobot-bobot tersebut akan dimodifikasi untuk meningkatkan keakuratan hasil. Model semacam ini tepat digunakan untuk pengenalan pola karena kesederhanaannya.

44 MODEL NEURON 25 b. Jaringan Layar Jamak (multi layer network) Jaringan layar jamak merupakan perluasan dari layar tunggal. Dalam jaringan ini, selain unit input dan output, ada unit unit lain (sering disebut layar tersembunyi). Dimungkinkan pula ada beberapa layar tersembunyi. Sama seperti pada unit input dan output, unit-unit dalam satu layar tidak saling berhubungan. v x Y v p w z w j w i w m x i w p Y j v n w pi z p wmp w jp x n v pn Y m Gambar 3.2 Gambar 3.2 adalah jaringan dengan n buah unit input (x, x 2,..., x n), sebuah layar tersembunyi yang terdiri dari p buah unit (z,..., z p) dan m buah unit output (Y, Y 2,..., Y m) Jaringan layar jamak dapat menyelesaikan masalah yang lebih kompleks dibandingkan dengan layar tunggal, meskipun kadangkala proses pelatihan lebih kompleks dan lama. c. Jaringan Reccurent Model jaringan reccurent mirip dengan jaringan layar tunggal ataupun ganda. Hanya saja, ada neuron output yang memberikan sinyal pada unit input (sering disebut feedback loop)

45 26 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 3.2 Fungsi Aktivasi Dalam jaringan syaraf tiruan, fungsi aktivasi dipakai untuk menentukan keluaran suatu neuron. Argumen fungsi aktivasi adalah net masukan (kombinasi linier masukan dan bobotnya). Jika net = xw, i i maka fungsi aktivasinya adalah f (net) = f ( xw i i). Beberapa fungsi aktivasi yang sering dipakai adalah sebagai berikut : a. Fungsi threshold (batas ambang) f(x) = 0 jika x jika x a a Untuk beberapa kasus, fungsi threshold yang dibuat tidak berharga 0 atau, tapi berharga - atau (sering disebut threshold bipolar). Jadi f(x) = jika x jika x a a b. Fungsi sigmoid f(x) = e x Fungsi sigmoid sering dipakai karena nilai fungsinya yang terletak antara 0 dan dan dapat diturunkan dengan mudah. c. Fungsi identitas f (x) = f(x) ( f(x)) f(x) = x

46 MODEL NEURON 27 Fungsi identitas sering dipakai apabila kita menginginkan keluaran jaringan berupa sembarang bilangan riil (bukan hanya pada range [0, ] atau [-, ] 3.3 Bias dan Threshold Kadang-kadang dalam jaringan ditambahkan sebuah unit masukan yang nilainya selalu =. Unit yang sedemikian itu disebut Bias (lihat gambar 3.3). Bias dapat dipandang sebagai sebuah input yang nilainya =. Bias berfungsi untuk mengubah nilai threshold menjadi = 0 (bukan = a). Jika melibatkan bias, maka keluaran unit penjumlah adalah net = b xiw i i Fungsi aktivasi threshold menjadi : f (net) = jika net 0 jika net 0 x w x 2 w 2 Y b Gambar 3.3 Contoh 3.

47 28 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Suatu jaringan layar tunggal seperti gambar 3.3 terdiri dari 2 input x = 0.7 dan x 2 = 2. dan memiliki bias. Bobot garis w = 0.5 dan w 2 = -0.3 dan bobot bias = b =.2. Tentukan keluaran neuron Y jika fungsi aktivasinya adalah fungsi threshold bipolar Penyelesaian net = b xiw i =.2 + (0.7 * 0.5) + (2. * -0.3) = 0.92 i Karena net > 0 maka keluaran jaringan = y = f(net) =. 3.4 Pelatihan Dengan dan Tanpa Supervisi Berdasarkan cara memodifikasi bobotnya, ada 2 macam pelatihan yang dikenal yaitu dengan supervisi (supervised) dan tanpa supervisi (unsupervised). Dalam pelatihan dengan supervisi, terdapat sejumlah pasangan data (masukan target keluaran) yang dipakai untuk melatih jaringan hingga diperoleh bobot yang diinginkan. Pasangan data tersebut berfungsi sebagai guru untuk melatih jaringan hingga diperoleh bentuk yang terbaik. Guru akan memberikan informasi yang jelas tentang bagaimana sistem harus mengubah dirinya untuk meningkatkan unjuk kerjanya. Pada setiap kali pelatihan, suatu input diberikan ke jaringan. Jaringan akan memproses dan mengeluarkan keluaran. Selisih antara keluaran jaringan dengan target (keluaran yang diinginkan) merupakan kesalahan yang terjadi. Jaringan akan memodifikasi bobot sesuai dengan kesalahan tersebut. Jaringan perceptron, ADALINE dan

48 MODEL NEURON 29 backpropagation merupakan model-model yang menggunakan pelatihan dengan supervisi. Sebaliknya, dalam pelatihan tanpa supervisi (unsupervised learning) tidak ada guru yang akan mengarahkan proses pelatihan. Dalam pelatihannya, perubahan bobot jaringan dilakukan berdasarkan parameter tertentu dan jaringan dimodifikasi menurut ukuran parameter tersebut. Sebagai contoh, dalam model jaringan kompetitif, jaringan terdiri dari 2 layar, yaitu layar input dan layar kompetisi. Layar input menerima data eksternal. Layar kompetitif berisi neuron-neuron yang saling berkompetisi agar memperoleh kesempatan untuk merespon sifat-sifat yang ada dalam data masukan. Neuron yang memenangkan kompetisi akan memperoleh sinyal yang berikutnya ia teruskan. Bobot neuron pemenang akan dimodifikasi sehingga lebih menyerupai data masukan. Sebagai ilustrasi, pelatihan dengan supervisi dapat diandaikan sebagai skripsi yang dibimbing oleh seorang dosen. Pada setiap kali pengumpulan berkas skripsi, dosen akan mengkritik, mengarahkan dan meminta perbaikan agar kualitas skripsi meningkat. Sebaliknya, dalam pelatihan tanpa supervisi dapat dibayangkan sebagai skripsi tanpa dosen pembimbing. Mahasiswa mengerjakan skripsi sebaikbaiknya berdasarkan ukuran tertentu (misal dibandingkan dengan skripsi yang sudah ada sebelumnya atau dibandingkan dengan hasil skripsi temannya). Berdasarkan hasil yang pernah dilaporkan, model pelatihan dengan supervisi lebih banyak digunakan dan terbukti cocok dipakai dalam berbagai aplikasi. Akan tetapi kelemahan utama pelatihan dengan supervisi adalah dalam hal pertumbuhan waktu komputasinya yang beroder eksponensial. Ini berarti untuk data pelatihan yang cukup banyak, prosesnya menjadi sangat lambat.

49 30 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 3.5 Taksonomi Jaringan Syaraf Tiruan Hingga kini terdapat lebih dari 20 model jaringan syaraf tiruan. Masing-masing model menggunakan arsitektur, fungsi aktivasi dan perhitungan yang berbeda-beda dalam prosesnya. Dalam bab ini, dijelaskan pembagian jaringan syaraf tiruan berdasarkan cara pembelajaran, aplikasi, dan jenis arsitektur. Berdasarkan strategi pelatihan, model jaringan dibagi menjadi : a. Pelatihan dengan supervisi. Contoh model yang masuk dalam kategori ini antara lain model Hebbian, Perceptron, ADALINE, Boltzman, Hopfield, Backpropagation, dll b. Pelatihan tanpa supervisi Contoh model yang masuk dalam kategori ini antara lain model Competitive, Hebbian, Kohonen, LVQ (Learning Vektor Quantization), Neocognitron, dll Perhatikan bahwa ada beberapa model yang dapat dikategorikan ke dalam kedua jenis. Berdasarkan arsitekturnya, model jaringan syaraf tiruan dapat digolongkan menjadi : a. Jaringan Layar Tunggal Model yang masuk kategori ini antara lain : ADALINE, Hopfield, Perceptron, LVQ, dll b. Jaringan Layar Jamak Model yang masuk kategori ini antara lain : MADALINE, Backpropagation, Neocognitron, dll

50 MODEL NEURON 3 c. Reccurent Model yang masuk kategori ini antara lain : BAM (Bidirectional Associative Memory), Boltzman Machine, Hopfield, dll Aplikasi yang sudah berhasil ditemukan antara lain a. Klasifikasi Model yang bisa digunakan untuk aplikasi ini antara lain : ADALINE, LVQ, Backpropagation, dll b. Pengenalan Pola Model yang bisa digunakan untuk aplikasi ini antara lain : ART (Adaptive Resonance Theory), LVQ, Backpropagation, Neocognitron, dll c. Peramalan Model yang bisa digunakan untuk aplikasi ini antara lain : ADALINE, MADALINE, Backpropagation, dll d. Optimisasi Model yang bisa digunakan untuk aplikasi ini antara lain : ADALINE, Hopfield, Boltzman, Backpropagation, dll 3.6 Neuron McCulloch - Pitts Model jaringan syaraf tiruan yang digunakan McCulloch dan Pitts merupakan model yang pertama ditemukan. Model neuron McCulloch - Pitts memiliki karakteristik sebagai berikut : a. Fungsi aktivasinya biner.

51 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab b. Semua garis yang memperkuat sinyal (bobot positip) ke arah suatu neuron memiliki kekuatan (besar bobot) yang sama. Hal yang analog berlaku untuk garis yang memperlemah sinyal (bobot negatif) ke arah neuron tertentu. c. Setiap neuron memiliki batas ambang (threshold) yang sama. Apabila total input ke neuron tersebut melebihi threshold, maka neuron akan meneruskan sinyal. Gambar 3.4 menunjukkan model neuron McCulloch-Pitts. Neuron Y menerima sinyal dari (n+m) buah neuron x,..., x n, x n+,..., x n+m. n buah penghubung dari x,..., x n ke Y merupakan garis yang memperkuat sinyal (bobot positip), sedangkan m penghubung sisanya merupakan garis yang memperlemah sinyal (bobot negatif). Perhatikan bahwa semua penghubung dari x, x 2,..., x n ke Y memiliki bobot yang sama. Demikian juga semua penghubung dari x n+,..., x n+m juga memiliki bobot yang sama. Akan tetapi jika ada neuron lain (misal Y 2), maka bobot penghubung dari x ke Y boleh berbeda dengan bobot garis dari x ke Y 2 x w x n x n+ w - p Y - p x n+m Gambar 3.4 Fungsi aktivasi neuron Y adalah f (net) = 0 jika net jika net a a

52 MODEL NEURON 33 Bobot tiap garis tidak ditentukan dengan proses pelatihan, tetapi dengan metode analitik (dan coba-coba). Beberapa contoh berikut ini memaparkan bagaimana neuron McCulloch-Pitts digunakan untuk memodelkan fungsi logika sederhana. Contoh 3.2 Fungsi logika dan dengan 2 masukan x dan x 2 akan memiliki keluaran Y = bila dan hanya bila kedua masukan bernilai. Tabel kebenarannya tampak pada tabel 3. Tabel 3. x x 2 y Buatlah model neuron McCulloch-Pitts untuk menyatakan fungsi logika dan Penyelesaian Model neuron fungsi dan tampak pada gambar 3.5. Bobot tiap garis adalah = dan fungsi aktivasi memiliki nilai threshold = 2. x x 2 Y 2 Gambar 3.5

53 34 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Untuk semua kemungkinan masukan, nilai fungsi aktivasi tampak dalam tabel 3.2 Tabel 3.2 x x 2 net = 2 i xw i y = f(net) = jika net 2 0 jika net = = = = 0 0 Tampak bahwa keluaran jaringan tepat sama dengan tabel logika dan. Berarti jaringan dapat dengan tepat merepresentasikan fungsi dan. f (0,)=0 f (,)= f (0,0)=0 f (,0)=0 Gambar 3.6 Secara geometris, dalam fungsi and kita memiliki 4 titik masingmasing dengan koordinat (,), (,0), (0,) dan (0,0), masing-masing dengan nilai, 0, 0 dan 0. Masalahnya adalah mencari garis lurus yang dengan tepat memisahkan semua titik dengan nilai = 0 dalam satu bagian dan semua titik dengan nilai = dalam bagian yang lain. Ada banyak garis yang bisa dibuat. Salah satunya adalah garis x + x 2 =.5 seperti yang tampak pada gambar 3.6

54 MODEL NEURON 35 Besarnya nilai threshold dapat diganti menjadi suatu bias dengan nilai yang sama. Dengan menggunakan nilai bias, batas garis pemisah ditentukan dari persamaan net = b xiw i = 0 i b xw x2w 2 0 atau x w x b 2 w2 w2 Apabila garis pemisahnya diambil dengan persamaan x + x 2 = 2, w (atau x 2 = - x + 2), maka berarti w = - dan b 2 w = 2. 2 Ada banyak w, w 2 dan b yang memenuhi persamaan tersebut, salah satunya adalah w = w 2 = dan b = -2, seperti penyelesaian pada gambar 3.5. Pembaca dapat mencoba-coba berbagai bobot dan nilai threshold yang lainnya. Dalam contoh 3.2, jaringan hanya dibuat untuk merepresentasikan fungsi yang sederhana sehingga bobot dan threshold jaringan dapat dibuat secara analitik. Tidak diperlukan program ataupun iterasi bobot. Akan tetapi untuk masalah yang lebih kompleks (misal masukan/keluaran tidak biner atau lebih dari 2) maka penyelesaian analitik umumnya tidak dapat dipakai. Contoh 3.3 Buatlah model neuron McCulloch-Pitts untuk menyatakan fungsi logika atau Penyelesaian Fungsi logika atau dengan 2 masukan x dan x 2 akan memiliki keluaran Y = bila dan hanya bila salah satu masukannya bernilai.

55 36 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Tabel kebenarannya tampak pada tabel 3.3 Tabel 3.3 x x 2 y Model neuron fungsi atau tampak pada gambar 3.7. Bobot tiap garis adalah = dan fungsi aktivasi memiliki nilai threshold =. x x 2 Y Gambar 3.7 Untuk semua kemungkinan masukan, nilai fungsi aktivasi tampak dalam tabel 3.4 Tabel 3.4 x x 2 net = 2 i xw i y = f(net) = jika net 0 jika net. +. = = =

56 MODEL NEURON = 0 0 Contoh 3.4 Buatlah model neuron McCulloch-Pitts dengan 2 masukan x dan x 2 untuk menyatakan fungsi logika x x 2 Penyelesaian Tabel kebenaran fungsi x x 2 tampak pada tabel 3.5 Tabel 3.5 x x 2 y Perhatikan bahwa untuk memperoleh nilai threshold = jika x =, maka bobot garis yang berhubungan dengan x harus lebih besar dari bobot garis dari x 2. Akan tetapi untuk mencegah agar nilai f(,) tidak besar (sehingga nilai fungsi thresholdnya akan menjadi = ), maka bobot garis dari x 2 harus memperlemah sinyal (bobot negatif). Model neuron fungsi x x 2 tampak pada gambar 3.8. Bobot garis dari x = 2 dan bobot garis dari x 2 = - dan fungsi aktivasi memiliki nilai threshold = 2. x x Y 2

57 38 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Gambar 3.8 Contoh 3.5 Buatlah model neuron McCulloch-Pitts dengan 2 masukan x dan x 2 untuk menyatakan fungsi logika XOR Penyelesaian Tabel kebenaran fungsi XOR tampak pada tabel 3.6 Tabel 3.6 x x 2 y Jaringan untuk menyatakan fungsi XOR tidak bisa dibuat dengan unit masukan yang langsung berhubungan dengan unit keluaran seperti pada contoh-contoh terdahulu. Hal ini bisa dilihat secara geometris sebagai berikut : Keempat pasangan masukan menyatakan 4 buah titik (0,0), (0,), (,0) dan (,) yang masing-masing memiliki nilai y = 0,,, dan 0. Unit masukan yang langsung berhubungan dengan unit keluaran dapat dipandang sebagai sebuah garis lurus yang memisahkan semua titik bernilai 0 (titik (,) dan (0,0)) kedalam satu bagian dengan semua titik lain yang bernilai (titik (,0) dan (0,)) kedalam bagian yang lain. Hal f (0,)= f (,)=0 f (0,0)=0 f (,0)=

58 MODEL NEURON 39 tersebut tidak dapat dengan hanya menggunakan sebuah garis lurus. Minimal harus ada 2 buah garis, seperti yang tampak pada gambar 3.9. Gambar 3.9 x XOR x 2 x x2 x x 2. Maka dibutuhkan jaringan dengan sebuah layar tersembunyi (hidden layer) seperti tampak pada gambar 3.0. Layar tersembunyi terdiri dari 2 neuron yang masingmasing dipakai untuk membentuk x x 2 dan x x 2. Unitunit pada layar tersembunyi dihubungkan langsung dengan keluaran melalui fungsi atau Perhatikan bagaimana hubungan antara unit-unit input dengan unit di layar tersembunyi. Jaringan tersebut merupakan gabungan dari 2 buah fungsi dan tidak seperti dalam contoh 3.4. Bobot garisnya adalah 2 dan. Hubungan antara unit tersembunyi ke fungsi keluaran adalah fungsi atau, maka bobotnya sama seperti fungsi atau pada contoh 3.3 dengan kedua unit pada layar tersembunyi sebagai unit masukan. x 2 z 2 x z 2 Y 2 Gambar 3.0 Untuk semua kemungkinan masukan x dan x 2, nilai fungsi aktivasi z dan z 2 tampak dalam tabel 3.4 a Tabel 3.4 a x x 2 net z = f(net ) net 2 z 2 = f(net 2)

59 40 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab.2 + (-) = 0 (-) +.2 = (-) = 2 (-) = (-) = (-) +.2 = (-) = (-) = 0 0 Selanjutnya, nilai-nilai z dan z 2 ini diteruskan ke fungsi aktivasi Y (dengan bobot dari z =, dari z 2 = dan threshold = ). Hasilnya tampak pada tabel 3.4 b Tabel 3.4 b z z 2 net Y = f(net) = = = = 0 0 SOAL-SOAL LATIHAN. Buktikan bahwa fungsi aktivasi sigmoid f(x) = turunan f (x) = f(x) ( f(x)) e x memiliki 2. Gambarkanlah jaringan syaraf tiruan layar jamak yang terdiri dari 5 unit masukan, 2 layar tersembunyi yang masing-masing berisi 4 dan 3 neuron, serta unit keluaran tunggal. 3. Suatu neuron j menerima masukan dari 4 neuron lain dengan fungsi aktivasi masing-masing bernilai 0, -20, 4 dan -2. Bobot

60 MODEL NEURON 4 dari keempat neuron tersebut ke neuron j masing-masing sebesar 0.8, 0.2, -.0 dan Hitunglah keluaran neuron j jika fungsi aktivasi yang digunakan pada neuron j adalah : a. Threshold biner (0 atau ) dengan nilai threshold = 2 b. Sigmoid c. Sigmoid dengan sebuah tambahan bias 4. Buatlah jaringan untuk menyatakan fungsi NAND dengan 2 masukan biner x dan x 2 5. Perhatikan jaringan syaraf McCulloch-Pitts dengan input biner yang tampak pada gambar 3.. Unit N 3, N 4 dan N 5 masingmasing memiliki threshold = 2. Tentukan respon/keluaran unit N 5 untuk semua kemungkinan masukan N dan N 2 N N 3 2 N N 4 2 N 5 Gambar Buatlah model McCulloch-Pitts untuk menyatakan fungsi logika AND dalam 3 variabel x, x 2, dan x 3

61 Bab 5 PERCEPTRON Model jaringan perceptron ditemukan oleh Rosenblatt (962) dan Minsky Papert (969). Model tersebut merupakan model yang memiliki aplikasi dan pelatihan yang paling baik pada era tersebut. 5. Arsitektur Jaringan b x w x 2... w 2 w n Y x n Arsitektur jaringan perceptron mirip dengan arsitektur jaringan Hebb. Gambar 5. Jaringan terdiri dari beberapa unit masukan (ditambah sebuah bias), dan memiliki sebuah unit keluaran. Hanya saja fungsi aktivasi bukan merupakan fungsi biner (atau bipolar), tetapi memiliki kemungkinan nilai -, 0 atau. Untuk suatu harga threshold θ yang ditentukan :

62 60 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab f (net) = 0 jika net > θ jika θ net θ jika net < θ Secara geometris, fungsi aktivasi membentuk 2 garis sekaligus, masing-masing dengan persamaan : wx + wx wx n n + b= θ dan wx + wx + + wx + b= θ n n 5.2 Pelatihan Perceptron Misalkan s adalah vektor masukan dan t adalah target keluaran α adalah laju pemahaman (learning rate) yang ditentukan θ adalah threshold yang ditentukan Algoritma pelatihan perceptron adalah sebagai berikut :. Inisialisasi semua bobot dan bias (umumnya w i = b = 0) Tentukan laju pemahaman biasanya α diberi nilai = (=α ). Untuk penyederhanaan, 2. Selama ada elemen vektor masukan yang respon unit keluarannya tidak sama dengan target, lakukan : a. Set aktivasi unit masukan x i = s i (i =,..., n) b. Hitung respon unit keluaran : net = xiw + b i i

63 PERCEPTRON 6 y = f (net) = 0 jika net > θ jika θ net θ jika net < θ c. Perbaiki bobot pola yang mengandung kesalahan (y t) menurut persamaan : w i (baru) = w i (lama) + Δ w (i =,..., n) dengan Δ w = α t x i b (baru) = b (lama) + Δ b dengan Δ b = α t Ada beberapa hal yang perlu diperhatikan dalam algoritma tersebut : a. Iterasi dilakukan terus hingga semua pola memiliki keluaran jaringan yang sama dengan targetnya (jaringan sudah memahami pola). Iterasi tidak berhenti setelah semua pola dimasukkan seperti yang terjadi pada model Hebb b. Pada langkah 2 (c), perubahan bobot hanya dilakukan pada pola yang mengandung kesalahan (keluaran jaringan target). Perubahan tersebut merupakan hasil kali unit masukan dengan target dan laju pemahaman. Perubahan bobot hanya akan terjadi kalau unit masukan 0. c. Kecepatan iterasi ditentukan pula oleh laju pemahaman (=α dengan 0 α ) yang dipakai. Semakin besar harga α, semakin sedikit iterasi yang diperlukan. Akan tetapi jika α terlalu besar, maka akan merusak pola yang sudah benar sehingga pemahaman menjadi lambat. Algoritma pelatihan perceptron lebih baik dibandingkan model Hebb karena :

64 62 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab. Setiap kali sebuah pola dimasukkan, hasil keluaran jaringan dibandingkan dengan target yang sesungguhnya. Jika terdapat perbedaan, maka bobot akan dimodifikasi. Jadi tidak semua bobot selalu dimodifikasi dalam setiap iterasinya. 2. Modifikasi bobot tidak hanya ditentukan oleh perkalian antara target dengan masukan, tapi juga melibatkan suatu laju pemahaman (learning rate) yang besarnya bisa diatur. 3. Pelatihan dilakukan berulang-ulang untuk semua kemungkinan pola yang ada hingga jaringan dapat mengerti polanya (ditandai dengan samanya semua keluaran jaringan dengan target keluaran yang diinginkan). Satu siklus pelatihan yang melibatkan semua pola disebut epoch. Dalam jaringan Hebb, pelatihan hanya dilakukan dalam satu epoch saja. Teorema konvergensi perceptron menyatakan bahwa apabila ada bobot yang tepat, maka proses pelatihan akan konvergen ke bobot yang tepat tersebut. Contoh 5. Buatlah perceptron untuk mengenali fungsi logika dan dengan masukan dan keluaran bipolar. Untuk inisialisasi, gunakan bobot dan bias awal = 0, α = dan threshold = θ = 0 Penyelesaian Tabel masukan dan target fungsi logika dan dengan masukan dan keluaran bipolar tampak dalam tabel 5. Tabel 5. Masukan Target x x 2 t

65 PERCEPTRON Untuk threshold = 0, maka fungsi aktivasi menjadi : y = f (net) = jika net > 0 0 jika net = 0 jika net < 0 Iterasi untuk seluruh pola yang ada disebut epoch Tabel 5.2 menunjukkan hasil pada epoch pertama. Tabel 5.2 Masukan Target y Perubahan Bobot Bobot Baru (x x 2 ) t net = f (net) ( w Δ w2 Δ Δ b ) (w w 2 b) inisialisasi (0 0 0) ( ) 0 0 ( ) ( ) ( - ) - (- -) (0 2 0) (- ) - 2 ( - -) ( -) (- - ) (0 0 0) ( -) Pada input pertama (x, x 2 ) = ( ). Harga net dihitung berdasarkan bobot yang sudah ada sebelumnya yaitu (w w 2 b) = (0 0 0). Maka net = xiwi + b = (0) + (0) + 0 = 0 sehingga f (net) = f(0) = 0

66 64 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Keluaran jaringan (= f(net) = 0) tidak sama dengan target yang diinginkan (dalam iterasi ini adalah ), maka bobot diubah menggunakan rumusan Δ w = α t x i = t x i (karena α =). Bobot baru = bobot lama + Δ w Input pola kedua dan seterusnya dihitung secara analog. Pada pola terakhir (x, x 2 ) = (- - ), harga f(net) = - yang sama dengan targetnya. Maka bobot tidak diubah. Hal ini dinyatakan dengan kondisi Δ w = 0 Perhatikan bagaimana perubahan persamaan garis yang terbentuk dalam setiap pola input. Garis pemisah pola terbentuk dari persamaan wx + wx 2 2+ b= θ dan wx + wx 2 2+ b= θ. Karena θ = 0 maka hanya terbentuk sebuah garis saja. Hasil iterasi pola pertama : w =, w 2 = dan b =. Maka garis pemisahnya memiliki persamaan : x + x 2 + = 0 (atau x + x 2 = -), yang secara geometris dapat digambarkan pada gambar 5.2 (a). - x 2 - x 2 - x 2 - x - x - x Gambar 5.2 (a) Gambar 5.2 (b) Gambar 5.2 (c) Persamaan garis untuk tiap iterasi tampak pada tabel 5.3 Tabel 5.3 Masukan Bobot Baru Persamaan (x x 2 ) (w w 2 b) Garis ( ) ( ) x + x 2 = -

67 PERCEPTRON 65 ( - ) (0 2 0) x 2 = 0 (- ) ( -) x + x 2 = (- - ) ( -) x + x 2 = Gambar 5.2 (a) (b) masing-masing menunjukkan garis pemisah untuk pola dan pola ke-2, sedangkan gambar 5.2 (c) menunjukkan garis pola 3 dan 4. Tampak bahwa pada gambar 5.2 (a), garis memisahkan dengan benar pola dan 4. Garis pada gambar 5.2 (b) memisahkan dengan benar pola, 2 dan 4. Berikutnya garis pada gambar 5.2 (c) memisahkan dengan benar semua pola menjadi 2 bagian. 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 Dalam iterasi tersebut, untuk semua pola nilai f (net) = t sehingga tidak dilakukan perubahan bobot. Karena f (net) = t untuk semua pola maka jaringan sudah mengenal semua pola sehingga iterasi dihentikan. Tabel 5.4 Masukan Target y Perubahan Bobot Bobot Baru (x x 2 ) t net = f (net) ( w Δ w2 Δ Δ b ) (w w 2 b) bobot yang diperoleh dari epoch pertama ( -) ( ) (0 0 0) ( -) ( - ) (0 0 0) ( -)

68 66 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab (- ) (0 0 0) ( -) (- - ) (0 0 0) ( -) Contoh 5.2 Ulangi contoh 5., tapi menggunakan masukan biner dan keluaran bipolar. Gunakan α = dan threshold = θ = 0.2 Penyelesaian Dengan threshold = 0.2, maka fungsi aktivasi menjadi : y = f (net) = jika net > jika 0.2 net 0.2 jika net < 0.2 Tabel 5.5 adalah hasil iterasi epoch pertama Tabel 5.5 Masukan Target y Perubahan Bobot Bobot Baru (x x 2 ) t net = f (net) ( w Δ w2 Δ Δ b ) (w w 2 b) inisialisasi (0 0 0) ( ) 0 0 ( ) ( ) ( 0 ) - 2 (- 0 -) (0 0) (0 ) - (0 - -) (0 0 -) (0 0 ) (0 0 0) (0 0 -) Tampak hanya pola masukan terakhir saja yang benar (f(net) = target). Maka iterasi harus dilanjutkan ke epoch berikutnya.

69 PERCEPTRON 67 Perhatikan bahwa dengan threshold yang 0, maka akan terbentuk 2 buah garis pemisah pola. Dalam contoh ini, persamaan garis yang terbentuk adalah wx + wx 2 2+ b= 0.2 dan wx + wx 2 2+ b= 0.2. Sebagai contoh, setelah pola pertama dimasukkan, maka garis yang terbentuk memiliki persamaan x+ x2 + = 0.2 (atau x+ x2 = 0.8 ) dan x+ x2 + = 0.2 (atau x+ x2 =.2 ). Garis ini akan mengenali pola pertama dan terakhir (lihat gambar 5.3). - x 2 - x x +x 2 = -0.8 x +x 2 = -.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 Masukan Target y Perubahan Bobot Bobot Baru (x x 2 ) t net = f (net) ( w Δ w2 Δ Δ b ) (w w 2 b) epoch 2 : Bobot dari epoch - (0 0 -) ( ) - - ( ) ( 0) ( 0 ) - (- 0 -) (0 -) (0 ) (0 - -) (0 0-2) (0 0 ) (0 0 0) (0 0-2)

70 68 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Iterasi dilanjutkan untuk epoch ketiga dan seterusnya. Hasil iterasi tampak dalam tabel 5.7 Tabel 5.7 Masukan Target y Perubahan Bobot Bobot Baru (x x 2 ) t net = f (net) ( w epoch 3 : Δ w2 Δ Δ b ) (w w 2 b) ( ) -2 - ( ) ( -) ( 0 ) (- 0 -) (0-2) (0 ) (0 0 0) (0-2) (0 0 ) (0 0 0) (0-2) epoch 4 : ( ) - - ( ) ( 2 -) ( 0 ) (- 0 -) (0 2-2) (0 ) (0 - -) (0-3) (0 0 ) (0 0 0) (0-3) epoch 5 : ( ) -2 - ( ) ( 2-2) ( 0 ) (0 0 0) ( 2-2) (0 ) (0 - -) ( -3) (0 0 ) (0 0 0) ( -3) epoch 6 :

71 PERCEPTRON 69 ( ) - - ( ) (2 2-2) ( 0 ) (- 0 -) ( 2-3) (0 ) (0 0 0) ( 2-3) (0 0 ) (0 0 0) ( 2-3) epoch 7 : ( ) 0 0 ( ) (2 3-2) ( 0 ) (- 0 -) ( 3-3) (0 ) (0 - -) ( 2-4) (0 0 ) (0 0 0) ( 2-4) epoch 8 : ( ) - - ( ) (2 3-3) ( 0 ) (0 0 0) (2 3-3) (0 ) (0 - -) (2 2-4) (0 0 ) (0 0 0) (2 2-4) epoch 9 : ( ) 0 0 ( ) (3 3-3) ( 0 ) (- 0 -) (2 3-4) (0 ) (0 0 0) (2 3-4) (0 0 ) (0 0 0) (2 3-4) epoch 0 : ( ) (0 0 0) (2 3-4)

72 70 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab ( 0 ) (0 0 0) (2 3-4) (0 ) (0 0 0) (2 3-4) (0 0 ) (0 0 0) (2 3-4) Setelah 0 epoch, semua f(net) = t sehingga jaringan telah mengenal pola dan iterasi dihentikan. Persamaan garisnya adalah 2x + 3x 2 4 = 0.2 (atau 2x + 3x 2 = 4.2) dan 2x + 3x 2 4 = -0.2 (atau 2x + 3x 2 = 3.8) x 2-2x +3x 2 = x x +3x 2 = 3.8 Gambar 5.4 Contoh 5.3 Diketahui perceptron dengan 3 masukan biner x, x 2, x 3, sebuah bias dan sebuah keluaran bipolar. Carilah bobot yang akan mengenali pola sebagai berikut : target keluaran bernilai apabila semua masukan bernilai, dan target bernilai = - 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 = α = dan threshold = θ = 0. 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

73 PERCEPTRON 7 Tabel 5.8 Masukan Target x x 2 x 3 t Iterasi yang dilakukan tampak pada tabel 5.9. Kolom perubahan bobot yang kosong berarti ( Δw Δw2 Δw3 Δ b ) = ( ). Ini terjadi jika f (net) = t Tabel 5.9 Masukan Target y Perubahan Bobot Bobot Baru (x x 2 x 3 ) t net = f (net) ( w Δw Δ Δw2 3 Δ b ) (w w 2 w 3 b) epoch : inisialisasi (0 0 0) ( ) 0 0 ( ) ( ) ( 0 ) - 3 ( ) (0 0 0) ( 0 ) - ( ) ( ) (0 ) ( ) epoch 2 : ( ) -2 - ( ) (0 0)

74 72 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab ( 0 ) - ( ) (- 0 -) ( 0 ) (- 0 -) (0 ) ( ) ( ) epoch 3 : ( ) -4 - ( ) (0 0 -) ( 0 ) (0 0 -) ( 0 ) ( ) ( ) (0 ) ( ) epoch 4 : ( ) -3 - ( ) (0 -) ( 0 ) ( ) (- 0-2) ( 0 ) (- 0-2) (0 ) (- 0-2) epoch 5 : ( ) -2 - ( ) (0 2 -) ( 0 ) ( ) ( ) ( 0 ) ( ) (0 ) ( ) (- - -3) dan seterusnya...

75 PERCEPTRON 73 epoch 0 : ( ) -3 - ( ) ( 2-3) ( 0 ) ( 2-3) ( 0 ) ( ) (0-4) (0 ) (0-4) epoch 20 : ( ) -2 - ( ) ( ) ( 0 ) ( ) ( 0 ) ( ) ( 2 3-7) (0 ) ( 2 3-7) epoch 25 : ( ) 0 0 ( ) ( ) ( 0 ) ( ) ( ) ( 0 ) ( ) (0 ) ( ) epoch 26 : ( ) ( ) ( 0 ) ( ) ( 0 ) ( ) (0 ) ( )

76 74 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Tampak bahwa jaringan dapat mengenali semua pola yang diberikan setelah 26 epoch. Tampak disini keunggulan perceptron dibandingkan model Hebb. Susunan pola yang tidak dapat dikenali oleh model Hebb ternyata dapat dikenali oleh perceptron. 5.3 Pengenalan Pola Karakter Perceptron dapat pula dipakai untuk mengenali pola karakter. Dengan berbagai pola masukan yang menyerupai huruf-huruf alphabeth, perceptron dapat dilatih untuk mengenalinya Pengenalan Sebuah Pola Karakter Algoritma untuk mengenali apakah pola masukan yang diberikan menyerupai sebuah karakter tertentu (misal mirip huruf A ) atau tidak adalah sebagai berikut :. Nyatakan tiap pola masukan sebagai vektor bipolar yang elemennya adalah tiap titik dalam pola tersebut. 2. Berikan nilai target = + jika pola masukan menyerupai huruf yang diinginkan. Jika sebaliknya, berikan nilai target = - 3. Berikan inisialisasi bobot, bias, laju pemahaman dan threshold 4. Lakukan proses pelatihan perceptron seperti bab 5.2

77 PERCEPTRON 75 Contoh 5.4 Diketahui 6 buah pola masukan seperti gambar 5.5 :.. # # # #..... #. #.... #. #... # # # # #.. #... #.. #... #. # # #. # # # # # # # # #.. #.... #. #.... #. #.... #. # # # # #.. #.... #. #.... #. #.... # # # # # # #... # # # # #. #.... # # # # # # #.... #.. # # # #. Pola Pola 2 Pola 3... # # #..... #. #.... #. #... #... #.. # # # # #.. #... #.. #... #. # # # # # #. #..... # #..... # #..... # # # # # # #. #..... # #..... # #..... # # # # # # #... # # #... #... #. #..... # # # # #..... #. #... #... # # #.. Pola 4 Pola 5 Pola 6 Gambar 5.5 Buatlah model perceptron untuk mengenali pola A. 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 = + dan titik bertanda. diberi nilai -. Pembacaan pola dilakukan dari kiri ke kanan, dimulai dari baris paling atas.

78 76 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Vektor masukan pola adalah ( ) Vektor masukan pola 2 adalah ( ) Vektor masukan pola 3 adalah ( ) Vektor masukan pola 4 adalah ( ) Vektor masukan pola 5 adalah ( ) Vektor masukan pola 6 adalah ( ) Target bernilai = + bila pola masukan menyerupai huruf A. Jika tidak, maka target bernilai = -. Pola yang menyerupai huruf A adalah pola dan pola 4. Pasangan pola dan targetnya tampak pada tabel 5.0

79 PERCEPTRON 77 Tabel 5.0 Pola Masukan Pola Pola 2 Pola 3 Pola 4 Pola 5 Pola 6 Target Maka perceptron yang dipakai untuk mengenali pola huruf A (atau bukan A ) memiliki 63 unit masukan, sebuah bias dan sebuah unit keluaran. Misalkan bobot awal diambil = 0 untuk semua bobot maupun bias, laju pemahaman diambil α = dan threshold = 0.5 Pelatihan dilakukan dengan cara memasukkan 63 unit masukan (atau sebuah pola huruf). Dihitung net = 63 i= aktivasi dihitung menggunakan persamaan x w i i + b. Berikutnya, fungsi y = f (net) = jika net > jika 0.5 net 0.5 jika net < 0.5 Apabila f (net) target, maka bobot dan bias diubah Proses pelatihan dilakukan terus hingga semua keluaran jaringan sama dengan targetnya.

80 78 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Pengenalan Beberapa Pola Karakter Pengenalan beberapa pola karakter sekaligus (misal A atau bukan A, B atau bukan B, dan seterusnya) dilakukan dengan cara menggabungkan beberapa model perceptron bab Jadi ada beberapa unit keluaran sekaligus, seperti yang tampak pada gambar 5.6 b x w x 2... b m w 2 w m w n w m2 w mn y... y m x n Gambar 5.6 Setiap unit masukan dihubungkan dengan setiap unit target. Bobot penghubung dari unit x i ke y j adalah w ji (perhatikan bagaimana indeks dibuat). Demikian juga bias dihubungkan dengan semua unit keluaran dengan bobot masing-masing b, b 2,... b m Algoritma pelatihan perceptron untuk pengenalan beberapa pola sekaligus adalah sebagai berikut :. Nyatakan tiap pola masukan sebagai vektor bipolar yang elemennya adalah tiap titik dalam pola tersebut. 2. Berikan nilai target t j = + jika pola masukan menyerupai huruf yang diinginkan. Jika sebaliknya, berikan nilai target = t j = - (j =, 2,..., m) 3. Berikan inisialisasi bobot, bias, laju pemahaman dan threshold 4. Lakukan proses pelatihan perceptron seperti bab 5.3 untuk tiap unit keluaran sebagai berikut :

81 PERCEPTRON 79 a. Hitung respon unit keluaran ke-j : net j = xiw ji + b j i y j = f (net j ) = jika net j > θ 0 jika θ net j θ jika net j < θ b. Perbaiki bobot pola yang mengandung kesalahan (y j t j ) menurut persamaan : w ji (baru) = w ji (lama) + α t j x i b j (baru) = b j (lama) + α t j c. Lakukan langkah 4a b terus menerus hingga t j = y j ; j =,.. m Contoh 5.5 Diketahui 6 buah pola masukan seperti gambar 5.5 Buatlah model perceptron untuk mengenali pola A, B, dan C. 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. Tabel 5. Pola Masukan t t 2 t 3 Pola - - Pola 2 - -

82 80 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Pola Pola Pola Pola Selanjutnya iterasi dapat dibuat seperti contoh 5.2 dan 5.3, dengan beberapa perubahan sebagai berikut : Vektor masukan terdiri dari 36 elemen x, x 2,, x 36 dan sebuah bias b Ada 3 target t, t 2 dan t 3 Ada 3 kolom net yaitu net, net 2 dan net 3, masingmasing merupakan hasil kali bobot dengan vektor masukan Ada 3 buah y yang merupakan fungsi aktivasi ketiga kolom net. y = f(net ), y 2 = f(net 2 ), y 3 = f(net 3 ) Ada 3*63 buah kolom perubahan bobot yaitu Δw, Δw2,..., Δ w,63, Δw2, Δw22,..., Δ w2,63,, Δw, Δw,..., Δ w ,63 Ada 3*63 buah bobot, masing-masing : w, w2,..., w,63, w2, w22,..., w 2,63,, w3, w32,..., w 3,63 SOAL-SOAL LATIHAN. Selesaikan kembali contoh 5.3 tapi dengan menggunakan laju pemahaman yang lebih kecil yaitu 0.5. Apa pengaruhnya terhadap jumlah iterasi yang dibutuhkan? 2. Buatlah iterasi sebanyak 2 epoch contoh 5.4 dan 5.5.

83 PERCEPTRON 8 3. Buatlah perceptron untuk mengenali pola yang terbentuk pada fungsi logika XOR dengan α = dan θ = 0.2 a. tanpa menggunakan bias (jika mungkin) b. menggunakan bias c. Tunjukkan secara grafik bahwa tanpa bias, perceptron tidak akan mampu mengenali pola secara benar. 4. Buatlah model perceptron yang dapat dipakai untuk membentuk klasifikasi berikut ini (perhatikan bahwa pola tersebut berarti bahwa 2 input pertama merupakan anggota kelas dan 2 input terakhir bukan anggota kelas) Masukan Target x x 2 x 3 x 4 t Gunakan α =, θ dan bobot awal = 0 5. Buatlah program komputer (menggunakan bahasa yang anda kuasai) untuk melatih perceptron pada contoh 5.4. Apakah perceptron mampu membedakan pola huruf A dari pola huruf lain? Berapa epoch yang dibutuhkan?

84 Bab 6 ADALINE 6. Pelatihan ADALINE Model ADALINE (Adaptive Linear Neuron) ditemukan oleh Widrow & Hoff (960). Arsitekturnya mirip dengan perceptron. Beberapa masukan (dan sebuah bias) dihubungkan langsung dengan sebuah neuron keluaran. Perbedaan dengan perceptron adalah dalam hal cara modifikasi bobotnya. Bobot dimodifikasi dengan aturan delta (sering juga disebut least mean square). Selama pelatihan, fungsi aktivasi yang dipakai adalah fungsi identitas. net = xi wi i b y = f (net) = net = xi wi i b Kuadrat selisih antara target (t) dan keluaran jaringan (f (net)) merupakan error yang terjadi. Dalam aturan delta, bobot dimodifikasi sedemikian hingga errornya minimum. E = 2 t f ( net ) = t x w b i i i 2 E merupakan fungsi bobot w i. Penurunan E tercepat terjadi pada arah E w = 2 t xi wi b x i = 2 t y x i. Maka perubahan i bobot adalah : i

85 84 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab w t y x dengan merupakan bilangan positip kecil i (umumnya diambil = 0,) i Algoritma pelatihan ADALINE adalah sebagai berikut :. Inisialisasi semua bobot dan bias (umumnya w i = b = 0) Tentukan laju pemahaman (= ). Untuk penyederhanaan, biasanya diberi nilai kecil (= 0.) Tentukan toleransi kesalahan yang diijinkan 2. Selama max w i > batas toleransi, lakukan : i a. Set aktivasi unit masukan x i = s i (i =,..., n) b. Hitung respon unit keluaran : net = xw i i + b i y = f (net) = net c. Perbaiki bobot pola yang mengandung kesalahan (y t) menurut persamaan : w i (baru) = w i (lama) + (t y) x i b (baru) = b (lama) + (t y) Setelah proses pelatihan selesai, ADALINE dapat dipakai untuk pengenalan pola. Untuk itu, umumnya dipakai fungsi threshold bipolar (meskipun tidak menutup kemungkinan digunakan bentuk lainnya). Caranya adalah sebagai berikut :

86 ADALINE 85. Inisialisasi semua bobot dan bias dengan bobot dan bias hasil pelatihan 2. Untuk setiap input masukan bipolar x, lakukan : a. Set aktivasi unit masukan x i = s i (i =,..., n) b. Hitung net vektor keluaran : net = xw i i + b i c. Kenakan fungsi aktivasi : y = jika net 0 jika net 0 Contoh 6. Gunakan model ADALINE untuk mengenali pola fungsi logika dan dengan masukan dan target bipolar : Tabel 6. Masukan Target x x 2 t Gunakan batas toleransi = 0.05 dan = 0.

87 86 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Penyelesaian Dengan = 0., maka perubahan bobotnya = w i = 0. (t f(net)) x i = 0. (t y) x i. Iterasi untuk epoch- tampak pada tabel 6.2. Dalam tabel 6.2, f(net) = net Tabel 6.2 Masukan y = Perubahan Bobot Bobot Baru (x x 2 ) t net f (net) t - y ( w w 2 b ) (w w 2 b) Inisialisasi (0 0 0) ( ) 0 0 ( ) ( ) ( - ) ( ) ( ) (- ) ( ) ( ) (- - ) ( ) ( ) Maksimum w i = 0.07 > toleransi, maka iterasi dilanjutkan untuk epoch kedua, yang tampak pada tabel 6.3 Tabel 6.3 Masukan y = Perubahan Bobot Bobot Baru (x x 2 ) t net f (net) t - y ( w w 2 b ) (w w 2 b) Inisialisasi ( ) ( ) ( ) ( ) ( - ) ( ) ( ) (- ) ( ) ( ) (- - ) ( ) ( )

88 ADALINE 87 Maksimum w i = 0.02 < toleransi, maka iterasi dihentikan dan bobot terakhir yang diperoleh (w = 0.29, w 2 = 0.26 dan b = -0.32) merupakan bobot yang digunakan dalam pengenalan polanya. Tabel 6.4 merupakan pengenalan pola fungsi dan menggunakan bobot hasil pelatihan. Perhatikan bahwa fungsi aktivasi yang dipakai berbeda dengan fungsi aktivasi pada pelatihan. Dalam pengenalan jika net 0 pola, fungsi aktivasinya adalah : y = jika net 0 Tabel 6.4 Masukan net y x x Tampak bahwa keluaran jaringan tepat sama dengan targetnya. Disimpulkan bahwa pola dapat dikenali dengan sempurna menggunakan bobot hasil pelatihan Contoh 6.2 Ulangi contoh 6., tapi menggunakan = 0.2 Penyelesaian Tabel 6.5 merupakan hasil iterasi ADALINE dengan menggunakan = 0.2

89 88 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Tabel 6.5 Masukan y = Perubahan Bobot Bobot Baru (x x 2 ) t net f (net) t - y ( w w 2 b ) (w w 2 b) Inisialisasi (0 0 0) ( ) 0 0 ( ) ( ) ( - ) ( ) ( ) (- ) ( ) ( ) (- - ) ( ) ( ) Maksimum w i = 0.05 = toleransi, maka iterasi dihentikan dan bobot terakhir yang diperoleh (w = 0.3, w 2 = 0.2 dan b = -0.38) merupakan bobot yang digunakan dalam pengenalan polanya. Dengan cara seperti perhitungan tabel 6.4, dapat dicek bahwa bobot yang diperoleh akan mengenali semua pola dengan benar Dari contoh 6. 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. menunjukkan arsitektur MADALINE untuk 2 buah masukan x dan x 2, sebuah layar tersembunyi yang terdiri dari 2 unit neuron tersembunyi z dan z 2, dan sebuah keluaran Y. Arsitektur

90 ADALINE 89 MADALINE untuk lebih dari 2 unit masukan (atau lebih dari 2 unit tersembunyi) dapat dibentuk secara analog. b x w z b 3 v w 2 w 2 Y v 2 x 2 w 22 z 2 b 2 Gambar 6. Keluaran dari unit tersembunyi z dan z 2 adalah nilai fungsi aktivasi (dan threshold) yang diterima dari x dan x 2. Demikian pula unit keluaran Y merupakan nilai fungsi aktivasi dari z dan z 2. Meskipun keluaran z dan z 2 masing-masing merupakan fungsi linier, tetapi keluaran Y bukanlah fungsi linier x dan x 2 karena adanya unit tersembunyi. Adanya unit tersembunyi dalam MADALINE akan meningkatkan kapabilitas komputasi dibandingkan ADALINE, meskipun pelatihannya juga lebih kompleks. Pada awal ditemukannya MADALINE (Widrow dan Hoff (960)), hanya bobot ke unit tersembunyi (w, w 2, w 2, w 22 dalam gambar 6.) saja yang dimodifikasi selama proses pelatihan. Bobot ke unit keluaran merupakan kuantitas yang tetap. Modifikasi MADALINE (Widrow, Winter dan Baxter (987)) dilakukan dengan memodifikasi semua bobotnya. Dalam algoritma MADALINE mula-mula, bobot v, v 2, dan bias b 3 yang diteruskan ke Y diatur sedemikian hingga keluaran Y akan = jika salah satu keluaran dari z atau z 2 (atau keduanya) =. Keluaran Y

91 90 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab = - jika keluaran z maupun z 2 = -. Dengan kata lain, unit Y membentuk fungsi logika atau dengan masukan dari z dan z 2. Maka diambil v = v 2 = ½ dan b 3 = ½. Algoritma pelatihan MADALINE mula-mula untuk pola masukan dan target bipolar adalah sebagai berikut :. Inisialisasi semua bobot dan bias dengan bilangan acak kecil. Inisialisasi laju pemahaman (= ) dengan bilangan kecil. 2. Selama perubahan bobot lebih besar dari toleransi (atau jumlah epoch belum melebihi batas yang ditentukan), lakukan langkah Set aktifvasi unit masukan : x i = s i untuk semua i 2.2. Hitung net input untuk setiap unit tersembunyi ADALINE (z, z 2,...) z in_ j = b j + xw i ji i 2.3. Hitung keluaran setiap unit tersembunyi dengan menggunakan fungsi aktivasi bipolar : z j = f (z in_ j) = jika z 0 in _ j jika z 0 in _ j 2.4. Tentukan keluaran jaringan y _in = b k + zv j j j y = f (y_ in) = jika y 0 in jika y 0 in

92 ADALINE Hitung error dan tentukan perubahan bobot Jika y = target, maka tidak dilakukan perubahan bobot Jika y target : Untuk t =, ubah bobot ke unit z j yang z in nya terdekat dengan 0 (misal ke unit z p) sebagai berikut : b p baru = b p lama + w pi baru = w pi lama + ( z in_p) ( z in_p) x i Untuk t = -, ubah semua bobot ke unit z k yang z in nya positip sebagai berikut : b k baru = b k lama + w ki baru = w ki lama + (- z in_k) (- z in_k) x i Logika modifikasi bobot pada langkah 2.5 adalah sebagai berikut : Perhatikan MADALINE pada gambar 6.. Jika y t dan t = (karena y bipolar berarti y = -), maka f (net) di z = z 2 = -. Untuk mengenali pola, paling sedikit salah satu dari z tersebut harus dijadikan =. Bobot yang dimodifikasi adalah bobot ke unit z yang netnya paling dekat dengan 0. Misalkan unti z yang keluarannya terdekat dengan 0 adalah z p. Maka bobot dan bias dimodifikasi menurut persamaan : b p baru = b p lama + w pi baru = w pi lama + ( z in_p) ( z in_p) x i Sebaliknya jika y t dan t = - (dengan kata lain y = ), berarti minimal salah satu z memiliki f(net) = (atau ada z yang netnya positip). Padahal semua z harus memiliki f(net) = -. Maka bobot yang dimodifikasi adalah bobot yang netnya positip (misal unit z k) menurut persamaan :

93 92 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab b k baru = b k lama + w ki baru = w ki lama + (- z in_k) (- z in_k) x i Contoh 6.2 Gunakan MADALINE mula-mula untuk mengenali pola fungsi logika XOR dengan 2 masukan x dan x 2. Gunakan = 0.5 dan toleransi = 0. Penyelesaian Fungsi logika XOR memiliki pasangan masukan-target seperti yang tampak pada tabel 6.6 Tabel 6.6 Masukan Target x x 2 t Inisialisasi dilakukan pada semua bobot ke unit tersembunyi dengan suatu bilangan acak kecil. Misalkan didapat hasil seperti pada tabel 6.7 Tabel 6.7 Ke unit tersembunyi Dari unit z z 2 x w = 0.05 w 2 = 0. x 2 w 2 = 0.2 w 22 = 0.2

94 ADALINE 93 bias b = 0.3 b 2 = x 0.05 z x z Y 0.5 Bobot ke unit keluaran Y adalah : v = v 2 = b = ½. 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 : Masukan : x =, x 2 =, t = Hitung net untuk unit tersembunyi z dan z 2 : z in_ = b + x w + x 2 w 2 = (0.05) + (0.2) = 0.55 z in_ 2 = b 2 + x w 2 + x 2 w 22 = (0.) + (0.2) = Hitung keluaran unit tersembunyi z dan z 2 menggunakan fungsi aktivasi bipolar. Didapat z = f (z in_ ) = dan z 2 = f (z in_ 2) = 2.4 Tentukan keluaran jaringan Y : y _in = b 3 + z v + z 2 v 2 = (0.5) + (0.5) =.5

95 94 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Maka y = f (y_ in) = 2.5 t y = - = -2 0 dan t = -. Maka semua bobot yang menghasilkan z _in yang positip dimodifikasi. Karena z in_ > 0 dan z in_ 2 > 0, maka semua bobotnya dimodifikasi sebagai berikut : Perubahan bobot ke unit tersembunyi z : b baru = b lama + (- z in_) = (- 0.55) = w baru = w lama + (- z in_) x = (- 0.55) = w 2 baru = w 2 lama + (- z in_) x 2 = (- 0.55) = Perubahan bobot ke unit tersembunyi z 2 : b 2 baru = b 2 lama + (- z in_2) = (- 0.45) = w 2 baru = w 2 lama + (- z in_2) x = (- 0.45) = w 22 baru = w 22 lama + (- z in_2) x 2 = (- 0.45) = Tabel 6.8 merupakan pengecekan perubahan nilai bobot : Tabel 6.8 Bobot mulamula Bobot setelah iterasi w b w w b w w

96 ADALINE 95 Karena masih ada (bahkan semua) perubahan bobot > toleransi yang ditetapkan, maka iterasi dilanjutkan untuk pola 2. Iterasi dilakukan untuk semua pola. Apabila ada perubahan bobot yang masih lebih besar dari batas toleransi, maka iterasi dilanjutkan untuk epoch-2 dan seterusnya. SOAL-SOAL LATIHAN. Apakah kelebihan ADALINE dibandingkan dengan Perceptron? 2. Ulangi contoh 6.2 dengan menggunakan masukan dan target biner (bukan bipolar) 3. Gunakan ADALINE untuk mengenali fungsi logika dan dengan 3 buah masukan ( = 0.5 dan toleransi = 0.). 4. Selesaikan soal latihan #5 pada bab 4 (model Hebb) menggunakan ADALINE dengan = 0.5, bobot awal = 0, dan toleransi = 0..

97 Bab 7 BACK PROPAGATION 7. Standar Backpropagation Kelemahan JST yang terdiri dari layar tunggal membuat perkembangan JST menjadi terhenti pada sekitar tahun 970 an. Penemuan backpropagation yang terdiri dari beberapa layar membuka kembali cakarawala. Terlebih setelah berhasil ditemukannya berbagai aplikasi yang dapat diselesaikan dengan Backpropagation, membuat JST semakin diminati orang. JST dengan layar tunggal memiliki keterbatasan dalam pengenalan pola. Kelemahan ini bisa ditanggulangi dengan menambahkan satu/beberapa layar tersembunyi diantara layar masukan dan keluaran. Meskipun penggunaan lebih dari satu layar tersembunyi memiliki kelebihan manfaat untuk beberapa kasus, tapi pelatihannya memerlukan waktu yang lama. Maka umumnya orang mulai mencoba dengan sebuah layar tersembunyi lebih dahulu. Seperti halnya model JST lain, Backpropagation melatih jaringan untuk mendapatkan keseimbangan antara kemampuan jaringan untuk mengenali pola yang digunakan selama pelatihan serta kemampuan jaringan untuk memberikan respon yang benar terhadap pola masukan yang serupa (tapi tidak sama) dengan pola yang dipakai selama pelatihan.

98 98 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 7.. Arsitektur Backpropagation Backpropagation memiliki beberapa unit yang ada dalam satu atau lebih layar tersembunyi. Gambar 7. adalah arsitektur backpropagation dengan n buah masukan (ditambah sebuah bias), sebuah layar tersembunyi yang terdiri dari p unit (ditambah sebuah bias), serta m buah unit keluaran. v ji merupakan bobot garis dari unit masukan x i ke unit layar tersembunyi z j (v j0 merupakan bobot garis yang menghubungkan bias di unit masukan ke unit layar tersembunyi z j ). w kj merupakan bobot dari unit layar tersembunyi z j ke unit keluaran y k (w k0 merupakan bobot dari bias di layar tersembunyi ke unit keluaran z k ) Y Y k Y m w 0 w k0 w m0 w w k w m w j w kj w mj w kp w p w mp z z j z p v 0 v j0 v p0 v x v j v p v i v ji x i vpi v n v jn x n v pn Gambar 7.

99 BACK PROPAGATION Fungsi Aktivasi Dalam backpropagation, fungsi aktivasi yang dipakai harus memenuhi beberapa syarat yaitu : kontinu, terdiferensial dengan mudah dan merupakan fungsi yang tidak turun. Salah satu fungsi yang memenuhi ketiga syarat tersebut sehingga sering dipakai adalah fungsi sigmoid biner yang memiliki range (0, ). f ( x) = dengan turunan f '( x) = f ( x) ( ) + ( f x ) x e Grafik fungsinya tampak pada gambar 7.2 f(x) Gambar 7.2 x Fungsi lain yang sering dipakai adalah fungsi sigmoid bipolar yang bentuk fungsinya mirip dengan fungsi sigmoid biner, tapi dengan range (-, ). f ( x) 2 = x + e dengan turunan f '( x) Grafik fungsinya tampak pada gambar 7.3. = ( + f ( x) ) ( f ( x) ) Fungsi sigmoid memiliki nilai maksimum =. Maka untuk pola yang targetnya >, pola masukan dan keluaran harus terlebih dahulu ditransformasi sehingga semua polanya memiliki range yang sama seperti fungsi sigmoid yang dipakai. Alternatif lain adalah 2

100 00 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab menggunakan fungsi aktivasi sigmoid hanya pada layar yang bukan layar keluaran. Pada layar keluaran, fungsi aktivasi yang dipakai adalah fungsi identitas : f(x) = x f(x) x - Gambar Pelatihan Standar Backpropagation Pelatihan Backpropagation meliputi 3 fase. Fase pertama adalah fase maju. Pola masukan dihitung maju mulai dari layar masukan hingga layar keluaran menggunakan fungsi aktivasi yang ditentukan. Fase kedua adalah fase mundur. Selisih antara keluaran jaringan dengan target yang diinginkan merupakan kesalahan yang terjadi. Kesalahan tersebut dipropagasikan mundur, dimulai dari garis yang berhubungan langsung dengan unit-unit di layar keluaran. Fase ketiga adalah modifikasi bobot untuk menurunkan kesalahan yang terjadi. Fase I : Propagasi maju Selama propagasi maju, sinyal masukan (= x i ) dipropagasikan ke layar tersembunyi menggunakan fungsi aktivasi yang ditentukan. Keluaran dari setiap unit layar tersembunyi (= z j ) tersebut selanjutnya dipropagasikan maju lagi ke layar tersembunyi di atasnya menggunakan fungsi aktivasi yang ditentukan. Demikian seterusnya hingga menghasilkan keluaran jaringan (= y k ).

101 BACK PROPAGATION 0 Berikutnya, keluaran jaringan (= y k ) dibandingkan dengan target yang harus dicapai (= t k ). Selisih t k y k adalah kesalahan yang terjadi. Jika kesalahan ini lebih kecil dari batas toleransi yang ditentukan, maka iterasi dihentikan. Akan tetapi apabila kesalahan masih lebih besar dari batas toleransinya, maka bobot setiap garis dalam jaringan akan dimodifikasi untuk mengurangi kesalahan yang terjadi. Fase II : Propagasi mundur Berdasarkan kesalahan t k y k, dihitung faktor δ k (k =,2,..., m) yang dipakai untuk mendistribusikan kesalahan di unit y k ke semua unit tersembunyi yang terhubung langsung dengan y k. δ k juga dipakai untuk mengubah bobot garis yang berhubungan langsung dengan unit keluaran. Dengan cara yang sama, dihitung faktor δ j di setiap unit di layar tersembunyi sebagai dasar perubahan bobot semua garis yang berasal dari unit tersembunyi di layar di bawahnya. Demikian seterusnya hingga semua faktor δ di unit tersembunyi yang berhubungan langsung dengan unit masukan dihitung. Fase III : Perubahan bobot Setelah semua faktor δ dihitung, bobot semua garis dimodifikasi bersamaan. Perubahan bobot suatu garis didasarkan atas faktor δ neuron di layar atasnya. Sebagai contoh, perubahan bobot garis yang menuju ke layar keluaran didasarkan atas δ k yang ada di unit keluaran. Ketiga fase terebut diulang-ulang terus hingga kondisi penghentian dipenuhi. Umumnya kondisi penghentian yang sering dipakai adalah jumlah iterasi atau kesalahan. Iterasi akan dihentikan jika jumlah iterasi yang dilakukan sudah melebihi jumlah maksimum iterasi yang ditetapkan, atau jika kesalahan yang terjadi sudah lebih kecil dari batas toleransi yang diijinkan.

102 02 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Algoritma pelatihan untuk jaringan dengan satu layar tersembunyi (dengan fungsi aktivasi sigmoid biner) adalah sebagai berikut : Langkah 0 : Inisialisasi semua bobot dengan bilangan acak kecil Langkah : Jika kondisi penghentian belum terpenuhi, lakukan langkah 2 9 Langkah 2 : Untuk setiap pasang data pelatihan, lakukan langkah 3 8 Fase I : Propagasi maju Langkah 3 : Tiap unit masukan menerima sinyal dan meneruskannya ke unit tersembunyi di atasnya Langkah 4 : Hitung semua keluaran di unit tersembunyi z j (j =, 2,..., p) z_net j = v z j = f (z_net j ) = n jo + xi vji i= _ j + e z net Langkah 5 : Hitung semua keluaran jaringan di unit y k (k =, 2,..., m) y_net k = w p + z w ko j k j j= y k = f (y_net k ) = + e y net _ k Fase II : Propagasi mundur Langkah 6 : Hitung faktor δ unit keluaran berdasarkan kesalahan di setiap unit keluaran y k (k =, 2,..., m)

103 BACK PROPAGATION 03 δ = ( t y ) f '( y_ net ) = ( t y ) y ( y ) k k k k kj k j k k k k δ k merupakan unit kesalahan yang akan dipakai dalam perubahan bobot layar di bawahnya (langkah 7) Hitung suku perubahan bobot w kj (yang akan dipakai nanti untuk merubah bobot w kj ) dengan laju percepatan α Δ w = α δ z ; k =, 2,...,m ; j = 0,,..., p Langkah 7 : Hitung faktor δ unit tersembunyi berdasarkan kesalahan di setiap unit tersembunyi z j (j =, 2,..., p) δ _ net m j = δkwkj k= Faktor δ unit tersembunyi : δ = δ _ net f '( z _ net ) = δ _ net j z j( z j) j j j Hitung suku perubahan bobot v ji (yang akan dipakai nanti untuk merubah bobot v ji ) Δ v = α δ x ; j =, 2,..., p ; i = 0,,...,n ji j i Fase III : Perubahan Bobot Langkah 8 : Hitung semua perubahan bobot Perubahan bobot garis yang menuju ke unit keluaran : w ( baru) = w ( lama) +Δ w (k =, 2,...,m ; j = 0,,..., p) kj kj kj Perubahan bobot garis yang menuju ke unit tersembunyi : v ( baru) = v ( lama) +Δ v (j =, 2,..., p ; i = 0,,..., n) ji ji ji

104 04 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Setelah pelatihan selesai dilakukan, jaringan dapat dipakai untuk pengenalan pola. Dalam hal ini, hanya propagasi maju (langkah 4 dan 5) saja yang dipakai untuk menentukan keluaran jaringan. Apabila fungsi aktivasi yang dipakai bukan sigmoid biner, maka langkah 4 dan 5 harus disesuaikan. Demikian juga turunannya pada langkah 6 dan 7 Contoh 7. Gunakan Backpropagation dengan sebuah layar tersembunyi (dengan 3 unit) untuk mengenali fungsi logika XOR dengan 2 masukan x dan x 2. Buatlah iterasi untuk menghitung bobot jaringan untuk pola pertama (x =, x 2 = dan t = 0). Gunakan laju pemahaman α = 0.2 Penyelesaian Arsitektur Backpropagation dengan layar tersembunyi yang terdiri dari 3 unit untuk mengenali fungsi XOR tampak pada gambar 7.4 Y w 0 w w 2 w 3 z z 2 z 3 v 0 v 20 v v 2 v 3 v 2 v 22 v 30 x x 2 v 32 Gambar 7.4

105 BACK PROPAGATION 05 Mula-mula bobot diberi nilai acak yang kecil (range [-, ]). Misal didapat bobot seperti tabel 7. (bobot dari layar masukan ke layar tersembunyi = v ji ) dan 7.2 (bobot dari layar masukan ke layar tersembunyi = w kj ) Tabel 7. z z 2 z 3 x x Tabel 7.2 y z 0.5 z z Langkah 4 : Hitung keluaran unit tersembunyi (z j ) z_net j = v 2 + x v jo i ji i= z_net = (0.2) + (0.3) = 0.2 z_net 2 = (0.3) + (0.) = 0.7 z_net 3 = (-0.) + (-0.) = 0. z j = f (z_net j ) = _ j + e z net

106 06 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab z = e 0.52 = 0.55 ; z 2 = e = 0.67 ; z 3 = 0. + e = Langkah 5 : Hitung keluaran unit y k y_net k = w 3 + z w = ko j k j j= Karena jaringan hanya memiliki sebuah unit keluaran y maka y_net k = y_net = w (-0.4) = y = f (y_net ) = 3 + z w = (0.5) (-0.3) o j j j= _ + e y net + e = 0.24 = 0.44 Langkah 6 : Hitung faktor δ di unit keluaran y k δ = ( t y ) f '( y_ net ) = ( t y ) y ( y ) k k k k k k k k. Karena jaringan hanya memiliki sebuah keluaran maka δk = δ = ( t y) y( y) = (0 0.44) (0.44) ( 0.44) = -0. Suku perubahan bobot w kj (dengan α = 0.2) : Δ wkj = α δ k zj = α δ z j ; j = 0,,..., 3 Δ w 0 = 0.2 (-0.) () = Δ w = 0.2 (-0.) (0.55) = -0.0 Δ w 2 = 0.2 (-0.) (0.67) = -0.0 Δ w 3 = 0.2 (-0.) (0.52) = -0.0

107 BACK PROPAGATION 07 Langkah 7 : Hitung penjumlahan kesalahan dari unit tersembunyi (=δ ) δ _ net m = δ w. Karena jaringan hanya memiliki sebuah j k kj k= unit keluaran maka δ net = δ w _ j j δ _ net = (-0.) (0.5) = δ _ net 2 = (-0.) (-0.3) = 0.03 δ _ net 3 = (-0.) (-0.4) = 0.04 Faktor kesalahan δ di unit tersembunyi : δ = δ _ net f '( z _ net ) = δ _ net j z j( z j) j j j δ = (0.55) ( ) = -0.0 δ 2 = 0.03 (0.67) ( ) = 0.0 δ 3 = 0.04 (0.52) ( ) = 0.0 Suku perubahan bobot ke unit tersembunyi Δ vji = α δ j xi (j =, 2, 3 ; i = 0,, 2) Tabel 7.3 z z 2 z 3 x Δ v = (0.2) (-0.0) () = 0 Δ v 2 = (0.2) (0.0) () = 0 Δ v 3 = (0.2) (0.0) () = 0 x 2 Δ v 2 = (0.2) (-0.0) () = 0 Δ v 22 = (0.2) (0.0) () = 0 Δ v 32 = (0.2) (0.0) () = 0 Δ v 0 = (0.2) (-0.0) () = 0 Δ v 20 = (0.2) (0.0) () = 0 v 30 Δ = (0.2) (0.0) () = 0

108 08 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Langkah 8 : Hitung semua perubahan bobot Perubahan bobot unit keluaran : w ( baru) = w ( lama) +Δ w (k = ; j = 0,,..., 3) kj kj kj w (baru) = = 0.49 w 2 (baru) = = -0.3 w 3 (baru) = = -0.4 w 0 (baru) = = -0.2 Perubahan bobot unit tersembunyi : v ( baru) = v ( lama) +Δ v (j =, 2, 3 ; i = 0,, 2) ji ji ji Tabel 7.4 z z 2 z 3 x v (baru) = = 0.2 x 2 v 2 (baru) = = 0.3 v 0 (baru) = = -0.3 v 2 (baru) = = 0.3 v 22 (baru) = = 0. v 20 (baru) = = 0.3 v 3 (baru) = = -0. v 32 (baru) = = -0. v 30 (baru) = = 0.3 Pembaca dapat mencoba membuat iterasi untuk pola kedua (x =, x 2 = 0, t = )

109 BACK PROPAGATION Optimalitas Arsitektur Backpropagation Masalah utama yang dihadapi dalam Backpropagation adalah lamanya iterasi yang harus dilakukan. Backpropagation tidak dapat memberikan kepastian tentang berapa epoch yang harus dilalui untuk mencapai kondisi yang diinginkan. Oleh karena itu orang berusaha meneliti bagaimana parameter-parameter jaringan dibuat sehingga menghasilkan jumlah iterasi yang relatif lebih sedikit Pemilihan Bobot dan Bias Awal Bobot awal akan mempengaruhi apakah jaringan mencapai titik minimum lokal atau global, dan seberapa cepat konvergensinya. Bobot yang menghasilkan nilai turunan aktivasi yang kecil sedapat mungkin dihindari karena akan menyebabkan perubahan bobotnya menjadi sangat kecil. Demikian pula nilai bobot awal tidak boleh terlalu besar karena nilai turunan fungsi aktivasinya menjadi sangat kecil juga. Oleh karena itu dalam standar Backpropagation, bobot dan bias diisi dengan bilangan acak kecil. Nguyen dan Widrow (990) mengusulkan cara membuat inisialisasi bobot dan bias ke unit tersembunyi sehingga menghasilkan iterasi lebih cepat Misal n = jumlah unit masukan p = jumlah unit tersembunyi β = faktor skala = 0.7 n p Algoritma inisialisasi Nguyen Widrow adalah sebagai berikut : a. Inisialisasi semua bobot (v ji (lama)) dengan bilangan acak dalam interval [-0.5, 0.5]

110 0 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab b. Hitung v = v + v v j j j jn c. Bobot yang dipakai sebagai inisialisasi = v j i = β v ji ( lama) v j d. Bias yang dipakai sebagai inisialisasi = v j0 = bilangan acak antara - β dan β Contoh 7.2 Buatlah bobot awal ke unit tersembunyi contoh 7. menggunakan modifikasi bobot Nguyen Widrow Penyelesaian Dalam contoh 7., n = jumlah unit masukan = 2 dan p = jumlah unit tersembunyi = 3. Bobot lama (v ji lama) yang didapat secara acak tampak dalam tabel β = =.2 Tabel 7.5 z z 2 z 3 x x v = v 2 = v + v = v + v = = = 0.32

111 BACK PROPAGATION v 3 = v + v = ( 0.) + ( 0.) = 0.4 Tabel 7.6 merupakan bobot yang dipakai sebagai inisialisasi Tabel 7.6 z z 2 z 3 x (.2*0.2)/0.36 = 0.67 x 2 (.2*0.3)/0.36 = (.2*0.3)/0.32 =.3 (.2*0.)/0.32 = 0.38 (.2*(-0.))/0.4 = 0.86 (.2*(-0.))/0.4 = 0.86 Bias yang dipakai adalah bilangan acak antara -.2 hingga Jumlah Unit Tersembunyi Hasil teoritis yang didapat menunjukkan bahwa jaringan dengan sebuah layar tersembunyi sudah cukup bagi Backpropagation untuk mengenali sembarang perkawanan antara masukan dan target dengan tingkat ketelitian yang ditentukan. Akan tetapi penambahan jumlah layar tersembunyi kadangkala membuat pelatihan lebih mudah. Jika jaringan memiliki lebih dari satu layar tersembunyi, maka algoritma pelatihan yang dijabarkan sebelumnya perlu direvisi. Dalam propagasi maju, keluaran harus dihitung untuk tiap layar, dimulai dari layar tersembunyi paling bawah (terdekat dengan masukan). Sebaliknya, dalam propagasi mundur, faktor δ perlu dihitung untuk tiap layar tersembunyi, dimulai dari layar keluaran

112 2 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Jumlah Pola Pelatihan Tidak ada kepastian tentang berapa banyak pola yang diperlukan agar jaringan dapat dilatih dengan sempurna. Jumlah pola yang dibutuhkan dipengaruhi oleh banyaknya bobot dalam jaringan serta tingkat akurasi yang diharapkan. Aturan kasarnya dapat ditentukan berdasarkan rumusan : Jumlah pola = Jumlah bobot / tingkat akurasi Untuk jaringan dengan 80 bobot dan tingkat akurasi 0., maka 800 pola masukan diharapkan akan mampu mengenali dengan benar 90 % pola diantaranya Lama Iterasi Tujuan utama penggunaan Backpropagation adalah mendapatkan keseimbangan antara pengenalan pola pelatihan secara benar dan respon yang baik untuk pola lain yang sejenis (disebut data pengujian). Jaringan dapat dilatih terus menerus hingga semua pola pelatihan dikenali dengan benar. Akan tetapi hal itu tidak menjamin jaringan akan mampu mengenali pola pengujian dengan tepat. Jadi tidaklah bermanfaat untuk meneruskan iterasi hingga semua kesalahan pola pelatihan = 0. 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 0 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.

113 BACK PROPAGATION Variasi Backpropagation Disamping model standar Backpropagation, kini sudah berkembang berbagai variasinya. Variasi tersebut bisa berupa model Backpropagation yang digunakan untuk keperluan khusus, atau teknik modifikasi bobot untuk mempercepat pelatihan dalam kasus tertentu. Beberapa variasi diantaranya dijelaskan dalam bab ini 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. Penambahan momentum dimaksudkan untuk menghindari perubahan bobot yang mencolok akibat adanya data yang sangat berbeda dengan yang lain (outlier). Apabila beberapa data terakhir yang diberikan ke jaringan memiliki pola serupa (berarti arah gradien sudah benar), maka perubahan bobot dilakukan secara cepat. Namun apabila data terakhir yang dimasukkan memiliki pola yang berbeda dengan pola sebelumnya, maka perubahan dilakukan secara lambat. Dengan penambahan momentum, bobot baru pada waktu ke (t+) didasarkan atas bobot pada waktu t dan (t-). Disini harus ditambahkan 2 variabel baru yang mencatat besarnya momentum untuk 2 iterasi terakhir. Jika μ adalah konstanta (0 μ ) yang menyatakan parameter momentum maka bobot baru dihitung berdasarkan persamaan : wkj( t+ ) = wkj() t + αδk zj + μ( wkj() t wkj ( t ) ) dan

114 4 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab vji( t+ ) = vji() t + αδjxi + μ( vji() t vji( t ) ) Contoh 7.2 Perhatikan kembali iterasi pola pertama fungsi logika XOR dengan Backpropagation pada contoh 7.. Lakukan iterasi untuk pola kedua (x =, x 2 = 0, dan t = ) dengan menggunakan suku momentum ( μ = 0.5) Penyelesaian Iterasi untuk pola kedua sebenarnya sama dengan iterasi contoh 7.. Hanya saja perhitungan bobot baru pada langkah 8 dilakukan dengan menambahkan momentum (bobot pada waktu (t-) = bobot awal) Hasil iterasi yang diperoleh dari pola pertama tampak pada tabel 7.7 dan 7.8 Tabel 7.7 z z 2 z 3 x x Tabel 7.8 y z 0.49 z 2-0.3

115 BACK PROPAGATION 5 z Langkah 4 : Hitung keluaran unit tersembunyi (z j ) z_net j = v 2 + x v jo i ji i= z_net = (0.2) + 0 (0.3) = -0. z_net 2 = (0.3) + 0 (0.) = 0.6 z_net 3 = (-0.) + 0 (-0.) = 0.2 z j = f (z_net j ) = _ j + e z net z = = 0.48 ; z 0. 2 = = 0.65 ; z e + e 3 = e 0.55 = Langkah 5 : Hitung keluaran unit y k y_net k = w 3 + z w ko j k j j= Karena jaringan hanya memiliki sebuah unit keluaran y maka y_net k = y_net = w (-0.3) (-0.4) = -0.3 y = f (y_net) = _ + e y net 3 + z w = (0.49) o j j j= = e = 0.42

116 6 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Langkah 6 : Hitung faktor δ di unit keluaran y k δ = ( t y ) f '( y_ net ) = ( t y ) y ( y ) k k k k k k k k. Karena jaringan hanya memiliki sebuah keluaran y maka δk = δ = ( t y) y( y) = ( 0.42) (0.42) ( 0.42) = 0.4 Suku perubahan bobot w kj (dengan α = 0.2) : Δ wkj = α δ k zj = α δ z j ; j = 0,,..., 3 Δ w 0 = 0.2 (0.4) () = 0.03 Δ w = 0.2 (0.4) (0.48) = 0.0 Δ w 2 = 0.2 (0.4) (0.65) = 0.02 Δ w 3 = 0.2 (0.4) (0.55) = 0.02 Langkah 7 : Hitung penjumlahan kesalahan dari unit tersembunyi (=δ ) δ _ net m = δ w. Karena jaringan hanya memiliki sebuah j k kj k= unit keluaran maka δ net = δ w _ j j δ _ net = (0.4) (0.49) = 0.07 δ _ net 2 = (0.4) (-0.3) = δ _ net 3 = (0.4) (-0.4) = Faktor kesalahan δ di unit tersembunyi : δ = δ _ net f '( z _ net ) = δ _ net j z j( z j) j j j δ = 0.07 (0.48) ( ) = 0.02

117 BACK PROPAGATION 7 δ 2 = (0.65) ( ) = -0.0 δ 3 = (0.55) ( ) = -0.0 Suku perubahan bobot ke unit tersembunyi Δ vji = α δ j xi (j =, 2, 3 ; i = 0,, 2) Tabel 7.9 z z 2 z 3 x Δ v = (0.2) (0.02) () = 0 Δ v 2 = (0.2) (-0.0) () = 0 Δ v 3 = (0.2) (-0.0) () = 0 x 2 Δ v = (0.2) (0.02) (0) = 0 Δ v 2 = (0.2) (-0.0) (0) = 0 Δ v 3 = (0.2) (-0.0) (0) = 0 Δ v = (0.2) (0.02) () = 0 Δ v 2 = (0.2) (-0.0) () = 0 Δ v 3 = (0.2) (-0.0) () = 0 Langkah 8 : Hitung semua perubahan bobot Bobot baru unit keluaran : wkj( t+ ) = wkj() t + αδk zj + μ( wkj() t wkj ( t ) ) (k = ; j = 0,,..., 3) Suku α δ kz j adalah hasil yang didapat dari langkah 6. wkj () t adalah bobot mula-mula pola kedua (hasil dari iterasi pola pertama contoh 7.) sedangkan wkj( t ) adalah bobot mula-mula pada iterasi pola pertama (bobot awal contoh 7.) w (baru) = ( ) = w 2 (baru) = (-0.3 (-0.3)) =

118 8 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab w 3 (baru) = (-0.4 (-0.4)) = w 0 (baru) = (-0.2 (-0.)) = -0. Perubahan bobot unit tersembunyi : vji( t+ ) = vji() t + αδjxi + μ( vji() t vji( t ) ) vji (j =, 2, 3 ; i = 0,, 2) () t adalah bobot awal yang dipakai dalam contoh 7.2 (hasil iterasi v ji pada contoh 7.), sedangkan vji( t ) adalah bobot awal yang dipakai dalam contoh 7.. Keduanya bernilai sama v () t v ( t ) = 0. sehingga suku momentum ( ji ji ) α δ x adalah hasil langkah 7, yang bernilai = 0 i, j. j i Berarti v ji tidak mengalami perubahan. v ji baru hasil iterasi pola kedua sama dengan v ji tabel Delta Bar Delta Dalam standar Backpropagation, laju pemahaman (α ) merupakan suatu konstanta yang dipakai dalam seluruh iterasinya. Perubahan dapat dilakukan dengan memberikan laju pemahaman yang berbedabeda untuk setiap bobotnya (atau bahkan laju pemahaman yang berbeda-beda untuk tiap bobot dalam tiap iterasinya). Apabila perubahan bobot berada dalam arah yang sama dalam beberapa pola terakhir (dapat dilihat dari tanda suku δ k z j yang selalu sama), maka laju pemahaman yang bersesuaian dengan bobot w kj ditambah. Sebaliknya apabila arah perubahan bobot dua pola terakhir berbeda (ditandai dengan suku δ k z j yang berselang-seling positip negatif) maka laju pemahaman untuk bobot tersebut harus dikurangi.

119 BACK PROPAGATION 9 Perubahan bobot dalam aturan delta bar delta adalah sebagai berikut : w ( t+ ) = w ( t) + α ( t+ ) δ z kj kj kj k j Perubahan Bobot Berkelompok Variasi lain yang dapat dilakukan pada standar Backpropagation adalah merubah bobotnya sekaligus setelah semua pola dimasukkan. Untuk tiap pola yang dimasukkan, dilakukan langkah 4 7 standar Backpropagation. Nilai Δ wkj dan Δ v ji untuk tiap pola dijumlahkan. Langkah 8 (perhitungan bobot baru) dilakukan berdasarkan hasil jumlahan Δ wkj dan Δv ji tersebut. Prosedur ini memberikan efek yang lebih halus dalam perubahan bobot. Dalam beberapa kasus, variasi perubahan ini akan meningkatkan kemungkinan konvergensi ke titik minimum lokal. 7.4 Aplikasi Backpropagation Dalam Peramalan Salah satu bidang dimana Backpropagation dapat diaplikasikan dengan baik adalah bidang peramalan (forecasting). Peramalan yang sering kita dengar adalah peramalan besarnya penjualan, nilai tukar valuta asing, prediksi besarnya aliran air sungai, dll. Sebagai contoh, dalam penjualan barang, diketahui record data penjualan suatu produk pada beberapa bulan/tahun terakhir. Masalahnya adalah memperkirakan berapa perkiraan produk yang terjual dalam bulan/tahun yang akan datang.

120 20 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Secara umum, masalah peramalan dapat dinyatakan sebagai berikut : Diketahui sejumlah data runtun waktu (time series) x, x 2,...,x n. Masalahnya adalah memperkirakan berapa harga x n+ berdasarkan x, x 2,...,x n. Dengan Backpropagation, record data dipakai sebagai data pelatihan untuk mencari bobot yang optimal. Untuk itu kita perlu menetapkan besarnya periode dimana data berfluktuasi. Periode ini kita tentukan secara intuitif. Misalkan pada data besarnya debit air sungai dengan data bulanan, periode data dapat diambil selama satu tahun karena pergantian musim terjadi selama satu tahun. 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 2 masukan. Keluaran adalah unit. Bagian tersulit adalah menentukan jumlah layar (dan unitnya). Tidak ada teori yang dengan pasti dapat dipakai. Tapi secara praktis dicoba jaringan yang kecil terlebih dahulu (misal terdiri dari layar tersembunyi dengan beberapa unit saja). Jika gagal (kesalahan tidak turun dalam epoch yang besar), maka jaringan diperbesar dengan menambahkan unit tersembunyi atau bahkan menambah layar tersembunyi. Contoh 7.3 Diketahui data bulanan penjualan suatu produk makanan kaleng selama 2 tahun terakhir seperti tampak pada tabel 7.0. Buatlah model backpropagation untuk memperkirakan jumlah produk yang terjual bulan depan

121 BACK PROPAGATION 2 Tabel 7.0 Tahun Penjualan tiap bulan Penyelesaian Gambar 7.5 adalah grafik penjualan contoh 7.3. Tampak bahwa pola datanya periodik dalam jangka waktu 2 bulan. Maka model Backpropagation yang dipakai memiliki 2 unit masukan dan sebuah keluaran Penjualan Bulan Jan 03 Apr 03 Jul 03 Okt 03 Jan 04 Apr 04 Jul 04 Okt 04 Gambar 7.5

122 22 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Jika ingin menggunakan fungsi aktivasi sigmoid (biner), data harus ditransformasikan dulu karena range keluaran fungsi aktivasi sigmoid adalah [0,]. Data bisa ditransformasikan ke interval [0,]. Tapi akan lebih baik jika ditransformasikan ke interval yang lebih kecil, misal pada interval [0., 0.9]. Ini mengingat fungsi sigmoid merupakan fungsi asimtotik yang nilainya tidak pernah mencapai 0 ataupun. Jika a adalah data minimum dan b adalah data maksimum, transformasi linier yang dipakai untuk mentransformasikan data ke interval [0., 0.9] adalah 0.8( x a) x ' = + 0. b a Dalam tabel 7.0, a = 070 dan b = Dengan transformasi ini maka data terkecil akan menjadi 0. dan data terbesar akan menjadi 0.9. Tabel 7. adalah hasil transformasi data tabel 7.0 yang nantinya dipakai sebagai data pelatihan Backpropagation. Tabel 7. Tahun Penjualan tiap bulan Pola yang dipakai merupakan data selama 2 bulan dan target adalah data penjualan pada bulan ke-3. Jadi ada 2 pola data dalam sebuah epochnya seperti yang tampak dalam tabel 7.2. Jumlah layar tersembunyi bisa dicoba-coba mulai dengan sebuah layar tersembunyi dengan 3 unit.

123 BACK PROPAGATION 23 Tabel 7.2 Pola Data Masukan (x,..., x 2 ) Target Pola Pola Pola Pola Pola Pola Pola Pola Pola Pola Pola Pola Apabila data yang tersedia cukup banyak, data bisa dibagi menjadi 2 bagian yaitu data yang dipakai untuk pelatihan dan data yang dipakai

124 24 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab untuk pengujian. Misalkan sebagai data pelatihan diambil data yang elemen pertamanya adalah bulan ganjil (pola-, 3, 5,... dalam tabel 7.). Data sisanya dipakai sebagai data pengujian. Perubahan bobot dilakukan berdasarkan data pelatihan. Akan tetapi kriteria penghentian didasarkan atas data pengujian. Proses pelatihan dilakukan untuk beberapa epoch (misal tiap 0 epoch). Setelah itu kesalahan dihitung berdasarkan bobot yang diperoleh yang dikenakan pada data pengujian. Jika kesalahan data uji masih turun, pelatihan dilanjutkan. Pelatihan dihentikan apabila kesalahannya mulai naik. Ini berarti jaringan mulai mengambil sifat yang spesifik terjadi pada data pelatihan, dan bukan generalisasi sifat data. SOAL-SOAL LATIHAN. Buktikan bahwa turunan fungsi aktivasi sigmoid bipolar 2 ( + f ( x) ) ( f( x) ) f( x) = adalah f '( x) = x + e 2 2. Mengapa fungsi aktivasi yang dipakai dalam backpropagation harus merupakan fungsi yang turunannya mudah dihitung? 3. Buatlah iterasi pola kedua (x =, x 2 = 0, t = ) fungsi logika XOR sebagai kelanjutan contoh Gunakan backpropagation untuk melatih pola pertama fungsi logika (biner) AND (x =, x 2 =, t = ) dengan menggunakan sebuah layar tersembunyi yang terdiri dari 2 unit. Gunakan α = 0.5 dan bobot awal sebagai berikut :

125 BACK PROPAGATION 25 z z 2 x x y z 0.7 z Lanjutkan soal #4 diatas untuk pola kedua (x =, x 2 = 0, t = 0) 6. Ulangi soal #5, tapi menggunakan momentum dengan μ = 0.2

126 Bab 8 JARINGAN KOMPETISI DENGAN BOBOT TETAP 8. Pelatihan Tanpa Supervisi Dalam model-model jaringan yang terdahulu, terdapat pasangan masukan dan target yang dipakai selama proses pelatihan. Vektor target berfungsi sebagai pelatih yang akan mengoreksi apabila keluaran jaringan salah. Model pelatihan semacam itu disebut pelatihan dengan supervisi (supervised training). Dalam pengenalan pola ditentukan target polanya (misal pola yang menyerupai huruf A, B, dst). Pola masukan akan akan dilihat apakah menyerupai pola targetnya. Model pelatihan lain yang dipakai adalah pelatihan tanpa supervisi. Dalam bab ini (dan bab berikutnya) dibahas bagaimana jaringan tanpa supervisi melakukan pelatihannya. Model pelatihan tanpa supervisi tepat dipakai dalam pengenalan pola (pattern recognition). Dalam model ini tidak ada target vektor yang dipakai sebagai tolok ukur kebenaran pelatihan. 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. Dalam jaringan kompetisi bobot tetap, nilai titik-titiknya berubah selama proses iterasi berlangsung hingga akhirnya diperoleh satu titik yang menjadi pemenang (nilai > 0). Selama proses iterasi, semua

127 28 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab bobotnya tidak berubah meskipun bobot ini mungkin dipakai untuk mengubah nilai titiknya. Model jaringan kompetisi cocok dipakai dalam pengenalan pola. Pola masukan yang diberikan akan diubah hingga diperoleh keputusan tentang pola target mana yang paling menyerupai dengan masukan tersebut. Dalam bab ini dibahas tentang dasar jaringan kompetisi. Pada bab berikutnya akan dibahas tentang model Hopfield yang banyak dipakai. 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. Arsitektur MaxNet tampak pada gambar 8.. Jaringan terdiri dari m titik yang semuanya saling berhubungan dengan bobot simetris. Bobot antar titik berbeda adalah. Bobot suatu titik ke dirinya sendiri =. Bobot ini bernilai tetap selama prosesnya. Keluaran dari Maxnet adalah titik yang memiliki masukan terbesar. A A m A i Gambar 8. A j

128 JARINGAN KOMPETISI DENGAN BOBOT TETAP 29 Fungsi aktivasi yang dipakai dalam MaxNet adalah x jika x 0 f( x) 0 jika x 0 Algoritma pemrosesan jaringan yang terdiri dari m unit adalah sebagai berikut : 0. Inisialisasi dengan bilangan 0 < < m Inisialisasi bobot w i j jika i wji jika i j j. Selama terdapat lebih dari unit yang fungsi aktivasinya > 0 lakukan langkah 2 2. Modifikasi aktivasi titik a j (j =, 2,...,m) dengan 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 a j). Contoh 8. Misalkan jaringan MaxNet seperti pada gambar 8. memiliki bobot = 0.2 dengan nilai masukan mula-mula : a = 0.2 ; a 2 = 0.4 ; a 3 = 0.6 ; a 4 = 0.8 Tentukan titik dengan masukan terbesar menggunakan iterasi MaxNet Penyelesaian

129 30 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Modifikasi nilai a j dilakukan dengan aturan : a j( baru ) = f a j( lama) ak( lama) k j Maka iterasi menghasilkan : a baru = f( ( )) = f(-0.6) = 0 a 2 baru = f( ( )) = f(0.08) = 0.08 a 3 baru = f( ( )) = f(0.32) = 0.32 a 4 baru = f( ( )) = f(0.56) = 0.56 Hasil iterasi selengkapnya tampak pada tabel 8.. Iterasi dilakukan terus hingga hanya satu a j yang bernilai > 0 Tabel 8. Iterasi a a 2 a 3 a 4 mula-mula Pada iterasi ke-5, hanya a 4 saja yang bernilai positip. Maka iterasi dihentikan dengan masukan terbesar = a 4

130 JARINGAN KOMPETISI DENGAN BOBOT TETAP Topi Meksiko (Mexican Hat) Sub jaringan penguat lain yang ditemukan oleh Kohonen adalah jaringan topi meksiko (mexican hat). Nama ini diambil karena jika digambarkan, hasil iterasinya akan meruncing di tengah seperti sebuah topi orang meksiko. Dalam prosesnya digunakan 2 konstanta R dan R 2 (R < R 2) yang menunjukkan jari-jari titik yang memperkuat (bobot positip) dan memperlemah (bobot negatif) sinyal. Setiap neuron hanya dihubungkan dengan semua neuron berjarak R darinya (termasuk dengan dirinya sendiri) dengan bobot positip, dan dihubungkan juga dengan semua neuron berjarak R (dengan R < R R 2) darinya dengan bobot negatif. Gambar 8.2 menunjukkan arsitektur titik x i dengan R = 2 dan R 2 = 3. Titik x i dihubungkan dengan semua titik yang jaraknya 2 (titik x i-2, x i-, x i, x i+, x i+2) dengan bobot w (w < 0). Selain itu, x i juga dihubungkan dengan titik yang jaraknya = 3 (titik x i-3, x i+3) dengan bobot w 2 (w 2 > 0). w w w x i-4 x i-3 x i-2 x i- w x i w x i+ x i+2 x i+3 x i+4 w 2 w 2 Gambar 8.2 Dalam iterasinya, jaringan akan menyeleksi titik dengan masukan maksimum beserta titik-titik di sekitarnya. Lama iterasi berhubungan dengan jari-jari titik terkuat. Semakin lama iterasinya, jumlah titik yang terpilih akan menjadi semakin sedikit. Algoritma iterasinya sebagai berikut :

131 32 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 0. Inisialisasi R, R 2, dan tmax (jumlah iterasi maksimum) Inisialisasi bobot w k c 0 untuk k 0,... R c 0 untuk k R,... R 2 2 Inisialisasi x i = 0 (i =, 2,..., n) t = 0. Selama t < tmax, lakukan langkah Hitung net masukan x i (i =, 2,...,n) R R R2 x c x ( lama) c x ( lama) c x ( lama) i i k 2 i k 2 i k k R k R2 k R 3. x_max = max x i i 4. Hitung fungsi aktivasi 5. t = t + x i = min (x_max, max (0, x i)) Contoh 8.2 Gunakan algoritma topi meksiko pada vektor masukan x dengan 7 unit : ( ). Gunakan parameter R =, R 2 = 2, c = 0.6 dan c 2 = -0.4 Penyelesaian Modifikasi nilai x dalam iterasi pertama dapat dijelaskan dalam gambar 8.3. Perhatikan bahwa titik sekitar x hanyalah titik yang berada di kanannya karena x terletak pada posisi paling kiri. Langkah 2 iterasi menghasilkan :

132 JARINGAN KOMPETISI DENGAN BOBOT TETAP 33 x = 0.6 x (lama) x 2 (lama) 0.4 x 3 (lama) x 2 = 0.6 x (lama) x 2 (lama) x 3 (lama) 0.4 x 4 (lama) x 3 = -0.4 x (lama) x 2 (lama) x 3 (lama) x 4 (lama) x 5 (lama) x 4 = -0.4 x 2 (lama) x 3 (lama) x 4 (lama) x 5 (lama) x 6 (lama) x 5 = -0.4 x 3 (lama) x 4 (lama) x 5 (lama) x 6 (lama) x 7 (lama) x 6 = -0.4 x 4 (lama) x 5 (lama) x 6 (lama) x 7 (lama) x 7 = -0.4 x 5 (lama) x 6 (lama) x 7 (lama) x x 2 x 3 x 4 x 5 x 6 x Gambar 8.3 Iterasi (t = ) x = 0.6 (0.0) (0.5) 0.4 (0.8) = x 2 = 0.6 (0.0) (0.5) (0.8) 0.4 (.0) = 0.38 x 3 = (0.0) (0.5) (0.8) (.0) 0.4 (0.8) =.06 x 4 = (0.5) (0.8) (.0) (0.8) 0.4 (0.5) =.6 x 5 = (0.8) (.0) (0.8) (0.5) 0.4 (0.0) =.06 x 6 = (.0) (0.8) (0.5) (0.0) = 0.38 x 7 = (0.8) (0.5) (0.0) = -0.2

133 34 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab x_max =.6. Fungsi aktivasi menghasilkan : x = min (.6, max (0, -0.2)) = 0 x 2 = min (.6, max (0, 0.38)) = 0.38 x 3 = min (.6, max (0,.06)) =.06 x 4 = min (.6, max (0,.6)) =.6 x 5 = min (.6, max (0,.06)) =.06 x 6 = min (.6, max (0, 0.38)) = 0.38 x 7 = min (.6, max (0, -0.2)) = 0 Didapat x = (0, 0.38,.06,.6,.06, 0.38, 0) Iterasi 2 (t = 2) x = 0.6 (0.0) (0.38) 0.4 (.06) = x 2 = 0.6 (0.0) (0.38) (.06) 0.4 (.6) = 0.39 x 3 = -0.4 (0.0) (0.38) (.06) (.6) 0.4 (.06) =.4 x 4 = -0.4 (0.38) (.06) (.6) (.06) 0.4 (0.38) =.66 x 5 = -0.4 (.06) (.6) (.06) (0.38) 0.4 (0) =.4 x 6 = -0.4 (.6) (.06) (0.38) (0) = 0.39 x 7 = -0.4 (.06) (0.38) (0) = x_max =.66. Fungsi aktivasi menghasilkan : x = min (.6, max (0, -0.96)) = 0 x 2 = min (.6, max (0, 0.39)) = 0.39

134 Nilai xi JARINGAN KOMPETISI DENGAN BOBOT TETAP 35 x 3 = min (.6, max (0,.4)) =.4 x 4 = min (.6, max (0,.66)) =.66 x 5 = min (.6, max (0,.4)) =.4 x 6 = min (.6, max (0, 0.39)) = 0.39 x 7 = min (.6, max (0, -0.96)) = 0 Didapat x = (0, 0.39,.4,.66,.4, 0.39, 0) Pembaca bisa melanjutkan iterasi berikutnya. Nilai x i pada t = 0,, dan 2 dapat dilihat pada gambar 8.4. Tampak bahwa pola yang terbentuk seperti sebuah topi. Semakin lama bentuknya semakin meruncing ke atas. x i yang teratas merupakan pemenangnya t = 0 t = t = x x2 x3 x4 x5 x6 x7 Gambar 8.4

135 36 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 8.4 Jaringan Hamming Misalkan kita memiliki n buah vektor contoh. Jaringan Hamming dipakai untuk menentukan vektor contoh mana yang paling mirip dengan masukan yang diberikan. Vektor contoh akan menentukan bobot jaringan. Misalkan x dan y adalah 2 buah vektor. Jarak Hamming antara x dan y didefinisikan sebagai banyaknya komponen berbeda diantara x dan y. Dalam prosesnya, jaringan Hamming menggunakan jarak Hamming sebagai ukuran kemiripan antara 2 buah vektor, dan MaxNet sebagai subnet untuk menentukan unit yang memiliki net masukan yang terbesar. Gambar 8.5 adalah arsitektur jaringan Hamming yang vektor masukannya terdiri dari 4 unit, dan memiliki 2 vektor contoh. Jaringan akan menentukan mana diantara vektor contoh yang paling mirip dengan vektor masukan yang diberikan. MaxNet y y 2 b w 24 b 2 w w 2 w2 w 22 w 3 w 23 w 4 x x 2 x 3 x 4 Gambar 8.5 Misalkan : e(), e(2),..., e(m) adalah m buah vektor contoh, dengan masingmasing e(j) terdiri dari n komponen. e(j) = (e (j), e 2(j),..., e n(j))

136 JARINGAN KOMPETISI DENGAN BOBOT TETAP 37 n adalah jumlah unit masukan Algoritma pengenalan pola dengan jaringan Hamming adalah sebagai berikut : 0. Inisialisasi bobot berdasarkan vektor contoh : ei ( j) wji ; i =, 2,..., n ; j =, 2,..., m 2 Inisialisasi bias n bj ; (j =, 2,..., m) 2. Untuk setiap vektor masukan x, lakukan langkah Hitung y_net j = bj xiw ji (j =,..., m) i 3. Inisialisasi masukan MaxNet : a j(0) = y_net j (j =,..., m) 4. Gunakan prosedur MaxNet hingga diperoleh sebuah vetor yang bernilai positip (misal a k). Maka vektor contoh yang paling baik adalah e(k). Contoh 8.3 Diketahui 2 buah vektor contoh e() = (, -, -, -) dan e(2) = (-, -, -, ). Gunakan jaringan Hamming untuk menentukan vektor contoh yang paling mirip dengan masing-masing dari 4 buah vektor berikut ini : (,, -, -), (, -, -, -), (-, -, -, ) dan (-, -,, ) Penyelesaian Langkah pertama adalah menghitung bobot berdasarkan vektor contoh e() dan e(2).

137 38 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab ei ( j) wji = dan b j = 4/2 = 2 (j =, 2) Berikutnya setiap vektor masukan dievaluasi kemiripannya dengan vektor pola contoh Vektor x = (,, -, -) : y_net = 2 + (0.5) + (-0.5) (-0.5) (-0.5) = 3 y_net 2 = 2 + (-0.5) + (-0.5) (-0.5) (0.5) = Berikutnya digunakan jaringan Maxnet untuk menghitung unit yang menjadi pemenang. Misalkan diambil = 0.2 a (0) = y_net = 3 ; a 2(0) = y_net 2 =. Iterasinya menghasilkan : a () = f(3 0.2 ()) = f(2.8) = 2.8 ; a 2() = f( 0.2 (3)) = f(0.4) = 0.4 a (2) = f( (0.4))) = f(2.72) = 2.72 ; a 2(2) = f( (2.8)) = f(- 0.6) = 0 Satu-satunya a j yang bernilai positi adalah a. Maka vektor contoh e() = (, -, -, -) merupakan vektor yang paling cocok dengan masukan x = (,, -, -) Perhitungan dengan jaringan MaxNet sebenarnya adalah mencari y_net j yang memiliki nilai terbesar (dalam contoh ini adalah y_net ) Perhatikan bahwa perhitungan langkah (2) sama dengan menghitung jarak Hamming antara vektor masukan dengan vektor contoh. Jarak Hamming vektor masukan x = (,, -, -) dengan e() = (, -, -, -) adalah 3 (kedua vektor sama dalam 3 komponennya, yaitu komponen ke-, 3, dan 4). Jarak Hamming vektor masukan dengan e(2) = (-, -, -, ) adalah karena hanya komponen ke-3 saja yang sama diantara keduanya. Vektor x = (, -, -, -) :

138 JARINGAN KOMPETISI DENGAN BOBOT TETAP 39 y_net = 2 + (0.5) - (-0.5) (-0.5) (-0.5) = 4 y_net 2 = 2 + (-0.5) - (-0.5) (-0.5) (0.5) = 2 y_net terbesar adalah y_net, maka vektor x = (, -, -, -) paling cocok dengan vektor contoh e() = (, -, -, -) Vektor x = (-, -, -, ) : y_net = 2 - (0.5) - (-0.5) (-0.5) + (-0.5) = 2 y_net 2 = 2 - (-0.5) - (-0.5) (-0.5) + (0.5) = 4 y_net terbesar adalah y_net 2, maka vektor x = (-, -, -, ) paling cocok dengan vektor contoh e(2) = (-, -, -, ) Vektor x = (-, -,, ) : y_net = 2 - (0.5) - (-0.5) + (-0.5) + (-0.5) = y_net 2 = 2 - (-0.5) - (-0.5) + (-0.5) + (0.5) = 3 y_net terbesar adalah y_net 2, maka vektor x = (-, -,, ) paling cocok dengan vektor contoh e(2) = (-, -, -, ) SOAL-SOAL LATIHAN. Ulangi contoh 8.2 dengan parameter R = dan R 2 = 3. Gambarkan grafiknya untuk t = 0, t =, dan t = 2. Bagaimana pengaruh penambahan selisih R 2 - R terhadap grafik yang terbentuk 2. Gunakan algoritma topi meksiko pada vektor

139 40 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab X = (.4,.2, 0.7,., 2.3, 3., 2.4, 2.6) Dengan parameter R = 2, R 2 = 3, c = 0.5, c 2 = Jelaskan algoritma jaringan Hamming jika dipakai sebagai pengenalan pola. 4. Diketahui 4 buah vektor contoh pola. #.. #.. #. # # #. #. # # #. #. # # #. #. #. #. #. #. # Pola e() Pola e(2) Pola e(3) Pola e(4) Gunakan jaringan Hamming untuk menentukan mana diantara vektor contoh tersebut yang paling mirip dengan vektor : a. # # # #. # # # # b. # #.. #.. # #

140 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) 9. Arsitektur Jaringan Kohonen Misalkan masukan berupa vektor yang terdiri dari n komponen (tuple) yang akan dikelompokkan dalam maksimum m buah kelompok (disebut vektor contoh). Keluaran jaringan adalah kelompok yang paling dekat/mirip dengan masukan yang diberikan. Ada beberapa ukuran kedekatan yang dapat dipakai. Ukuran yang sering dipakai adalah jarak Euclidean yang paling minimum Bobot vektor-vektor contoh berfungsi sebagai penentu kedekatan vektor contoh tersebut dengan masukan yang diberikan. Selama proses pengaturan, vektor contoh yang pada saat itu paling dekat dengan masukan akan muncul sebagai pemenang. Vektor pemenang (dan vektor-vektor sekitarnya) akan dimodifikasi bobotnya. Arsitektur jaringan Kohonen tampak dalam gambar 9.. Arsitektur ini mirip dengan model lain. Hanya saja jaringan Kohonen tidak menggunakan perhitungan net (hasil kali vektor masukan dengan bobot) maupun fungsi aktivasi. Misalkan pada suatu iterasi tertentu, vektor contoh w menjadi pemenang. Pada iterasi berikutnya, vektor w dan vektor-vektor sekitarnya akan dimodifikasi bobotnya. Gambar 9.2 menunjukkan kasus untuk vektor w berupa vektor dimensi (dengan jarak R = 2), sedangkan gambar 9.3 (a) dan (b) menunjukkan vektor sekitar w jika

141 42 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab w direpresentasikan dalam 2 dimensi dengan R = dan R = 2. Jika menggunakan bentuk bujur sangkar dengan jarak R =, ada 8 vektor di sekitar vektor w (gambar 9.3 (a)). Tetapi jika menggunakan bentuk y... y j... y m w w i w n w j w j i w j n w m wmi wm n x... x i... x n heksagonal, hanya ada 6 vektor di sekitar vektor w (gambar 9.3 (b)). Gambar 9. Gambar 9.2 (a) (b) Gambar Algoritma Jaringan Kohonen * * * * w * * * * vektor sekitar w berjarak 2 Algoritma pengelompokan pola jaringan Kohonen adalah sebagai R = 2 R = * * * * * * * * * * * * * * * * * * * * * * * * * * w * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * w * * * * * * * * * * * * * * * * * * * * * * * * R = 2 R =

142 JARINGAN KOHONEN 43 berikut : 0. Inisialisasi bobot w ji (acak). laju pemahaman awal dan faktor penurunannya bentuk dan jari-jari (=R) topologi sekitarnya.. Selama kondisi penghentian bernilai salah, lakukan langkah Untuk setiap vektor masukan x, lakukan langkah Hitung D(j) = i ji i 2 w x untuk semua j 4. Tentukan indeks J sedemikian hingga D(J) minimum 5. Untuk setiap unit j di sekitar J modifikasi bobot : w w x w baru lama lama j i j i i j i 6. Modifikasi laju pemahaman 7. Uji kondisi penghentian Kondisi penghentian iterasi adalah selisih antara w ji saat itu dengan w ji pada iterasi sebelumnya. Apabila semua w ji hanya berubah sedikit saja, berarti iterasi sudah mencapai konvergensi sehingga dapat dihentikan. Contoh 9. Diketahui 4 buah vektor x() = (,, 0, 0), x(2) = (0, 0, 0, ), x(3) = (, 0, 0, 0) dan x(4) = (0, 0,, ).

143 44 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Gunakan jaringan Kohonen untuk mengelompokkan 4 buah vektor tersebut ke dalam maksimum 2 kelompok. Gunakan laju pemahaman awal (0) = 0.6 dan ( t ) 0.5 ( t ). Jari-jari vektor sekitar yang dimodifikasi = 0 (berarti hanya vektor pemenang yang dimodifikasi bobotnya pada setiap langkah). 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 : w Jari-jari sekitar yang dipakai = 0 dan laju pemahaman awal = 0.6. Pelatihan dilakukan untuk tiap vektor : Untuk vektor x() = (,, 0, 0) : D() = (0.2 ) 2 + (0.6 ) 2 + (0.5 0) 2 + (0.9 0) 2 =.86 D(2) = (0.8 ) 2 + (0.4 ) 2 + (0.7 0) 2 + (0.3 0) 2 = 0.98 D(j) minimum untuk j = 2. Maka vektor bobot di baris 2 dimodifikasi menurut aturan w2 w2 0.6 x w 2 baru lama lama i i i i w 2 = ( 0.8) = 0.92 ; w 22 = ( 0.4) = 0.76 w 23 = (0 0.7) = 0.28 ; w 24 = (0 0.3) = 0.2 Diperoleh vektor bobot baru : w

144 JARINGAN KOHONEN 45 Untuk vektor x(2) = (0, 0, 0, ) : D() = (0.2 0) 2 + (0.6 0) 2 + (0.5 0) 2 + (0.9 ) 2 = 0.66 D(2) = (0.92 0) 2 + (0.76 0) 2 + (0.28 0) 2 + (0.2 ) 2 = 2.28 D(j) minimum untuk j =. Maka vektor bobot di baris dimodifikasi. Diperoleh : w = (0 0.2) = 0.08 ; w 2 = (0 0.6) = 0.24 w 3 = (0 0.5) = 0.2 ; w 4 = ( 0.9) = 0.96 Vektor bobot baru : w Untuk vektor x(3) = (, 0, 0, 0) : D() = (0.08 ) 2 + (0.24 0) 2 + (0.2 0) 2 + (0.96 0) 2 =.87 D(2) = (0.92 ) 2 + (0.76 0) 2 + (0.28 0) 2 + (0.2 0) 2 = 0.68 D(j) minimum untuk j = 2. Maka vektor bobot di baris 2 dimodifikasi. Diperoleh : w 2 = ( 0.92) = ; w 22 = (0 0.76) = w 23 = (0 0.28) = 0.2 ; w 24 = (0 0.2) = Vektor bobot baru : w Untuk vektor x(4) = (0, 0,, ) : D() = (0.08 0) 2 + (0.24 0) 2 + (0.2 ) 2 + (0.96 ) 2 = D(2) = ( ) 2 + ( ) 2 + (0.2 ) 2 + (0.048 ) 2 = D(j) minimum untuk j =. Maka vektor bobot di baris dimodifikasi. Diperoleh :

145 46 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab w = (0 0.08) = ; w 2 = (0 0.24) = w 3 = ( 0.2) = 0.68 ; w 4 = ( 0.96) = Vektor bobot baru : w Sebelum melakukan iterasi kedua dalam mengubah bobot, terlebih dahulu dilakukan modifikasi laju pemahaman baru = 0.5 (0.6) = 0.3 Iterasi kedua dilakukan secara analog dengan iterasi pertama. Baris vektor bobot diubah berdasarkan vektor yang saat itu digunakan. Diperoleh hasil iterasi : Bobot awal : w Iterasi : Iterasi 2 : w w dan seterusnya... Iterasi 00 : w e 2e e e 6 6 Tampak bahwa iterasi tersebut akan konvergen ke vektor bobot w

146 JARINGAN KOHONEN 47 Pengelompokan vektor dilakukan dengan menghitung jarak vektor dengan bobot optimal. Vektor x() = (,, 0, 0) memiliki D() = (0 - ) 2 + (0 - ) 2 + (0.5-0) 2 + ( - 0) 2 = 3.25 D(2) = ( - ) 2 + (0.5 - ) 2 + (0-0) 2 + (0-0) 2 = 0.25 Berarti x() masuk dalam kelompok ke-2 Secara analog, untuk x(2) = (0, 0, 0, ), D() = 0.25 dan D(2) = 2.25 sehingga x(2) masuk dalam kelompok ke- Untuk x(3) = (, 0, 0, 0), D() = 2.25 dan D(2) = 0.25 sehingga x(2) masuk dalam kelompok ke-2 Untuk x(4) = (0, 0,, ), D() = 0.25 dan D(2) = 3.25 sehingga x(2) masuk dalam kelompok ke- 9.3 Pengenalan Pola Jaringan Kohonen dapat juga dipakai untuk mengelompokkan pola menjadi beberapa kelompok, dimana semua pola yang berada dalam satu kelompok merupakan pola yang mirip satu dengan lainnya. Masukan berupa pola, jumlah kelompok maksimum, jari-jari sekitar suatu titik, serta laju pemahaman (dan koefisien penurunannya). Untuk lebih jelasnya perhatikan contoh 9.2 berikut ini : 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

147 48 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Kohonen untuk mengelompokkan 2 pola masukan tersebut ke dalam maksimum 25 kelompok... # # # #..... #. #.... #. #... # # # # #.. #... #.. #... #. # # #. # # # # # # # # #.. #.... #. #.... #. #.... #. # # # # #.. #.... #. #.... #. #.... # # # # # # #... # # # # #. #.... # # # # # # #.... #.. # # # #. # # # # #... #... #.. #.... #. #.... #. #.... #. #.... #. #.... #. #... #. # # # # #.. # # # # # # #. #.... #. # #. #.... # # #.... #. #.... # #.... # # # # # # # #... # # # #..... # # # # #.. #... #.. #... #... # # #.. # # # #.. # # #.. #.. #. #... # #.... # #.... #. #... #.. #.. #... #. # #.. # # A B C D E J K... # # #..... #. #.... #. #... #... #.. # # # # #.. #... #.. #... #. # # # # # #. #..... # #..... # #..... # # # # # # #. #..... # #..... # #..... # # # # # # #... # # #... #... #. #..... # # # # #..... #. #... #... # # #.. # # # # #.. #.... #. #..... # #..... # #..... # #..... # #..... # #.... #. # # # # #.. # # # # # # # # # # # # # # #.. # # # # # # # # # #..... # # # # # #.. #... #.. #... #... # # #.. #.... #. #... #.. #.. #... #. #.... # #..... #. #.... #.. #... #... #.. #.... #. 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 (x,... x 63). x i = 0 jika elemen yang direpresentasikan berupa suatu titik (.) dan x i = jika elemen yang direpresentasikan berupa #. Karena sebuah pola terdiri dari 63 komponen dan maksimum kelompok yang akan dibentuk adalah 25, maka vektor bobot yang digunakan merupa matriks ukuran 25 (baris) x 63 (kolom). Iterasi yang dilakukan tidak jauh berbeda dengan contoh 9.. Langkah 2 algoritma Kohonen dilakukan untuk setiap pola (jadi dilakukan sebanyak 2 kali). Untuk suatu pola, dihitung jarak vektor pola tersebut dengan bobot tiap kelompok. Bobot kelompok yang

148 JARINGAN KOHONEN 49 menghasilkan jarak minimum dipilih sebagai pemenang, dan semua elemen bobot pada baris tersebut dimodifikasi. Fausett (994) mencatat bahwa representasi pola vektor yang berbeda akan menghasilkan pengelompokan yang berbeda. Meskipun disediakan 25 kelompok, tapi hanya paling banyak 0 kelompok yang dihasilkan. Dalam iterasinya, radius R bisa dipilih sembarang. Tapi jika R > 0, modifikasi bobot dilakukan dengan memperhatikan representasi pola (apakah dimensi, 2 dimensi bujur sangkar atau heksagonal). Misalkan R = dengan representasi pola linier dimensi, dan pada suatu iterasi tertentu pemenangnya adalah y i (baris ke- i dalam vektor bobot). Maka sekitar titik y i adalah titik y i- dan y i+. Akan tetapi jika direpresentasikan sebagai matriks, maka ada 8 titik di sekitar titik y i (berarti ada 8 baris dalam matriks bobot) yang dimodifikasi (lihat gambar 9.3) SOAL-SOAL LATIHAN. Ulangi iterasi contoh 9., tetapi pada tiap iterasi, bobot yang dimodifikasi juga neuron di sekitar neuron pemenang (selain neuron pemenang seperti contoh 9.) dengan laju pemahaman awal (0) = 0.4 dan (t+) = 0.5 (t) 2. Diketahui jaringan Kohonen dengan 2 vektor yang masing-masing terdiri dari 5 unit masukan. Bobot vektor adalah : W = (.0, 0.8, 0.6, 0.4, 0.2) W 2 = (0.2, 0.4, 0.6, 0.8,.0)

149 50 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Tentukan vektor pemenang jika diberikan pola masukan x = (0.5,.0, 0.5, 0.0, 0.0) Gunakan laju pemahaman = 0.2 dan hanya bobot neuron pemenang saja yang dimodifikasi

150 Bab 0 PENGENALAN MATLAB 0. Matlab Sebagai Alat Komputasi Matriks Matlab merupakan perangkat lunak yang cocok dipakai sebagai alat komputasi yang melibatkan penggunaan matriks dan vektor. Fungsifungsi dalam toolbox Matlab dibuat untuk memudahkan perhitungan tersebut. Sebagai contoh, matlab dapat dengan mudah dipakai untuk menyelesaikan permasalahan sistem persamaan linier, program linier dengan simpleks, hingga sistem yang kompleks seperti peramalan runtun waktu (time series), pengolahan citra, dll. Banyak model jaringan syaraf tiruan menggunakan manipulasi matriks/vektor dalam iterasinya. Maka Matlab merupakan perangkat lunak yang cocok dipakai. Matlab menyediakan fungsi-fungsi khusus untuk menyelesaikan model jaringan syaraf tiruan. Pemakai tinggal memasukkan vektor masukan, target, model dan parameter yang diinginkan (laju pemahaman, threshold, bias, dll). Dalam buku ini dibahas mengenai pemakaian Matlab versi 6. (atau 6.5) untuk membantu menyelesaikan model jaringan syaraf tiruan. Bab 0-2 membahas tentang dasar-dasar penggunaan Matlab. Dalam bab tersebut diperkenalkan dasar-dasar manipulasi matriks dan vektor. Bagi pembaca yang sudah terbiasa menggunakan Matlab dapat langsung membaca bab 3. Pembaca yang ingin mendalami lebih lanjut dapat mencari fungsi-fungsi Matlab yang lain dalam jendela help.

151 52 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 0.2 Memulai Matlab Ketika pertama kali membuka Matlab, akan muncul beberapa form seperti pada gambar 0. Gambar 0. Secara keseluruhan Matlab memiliki 6 buah jendela : a. Jendela perintah (command window) seperti yang tampak di sebelah kanan gambar 0.. Jendela perintah merupakan tempat untuk memasukkan perintah-perintah yang kita inginkan. Sintaks perintah dalam Matlab akan dijelaskan dengan rinci pada bab-bab selanjutnya. Baik perintah maupun keluaran Matlab muncul dalam jendela perintah. Apabila terlalu lama dipakai, biasanya jendela perintah akan terasa sangat panjang. Untuk menghapus semua teks dalam jendela perintah, anda dapat memilih Clear command window dari menu edit.

152 PENGENALAN MATLAB 53 Semua perintah dan keluaran yang terdapat di jendela perintah dapat kita copy (setelah diblok terlebih dahulu) dan paste ke perangkat lunak lain (misal word). b. Jendela daftar perintah (command history) seperti yang tampak di kiri bawah gambar 0.. Jendela ini memuat daftar perintah yang pernah kita ketikkan dalam jendela perintah. Untuk mengeksekusi kembali perintah yang pernah dipakai, drag perintah tersebut dari jendela daftar perintah ke jendela perintah c. Jendela launch pad seperti yang tampak di bagian kiri atas gambar 0.. 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. d. Jendela Help yang dipakai jika kita mengalami kesulitan sewaktu memilih perintah atau formatnya e. Jendela direktori f. Jendela workspace Selain jendela-jendela tersebut, Matlab juga menyediakan fasilitas editor program. Program dalam Matlab mirip dengan bahasa C++. Caranya adalah dengan membuka m-file dari menu File New M- file, atau dengan menekan Alt-N Untuk membantu melihat format perintah, anda bisa menggunakan help dengan 2 cara a. Mengetikkan help (topik) dalam jendela perintah. Sebagai contoh, jika anda mengetikkan help ones (ones adalah perintah untuk membuat matriks yang semua elemennya adalah ), maka akan muncul teks : >> help ones

153 54 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab ONES Ones array. ONES(N) is an N-by-N matrix of ones. ONES(M,N) or ONES([M,N]) is an M-by-N matrix of ones. ONES(M,N,P,...) or ONES([M N P...]) is an M-by-N-by- P-by-... array of ones. ONES(SIZE(A)) is the same size as A and all ones. See also ZEROS. b. Membuka jendela help dari menu view. Gambar 0.2 Untuk mencari sintaks perintah tertentu, pilihlah folder search di bagian kiri (lihat gambar 0.2). Pada combo box search type, pilihlah function name. Berikutnya, ketikkanlah perintah yang anda inginkan (sebagai contoh adalah ones), lalu klik button go. Matlab akan menampilkan referensi fungsi ones, uraian dan contoh pemakaiannya.

154 Bab MATRIKS DAN MANIPULASINYA. 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.. Matriks Umum Dalam matriks umum, pemakai memasukkan elemen-elemen matriks diantara 2 kurung siku. Sebagai pembatas elemen-elemen matriks dalam satu baris digunakan spasi, dan pembatas baris matriks digunakan semicolon ( ; ). Baris matriks yang berbeda dapat dituliskan dalam satu baris ataupun dalam baris yang berbeda. Matriks A = sebagai : dituliskan dalam jendela perintah >> A = [ ; ; ] atau >> A = [ ; ; ]

155 56 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Sebagai respon setelah penekanan enter, Matlab akan menampilkan matriks yang baru saja dimasukkan A = Apabila kita tidak ingin menampilkannya, ketikkan semicolon ( ; ) pada akhir perintah. Dalam Matlab, dibedakan nama variabel yang berupa huruf besar dengan huruf kecil. Untuk menampilkan isi suatu variabel X, digunakan perintah disp (X). Matlab akan menampilkan isi variabel X (baik berupa numerik, vektor, matriks maupun string) tanpa menuliskan nama variabelnya. Apabila terjadi kesalahan pemasukan elemen matriks (misal jumlah elemen dalam sebuah baris tidak sama, tanda kurung tidak seimbang atau elemennya berupa non numerik) Matlab akan memunculkan pesan kesalahan. >> A = [2 3 ; 3 2]??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns. >> A = [2 3 ; 3 2 a]??? Undefined function or variable 'a'.

156 MATRIKS DAN MANIPULASINYA Matriks khusus Matlab menyediakan fasilitas bagi pemakai untuk membuat matriks khusus secara cepat. Beberapa matriks khusus dan perintahnya antara lain : a. Matriks Diagonal. Matriks diagonal adalah matriks bujur sangkar yang semua elemen diluar diagonal utamanya = 0. Elemen-elemen matriks diagonal dapat dipandang sebagai vektor. Sebagai contoh, matriks diagonal A = vektor V = [ 2-3 ] memiliki elemen diagonal berupa Dalam Matlab, perintah Diag (V) dipakai untuk membentuk matriks diagonal yang elemen diagonalnya adalah vektor V. Untuk membentuk matriks diagonal A diatas, dipakai perintah : >> V = [2-3] >> A = diag (V) b. Matriks Identitas Matriks identitas adalah matriks diagonal yang semua elemen diagonalnya =. Perintah yang dipakai untuk membentuk matriks identitas ordo nxn adalah eye (n). Sebagai contoh, jika n = 3 : >> eye (3) ans =

157 58 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab c. Matriks random Untuk beberapa keperluan, kadangkala diinginkan suatu matriks yang elemennya diambil secara acak. Dalam Matlab, bilangan acak yang digunakan berdistribusi seragam (~ U [0, ]) atau normal standar (~ N (0, )). Perintah rand (m, n) digunakan untuk membentuk matriks ordo mxn yang elemennya bilangan acak ~ U [0, ]. Untuk membentuk matriks yang elemennya ~ N (0, ), digunakan perintah randn (m, n). Untuk membentuk sebuah bilangan acak, gunakan perintah rand (atau randn) Untuk membuat matriks A berordo 3x4 yang elemennya acak berdistribusi seragam, perintah Matlab adalah sebagai berikut : >> A = rand (3,4) A = Fungsi round bisa dipakai untuk membentuk matriks yang elemennya berupa bilangan acak bulat. Misal elemen matriks bulat 0-00, maka kalikan bilangan bilangan acak dengan 00 kemudian dibulatkan. >> B = round (00 * rand (3,4)) B =

158 MATRIKS DAN MANIPULASINYA 59 d. Matriks Nol Matriks nol adalah matriks yang semua elemennya = 0 Perintah zeros (m,n) menghasilkan matriks berordo mxn yang semua elemennya = 0. Untuk membentuk matriks bujur sangkar nxn yang semua elemennya = 0, gunakan perintah zeros (n) >> A = zeros (3,5) A = e. Matriks satuan Matriks satuan mirip dengan matriks nol, tapi dengan semua elemen =. Perintah yang dipakai adalah ones (m,n). Jika matriksnya bujur sangkar ordo nxn, gunakan perintah ones (n) >> ones (3) ans = f. Matriks pascal Matriks segitiga pascal adalah matriks yang berisi koefisien segitiga pascal.

159 60 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab a ij jika i= atau j= a a i, j i, j jika i dan j Elemen-elemen dalam diagonal sekunder (dari kiri bawah ke kanan atas) merupakan koefisien ekspansi (x + y) k >> A = pascal (5) A = Tabel. merupakan ringkasan perintah untuk membuat matriks khusus. Selain perintah yang tercantum dalam tabel., masih banyak lagi matriks khusus yang dapat dibuat dengan mudah menggunakan Matlab. Pembaca dapat melihatnya dari help Tabel. Matriks Perintah Keterangan Diagonal diag (v) v = vektor yang elemennya merupakan elemen matriks diagonal Identitas eye (n) n = ordo matriks bujur sangkar Random rand (m,n) randn (m,n) ordo matriks = mxn rand menghasilkan elemen ~ U (0,) sedangkan randn ~ N (0,) Nol zeros (m,n) ordo matriks = mxn

160 MATRIKS DAN MANIPULASINYA 6 Satuan ones (m,n) ordo matriks = mxn Pascal Pascal (n).2 Vektor Vektor merupakan kasus khusus matriks yaitu hanya terdiri dari sebuah baris (disebut vektor baris) atau sebuah kolom (disebut vektor kolom). Pembuatan vektor baris dilakukan dengan menuliskan elemen-elemen vektor (dipisahkan dengan spasi) diantara 2 buah kurung siku. Sebaliknya untuk membuat vektor kolom, elemen vektor dipisahkan dengan semicolon ( ; ). Sebagai contoh, untuk membuat vektor x = 2 3 dan y = 2 3, gunakan perintah : >> x = [2 3 -] x = >> y = [2 ; 3 ; -] y = 2 3

161 62 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab -.3 Operasi Skalar Beberapa skalar dapat dioperasikan untuk menghasilkan skalar yang baru. Operasi-operasi pada skalar tampak pada tabel.2 Tabel.2 Operator Keterangan + Penjumlahan 2 skalar - Pengurangan 2 kalar * Perkalian 2 skalar / Pembagian 2 skalar ^ mod (m,n) Perpangkatan Sisa hasil bagi m dengan n fix (n) Pembulatan terdekat n ke arah 0 floor (n) Pembulatan terdekat n ke arah - ceil (n) Pembulatan terdekat n ke arah + round (n) Pembulatan n ke bilangan bulat terdekat sebagai contoh, jika a = 5, b = 2, x = 4,6, y = -3,2, maka a + b = 7 ; a b = 3 ; a * b = 0 ; a/b = 2.5 ; a^b = 25 ; mod (a, b) = fix (x) = 4 ; fix (y) = -3 floor (x) = 4 ; floor (y) = -4

162 MATRIKS DAN MANIPULASINYA 63 ceil (x) = 5 ; ceil (y) = -3 round (x) = 5 ; round (y) = -3 Operator-operator aritmatika yang ada pada tabel.2 juga dapat digunakan pada matriks (kecuali pembagian 2 matriks yang tidak didefinisikan). Operasi perpangkatan bisa dilakukan jika matriksnya bujur sangkar (ingat bahwa perpangkatan sama dengan perkalian 2 matriks). Pada fungsi mod, fix, floor, ceil, round, operasi dilakukan pada elemen-elemen matriks yang sesuai. Elemen matriks dianggap sebagai sebuah skalar 3 4 Misalkan A = dan B = 2 5 kedua matriks adalah sebagai berikut : Hasil operasi >> A = [3-4 ; 2 5] A = >> B = [2-3 ; -3] B = >> A+B ans =

163 64 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab >> A-B ans = >> A*B??? Error using ==> * Inner matrix dimensions must agree. >> mod (A,B) ans = Misalkan X = Hasil operasi fungsi fix, floor, ceil, round pada matriks X adalah sebagai berikut : >> X = [ ; ; ] X = >> fix (X) ans =

164 MATRIKS DAN MANIPULASINYA >> floor (X) ans = >> ceil (X) ans = >> round (X) ans = Selain operasi aritmatika diatas, Matlab juga menyediakan fasilitas operasi vektor inner product (dot product) melalui perintah dot (x,y). x.y = xy i i i

165 66 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Jika vektor baris dan vektor kolom dioperasikan dengan operator perkalian, maka ada 2 kemungkinan hasil yaitu berupa matriks (vektor kolom * vektor baris) atau berupa skalar (vektor baris * vektor kolom). Hasil berupa skalar sama dengan hasil operasi dot. Misalkan u = 3 4 dan v = vektor adalah sebagai berikut : >> u = [- 3 4] u = Hasil perkalian kedua >> v = [4 ; -2 ; 3] v = >> dot (u,v) ans = 2 >> u*v ans = 2 >> v*u

166 MATRIKS DAN MANIPULASINYA 67 ans = Manipulasi Matriks Matlab menyediakan fungsi-fungsi untuk memanipulasi matriks. Beberapa fungsi untuk memanipulasi matriks dijabarkan berikut ini. Selain fungsi-fungsi tersebut, masih banyak fungsi manipulasi matriks yang lain (umumnya berhubungan dengan bidang tertentu, misal menyelesaikan sistem persamaan linier, metode simpleks, dll). a. Transpose matriks Transpose matriks A didapat dengan menukarkan baris dan kolom A. Dalam Matlab perintah transpose dilakukan dengan. A = transpose (A) 3 4 Jika A =, maka keluaran Matlab terhadap perintah 2 5 A adalah sebagai berikut : >> A' ans = b. Ordo matriks

167 68 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Perintah size (A) akan menghasilkan ordo matriks A. Jika A berupa suatu vektor, maka hasilnya berupa jumlah elemen dalam vektor tersebut. Statemen [m, n] = size (A) akan menyebabkan variabel m dan n berisi ordo matriks A Misalkan sudah dimasukkan matriks A = >> A = [3-4 ; 2 5] A = >> [m,n] = size (A) m = 2 n = 3 c. Invers matriks Misalkan A adalah matriks bujur sangkar. Invers A (simbol A - ) adalah suatu matriks sedemikian hingga A. A - = A -.A = I Dalam Matlab digunakan perintah Inv untuk mencari invers 2 suatu matriks. Misalkan A = >> A = [2 - - ; -3 2 ; 2 5 ] A =

168 MATRIKS DAN MANIPULASINYA >> B = inv (A) B = >> A*B ans = d. Menjumlahkan elemen diagonal Untuk menjumlahkan semua elemen yang berada di diagonal utama, digunakan perintah trace. Penjumlahan elemen diagonal ini sering digunakan untuk mencari nilai eigen suatu matriks secara iteratif Sebagai contoh, jika B = , maka trace (B) = 4++2 = 7 >> B = [4 2 - ; 3 8 ; 9 3 2] B =

169 70 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab >> k = trace (B) k = 7 e. Menjumlahkan elemen-elemen matriks Misalkan A adalah suatu matriks berorodo mxn. Perintah sum (A) atau sum (A,) akan menjumlahkan semua elemen dalam satu kolom. Hasilnya berupa suatu vektor baris xn. Jika diinginkan penjumlahan dilakukan per baris, maka gunakan perintah sum (A,2). Akan tetapi bila A berupa suatu vektor (baik vektor baris maupun vektor kolom), maka sum (A) akan menghasilkan suatu skalar berupa jumlah semua elemen dalam A >> A = [2 - - ; -3 2 ; 2 5 ] A = >> sum (A) ans = 6 >> sum (A,2) ans =

170 MATRIKS DAN MANIPULASINYA >> v = [4 ; -2 ; 3] >> sum (v) ans = 5 >> u = [- 3 4] >> sum (u) ans = 6 f. Mengurutkan elemen matriks Jika A adalah suatu matriks, perintah sort (A) atau sort (A,) akan mengurutkan elemen dalam satu kolom dari kecil ke besar. Jika diinginkan pengurutan dilakukan per baris, gunakan perintah sort (A,2). Format perintah ini mirip dengan perintah sum. >> A = [ 3 ; ; 2-5 2] A = >> sort (A,)

171 72 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab ans = >> sort (A,2) ans = g. Menguji kesamaan 2 matiks Untuk menguji apakah 2 buah matriks yang sudah dimasukkan (misal A dan B) sama, gunakan perintah isequal (A,B). Keluaran perintah ini berupa bilangan biner. Jika A = B maka keluaran =. Sebaliknya, jika A B (berarti minimal ada satu elemen seletak yang tidak sama), maka keluaran = 0 >> A = [ 3 ; ; 2-5 2] A = >> B = [2 3 ; ; 2-5 2] B =

172 MATRIKS DAN MANIPULASINYA 73 >> isequal (A,B) ans = 0 h. Norma Vektor Norma vektor adalah suatu ukuran untuk mengkuantifikasi vektor. Misalkan x = x x2... xn adalah suatu vektor. Norma vektor didefinisikan sebagai berikut : p n j p p p p p p j 2... n x x x x x Secara khusus, jika p =, maka harga mutlak elemen-elemen vektor. Jika p = 2, panjang vektor x x sama dengan penjumlahan p x menyatakan p Perintah norm (x,p) dalam Matlab (x berupa vektor baris ataupun kolom) menghasilkan keluaran norma vektor x = x. Untuk p = 2, cukup dituliskan norm (x) saja. >> x = [4-2 3] x = p >> norm (x) ans =

173 74 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab >> norm (x,) ans = 9 >> norm (x,3) ans = Mengakses Elemen Matriks Elemen matriks bisa kita akses satu persatu maupun per baris/kolom. Dengan cara tersebut, maka proses perhitungan yang melibatkan seluruh elemen dalam satu baris/kolom dapat diproses dengan cepat. Selain itu, matlab menyediakan fasilitas untuk menghapus/menambah baris/kolom, serta penggabungan 2 buah matriks. Cara pemrosesannya adalah sebagai berikut : a. Mengakses sebuah elemen matriks Untuk mengakses sebuah elemen dalam matriks, cukup dilakukan dengan menuliskan nama matriks diikuti indeksnya diantara 2 buah kurung. Perhatikan perbedaan penggunaan kurung biasa ( ( ) ) dengan kurung siku ( [ ] ). Kurung biasa dipakai untuk mengakses elemen matriks (atau juga sebagai parameter fungsi). Kurung siku dipakai untuk membentuk matriks. Sebagai contoh, jika A adalah matriks ajaib yang diperoleh dengan perintah magic, maka untuk mengakses elemen baris ke-4 kolom-2 dilakukan dengan statemen A(4,2) A =

174 MATRIKS DAN MANIPULASINYA >> A(4,2) ans = 4 b. Mengakses seluruh elemen dalam satu baris/kolom Untuk mengakses seluruh elemen dalam satu baris/kolom, digunakan indeks titik dua (:). Jadi perintah A(4,:) menghasilkan suatu vektor yang isinya adalah seluruh elemen baris ke-4 matriks A. Sebaliknya, perintah A(:,4) menghasilkan suatu vektor yang isinya adalah seluruh elemen kolom ke-4. Perintah A(:m, n) menghasilkan vektor yang isinya elemen matriks pada kolom-n, mulai dari baris- hingga baris-n. Cara pengaksesan seperti ini akan memudahkan kita untuk memanipulasi elemen-elemen matriks yang terletak dalam satu baris/kolom. Sebagai contoh, untuk menghitung jumlah elemen baris 3, cukup gunakan perintah sum (A(3, :)) >> A = magic (4) A =

175 76 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab >> A(4,:) ans = >> A(:,4) ans = >> A(2:3,4) ans = 8 2 >> sum (A(3,:)) ans = 34 c. Menambah baris/kolom matriks Jika A berordo 4x4, maka statemen A(4,5) akan menyebabkan error karena indeks kolom yang diminta melebihi ordo matriks. Akan tetapi jika kita menyimpan nilai pada elemen matriks yang

176 MATRIKS DAN MANIPULASINYA 77 melebihi ordonya, maka matlab akan secara otomatis menambah baris/kolom matriks A. Misal A = ones (4,4). Statemen A(4,5) = 7 akan menyebabkan matriks A berordo 4x5. Semua elemen pada kolom ke-5 = 0, keculai A(4,5) = 7 >> A = ones (4) A = >> A(4,5) = 7 A = Penambahan elemen dapat dilakukan pada beberapa baris/kolom sekaligus. Sebagai contoh, perintah A(2:4, 5:6) = 2 akan menambahkan semua elemen pada baris-2 hingga 4, kolom 5 hingga 6 (jadi ditambahkan 2 kolom baru) dengan bilangan 2 >> A = ones (4) A =

177 78 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab >> A(2:4, 5:6) = 2 A = Apabila indeks matriks berada dalam range matriks mula-mula, maka efeknya adalah mengganti (bukan menambah) elemen semula. >> A = ones (4) A = >> A(2:4, :2) = 2 A =

178 MATRIKS DAN MANIPULASINYA 79 d. Menghapus baris/kolom matriks Cara menghapus baris/kolom matriks dilakukan dengan cara yang mirip dengan penambahan baris/kolom. Bedanya, di sisi kanan assignment adalah sepasang kurung siku kosong. Jika A = magic (4), maka perintah A(:,3) = [] akan menghapus kolom ketiga matriks A. A(2,:) = [] menghapus baris kedua dari matriks A. Akan tetapi statemen A(2,3) = [] akan menghasilkan kesalahan karena jika elemen A(2,3) dihapus, maka hasilnya bukan lagi suatu matriks. >> A = magic (4) A = >> A(:,3) = [] A = >> A(2,:)=[] A = 6 2 3

179 80 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab e. Menggabungkan beberapa matriks Penggabungan matriks dilakukan dengan menempatkan matriks kedua di sebelah matriks pertama. Misalkan A = ones (4) yang berordo 4x4. Perintah [A magic(4)] akan menyebabkan penambahan matriks magic (4) di sebelah kanan matriks A sehingga A berordo 4x8. >> A = ones (4) A = >> [A magic(4)] ans =

180 MATRIKS DAN MANIPULASINYA 8 Untuk menambahkan magic (4) di bawah matriks A, gunakan perintah [A ; magic(4)]. >> A = ones (4) A = >> [A ; magic(4)] ans = Penambahan matriks dalam kolom dan baris sekaligus harus menghasilkan matriks yang ordonya benar. Jadi perintah [A magic(4) ; magic(4)] akan menyebabkan kesalahan karena elemen A(5,5) hingga A(8,8) tidak ada.

181 82 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab SOAL-SOAL LATIHAN. Diketahui matriks A, B, dan C sebagai berikut : A = ; B = ; C = Hitunglah menggunakan Matlab dan telitilah hasilnya. a. AC b. Apakah AB = BA? c. Apakah (AB) C = A (BC)? d. A - A 2. Buatlah matriks A berordo 3x4 dan B berordo 4x2. Telitilah bagaimana efek perintah berikut ini pada A dan B yang bukan matriks bujur sangkar : a. Trace b. Inv 3. Apakah arti operasi ^ pada matriks? pada vektor? 4. Apakah arti perintah eye (m,n) dengan m n. Cobalah untuk eye (4,3) dan eye (3,4). Apakah hasilnya berupa matriks identitas? 5. Buatlah matriks A berordo 3x3 dengan elemen acak bulat berdistribusi seragam antara [0, 50]. 6. Buatlah matriks seperti soal #5 beberapa kali untuk melihat apakah A - A selalu sama dengan I 7. Buatlah matriks ukuran 3x3 yang semua elemennya = 5

182 MATRIKS DAN MANIPULASINYA Apakah perkalian 2 buah vektor dapat menghasilkan semuah vektor? 9. Diketahui x = [ ]. Hitunglah x x. Cobalah beberapa kali untuk vektor baris maupun kolom x dengan ordo berbedabeda? Apakah hasilnya selalu sama? 0. Bagaimana cara menguji (dengan Matlab) apakah sebuah matriks simetris? Gunakan cara tersebut untuk menguji matriks A =

183 Bab 2 PEMROGRAMAN MATLAB 2. Membentuk M-File Pemrograman dengan M-File memberikan kontrol lebih banyak dibandingkan dengan command line seperti yang dibicarakan dalam bab. Dengan M-File kita bisa melakukan percabangan, perulangan dan lain-lain. Struktur Program M-File mirip dengan bahasa C yang membagi program dalam blok program berupa fungsi-fungsi. Tiap fungsi dapat memanggil fungsi yang lain. Script dalam jendela perintah berguna untuk menyelesaikan permasalahan yang pendek. Sebaliknya M-file dapat dipakai untuk berbagai aplikasi sesuai keinginan pemakai. Dalam bab ini dibahas tentang dasar-dasar pembuatan program dalam M-file. Program-program yang membutuhkan fungsi yang lebih kompleks dapat dilihat pada jendela launch pad atau help. Jendela M-file dapat dibuka melalui menu File New M file atau dengan menekan Ctrl-N. Jendela M-file tampak pada gambar 2.. 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.

184 86 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Gambar 2. Fungsi dalam Matlab terdiri dari 2 bagian yaitu definisi fungsi dan tubuh fungsi a. Definisi fungsi Bentuk definisi fungsi adalah sebagai berikut : function <argumen keluaran> = <nama fungsi> (<argumen masukan>) Sebagai contoh : Function y = average (x) argumen masukan nama fungsi argumen keluaran kata kunci

185 PEMROGRAMAN MATLAB 87 Baik argumen masukan maupun keluaran bisa berupa variabel berupa skalar, vektor maupun matriks, atau tanpa argumen sama sekali. Argumen masukan boleh lebih dari satu. Masing-masing dipisahkan dengan tanda koma. Demikian juga apabila argumen keluaran lebih dari satu elemen, maka argumen tersebut dipisahkan dengan tanda koma dan diletakkan diantara kurung siku. function [x,y,z] = sphere(theta,phi,rho) b. Tubuh fungsi Tubuh fungsi berisi semua perintah Matlab untuk membuat komputasi dan memberikan harga kepada argumen keluaran. Statemen dalam tubuh fungsi bisa berupa pemberian nilai pada suatu variabel, masukan/keluaran, fungsi kontrol, iterasi, ataupun pemanggilan kepada fungsi lain, Untuk membantu menjelaskan perintah, Matlab memberi fasilitas membuat komentar. Komentar didahului dengan tanda %. Statemen setelah tanda % tidak akan diproses oleh Matlab. Contoh fungsi dalam Matlab adalah sebagai berikut. Penjelasan tentang bagian-bagian fungsi dapat dibaca pada sub bab berikutnya. Function y = average (x) %fungsi untuk menghitung rata-rata elemen dalam vektor x y = sum(x)/length(x); Perhatikan bahwa agar dapat dijalankan dengan benar, maka program harus disimpan dahulu ke dalam file yang namanya sama (berekstensi *.m) dengan nama fungsi

186 88 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 2.2 Masukan dan Keluaran 2.2. Perintah Masukan-Keluaran dari Keyboard Untuk membaca data dari keyboard, gunakan perintah Input. Selanjutnya user harus memasukkan nilai variabel di jendela perintah (command window) 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. Untuk menampilkan isi suatu variabel, ada 2 perintah yang dipakai yaitu : a. Perintah disp. Formatnya adalah : disp (nama_variabel) Perintah disp (X) akan menampilkan isi X di layar jendela perintah. Apabila argumen disp berupa string (teks diantara 2 tanda petik), maka akan ditampilkan teks tersebut. Perhatikan disini bahwa argumen perintah disp adalah tunggal. Jika kita ingin mencetak nilai beberapa variabel (atau teks dan variabel), maka perintah disp harus dituliskan beberapa kali. b. Perintah fprintf. Formatnya adalah : fprintf (format, A,...)

187 PEMROGRAMAN MATLAB 89 Format adalah bentuk penulisan yang akan ditampilkan di layar seperti jumlah angka desimal, tab, lebar karakter, penulisan di baris baru, dll. A,... adalah nama variabel yang isinya dicetak di layar. Format penulisan bilangan riil adalah sebagai berikut : % -2.5 e konversi karakter (harus ada) jumlah digit desimal (optional) lebar penulisan (optional) tanda +/- (optional) Konversi karakter yang umum dipakai tampak pada tabel 2. Tabel 2. Konversi Keterangan %c Karakter tunggal %d Notasi desimal dengan tanda +/- %e %f Notasi eksponensial Notasi titik tetap (fixed point) %i Notasi desimal dengan tanda +/- Selain konversi karakter, tersedia pula karakter pengontrol penulisan (escape character) yang diawali dengan backslash ( \ ). Beberapa karakter pengontrol yang sering dipakai tampak pada tabel 2.2

188 90 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Tabel 2.2 Karakter Keterangan \b backspace \f formfeed (penulisan diteruskan dalam baris yang sama) \n penulisan dilakukan pada baris baru Setelah beberapa kali penggunaan, kadangkala jendela perintah terasa penuh. Untuk membersihkannya, gunakan perintah clc atau dari menu view clear command window Perintah Masukan-Keluaran Dari Berkas Masukan dan keluaran juga bisa diakses dari/ke berkas. Sebelum mengakses, berkas terlebih dahulu harus dibuka dengan perintah fopen. Format perintahnya adalah sebagai berikut : fid = fopen(filename,permission) fid adalah variabel identitas file yang nantinya dipakai ketika akan membaca atau menulis. Filename adalah string berisi nama file (dan direktorinya) yang dibaca/ditulis. Permission adalah kondisi file yang dibaca/ditulis. Defaultnya adalah file hanya dibuka untuk dibaca. Kondisi yang umum dipakai tampak pada tabel 2.3 Tabel 2.3 Permission r w Keterangan Buka file hanya untuk dibaca (default) Buka file, atau buat file baru untuk ditulisi (rewrite)

189 PEMROGRAMAN MATLAB 9 a r+, w+, a+ Buka file, atau buat file baru untuk ditulisi (append di akhir file yang telah ada) sama seperti r, w, a. Hanya disini file dapat dipakai untuk baca maupun tulis Untuk menulis isi variabel ke berkas, gunakan perintah fprintf yang formatnya mirip dengan format fprintf bukan berkas. Bedanya adalah adanya tambahan nama variabel identitas file fprintf (fid, format, A,...) fid adalah nama variabel identitas file yang dipakai pada perintah fopen. Format adalah format penulisan (lengkapnya lihat tabel 2. dan 2.2). A,... adalah nama variabel yang isinya dituliskan pada berkas. 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. Untuk membaca berkas teks, digunakan perintah fread yang formatnya adalah sebagai berikut : A = fread(fid,size,precision) fid adalah variabel nama file yang digunakan dalam fopen. size adalah jumlah data yang dibaca dan ditempatkan di variabel A. Jika tidak dituliskan, maka berkas akan dibaca hingga akhir. Precision menyatakan format teks yang dibaca (integer dengan tanda, dll) Contoh 2. Buatlah program untuk menghitung rata-rata dan standar deviasi sejumlah data yang dimasukkan dalam sebuah vektor.

190 92 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Penyelesaian Misalkan x = ( x x2... x n ) xi i= Maka rata-rata x = x = n n i= Standar deviasi = σ = ( x ) n n x 2 i Untuk membuat program dibutuhkan fungsi untuk menghitung n (banyaknya data), jumlah data ( x ) dan jumlah kuadrat data 2 ( x ). Fungsi untuk menghitung banyaknya data adalah numel (x). Fungsi untuk menghitung jumlah data adalah sum (x). Perhatikan bahwa dot (x,y) digunakan untuk menghitung hasil kali titik antara vektor x dengan vektor y. Maka dot (x,x) akan sama dengan jumlah kuadrat. Jadi untuk menghitung jumlah kuadrat data digunakan fungsi dot (x,x). Perhatikan pula bahwa jika x adalah vektor baris, maka dot (x,x) akan sama dengan x.x. program untuk menghitung rata-rata dan standar deviasi adalah sebagai berikut : function rata2 clc x = input ('masukkan data vektor x = ') rata = sum(x)/numel(x); sd = sqrt (dot(x,x)/numel(x)-rata^2); 2

191 PEMROGRAMAN MATLAB 93 fprintf ('rata-rata = %5.2f ; std dev = %5.2f',rata,sd) end Jika dijalankan untuk data x = ( ), maka akan menghasilkan keluaran : masukkan data vektor x = [ ] x = rata-rata = 2.33 ; std dev = 2.87 Penggunaan semicolon (;) di akhir baris perintah (seperti pada baris menghitung rata dan sd) menyebabkan tidak tercetaknya nilai variabel tersebut. 2.3 Statemen Kendali Statemen kondisi memungkinkan kita untuk mengontrol alur program. Format perintahnya adalah sebagai berikut : if expression statements end expression adalah kondisi yang menentukan arah percabangan. Jika kondisi ini benar, maka statements akan dilakukan. Jika salah maka program akan melompat ke perintah setelah end. Struktur tersebut digambarkan dalam bagan alir gambar 2.

192 94 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab expression benar? ya Statements tidak Perintah setelah end Gambar 2. Statements 2 tidak expression benar? ya Statements Perintah setelah end Gambar 2.2 Bentuk yang lebih umum adalah menentukan statemen apa yang dilakukan jika kondisi expression bernilai salah. Untuk itu ditambahkan perintah else. Jika expression bernilai benar, maka statemens yang akan dilakukan. Akan tetapi jika salah, maka statements2 yang dilakukan. if expression statements else statements2 end

193 PEMROGRAMAN MATLAB 95 Gambar 2.2 menunjukkan bagan alir proses dengan perintah if-thenelse Expression dalam kedua bentuk if tersebut berisi variabel-variabel yang dihubungkan dengan operator logika (atau fungsi yang memiliki return boolean true atau false). Operator logika yang dapat dipakai tampak pada tabel 2.4 Tabel 2.4 Operator Arti < Lebih kecil dari <= Lebih kecil atau sama dengan > Lebih besar dari >= Lebih besar atau sama dengan == Sama dengan ~= Tidak sama dengan Contoh 2.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 (true) jika kedua matriks sama dan bernilai false jika keduanya tidak sama. Programnya adalah sebagai berikut :

194 96 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 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 Jika dijalankan dengan menginputkan A = dan B = , diperoleh hasil sebagai berikut : masukkan matriks A = [2 5-3 ; 2 8] a = masukkan matriks B = [2 5-3 ; 2 8] b = kedua matriks sama

195 PEMROGRAMAN MATLAB 97 Contoh 2.3 Misal A adalah matriks bujur sangkar. Buatlah program untuk menghitung A k 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. Untuk mempangkatkan matriks, gunakan operator ^. Program selengkapnya adalah sebagai berikut : function pangkatmatriks clc a = input ('masukkan matriks A = ') k = input ('masukkan pangkat matriks = ') [m,n] = size (a); if m == n ak = a^k; disp ('ak = ') disp (ak) else disp ('matriks bukan bujur sangkar') end 2 - Bila dijalankan untuk A = 3 2, diperoleh keluaran : masukkan matriks A = [2 - ; 3 2] 3

196 98 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab a = masukkan pangkat matriks = 3 k = 3 ak = Statemen Perulangan Statemen perulangan digunakan untuk mengulang-ulang suatu blok perintah. Ada 2 bentuk perulangan yang umumnya dipakai : a. Struktur For Dalam struktur ini, jumlah perulangan yang akan dilakukan ditentukan oleh pemakai. Jadi sebelum statemen dalam perulangan dieksekusi, kita sudah tahu berapa kali nantinya statemen tersebut dieksekusi b. Struktur While Dalam struktur while, banyaknya perulangan ditentukan dari kondisi syarat yang ditetapkan. Selama kondisi tersebut bernilai benar, maka perulangan terus dilakukan. Perulangan bisa dilakukan beberapa kali, tidak pernah dilakukan sama sekali, atau

197 PEMROGRAMAN MATLAB 99 bahkan dilakukan terus menerus tanpa pernah berhenti. Pembuat program harus memastikan bahwa suatu saat nantinya, kondisi syarat bernilai salah (sehingga perulangan berhenti) 2.4. Struktur For Bentuk struktur For adalah sebagai berikut : for variable = skalar : skalar statement... statement end 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. Sebagai contoh, perhatikan program n = 4 a = zeros(n,n) % Matriks awal for i = :n for j = :n a(i,j) = /(i+j -); end end Program tersebut akan secara iteratif mengisi elemen matriks baris-i kolom j dengan i+ j

198 200 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Contoh 2.4 Misal A adalah matriks bujur sangkar dan k adalah bilangan bulat positip yang diinputkan. Buatlah program untuk mencetak matriks A, A 2,... A k Penyelesaian Program ini mirip dengan contoh 2.3. Hanya saja disini akan ditampilkan semua matriks A i (i =, 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 = :k ak = a^i; fprintf ('a^%d = \n',i) disp (ak) end else disp ('matriks bukan bujur sangkar') end 2 - Bila dijalankan untuk A = 3 2 dan k = 3, diperoleh keluaran :

199 PEMROGRAMAN MATLAB 20 masukkan matriks A = [2 - ; 3 2] masukkan pangkat matriks = 3 a^ = a^2 = -4 2 a^3 = Contoh 2.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 Untuk matriks A berordo nxn, diagonal sekunder baris ke-i adalah elemen a i, n-i+ Program selengkapnya adalah sebagai berikut :

200 202 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab function diagsekunder clc a = input ('masukkan matriks A = ') [m,n] = size (a); if m == n for i = :n a(i,n-i+) = - * a(i,n-i+); end fprintf ('matriks A baru = \n') disp (a) else disp ('matriks bukan bujur sangkar') end 2 - Bila dijalankan untuk matriks A = 3 2, diperoleh hasil : masukkan matriks A = [2 - ; 3 2] a = matriks A baru = 2-3 2

201 PEMROGRAMAN MATLAB Struktur While Bentuk umum struktur While adalah sebagai berikut : while expression op_rel expression statements end dimana op_rel adalah ==, <, >, <=, >=, atau ~=. Statemen akan dieksekusi terus menerus selama ekspresi setelah kata kunci while bernilai benar. Struktur while dipakai jika kita akan menghentikan iterasi segera setelah dicapai kesimpulan. Sebagai contoh, misalkan kita ingin mengecek apakah dalam matriks yang diinputkan ada elemen 0. Pengecekan tidak perlu kita lakukan pada semua elemen matriks. Misalkan pengecekan dimulai dari elemen kiri atas. Segera setelah ditemukan elemen 0, maka pengecekan dihentikan dan kita bisa mengambil kesimpulan tentang matriks tersebut. Contoh 2.6 Misalkan A adalah matriks bujur sangkar ordo nxn. A disebut matriks ajaib (magic square) apabila elemen dalam A adalah bilangan, 2,..., n 2, dan jumlahan semua elemen dalam satu baris, satu kolom dan diagonalnya sama. 8 6 Sebagai contoh matriks A = merupakan matriks ajaib karena jumlah tiap baris = jumlah tiap kolom = jumlah tiap diagonal = 5.

202 204 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Buatlah program untuk mendeteksi apakah matriks yang diinputkan merupakan matriks ajaib. Jangan menggunakan perintah magic (meskipun perintah tersebut akan menghasilkan matriks ajaib) 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- (atau kolom-) dalam matriks. Untuk memudahkan, gunakan perintah sum(a(,:n)). Misal jumlahnya adalah jum. Berikutnya untuk setiap baris lain, diuji apakah jumlahnya sama dengan jum. Jika ditemukan salah satu baris yang jumlahnya tidak sama dengan jum, maka program dihentikan dan ditampilkan pesan bahwa matriks yang dimasukkan bukan matriks ajaib. Ulangi proses pengecekan untuk tiap kolom, diagonal utama dan diagonal sekunder. Program selengkapnya adalah sebagai berikut : function matriksajaib clc a = input ('masukkan matriks A = ') [m,n] = size (a); if m == n jum = sum (a(,:n)); % hitung jumlah baris- fprintf ('jum baris = %d\n', jum) ajaib = ; i = 2; while ((ajaib) & (i <= n))

203 PEMROGRAMAN MATLAB 205 end % cek jumlah per baris fprintf ('jum baris %d = %d\n', i, sum(a(i,:n))) if (sum (a(i,:n)) ~= jum) ajaib = 0; end i = i+; j = ; while ((ajaib) & (j <= n)) % cek jumlah per kolom fprintf ('jum kolom %d = %d\n', j, sum (a(:n,j))) if (sum (a(:n,j)) ~= jum) ajaib = 0 end j = j+; end fprintf ('jum diag utama = %d\n', sum (diag(a))) if (sum (diag (a)) ~= jum) % cek jumlah diagonal utama ajaib = 0 end

204 206 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab % hitung jumlah diagonal sekunder js = 0; for i = :n js = js + a(i,n-i+); end fprintf ('jum diag sekunder = %d\n', js) if js ~= jum % cek jumlah diag sekunder ajaib = 0 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 Contoh keluaran untuk matriks adalah sebagai berikut : masukkan matriks A = [8 6 ; ; 4 9 2] a =

205 PEMROGRAMAN MATLAB jum baris = 5 jum baris 2 = 5 jum baris 3 = 5 jum kolom = 5 jum kolom 2 = 5 jum kolom 3 = 5 jum diag utama = 5 jum diag sekunder = 5 matriks A = ajaib 2.5 Pembuatan Grafik Matlab menyediakan fasilitas untuk membuat berbagai macam grafik (grafik garis, histogram, dll) baik 2 maupun 3 dimensi. Pada bab ini hanya akan dibahas tentang bagaimana cara membuat grafik garis 2 dimensi. Pembaca yang ingin mengetahui cara pembuatan jenis grafik yang lain dapat mempelajarinya dari jendela help. Langkah-langkah yang harus dilakukan untuk membuat grafik garis fungsi y = f(x) adalah sebagai berikut : a. Tentukan interval sumbu x dimana grafik dibuat. Statemen x = a:b:c merupakan perintah untuk membuat titiktitik grafik pada sumbu x mulai dari x = a hingga x = c dengan

206 208 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab penambahan (increment) sebesar b. Semakin kecil nilai b, grafik yang tertampil akan semakin halus. x = : 0.2 : 5 berarti grafik yang dibuat adalah fungsi pada x =,.2,.4,.6,..., 4.8, 5 b. Tuliskan fungsi yang akan dibuat grafiknya Misalkan akan dibuat grafik polinomial f(x) = a n x n + a n- x n a 2 x 2 + a x + a 0. Koefisien polinomial (menurun) disimpan dalam suatu vektor p = [a n a n-... a 2 a a 0 ]. Perintah polyval (p,x) akan menghitung nilai polinomial (yang koefisiennya disimpan dalam vektor p) pada titik x. Untuk menggambar grafik fungsi y = x 2 + 2x 5 pada [-5, 5], digunakan perintah : x = -5:0.:5; p = [ 2-5] y = polyval (p,x); c. Pilih jendela dan posisi dimana grafik digambarkan Untuk membentuk grafik, digunakan perintah figure. subplot (2,3,) subplot (2,3,2) subplot (2,3,3) subplot (2,3,4) subplot (2,3,5) subplot (2,3,6) Gambar 2.3 Perintah subplot (m,n,p) akan membagi jendela gambar dalam m baris dan n kolom dan meletakkan grafik pada sel ke-p. Perintah subplot bermanfaat apabila kita hendak

207 PEMROGRAMAN MATLAB 209 menggambarkan beberapa grafik berbeda (biasanya sebagai bahan perbandingan) dalam satu bidang gambar Perintah subplot (2,3,4) akan membagi jendela gambar menjadi 6 bagian (terdiri dari 2 baris dan 3 kolom), serta meletakkan gambar pada bagian ke-4 (baris ke-2 kolom-). Ilustrasinya dapat dilihat pada gambar 2.3. Perintah subplot (2,3,7) tidak akan menghasilkan grafik karena hanya ada 6 bidang gambar sehingga tidak dapat digambarkan pada bagian ke-7. Untuk membuat gambar yang lebih besar, gunakan subplot (,,) (berarti jendela gambar hanya digunakan untuk sebuah grafik saja). Sebaliknya untuk menggambarkan p buah grafik sekaligus, gunakan subplot (m,n,p) dengan m*n p agar semua grafik dapat ditampilkan. Agar grafik yang dibuat menimpa grafik yang sudah ada sebelumnya, gunakan perintah subplot(m,n,p,'replace'). d. Panggil fungsi penggambar grafik Untuk menggambar grafik, digunakan perintah plot. Plot (x, y, x2, y2,..., xn, yn) akan menggambar n buah grafik fungsi masing-masing y = f(x ), y 2 = f(x 2 ),..., y n = f(x n ) dalam bidang gambar yang sama. Untuk menggambarkan n buah grafik tersebut dalam bidang gambar yang berbeda-beda, gunakan perintah subplot (m,n,p) untuk harga p yang berbeda-beda. Sebagai contoh, program untuk menggambarkan 2 buah grafik y = x 2 + 2x 5 dan y = x 2 pada [-5, 5] dalam satu bidang gambar adalah sebagai berikut : function grafik

208 20 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab x = -5:0.02:5; p = [ 2-5] p2 = [ 0 0] y = polyval (p,x); y2 = polyval (p2,x); figure() subplot(,,) plot(x,y, x,y2); Jika program dijalankan, maka akan muncul jendela grafik seperti gambar 2.4 Gambar 2.4 Jendela grafik dalam matlab berfungsi seperti grafik editor pada perangkat lunak Excell/SPSS, dimana kita dapat mengedit grafik langsung dari grafik (tidak perlu mengubah souce code program). Caranya adalah dengan mengklik button edit (panah ke kiri atas), lalu klik ganda ke bagian grafik. Sebagai contoh, apabila diklik ganda pada sumbu y (atau sumbu x), akan muncul jendela editor properti seperti gambar 2.5

209 PEMROGRAMAN MATLAB 2 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 menggunakan editor properti dan melihat efeknya pada grafik yang ada. Gambar 2.5 SOAL-SOAL LATIHAN. 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. 2. Buatlah program untuk menguji apakah matriks bujur sangkar yang diinputkan merupakan matriks yang simetris.

210 22 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 3. Misalkan x dan y adalah 2 vektor yang merupakan data berpasangan (berarti jumlah data dalam x sama dengan jumlah data dalam y). Tingkat korelasi antara x dan y diukur dengan koefisien korelasi Pearson yang rumusnya adalah sebagai berikut : r = xy i i nxy ( x 2 nx 2 ) ( y 2 ny 2 ) Buatlah program untuk menghitung koefisien korelasi dari vektor x dan y. 4. Buatlah program untuk mengalikan 2 buah matriks yang diinputkan. Program harus dibuat menurut proses perkalian matriks biasa (perkalian elemen dalam baris matriks pertama dengan elemen kolom matriks kedua). Berilah komentar bila kedua matriks tidak dapat dikalikan. 5. Matriks probabilitas adalah matriks bujur sangkar dengan elemen riil tak negatif pada selang [0, ], dan jumlah tiap barisnya =. Matriks probabilitas P disebut reguler apabila terdapat bilangan bulat positip n sehingga semua elemen dalam P n 0 Sebagai contoh, matriks P = merupakan matriks reguler karena meskipun P memuat elemen 0, tapi semua elemen dalam P 2 = tidak memuat 0 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

211 Bab 3 PEMROGRAMAN PERCEPTRON DENGAN MATLAB Matlab menyediakan toolbox yang sangat bagus untuk menyelesaikan model jaringan syaraf tiruan. Sebenarnya penyelesaian berbagai model dalam JST tidak jauh berbeda. Diawali dengan pembentukan vekor masukan dan target, lalu dilatih untuk mendapatkan bobot yang diinginkan. 3. Spesifikasi Perceptron Dalam Matlab Perceptron adalah model paling sederhana yang dapat diselesaikan dengan Matlab. Model perceptron dalam Matlab sedikit berbeda dengan perceptron yang dibahas dalam teori bab 5. Dalam Matlab, default sistem yang dipakai adalah sebagai berikut : masukan dan target yang dipakai berbentuk bebas (tidak harus biner/bipolar). Threshold yang dipakai adalah 0 Fungsi aktivasi (dalam Matlab disebut hardlim) memiliki output biner (bukan 3 kemungkinan seperti perceptron dalam bab 5) ( ) f net jika net 0 = 0 jika net < 0

212 24 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Tidak menggunakan laju pemahaman. Bobot diubah berdasarkan error yang terbentuk dari selisih antara target yang diinginkan dengan keluaran jaringan (= f(net) ). Perubahan bobot bukan merupakan hasil kali antara target dengan masukan Misalkan p = (x x 2... x n ) t adalah masukan yang diberikan ke jaringan dengan target = t, dan a = f(net). Perubahan bobot yang dilakukan adalah p jika ( t a) > 0 Δ w = p jika ( t a) < 0 0 jika ( t a) = 0 dan baru lama w = w +Δ w Perubahan bobot hanya dilakukan jika target keluaran jaringan. 3.2 Pembentukan Jaringan Pertama-tama, perceptron harus dibentuk dengan menggunakan perintah newp. Perintah newp akan membentuk sebuah perceptron dengan spesifikasi tertentu (jumlah unit input, jumlah neuron, fungsi aktivasi, dll). Format fungsi newp adalah sebagai berikut : dengan net = newp (PR,S,TF,LF) PR = matriks ordo Rx2 yang menyatakan nilai minimum dan maksimum tiap unit masukan (ada R buah unit masukan) S = jumlah neuron target TF = fungsi aktivasi biner. Defaultnya adalah fungsi threshold (dalam matlab disebut hardlim ) LF = fungsi pelatihan. Defaultnya adalah learnp

213 PEMROGRAMAN PERCEPTRON DENGAN MATLAB 25 Fungsi learnp dalam default pembuatan perceptron dipakai untuk mengubah bobot sehingga diperoleh bobot yang lebih mendekati target (penjelasan lebih detil dapat dilihat pada bab 3..4). Untuk membuat fungsi aktivasi threshold bipolar, TF diubah ke hardlims. 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 3. b x w b 2 w 2 y x 2 w 2 w 3 w 22 w 23 y 2 x 3 Gambar 3. Misal inisialisasi bobot ke target y = [- 0 2], ke target y 2 = [0 0] dan bobot bias b = [ 2]. Maka digunakan statemen net.iw {,} = [- 0 2 ; 0 0] net.b {} = [ ; 2]

214 26 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Contoh 3. Bentuklah perceptron untuk mengenali pola fungsi logika dan 2 variabel x dan x 2 Penyelesaian Fungsi logika dan dengan 2 variabel masing-masing memiliki range nilai masukan [0,], dan sebuah target. Maka perintah yang dibuat adalah net = newp ([0 ; 0 ],) Baris pertama matriks ( [0 ] ) menunjukkan range nilai x, sedangkan baris kedua matriks menunjukkan range x 2. s = menunjukkan bahwa jaringan hanya memiliki sebuah target (dalam Matlab, target disebut neuron) Jaringan yang terbentuk memiliki bobot awal, bias, perubahan bobot, dll yang mengikuti defaultnya. 3.3 Pembentukan Vektor Masukan dan Target Setelah membentuk perceptron, berikutnya didefinisikan pola masukan dan target yang akan dikenali. Masing-masing masukan dan keluaran berupa vektor kolom. Perhatikan bahwa jumlah unit tiap pola masukan serta range nilainya harus sesuai dengan spesifikasi perceptron yang dibuat. Contoh 3.2

215 PEMROGRAMAN PERCEPTRON DENGAN MATLAB 27 Bentuklah perceptron dengan masukan dan targetnya untuk mengenali pola fungsi logika dan, dengan bobot awal w = [- ] dan bias b = []. Penyelesaian Fungsi logika dan memiliki 4 pola masukan (masing-masing masukan terdiri dari 2 unit) seperti tampak pada tabel 3. Tabel 3. Pola Masukan Masukan Target p p 2 0 p 3 0 p Perintah Matlab adalah sebagai berikut : net = newp ([0 ; 0 ],) net.iw {,} = [- ] net.b {} = [] p = [ [ ; ] [ ; 0] [0 ; ] [0 ; 0] ] t = [ 0 0 0]

216 28 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 3.4 Menghitung Keluaran Perceptron Setelah pola masukan diberikan, kita dapat menghitung keluaran jaringannya. Perintah sim dalam Matlab dipakai untuk menghitung keluaran Perceptron. Formatnya adalah sebagai berikut : [Y,Pf,Af,E,perf] = sim(net,p,pi,ai,t) dengan parameter masukan net : nama jaringan dalam perintah Newp. P : Vektor masukan jaringan Pi : Kondisi delay awal masukan. Default = zeros. Ai : Kondisi delay layar. Default = zeros. T : Vektor target jaringan. Default = zeros. dan parameter hasil, Y : Keluaran jaringan. Pf : Kondisi akhir delay masukan. Af : Kondisi akhir delay layar. E : Error jaringan = T Y. perf: Unjuk kerja jaringan. 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.

217 PEMROGRAMAN PERCEPTRON DENGAN MATLAB 29 Contoh 3.3 Hitunglah keluaran jaringan contoh 3. menggunakan bobot awal seperti contoh 3.2. Penyelesaian Setelah perintah seperti pada contoh 3.2, ditambahkan perintah : a = sim (net,p) Diperoleh hasil >> a = sim (net,p) a = Vektor a merupakan keluaran jaringan untuk p hingga p 4 dengan menggunakan bobot dan bias masing-masing = [- ] dan []. Perhitungan manualnya tampak pada tabel 3.2. Hasil f(net) ditampilkan oleh Matlab dalam variabel a di atas Tabel 3.2 Pola Masukan net = 2 i= p w i ji + b f (net) p = p 2 = 0 0 p 3 = (-) + () + = (-) + 0 () + = 0 0 (-) + () + = 2

218 220 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 0 p 4 = 0 0 (-) + 0 () + = Perintah sim (net,p) di atas hanya menampilkan hasil keluaran jaringan (f(net) dalam tabel 3.2). Jika ingin menampilkan besarnya error dan tingkat unjuk kerja yang terjadi, maka parameter perintah sim ditambah sebagai berikut : [a,pf,af,e,perf] = sim(net,p,[],[],t) Perhatikan bahwa dalam kasus ini tidak dibutuhkan delay, sehingga parameter Pi dan Ai pada perintah sim dikosongkan. Akan tetapi dibutuhkan target keluaran (variabel t) untuk menghitung error. Keluaran yang dihasilkan adalah keluaran jaringan (disimpan dalam variabel a), error = t a (disimpan dalam variabel e) serta tingkat kesalahan (disimpan dalam variabel perf). Jika perintah tersebut dijalankan, akan diperoleh hasil sebagai berikut : a = Pf = [] Af = [] e =

219 PEMROGRAMAN PERCEPTRON DENGAN MATLAB 22 perf = Dari 4 pola yang diberikan, hanya pola pertama saja yang dikenali dengan benar (ditunjukkan dengan a[] = 0). Berarti 3 pola lain belum dikenali. Dengan demikian performanya = ¾ = 0,75. Pf dan Af = [ ] karena memang delay awal = Pi = Ai = [] 3.5 Modifikasi bobot dan Bias Setelah menghitung keluaran jaringan, langkah berikutnya adalah mengubah bobot berdasarkan selisih antara keluaran jaringan dengan target yang diinginkan. Untuk mengubah bobot, digunakan perintah learnp yang formatnya adalah sebagai berikut : dengan dw = learnp(w,p,z,n,a,t,e,gw,ga,d,lp,ls) W : matriks bobot 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

220 222 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Untuk perceptron sederhana, parameter yang perlu diberikan hanyalah W, P dan E (yang didapat dari sim (net,p) t) Contoh 3.4 Hitunglah perubahan bobot setelah perintah sim pada contoh dijalankan berturut-turut pada pola, 0,, 0 Penyelesaian Misalkan pola-pola tersebut adalah p, p 2, p 3, dan p 4 (dengan target masing-masing =, 0, 0, 0) seperti pada contoh 3.2 Untuk pola p : p = [p p2 p3 p4]; t = [t t2 t3 t4]; net = newp ([0 ; 0 ],); bobot = [- ]; net.iw {,} = bobot ; bias = []; net.b {} = bias; disp ('pola p :') a = sim (net,p) e = t-a dw = learnp(bobot,p,[],[],[],[],e,[],[],[],[],[]) bobot = bobot + dw

221 PEMROGRAMAN PERCEPTRON DENGAN MATLAB 223 Jika program dijalankan akan diperoleh hasil : >> pola p : a = e = 0 dw = 0 0 bobot = - Perintah learnp akan menyimpan besarnya perubahan bobot pada variabel dw. Bobot yang baru diperoleh dengan menambahkan dw ke vektor bobot. Karena keluaran jaringan = target, maka tidak dilakukan perubahan bobot sehingga bobot baru = bobot lama. Perubahan bobot untuk pola p 2, p 3 dan p 4 dilakukan dengan program sebagai berikut : disp ('pola p2 :') a2 = sim (net,p2) e2 = t2-a2 dw = learnp(bobot,p2,[],[],[],[],e2,[],[],[],[],[]) bobot = bobot + dw

222 224 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab disp ('pola p3 :') a3 = sim (net,p3) e3 = t3-a3 dw = learnp(bobot,p3,[],[],[],[],e3,[],[],[],[],[]) bobot = bobot + dw disp ('pola p4 :') a4 = sim (net,p4) e4 = t4-a4 dw = learnp(bobot,p4,[],[],[],[],e4,[],[],[],[],[]) bobot = bobot + dw Keluaran program adalah sebagai berikut : pola p2 : a2 = e2 = - dw = - 0 bobot =

223 PEMROGRAMAN PERCEPTRON DENGAN MATLAB pola p3 : a3 = e3 = - dw = 0 - bobot = -2 0 pola p4 : a4 = e4 = - dw = 0 0 bobot = -2 0

224 226 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Pada pola 2 dan pola 3, e = t - a = - sehingga dw = -p. Perubahan ini ditambahkan pada vektor bobot. Pada pola 4, e = 0 sehingga tidak dilakukan perubahan bobot. 3.6 Pelatihan Perceptron Perceptron akan melakukan perubahan bobot terus menerus untuk setiap pola yang diberikan hingga diperoleh bobot yang dapat dipakai untuk mengenali semua pola secara benar. Perhatikan kembali contoh 3.4. Perubahan bobot untuk seluruh pola yang diberikan disebut epoch. Bobot terakhir yang diperoleh setelah epoch yang pertama adalah [-2 0] dan bias = [-]. Akan tetapi bobot tersebut belum mampu mengenali semua pola dengan benar. Hal ini bisa dicek dengan perintah sim. >> a = sim (net,p) a = >> e = t-a e = Hasil keluaran pola hingga pola 4 adalah [ ], sedangkan target yang diinginkan adalah [ 0 0 0]. Terdapat kesalahan e = [ ]. Ini menunjukkan perlunya dilakukan pelatihan lagi untuk epoch kedua (keempat pola diberikan lagi pada jaringan dengan bobot awal = bobot hasil pelatihan epoch pertama). Pelatihan terus diulang-ulang hingga e = 0. Hal ini tentu

225 PEMROGRAMAN PERCEPTRON DENGAN MATLAB 227 saja membutuhkan program yang panjang, apalagi kalau pola masukannya banyak. Untuk menyingkat keseluruhan proses pelatihan (mulai dari perhitungan keluaran jaringan hingga modifikasi bobot), Matlab menyediakan perintah train yang formatnya adalah sebagai berikut : dengan [net,tr,y,e,pf,af] = train(net,p,t,pi,ai,vv,tv) net : jaringan yang didefinisikan dalam newp P : masukan jaringan T : target jaringan. Default = zeros. Pi : Kondisi delay awal masukan. Default = zeros. Ai : Kondisi delay awal layar. Default = zeros. VV : Struktur validasi vektor. Default = []. TV : Struktur vektor uji. Default = []. Perintah train akan menghasilkan net : jaringan yang baru tr : record pelatihan (epoch dan performa) Y : Keluaran jaringan E : error jaringan Pf : Kondisi akhir delay masukan Af : Kondisi akhir delay layar Contoh 3.5 Carilah bobot pengenalan pola contoh 3.2

226 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 ; 0 ],); net.iw {,} = [- ]; net.b {} = []; p = [ [ ; ] [ ; 0] [0 ; ] [0 ; 0] ]; t = [ 0 0 0]; net = train (net, p, t); Keluarannya berupa sebuah grafik seperti gambar 3.2 dan keterangan tentang selesainya iterasi

227 PEMROGRAMAN PERCEPTRON DENGAN MATLAB 229 Gambar 3.2 Grafik gambar 3.2 menunjukkan bahwa iterasi diselesaikan dalam 9 epoch. Pada epoch, unjuk kerja = 0.75 (berarti hanya ada pola yang dikenali dengan benar). Pada epoch kedua, unjuk kerja = 0.5 (ada 2 pola yang dikenali dengan benar) dan seterusnya hingga epoch 9 yang memiliki unjuk kerja = 0 (berarti semua pola telah dikenali). Untuk mengetahui bobot (dan bias) pada keadaan optimal, ditampilkan net.iw dan net.b >> disp (net.iw {,}) 2 >> disp (net.b {}) -3 Jadi w =, w 2 = 2 dan b = -3 Untuk mengetahui perubahan bobot dan bias untuk setiap epoch, iterasi harus dihentikan sementara per epoch (dan ditampilkan hasilnya). Untuk itu, gunakan perintah : net.trainparam.epochs = ; Program selengkapnya adalah sebagai berikut : function perceptron; % training utk fungsi "and" clc net = newp([0 ; 0 ],); % 2 unit input masing2 range [0,] & output net.iw {,} = [- ]; net.b {} = [];

228 230 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab p = [ [ ; ] [ ; 0] [0 ; ] [0 ; 0] ]; t = [ 0 0 0]; e = 9999; while e > 0 net.trainparam.epochs = ; % pause training untuk tiap epoch net = train (net, p, t); bobot = net.iw {,} bias = net.b {} a = sim (net,p) e = sum (t-a) end Jika dijalankan, didapatkan keluaran program sebagai berikut : >> TRAINC, Epoch 0/ TRAINC, Epoch / TRAINC, Maximum epoch reached. bobot = -2 0 bias = - a = e = TRAINC, Epoch 0/

229 PEMROGRAMAN PERCEPTRON DENGAN MATLAB 23 TRAINC, Epoch / TRAINC, Maximum epoch reached. bobot = - 0 bias = - a = e = TRAINC, Epoch 0/ TRAINC, Epoch / TRAINC, Maximum epoch reached. bobot = - 0 bias = -2 a = e = TRAINC, Epoch 0/ TRAINC, Epoch / TRAINC, Maximum epoch reached. bobot =

230 232 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 0 0 bias = -2 a = e = TRAINC, Epoch 0/ TRAINC, Epoch / TRAINC, Maximum epoch reached. bobot = 0 bias = -2 a = e = TRAINC, Epoch 0/ TRAINC, Epoch / TRAINC, Maximum epoch reached. bobot = 0 bias =

231 PEMROGRAMAN PERCEPTRON DENGAN MATLAB a = e = TRAINC, Epoch 0/ TRAINC, Epoch / TRAINC, Maximum epoch reached. bobot = bias = -3 a = e = TRAINC, Epoch 0/ TRAINC, Epoch / TRAINC, Maximum epoch reached. bobot = 2 bias = -3 a =

232 234 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab e = 0 Tampak bahwa bobot jaringan untuk mengenali semua pola adalah w =, w 2 = 2, dan bias = -3 SOAL-SOAL LATIHAN. Ulangi contoh 3.5, tapi menggunakan masukan bipolar (masukan atau ), target biner (0 atau ). Apakah bobot akhir yang diperoleh tetap sama? 2. Ulangi contoh 3.5 tapi dengan bobot awal [0 0] dan bias awal = [0]. Apakah jumlah epoch yang dibutuhkan tetap sama? 3. Buatah program untuk mengenali fungsi logika atau. Berapa bobot dan bias optimalnya? 4. Buatlah program untuk menguji apakah perceptron mampu mengenali fungsi logika dan dengan 3 variabel 5. Buatlah program untuk mengenali fungsi logika XOR. Apakah perceptron mampu mengenalinya?

233 Bab 4 PEMROGRAMAN ADALINE DENGAN MATLAB 4. Pemrograman ADALINE Pemrograman ADALINE (dalam Matlab disebut Linear Filter) mirip dengan pemrograman Perceptron. Pertama-tama dilakukan inisialisasi jaringan. Matlab menyediakan beberapa fasilitas untuk melakukan perhitungan dengan model ADALINE, antara lain : menghitung keluaran jaringan, menghitung perubahan bobot, dan melakukan pelatihan. Spesifikasi jaringan ADALINE yang dipakai dalam Matlab adalah sebagai berikut : masukan dan target yang dipakai berbentuk bebas (tidak harus biner/bipolar). Fungsi aktivasi yang dipakai adalah fungsi identitas. Jadi f(net) = net. Karena fungsi aktivasinya identitas, maka tidak ada batas ambang (threshold) Parameter pelatihan (bobot, bias, kriteria penghentian, batas toleransi, dll) bisa diatur (cara pengaturannya dapat dilihat pada subbab pelatihan) Perubahan bobot dilakukan sedemikian hingga errornya minimum (menggunakan kriteria least mean square error = LMS).

234 236 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 4.2 Pembentukan Jaringan Pertama-tama, jaringan ADALINE harus dibentuk dengan menggunakan perintah newlin (singkatan dari new linear filter) Perintah newlin akan membentuk ADALINE dengan spesifikasi tertentu (jumlah unit input, jumlah neuron, fungsi aktivasi, dll). Bentuk fungsi newlin adalah sebagai berikut : dengan net = newlin (PR,S,ID,LR) PR : matriks R x 2 yang berisi nilai minimum dan maksimum elemen masukan R. S : jumlah elemen vektor keluaran. ID : Vektor delay masukan (default = [0]). LR : laju pemahaman (default = 0.0). dan menghasilkan sebuah ADALINE (dalam Matlab disebut layar linier) baru Laju pemahaman dapat diatur dari perintah newlin (dengan cara memberi nilai pada parameter LR) atau dari parameter train (caranya dapat dilihat dari subbab 4.6). 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 {,} menunjukkan bobot awal dari layar masukan ke neuron targetnya. Jika dijalankan, maka Matlab akan menampilkan struktur jaringan default yang terbentuk.

235 PEMROGRAMAN ADALINE DENGAN MATLAB 237 Misalkan ada 2 buah unit masukan dan buah neuron target dengan bobot seperti gambar 4.. Misalkan pula kedua masukannya memiliki range [0, 0]. Maka perintah yang sesuai adalah : x -4 2 y 3 x 2 Gambar 4. net = newlin ([0 0 ; 0 0],) net.iw {,} = [2 3] net.b {} = [-4] Contoh 4. Bentuklah perceptron untuk mengenali pola fungsi logika dan 2 variabel x dan x 2 dengan masukan dan target bipolar. Penyelesaian Fungsi logika dan dengan 2 variabel bipolar memiliki range nilai masukan [-, ], dan sebuah target. Maka perintah yang dibuat adalah net = newlin ([- ; - ],) Parameter [- ; - ] menunjukkan bahwa kedua unit masukan x, dan x 2 memiliki range [-, ]. Parameter s = menunjukkan bahwa jaringan hanya memiliki sebuah target (dalam Matlab, target disebut neuron) Jaringan yang terbentuk memiliki bobot awal, bias, perubahan bobot, dll yang mengikuti defaultnya.

236 238 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab 4.3 Pembentukan Vektor Masukan dan Target Setelah membentuk ADALINE, berikutnya harus ditentukan pola masukan dan target yang akan dikenali. Masing-masing masukan dan keluaran berupa vektor kolom. Perhatikan bahwa jumlah unit tiap pola masukan serta range nilainya harus sesuai dengan spesifikasi ADALINE yang dibuat. Contoh 4.2 Buatlah vektor masukan-keluaran ADALINE contoh 4. Penyelesaian Fungsi logika dan memiliki 4 pola masukan (masing-masing masukan terdiri dari 2 unit) sebagai berikut : Tabel 4. Pola Masukan Masukan Target p p 2 p 3 p Perintah Matlab adalah sebagai berikut :

237 PEMROGRAMAN ADALINE DENGAN MATLAB 239 net = newlin ([- ; - ],) p = [ [ ; ] [ ; -] [- ; ] [- ; -] ] t = [ - - -] 4.4 Menghitung Keluaran ADALINE Setelah pola masukan diberikan, kita dapat menghitung keluaran ADALINE. Perintah Matlab yang dipakai sama seperti model Perceptron : [Y,Pf,Af,E,perf] = sim(net,p,pi,ai,t) dengan parameter masukan net : nama jaringan dalam perintah Newlin. P : Vektor masukan jaringan Pi : Kondisi delay awal masukan. Default = zeros. Ai : Kondisi delay layar. Default = zeros. T : Vektor target jaringan. Default = zeros. dan parameter hasil, Y : Keluaran jaringan. Pf : Kondisi akhir delay masukan. Af : Kondisi akhir delay layar. E : Error jaringan = T Y. perf: Unjuk kerja jaringan. 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);

238 240 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Perhatikan bahwa untuk menghitung keluaran jaringan, kita tidak perlu mengetahui targetnya. Akan tetapi jika ingin dihitung error yang terjadi (selisih antara target dengan keluaran jaringan), maka harus diketahui targetnya. Contoh 4.3 Hitunglah keluaran jaringan contoh 4. dengan pola masukan seperti pada contoh 4.2, menggunakan bobot awal w = 2, w 2 = 3 dan bias = -4 Penyelesaian net = newlin ([- ; - ],); p = [ [ ; ] [ ; -] [- ; ] [- ; -] ]; t = [ - - -]; net.iw {,} = [2 3]; net.b {} = [-4]; a = sim (net,p) Diperoleh hasil a = Perhatikan bahwa untuk menghitung keluaran jaringan tidak dibutuhkan vektor target. Vektor a merupakan keluaran jaringan untuk p hingga p 4 dengan menggunakan bobot dan bias masing-masing = [2 3] dan [-4]. Fungsi aktivasi yang dipakai dalam ADALINE adalah fungsi identitas. f(net) = net. Perhitungan manualnya tampak pada tabel 4.2. Hasil f(net) ditampilkan oleh Matlab dalam variabel a di atas

239 PEMROGRAMAN ADALINE DENGAN MATLAB 24 Tabel 4.2 Pola Masukan net = 2 i p w i ji b f (net) = net p = p 2 = p 3 = p 4 = (2) + (3) 4 = (2) + - (3) 4 = (2) + (3) - 4 = (2) + - (3) - 4 = -9-9 Perintah sim (net,p) di atas hanya menampilkan hasil keluaran jaringan (f(net) pada tabel 4.2). Jika ingin menampilkan besarnya error dan tingkat unjuk kerja yang terjadi, maka parameter perintah sim ditambah sebagai berikut : [a,pf,af,e,perf] = sim(net,p,[],[],t) Perhatikan bahwa dalam kasus ini tidak dibutuhkan delay, sehingga parameter Pi dan Ai pada perintah sim dikosongkan. Akan tetapi dibutuhkan target keluaran (variabel t) untuk menghitung error. Keluaran yang dihasilkan adalah keluaran jaringan (disimpan dalam variabel a), error = t a (disimpan dalam variabel e) serta tingkat kesalahan (disimpan dalam variabel perf). Jika perintah tersebut dijalankan, akan diperoleh hasil sebagai berikut : >> [a,pf,af,e,perf] = sim(net,p,[],[],t)

240 242 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab a = Pf = [] Af = [] e = perf = 2 Dari 4 pola yang diberikan, hanya pola pertama saja yang dikenali dengan benar (ditunjukkan dengan a[] = 0). 4.5 Modifikasi Bobot dan Bias Setelah menghitung keluaran jariangan, langkah berikutnya adalah mengubah bobot berdasarkan selisih antara keluaran jaringan dengan target yang diinginkan. Untuk mengubah bobot dan bias, digunakan perintah learnwh (singkatan dari learn Widrow-Hoff) yang formatnya adalah sebagai berikut : [dw,ls] = learnwh(w,p,z,n,a,t,e,gw,ga,d,lp,ls)

241 PEMROGRAMAN ADALINE DENGAN MATLAB 243 [db,ls] = learnwh(b,ones(,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) 4.6 Pelatihan ADALINE Matlab menyediakan fasilitas pelatihan untuk memodifikasi bobot dalam ADALINE hingga memenuhi kriteria tertentu (misal jumlah epoch, error, dll). Formatnya mirip dengan Perceptron, hanya saja error dihitung berdasarkan rata-rata kuadrat kesalahan terkecil (least mean square error = LMS) yang diperkenalkan oleh Widrow dan Hoff. Oleh karenanya, model ADALINE sering juga disebut model Widrow- Hoff atau model LMS Rata-rata kuadrat kesalahan (MSE) dihitung dengan rumus

242 244 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab MSE = Q Q Q 2 ek tk ak k Q k 2 dengan Q = jumlah pola yang dihitung t k = vektor target a k = vektor keluaran jaringan e k = t k - a k Contoh 4.4 Hitunglah MSE untuk fungsi logika dan pada contoh 4.3 Penyelesaian Pada contoh 4.3, t = [ - -] dan keluaran jaringan = a = [ ] sehingga error = [ ] Maka MSE = = 2 Contoh 4.5 Hitunglah bobot untuk mengenali fungsi logika dan menggunakan bobot dan bias awal seperti contoh 4.3 Penyelesaian Jika dalam contoh 4.3 ditambahkan perintah train (net,p), diperoleh hasil : >> train (net,p) TRAINB, Epoch 0/00, MSE 29/0.

243 PEMROGRAMAN ADALINE DENGAN MATLAB 245 TRAINB, Epoch 25/00, MSE /0. TRAINB, Epoch 50/00, MSE /0. TRAINB, Epoch 75/00, MSE /0. TRAINB, Epoch 00/00, MSE /0. TRAINB, Maximum epoch reached. Default perintah train pada ADALINE adalah jumlah epoch = 00, 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. Umumnya, error = 0 tidak pernah tercapai. Orang akan puas jika errornya cukup kecil dan dapat diabaikan. Akan tetapi bobot setelah iterasi tidak dapat diperoleh. Untuk menyimpan perubahan bobot, maka digunakan statemen : >> net = train (net,p,t) Hasilnya runningnya adalah sebagai berikut : TRAINB, Epoch 0/00, MSE 2/0. TRAINB, Epoch 25/00, MSE /0. TRAINB, Epoch 50/00, MSE /0. TRAINB, Epoch 75/00, MSE /0. TRAINB, Epoch 00/00, MSE /0. TRAINB, Maximum epoch reached. Grafik perubahan nilai MSE tampak pada gambar 4.2 Bobot hasil iterasi bisa ditampilkan dengan perintah disp

244 246 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab >> disp (net.iw{,}) >> disp (net.b{}) Gambar 4.2 Perhatikan perubahan nilai MSE yang terjadi. Perbedaan disebabkan karena dalam perintah net = train (net,p,t), bobot baru disimpan sebagai dasar iterasi berikutnya. Pada epoch 0, MSE yang dihasilkan sama dengan MSE hasil perhitungan contoh 4.4 Keluaran jaringan setelah iterasi dilakukan dapat diketahui dengan perintah sim >> sim (net,p) ans =

245 PEMROGRAMAN ADALINE DENGAN MATLAB 247 Error yang terjadi = t sim (net,p) adalah : >> t - sim (net,p) ans = Maka MSE = ( 0.424) ( ) seperti yang ditampilkan pada MSE epoch 00 = SOAL-SOAL LATIHAN. Ulangi contoh 4.5, tapi menggunakan masukan biner (masukan atau 0), target biner (0 atau ). Apakah jaringan mampu mengenali polanya? Apakah bobot akhir yang diperoleh sama dengan contoh 4.5? 2. Buatah program untuk mengenali fungsi logika atau dengan ADALINE. Berapa bobot dan bias optimalnya? 3. Buatlah program untuk menguji apakah ADALINE mampu mengenali fungsi logika dan dengan 3 variabel 4. Buatlah program untuk mengenali fungsi logika XOR. Apakah ADALINE mampu mengenalinya?

246 Bab 5 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB Backpropagation dibentuk dengan membuat generalisasi aturan pelatihan dalam model Widrow-Hoff dengan cara menambahkan layar tersembunyi. Kata Backpropagation merujuk pada cara bagaimana gradien perubahan bobot dihitung. Standar Backpropagation menggunakan algoritma penurunan gradien (gradient descent). Variasi terhadap model standar backpropagation dilakukan dengan mengganti algoritma penurunan gradien dengan metode optimisasi yang lain. Hasil percobaan menunjukkan bahwa Backpropagation yang sudah dilatih dengan baik akan memberikan keluaran yang masuk akal jika diberi masukan yang serupa (tidak harus sama) dengan pola yang dipakai dalam pelatihan. Sifat generalisasi ini membuat pelatihan lebih efisien karena tidak perlu dilakukan pada semua data. 5. Membentuk Jaringan 5.. Inisialisasi Jaringan Langkah pertama yang harus dilakukan untuk memprogram Backpropagation dengan Matlab adalah membuat inisialisasi jaringan.

247 250 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Parameter inisialisasi ini agak berbeda dengan Perceptron ataupun ADALINE. Perintah yang dipakai untuk membentuk jaringan adalah newff yang formatnya adalah sebagai berikut : net = newff(pr,[s S2...SN],{TF TF2...TFN}, BTF,BLF,PF) dengan net = jaringan Backpropagation yang terdiri dari n layar PR = matriks ordo Rx2 yang berisi nilai minimum dan maksimum R buah elemen masukannya Si (i=,2,...,n) = jumlah unit pada layar ke-i (i =,2,...,n) TFi (i=,2,...,n) = Fungsi aktivasi yang dipakai pada layar ke-i (i =,2,...,n). Default = tansig (sigmoid bipolar) BTF = fungsi pelatihan jaringan. Defaultnya = traingdx BLF = fungsi perubahan bobot/bias. default = learngdm PF = fungsi perhitungan error. Default = mse Beberapa fungsi aktivasi yang dipakai Matlab dalam pelatihan backpropagation adalah : 2 =. Fungsi ini adalah net + e default yang dipakai. Fungsi sigmoid bipolar memiliki range [-, ]. tansig (sigmoid bipolar). f ( net)

248 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 25 =. Fungsi sigmoid biner net + e memiliki bentuk serupa dengan sigmoid bipolar, hanya rangenya adalah [0, ] logsig (sigmoid biner) f ( net) purelin (fungsi identitas) f ( net) = net Pelatihan yang dilakukan dalam Matlab dapat menggunakan berbagai fungsi (penjelasan selengkapnya dapat dibaca pada bab 5.3). Tujuannya adalah mempercepat pelatihan. Fungsi default yang dipakai oleh Matlab adalah traingdx. Dalam fungsi ini, perubahan bobot dilakukan dengan menambahkan momentum. Perubahan dilakukan dengan memperhatikan perubahan bobot pada iterasi sebelumnya. Disamping itu laju pemahaman (learning rate = α ) bukan merupakan konstanta yang tetap, tetapi dapat berubah-ubah selama iterasi. seperti pada ADALINE, dalam Backpropagation, perhitungan unjuk kerja dilakukan berdasarkan kuadrat rata-rata kesalahan (mse) Umumnya, pelatihan Backpropagation dalam matlab dilakukan secara berkelompok (batch training). Semua pola dimasukkan dulu, baru kemudian bobot diubah. Dalam pelatihan berkelompok, semua data masukan harus diletakkan dalam sebuah matriks. Hal ini sedikit berbeda dengan Perceptron atau ADALINE yang pelatihannya dapat menggunakan pelatihan berkelompok ataupun pelatihan per pola. Contoh 5. 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-). Data yang dipakai pelatihan tampak dalam tabel 5. :

249 252 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Tabel 5. x x 2 t Fungsi aktivasi dari unit masukan ke layar tersembunyi adalah sigmoid bipolar dan dari layar tersembunyi ke keluaran adalah identitas. Penyelesaian Untuk pelatihan berkelompok, maka perintah Matlab yang dipakai adalah : >> p = [ ; ] >> t = [- - ] >> net = newff ([- 2;0 5], [3,], {'tansig', 'purelin'}); 5..2 Inisialisasi Bobot Setiap kali membentuk jaringan Backpropagation, Matlab akan memberi nilai bobot dan bias awal dengan bilangan acak kecil. Bobot dan bias ini akan berubah setiap kali kita membentuk jaringan. Akan tetapi jika diinginkan memberi bobot tertentu, kita bisa melakukannya dengan memberi nilai pada net.iw, net.lw dan net.b

250 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 253 Perhatikan perbedaan antara net.iw dan net.lw. net.iw{j,i} digunakan sebagai variabel untuk menyimpan bobot dari unit masukan layar i ke unit tersembunyi (atau unit keluaran) layar j. Karena dalam Backpropagation, unit masukan hanya terhubung dengan layar tersembunyi paling bawah, maka bobotnya disimpan dalam net.iw {,}. Sebaliknya, net.lw{k,j} dipakai untuk menyimpan bobot dari unit di layar tersembunyi ke j ke unit di layar tersembunyi ke-k. Sebagai contoh, net.lw{2,} adalah penyimpan bobot dari layar tersembunyi paling bawah (layar tersembunyi ke-) ke layar tersembunyi di atasnya (layar tersembunyi ke-2) Contoh 5.2 Buatlah jaringan Backpropagation (semua masukan adalah bilangan antara - dan 2) dengan semua fungsi aktivasi sigmoid bipolar. Beri bobot dan bias tampak dalam tabel Tabel 5.2 Dari Unit Masukan Layar Tersembunyi x x 2 bias z z z z

251 254 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Tabel 5.3 Dari Layar Tersembunyi L T - 2 z z 2 z 3 z 4 bias v v v Tabel 5.4 Dari Layar Tersembunyi - 2 Keluaran z z 2 z 3 bias y Penyelesaian Arsitektur jaringan yang diinginkan tampak seperti gambar 5.. Pembentukan jaringan dalam Matlab adalah : >> net = newff ([- 2;- 2], [4,3,]); Dengan perintah terebut maka akan terbentuk jaringan Fungsi aktivasi yang tidak ditulis menunjukkan bahwa semua fungsi adalah sigmoid bipolar. Semua bobot diberi bilangan acak kecil. Untuk mengetahui bobot tersebut, bisa ditampilkan net.iw dan net.lw nya (perhatikan bahwa jika anda mencobanya, nilai bobot yang keluar mungkin berbeda karena bobotnya berupa bilangan acak) >> net.iw{,} ans =

252 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB >> net.b{} ans = >> net.lw{2,} ans = >> net.b{2} ans = >> net.lw{3,2} ans =

253 256 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab >> net.b{3} ans = 0 y v v 2 v z z 3 z z 4 x x 2 Gambar 5. Perhatikan bahwa perintah net.iw {2,}, net.lw{3,}, net.lw{,2} akan menghasilkan matriks kosong (mengapa?). Sebaliknya perintah net.iw {2,2} akan menghasilkan kesalahan karena masukan hanya pada satu layar saja. Untuk merubah bobot, variabel net.iw dan net.lw diubah menjadi seperti tabel

254 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 257 >> net.iw{,} = [ ; ; ; -0..2]; >> net.b{} = [0.3 ; -0. ; -0.9 ; 0.5]; >> net.lw{2,} = [ ; ; ]; >> net.b{2} = [0.5 ; -.3 ; -0.3]; >> net.lw{3,2} = [ ]; >> net.b{3} = [-]; 5.2 Simulasi Jaringan Seperti pada Perceptron dan ADALINE, perintah sim digunakan di Backpropagation untuk menghitung keluaran jaringan berdasarkan arsitektur, pola masukan dan fungsi aktivasi yang dipakai. Format perintahnya sama dengan perintah sim di ADALINE maupun Perceptron (lihat bab 4.4) Contoh 5.3 Hitunglah keluaran jaringan contoh 5.2 jika diberikan masukan x = 0.5 dan x 2 =.3 Penyelesaian Sebelum menghitung keluaran, lebih dahulu ditentukan pola masukannya. Dengan menggunakan bobot dan bias awal seperti contoh 5.2, diperoleh hasil keluaran y = >> p = [0.5 ;.3]; >> net = newff ([- 2;- 2], [4,3,]);

255 258 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab >> net.iw{,} = [ ; ; ; -0..2]; >> net.b{} = [0.3 ; -0. ; -0.9 ; 0.5]; >> net.lw{2,} = [ ; ; ]; >> net.b{2} = [0.5 ; -.3 ; -0.3]; >> net.lw{3,2} = [ ]; >> net.b{3} = [-]; >> y = sim (net,p) y = Untuk sekedar mengetahui hasil keluaran, hanya dibutuhkan pola masukan saja. Untuk mengetahui besarnya error (dan unjuk kerjanya), parameter masukan harus ditambah dengan target yang ingin dicapai. Parameter keluaran ditambah dengan variabel untuk menyimpan error (e) dan unjuk kerja (perf). Misalkan target = t =, maka diperoleh keluaran dan error : >> t = []; >> [y,pf,af,e,perf] = sim (net,p,[],[],t) y = Pf = [] Af = []

256 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 259 e =.988 perf = Pelatihan Backpropagation Matlab menyediakan berbagai variasi pelatihan Backpropagation. Dalam sub bab ini akan dibahas pelatihan standar yang digunakan untuk melatih jaringan. Dalam bab 5.4 dibahas beberapa modifikasi pelatihan untuk mempercepat waktu pelatihan Pelatihan Kelompok Pelatihan Backpropagation menggunakan metode pencarian titik minimum untuk mencari bobot dengan error minimum. Dalam proses pencarian ini dikenal 2 macam mode yaitu mode incremental dan metode kelompok (batch). Dalam mode incremental, bobot diubah setiap kali pola masukan diberikan ke jaringan. Sebaliknya, dalam mode kelompok, bobot diubah setelah semua pola masukan diberikan ke jaringan. Error (dan suku perubahan bobot) yang terjadi dalam setiap pola masukan dijumlahkan untuk menghasilkan bobot baru. Matlab menggunakan mode pelatihan kelompok dalam iterasinya. Perubahan bobot dilakukan per epoch.

257 260 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Pelatihan Backpropagation Untuk melatih jaringan digunakan perintah train yang formatnya sama seperti pada model Perceptron dan ADALINE. Pelatihan dilakukan untuk meminimumkan kuadrat kesalahan rata-rata (mse = mean square error) Metode paling sederhana untuk merubah bobot adalah metode penurunan gradien (gradient descent). Bobot dan bias diubah pada arah dimana unjuk kerja fungsi menurun paling cepat, yaitu dalam arah negatif gradiennya. Jika w k adalah vektor bobot pada iterasi ke-k, g k adalah gradien dan αk adalah laju pemahaman, maka metode penurunan gradien memodifikasi bobot dan bias menurut persamaan w k+ = w k - αk g k Matlab menyediakan beberapa metode pencarian titik minimumnya. Pencarian titik minimum dengan metode penurunan gradien dilakukan dengan memberikan parameter traingd dalam parameter setelah fungsi aktivasi pada perintah newff Contoh 5.4 Diketahui pasangan vektor masukan dan target seperti yang tampak pada tabel 5.5. Buatlah jaringan Backpropagation 2 3, dan latihlah dengan metode penurunan tercepat. Gunakan fungsi aktivasi sigmoid bipolar pada layar tersembunyi dan fungsi identitas pada layar keluarannya. Tabel 5.5 x x 2 t

258 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB Penyelesaian >> p = [ ; ]; >> t = [- - ]; >> net = newff (minmax (p), [3,], {'tansig', 'purelin'}, 'traingd'); Agar lebih efisien, nilai minimum dan maksimum vektor masukan tidak perlu dituliskan satu persatu, tapi cukup dengan menggunakan perintah minmax (p). Perhatikan bahwa parameter traingd harus ditentukan untuk melatih dengan metode penurunan tercepat. 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 {,} ans = >> net.b{} ans =

259 262 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab >> net.lw{2,} ans = >> net.b{2} ans = Dengan menggunakan perintah sim, besarnya error mula-mula dapat ditentukan >> [y,pf,af,e,perf] = sim (net,p,[],[],t) y = Pf = [] Af = [] e =

260 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 263 perf =.9303 Berikutnya, untuk melatihnya digunakan perintah train >> net = train (net,p,t) TRAINGD, Epoch 0/00, MSE.93032/0, Gradient /e-00 TRAINGD, Epoch 25/00, MSE /0, Gradient.3459/e-00 TRAINGD, Epoch 50/00, MSE /0, Gradient /e-00 TRAINGD, Epoch 75/00, MSE /0, Gradient /e-00 TRAINGD, Epoch 00/00, MSE /0, Gradient /e-00 TRAINGD, Maximum epoch reached, performance goal was not met. Training dihentikan pada epoch ke 00 (default) meskipun unjuk kerja yang diinginkan (mse = 0) belum tercapai. Pada epoch ke 00 ini, mse = Selain keterangan tentang perubahan error untuk tiap 25 epoch (defaultnya), Matlab juga menampilkan grafik perubahan error seperti yang tampak pada gambar 5.2.

261 264 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Gambar 5.2 Bobot dan bias hasil pelatihan, maupun errornya dapat ditampilkan >> net.iw {,} ans = >> net.b{} ans =

262 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 265 >> net.lw{2,} ans = >> net.b{2} ans = >> [y,pf,af,e,perf] = sim (net,p,[],[],t) y = Pf = [] Af = [] e = perf = Perhatikan besarnya penurunan error (dan unjuk kerja) yang terjadi sebelum dan sesudah pelatihan. Tentu saja kita tidak harus mencari bobot awal maupun errornya. Setelah jaringan terbentuk melalui

263 266 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab perintah newff, kita bisa langsung menggunakan perintah train untuk melatih dan melihat bobot akhirnya. Ada beberapa parameter pelatihan dapat kita atur sebelum pelatihan dilakukan. Dengan memberi nilai yang kita inginkan pada parameterparameter tersebut kita dapat memperoleh hasil yang lebih optimal. net.trainparam.show : dipakai untuk menampilkan frekuensi perubahan mse (default : setiap 25 epoch) net.trainparam.epochs : dipakai untuk menentukan jumlah epoch maksimum pelatihan (default : 00 epochs). net.trainparam.goal : dipakai untuk menentukan batas nilai mse agar iterasi dihentikan. Iterasi akan berhenti jika mse < batas yang ditentukan dalam net.trainparam.goal atau jumlah epoch mencapai batas yang ditentukan dalam net.trainparam.epochs net.trainparam.lr : dipakai untuk menentukan laju pemahaman (α = learning rate). Defaultnya = 0.0. Semakin besar nilai α, semakin cepat pula proses pelatihan. Akan tetapi jika α terlalu besar, maka algoritma menjadi tidak stabil dan mencapai titik minimum lokal. net.trainparam.time : dipakai untuk membatasi lama pelatihan (dalam detik). pelatihan akan dihentikan jika lamanya melebihi nilai yang ditentukan dari net.trainparam.time Perhatikan kembali contoh 5.4. Umumnya pelatihan dengan Backpropagation tidak akan menghasilkan mse = 0 (apalagi jika data pelatihannya banyak). Untuk itu orang cukup puas jika msenya cukup kecil (misal 0.000). Jika kita memperbesar laju pemahaman menjadi 0. dan merubah mse = 0.000, didapat :

264 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 267 >> p = [ ; ]; >> t = [- - ]; >> net = newff (minmax (p), [3,], {'tansig', 'purelin'}, 'traingd'); >> net.trainparam.lr = 0.; >> net.trainparam.goal = 0.000; >> net = train (net,p,t) TRAINGD, Epoch 0/200, MSE /0.000, Gradient /e-00 TRAINGD, Epoch 25/200, MSE /0.000, Gradient /e-00 TRAINGD, Epoch 47/200, MSE e-005/0.000, Gradient /e-00 TRAINGD, Performance goal met. Tampak bahwa dengan menambah laju pemahaman, pelatihan menjadi semakin cepat. MSE = dicapai pada epoch 47. Akan tetapi jika laju pemahaman terlalu besar, maka algoritma menjadi tidak stabil. MSE tidak menurun, tapi justru akan meningkat. Jika ingin mencoba dengan parameter lain, terlebih dahulu gunakan perintah init (net) untuk menginisialisasi semua bobot dan bias dengan bilangan acak baru. Contoh 5.5 Ulangi contoh 5.4 dengan menggunakan α = 0.9. Penyelesaian Setelah menuliskan perintah seperti pada contoh 5.4, berikutnya jaringan perlu diinisialisasi untuk memperoleh bobot baru (acak)

265 268 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab >> net = init (net); >> net.trainparam.lr = 0.9; >> net = train (net,p,t) TRAINGD, Epoch 0/200, MSE /0.000, Gradient.7024/e-00 TRAINGD, Epoch 25/200, MSE e+07/0.000, Gradient.35535e+009/e-00 TRAINGD, Epoch 50/200, MSE e+042/0.000, Gradient e+02/e-00 TRAINGD, Epoch 75/200, MSE e+068/0.000, Gradient e+034/e-00 TRAINGD, Epoch 00/200, MSE e+094/0.000, Gradient e+047/e-00 TRAINGD, Epoch 25/200, MSE.587e+2/0.000, Gradient.05306e+06/e-00 TRAINGD, Epoch 50/200, MSE.57853e+47/0.000, Gradient.23276e+074/e-00 TRAINGD, Epoch 75/200, MSE e+73/0.000, Gradient.4432e+087/e-00 TRAINGD, Epoch 200/200, MSE e+99/0.000, Gradient.68939e+00/e-00 TRAINGD, Maximum epoch reached, performance goal was not met. Hasil menunjukkan bahwa α = 0.9 tidak akan membuat iterasi konvergen. mse tidak menurun tapi justru meningkat. Ini berarti jaringan tidak mengenali pola. Pembaca dapat mencoba-coba dengan laju pemahaman (dan parameter) lain untuk melihat bagaimana perubahannya terhadap lama pelatihan

266 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB Mempercepat Pelatihan Backpropagation Metode standar Backpropagation seringkali terlalu lambat untuk keperluan praktis. Beberapa modifikasi dilakukan terhadap standar backpropagation dengan cara mengganti fungsi pelatihannya. Secara umum, modifikasi dapat dikelompokkan dalam 2 kategori. Kategori pertama adalah metode yang menggunakan teknik heuristik yang dikembangkan dari metode penurunan tercepat yang dipakai dalam standar backpropagation. Kategori kedua adalah menggunakan metode optimisasi numerik selain penurunan tercepat. Beberapa metode yang dipakai sebagai modifikasi adalah metode gradien conjugate, quasi Newton, dll. Dalam subbab berikut ini dibicarakan dahulu tentang beberapa modifikasi yang masuk dalam kategori pertama (Backpropagation dengan momentum, variabel laju pemahaman, dan Backpropagation resilient). Berikutnya barulah dibahas tentang beberapa metode yang masuk dalam kategori kedua Metode Penurunan Gradien dengan Momentum (traingdm) Meskipun metodenya paling sederhana, tapi metode penurunan gradien sangat lambat dalam kecepatan proses iterasinya. Ini terjadi karena kadang-kadang arah penurunan tercepat bukanlah arah yang tepat untuk mencapai titik minimumnya globalnya. Modifikasi metode penurunan tercepat dilakukan dengan menambahkan momentum. Dengan momentum, perubahan bobot tidak hanya didasarkan atas error yang terjadi pada epoch pada waktu itu. Perubahan bobot saat ini dilakukan dengan memperhitungkan juga perubahan bobot pada epoch sebelumnya. Dengan demikian kemungkinan terperangkap ke titik minimum lokal dapat dihindari.

267 270 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Besarnya efek perubahan bobot terdahulu (disebut faktor momentum) bisa diatur dengan suatu bilangan antara 0 dan. Faktor momentum = 0 berarti perubahan bobot hanya dilakukan berdasarkan error saat ini (penurunan gradien murni). Dalam matlab, pelatihan backpropagation dengan menggunakan metode penurunan gradien dengan momentum dilakukan dengan mendefinisikan fungsi pelatihan traingdm dalam pembentukan jaringannya. Besarnya faktor momentum dilakukan dengan memberi nilai antara 0 - pada net.trainparam.mc (default = 0.9). Parameter lain yang dapat diatur dalam traingdm sama dengan traingd (lihat bab 5.3.2) Contoh 5.6 Ulangi contoh 5.4 jika pelatihan dilakukan dengan menggunakan metode penurunan tercepat dengan momentum. Penyelesaian Perintah-perintahnya sama seperti contoh 5.4, hanya fungsi pelatihannya diganti dengan traingdm. Jika sebelumnya semua perintah contoh 5.4 sudah dijalankan, anda tinggal menginisialisasi bobot (perintah init) dan mengganti fungsi pelatihan perintah newff. >> p = [ ; ]; >> t = [- - ]; >> net = newff (minmax (p), [3,], {'tansig', 'purelin'}, 'traingdm'); >> net = train (net,p); TRAINGDM, Epoch 0/00, MSE /0, Gradient /e-00 TRAINGDM, Epoch 25/00, MSE /0, Gradient /e-00

268 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 27 TRAINGDM, Epoch 50/00, MSE /0, Gradient /e-00 TRAINGDM, Epoch 75/00, MSE /0, Gradient /e-00 TRAINGDM, Epoch 00/00, MSE /0, Gradient /e-00 TRAINGDM, Maximum epoch reached, performance goal was not met. Pada epoch ke 00, mse masih = (bandingkan dengan contoh 5.4 yang pada epoch ke 00 memiliki mse = ). Meskipun lebih cepat dibandingkan tanpa momentum, tapi masih belum mencapai target yang diinginkan. Jika faktor momentum diubah menjadi 0.5, diperoleh hasil : >> net = init (net); >> net.trainparam.mc = 0.5; >> net = train (net,p); TRAINGDM, Epoch 0/00, MSE.48738/0, Gradient /e-00 TRAINGDM, Epoch 25/00, MSE /0, Gradient.22603/e-00 TRAINGDM, Epoch 50/00, MSE /0, Gradient /e-00 TRAINGDM, Epoch 75/00, MSE /0, Gradient /e-00 TRAINGDM, Epoch 00/00, MSE /0, Gradient /e-00 TRAINGDM, Maximum epoch reached, performance goal was not met.

269 272 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Variabel Laju Pemahaman (traingda, traingdx) Dalam standar Backpropagation, laju pemahaman berupa suatu konstanta yang nilainya tetap selama iterasi. Akibatnya, unjuk kerja algoritma sangat dipengaruhi oleh besarnya laju pemahaman yang dipakai. Secara praktis, sulit untuk menentukan besarnya laju pemahanan yang paling optimal sebelum pelatihan dilakukan. Laju pemahaman yang terlalu besar maupun terlalu kecil akan menyebabkan pelatihan menjadi lambat. Pelatihan akan lebih cepat apabila laju pemahaman dapat diubah-ubah besarnya selama proses pelatihan. Jika error sekarang lebih besar dibandingkan error sebelumnya, maka laju pemahaman diturunkan. Jika sebaliknya, maka laju pemahaman diperbesar. Dengan demikian laju pemahaman dapat dibuat sebesar-besarnya dengan tetap mempertahankan kestabilan proses. Dalam Matlab, penggunaan variabel laju pemahaman dilakukan dengan menggunakan traingda pada parameter fungsi pelatihan newff. Penggunaan laju pemahaman juga bisa dikombinasikan dengan menambahkan faktor momentum seperti bab Fungsi pelatihan yang dipakai di Matlab adalah traingdx. Fungsi pelatihan ini memiliki kecepatan pelatihan yang tinggi sehingga dipakai sebagai default dalam pelatihan Backpropagation di Matlab. Contoh 5.7 Ulangi contoh 5.4 (toleransi 0-5 ) jika pelatihan dilakukan dengan menggunakan metode penurunan tercepat dengan variabel laju pemahaman. metode penurunan tercepat dengan variabel laju pemahaman yang ditambah dengan momentum

270 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 273 Penyelesaian a. >> p = [ ; ]; >> t = [- - ]; >> net = newff (minmax (p), [3,], {'tansig', 'purelin'}, 'traingda'); >> net.trainparam.goal = e-5; >> net = train (net,p); TRAINGDA, Epoch 0/00, MSE.43535/e-005, Gradient /e-006 TRAINGDA, Epoch 25/00, MSE /e-005, Gradient /e-006 TRAINGDA, Epoch 50/00, MSE /e-005, Gradient /e-006 TRAINGDA, Epoch 75/00, MSE e-005/e-005, Gradient /e-006 TRAINGDA, Epoch 79/00, MSE e-006/e-005, Gradient /e-006 TRAINGDA, Performance goal met. Tampak bahwa iterasi dihentikan pada epoch ke 79 karena mse = yang lebih kecil dari batas toleransi yang ditetapkan (0-5 ). Grafiknya tampak pada gambar 5.3. MSE yang diperoleh ini jauh lebih kecil dibandingkan dengan mse pelatihan contoh 5.4 dan 5.5. Perhatikan bahwa jika dicoba lagi dengan bobot awal berbeda (gunakan perintah init), maka hasil akan berbeda. Bahkan mungkin hingga pada epoch ke 00, mse masih belum memenuhi kriteria yang ditetapkan. Bobot dan bias optimal dapat ditampilkan dengan menampilkan isi net.iw, net.b dan net.lw

271 274 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Gambar 5.3 b. >> net = init (net); >> net = newff (minmax (p), [3,], {'tansig', 'purelin'}, 'traingdx'); >> net.trainparam.goal = e-5; >> net = train (net,p); TRAINGDX, Epoch 0/00, MSE /e-005, Gradient.6694/e-006 TRAINGDX, Epoch 25/00, MSE /e-005, Gradient /e-006 TRAINGDX, Epoch 50/00, MSE /e-005, Gradient /e-006 TRAINGDX, Epoch 75/00, MSE e-005/e-005, Gradient /e-006 TRAINGDX, Epoch 79/00, MSE e-006/e-005, Gradient /e-006 TRAINGDX, Performance goal met.

272 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 275 Tampak bahwa pada epoch ke 79 iterasi sudah dihentikan karena mse sudah lebih kecil dari batas toleransi yang ditentukan. Grafik tampak pada gambar 5.4. Pelatihan dengan traingdx juga jauh lebih cepat dibandingkan standar Backpropagation ( traingd ) Gambar Resilient Backpropagation (trainrp) Jaringan backpropagation umumnya menggunakan fungsi aktivasi sigmoid. Fungsi sigmoid akan menerima masukan dari range tak berhingga menjadi keluaran pada range [0,]. Semakin jauh titik dari x = 0, semakin kecil gradiennya. Pada titik yang cukup jauh dari x = 0, gradiennya mendekati 0. Hal ini menimbulkan masalah pada waktu menggunakan metode penurunan tercepat (yang iterasinya didasarkan atas gradien). Gradien yang kecil menyebabkan perubahan bobot juga kecil, meskipun masih jauh dari titik optimal. Masalah ini diatasi dalam resilient Backpropagation dengan cara membagi arah dan perubahan bobot menjadi 2 bagian yang berbeda. Ketika menggunakan penurunan tercepat, yang diambil hanya arahnya saja. Besarnya perubahan bobot dilakukan dengan cara lain.

273 276 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Dalam Matlab, resilinet Backpropagation dilakukan dengan menuliskan trainrp pada fungsi pelatihannya. Contoh 5.8 Ulangi contoh 5.4 jika pelatihan dilakukan dengan menggunakan resilient Backpropagation dengan batas toleransi 0-5 Penyelesaian >> net = init (net); >> net = newff (minmax (p), [3,], {'tansig', 'purelin'}, 'trainrp'); >> net.trainparam.goal = e-5; >> net = train (net,p); TRAINRP, Epoch 0/00, MSE /e-005, Gradient /e-006 TRAINRP, Epoch 7/00, MSE e-006/e-005, Gradient /e-006 TRAINRP, Performance goal met. Gambar 5.5

274 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB Algoritma Gradien Conjugate (traincgf, traincgp, traincgb) Dalam standar Backpropagation, bobot dimodifikasi pada arah penurunan tercepat. Meskipun penurunan fungsi berjalan cepat, tapi tidak menjamin akan konvergen dengan cepat. Dalam algoritma gradien Conjugate, pencarian dilakukan sepanjang arah conjugate. Dalam banyak kasus, pencarian ini lebih cepat. Ada berbagai metode pencarian yang dilakukan berdasarkan prinsip gradien conjugate, antara lain Fletcher-Reeves ( traincgf ), Polak-Ribiere ( traincgp ), Powel Beale ( traincgb ). Pembaca dapat membaca rincian masing-masing metode dalam buku tentang optimisasi atau riset operasi. Contoh 5.9 Ulangi contoh 5.4 jika pelatihan dilakukan dengan menggunakan gradien conjugate dengan batas toleransi 0-5 a. Metode Fletcher-Reeves b. Metode Polak-Ribiere c. Metode Powel Beale Penyelesaian a. >> net = init (net); >> net = newff (minmax (p), [3,], {'tansig', 'purelin'}, 'traincgf'); >> net.trainparam.goal = e-5; >> net = train (net,p); TRAINCGF-srchcha, Epoch 0/00, MSE /e- 005, Gradient.8863/e-006

275 278 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab TRAINCGF-srchcha, Epoch 0/00, MSE e- 006/e-005, Gradient /e-006 TRAINCGF, Performance goal met. b. >> net = init (net); >> net = newff (minmax (p), [3,], {'tansig', 'purelin'}, 'traincgp'); >> net.trainparam.goal = e-5; >> net = train (net,p); TRAINCGP-srchcha, Epoch 0/00, MSE /e- 005, Gradient /e-006 TRAINCGP-srchcha, Epoch 8/00, MSE e- 006/e-005, Gradient /e-006 TRAINCGP, Performance goal met. c. >> net = init (net); >> net = newff (minmax (p), [3,], {'tansig', 'purelin'}, 'traincgb'); >> net.trainparam.goal = e-5; >> net = train (net,p); TRAINCGB-srchcha, Epoch 0/00, MSE /e- 005, Gradient.5573/e-006 TRAINCGB-srchcha, Epoch 5/00, MSE e- 006/e-005, Gradient /e-006 TRAINCGB, Performance goal met. Hasil iterasi contoh menunjukkan bahwa metode pelatihan memegang peranan penting dalam kecepatan pelatihan. Modifikasi metode standar Backpropagation terbukti mempercepat iterasi hingga

276 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 279 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 5.0 Selesaikanlah masalah peramalan contoh 7.3 (lihat bab 7 tentang teori Backpropagation) hingga toleransi 0-5 Penyelesaian Perhatikan kembali data contoh 7.3 tentang peramalan penjualan produk makanan kaleng. Berdasarkan data bulanan selama 2 tahun tersebut dibentuk jaringan dengan 2 masukan dan target.. Data yang dimasukkan adalah hasil transformasi data asli ke [0., 0.9]. Fungsi aktivasi yang dipakai bisa berupa sigmoid biner (logsig) karena semua data berada dalam range [0, ]. Jumlah layar tersembunyi (dan jumlah unitnya) harus dicoba-coba, dimulai dari yang kecil (misal 2 unit). Demikian juga fungsi pelatihannya. Misalkan dicoba dari default Matlab (traingdx). Diperoleh hasil : >> net = newff (minmax (p), [2,], {'logsig', 'logsig'}, 'traingdx'); >> net.trainparam.goal = e-5; >> net.trainparam.epochs = 500; >> net.trainparam.show = 500; >> net = train (net,p); TRAINGDX, Epoch 0/500, MSE /e-005, Gradient /e-006 TRAINGDX, Epoch 50/500, MSE /e-005, Gradient /e-006

277 280 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab TRAINGDX, Epoch 00/500, MSE /e-005, Gradient /e-006 TRAINGDX, Epoch 50/500, MSE /e-005, Gradient /e-006 TRAINGDX, Epoch 200/500, MSE 3.255e-005/e- 005, Gradient e-005/e-006 TRAINGDX, Epoch 226/500, MSE e-006/e- 005, Gradient e-005/e-006 TRAINGDX, Performance goal met. Gambar 5.6 Hasil percobaan dengan meningkatkan jumlah unit di layar tersembunyi (dengan fungsi traingdx) tampak pada tabel 5.6 Tabel 5.6 Jaringan Jumlah epoch untuk mencapai toleransi

278 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB Tampak bahwa penambahan jumlah unit di layar tersembunyi tidak akan mempercepat pelatihan secara signifikan. Maka lebih baik dipakai jaringan kecil (2 2 ). Tabel 5.7 menunjukkan perbandingan beberapa fungsi pelatihan penyelesaian contoh 5.0 dengan jaringan 2 2. Terlihat besarnya perbedaan kecepatan diantara fungsi pelatihan yang berbeda. Tabel 5.7 Fungsi Pelatihan traingd traingdm Jumlah epoch untuk mencapai toleransi 0-5 tidak selesai selama epoch. Pada epoch ke , mse = tidak selesai selama epoch. Pada epoch ke , mse = traingda 232 traingdx 226 trainrp 0 traincgf 2 traincgp 3 traincgb 3

279 282 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab SOAL-SOAL LATIHAN. Apa keuntungan dan kerugian penggunaan fungsi aktivasi identitas dibandingkan dengan fungsi aktivasi sigmoid? 2. Diketahui data nilai tukar US$ selama 4 hari terakhir (dari H-4 hingga H-). Hari H-4 H-3 H-2 H- H-0 H-9 H-8 Nilai Tukar (ribuan) Hari H-7 H-6 H-5 H-4 H-3 H-2 H- Nilai Tukar (ribuan) Prediksilah nilai tukar US$ pada hari ini menggunakan Backpropagation dengan spesifikasi : a. Jaringan terdiri dari 7 buah unit masukan, unit keluaran dan sebuah layar tersembunyi yang terdiri dari 2 unit. b. Fungsi aktivasi yang dipakai pada layar keluaran adalah fungsi identitas (ini berarti data asli tidak perlu ditransformasikan lagi) c. Toleransi kesalahan = 0-5 d. Epoch maksimum = 5000 Ulangilah percobaan anda beberapa kali untuk memperoleh iterasi dengan jumlah epoch terkecil.

280 PEMROGRAMAN BACKPROPAGATION DENGAN MATLAB 283 Ulangi soal #2 dengan perubahan : 3. Penambahan jumlah unit di layar tersembunyi hingga 6 unit. Untuk setiap penambahan unit, catatlah jumlah epoch yang diperlukan. Apakah penambahan unit tersembunyi akan menurunkan jumlah epoch secara signifikan? 4. Penambahan layar tersembunyi (terdiri dari 2 unit tersembunyi). Apakah penambahan layar tersembunyi akan menurunkan jumlah epoch secara signifikan? 5. Penggunaan fungsi pelatihan traingd, traingdm, traingda, trainrp, traincgf, traincgp, traincgb. Fungsi mana yang menghasilkan jumlah epoch terbanyak (paling lama)? jumlah epoch paling sedikit (paling cepat)? 6. Ulangi soal #2 tapi jaringan terdiri dari 4 unit masukan (layar tersembunyi dan unit keluaran tetap sama seperti soal #2). Apakah pelatihan bertambah cepat?

281 Bab 6 PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB Jaringan kompetitif (Competitive Network) dalam Matlab digunakan untuk mengelompokkan data sedemikian hingga data yang berdekatan satu sama lain akan berada pada kelompok yang sama. Pengaturan mandiri (self organizing map) merupakan generalisasi dari jaringan kompetitif. Keduanya merupakan jaringan tanpa supervisi. Neuron akan berkompetisi untuk menjadi pemenang terhadap vektor masukan yang diberikan. Bobot ke neuron pemenang akan diperbaiki pada iterasi berikutnya. 6. Jaringan Kompetitif Arsitektur jaringan kompetitif tampak pada gambar 6.. Arsitektur tersebut mirip dengan jaringan ADALINE. Terdapat bias yang terhubung ke setiap neuron keluaran. y y k b w w k w n w kn b 2 x... x n Gambar 6.

282 286 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Dalam iterasinya, Matlab menggunakan aturan Kohonen dalam mengubah bobot-bobotnya. Neuron yang bobotnya paling mendekati vektor masukan akan diperbaiki dan dibuat lebih dekat lagi. Dengan bertambahnya vektor masukan yang diberikan, maka setiap neuron yang terdekat ke suatu kelompok neuron akan mengubah bobotnya kearah vektor masukan tersebut. Ini berarti bahwa lama kelamaan vektor masukan akan terbagi menjadi beberapa kelompok. Vektorvektor masukan yang saling berdekatan akan membentuk sebuah kelompok Dalam Matlab, jaringan kompetitif dibentuk dengan perintah newc yang formatnya adalah sebagai berikut : dengan net = newc(pr,s,klr,clr) PR : Matriks ukuran Rx2 yang berisi nilai minimum dan maksimum masing-masing nilai vektor masukan S : Jumlah neuron target KLR : Laju pemahaman Kohonen (default = 0.0) CLR : Laju pemahaman Conscience (default = 0.00) Bobot awal yang dibentuk adalah titik tengah matriks PR Sama seperti model-model sebelumnya, bobot dan bias masingmasing disimpan dalam net.iw {,} dan net.b {}. Pelatihan jaringan juga dilakukan dengan perintah train. Setelah pelatihan selesai, perintah sim dipakai untuk menghitung keluaran jaringan yang berupa matriks B berordo sxn (s = jumlah neuron target dan n = jumlah vektor masukan). B(i,j) = menyatakan bahwa vektor masukan ke-j masuk dalam kelompok ke-i. Untuk lebih memudahkan dapat pula dipakai perintah vec2ind setelah perintah

283 x2 PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB 287 sim untuk mengetahui secara langsung pengelompokan vektor. Untuk lebih jelasnya, perhatikan contoh 6. Contoh 6. Diketahui 4 buah vektor masukan (masing-masing terdiri dari 2 komponen x, x 2) sebagai berikut : p = Titik-titik vektor tersebut dapat digambarkan seperti tampak pada gambar x Gambar 6.2

284 288 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Gunakan jaringan kompetitif dengan Matlab untuk membagi 4 vektor tersebut menjadi maksimum 5 kelompok. Penyelesaian Mula-mula dimasukkan data vektor (x, x 2) yang hendak dikelompokkan. Semua elemennya berada dalam range [0, ]. >> p = [ ; ] >> net = newc ([0 ; 0 ],5); Untuk melihat bobot dan bias awalnya dapat digunakan perintah net.iw dan net.b >> net.iw {,} ans = >> net.b {} ans =

285 PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB Tampak bahwa semua bobot awalnya terletak pada titik tengah nilai minimum dan maksimum vektor masukan, yaitu interval [0, ]. Berikutnya untuk melatih jaringan digunakan perintah train >> net = train (net,p); TRAINR, Epoch 0/00 TRAINR, Epoch 25/00 TRAINR, Epoch 50/00 TRAINR, Epoch 75/00 TRAINR, Epoch 00/00 TRAINR, Maximum epoch reached. Perintah sim dipakai untuk mencari pengelompokan vektor >> b = sim (net,p) b = (5,) (3,2) (5,3) (5,4) (3,5) (4,6) (5,7) (2,8) (2,9)

286 290 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab (4,0) (2,) (3,2) (5,3) (5,4) 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,) yang berarti bahwa vektor masukan pertama = (0.987, ) masuk dalam kelompok ke-5. Keluaran baris kedua adalah b(3,2) yang berarti bahwa vektor masukan ke-2 = (0.2722, 0.988) masuk dalam kelompok ke-3. Demikian seterusnya hingga vektor masukan ke-4 yang masuk dalam kelompok ke-5. Untuk mempermudah pembacaan dapat pula digunakan perintah vec2ind. Keluarannya berupa kelompok vektornya. >> ac = vec2ind(b) ac = Columns through Columns through Gambar 6.2 adalah pengelompokkan vektor-vektor yang terdapat dalam gambar 6.. Tampak bahwa semua vektor dapat dikelompokkan hanya dalam 4 kelompok. Pelatihan dapat diperpanjang hingga jumlah epoch yang kita inginkan dengan mensetting nilai net.trainparam.epochs. Jika dilakukan hingga 500 epochs, diperoleh hasil pengelompokkan sebagai berikut (perhatikan bahwa untuk memulai lagi dari bobot awal, kita harus menggunakan perintah init (net) terlebih dahulu. Tanpa perintah

287 PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB 29 init, berarti bobot yang kita pakai adalah bobot terakhir yang kita dapatkan) >> net = init (net); >> net.trainparam.epochs = 500; >> net = train (net,p); TRAINR, Epoch 0/500 TRAINR, Epoch 25/500 TRAINR, Epoch 50/500 TRAINR, Epoch 75/500 TRAINR, Epoch 00/500 TRAINR, Epoch 25/500 TRAINR, Epoch 50/500 TRAINR, Epoch 75/500 TRAINR, Epoch 200/500 TRAINR, Epoch 225/500 TRAINR, Epoch 250/500 TRAINR, Epoch 275/500 TRAINR, Epoch 300/500 TRAINR, Epoch 325/500 TRAINR, Epoch 350/500 TRAINR, Epoch 375/500 TRAINR, Epoch 400/500 TRAINR, Epoch 425/500 TRAINR, Epoch 450/500 TRAINR, Epoch 475/500

288 292 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab TRAINR, Epoch 500/500 TRAINR, Maximum epoch reached. >> b = sim (net,p) b = (3,) (2,2) (3,3) (5,4) (2,5) (4,6) (3,7) (,8) (,9) (4,0) (4,) (2,2) (3,3) (5,4) >> ac = vec2ind(b) ac = Columns through Columns through

289 x2 x2 PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB 293 Gambar 6.3 merupakan hasil pengelompokkan jika pelatihan dilanjutkan hingga 500 epoch. Tampak bahwa vektor masukan terbagi dalam 5 kelompok (iterasi 00 epoch hanya menghasilkan 4 kelompok). Vektor-vektor yang masuk dalam kelompok 5 pada iterasi 00 epoch terpecah menjadi 2 bagian x Gambar x

290 294 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Gambar Pengaturan Mandiri Penaturan Mandiri (Self Organizing Feature Maps) merupakan perluasan dari jaringan kompetitif. Jaringan ini sering juga disebut jaringan Kohonen. Jumlah neuron target sama dengan maksimum jumlah kelompok yang hendak kita buat. Dalam iterasinya, bobot neuron yang diubah tidak hanya bobot garis yang terhubung ke neuron pemenang saja (seperi yang terjadi pada jaringan kompetitif), tapi juga bobot ke neuron-neuron di sekitarnya Topologi Jaringan Dalam jaringan Kohonen, neuron target tidak diletakkan dalam sebuah baris (seperti layaknya jaringan yang kita kenal terdahulu). Neuron target diletakkan dalam 2 dimensi yang bentuk/topologinya dapat diatur. Matlab menyediakan fasilitas untuk mendefinisikan topologi jaringan yang berbeda-beda. Ada 3 macam topologi yang dapat dibentuk yaitu gridtop, hextop dan randtop. Topologi yang berbeda akan menghasilkan neuron sekitar neuron pemenang yang berbeda pula. Ini berarti bobot yang diubah juga berbeda. Pada jaringan kompetitif, neuron disusun dalam array dimensi. Dalam topologi gridtop, neuron-neuron target disusun dalam array 2 dimensi. Dalam topologi hextop, neuron disusun dalam bentuk heksagonal. Dalam topologi randtop, neuron disusun dalam 2 dimensi secara acak. Perintah untuk menentukan topologi jaringan adalah sebagai berikut dengan pos = gridtop (m,n) pos = matriks ordo 2 x (mxn) yang menyatakan koordinat neuron

291 PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB 295 Perintah gridtop dapat diganti dengan hextop atau randtop untuk menyatakan topologi heksagonal atau random Contoh 6.2 Gambarkan 30 neuron topologi jaringan Kohonen (2 dimensi) dalam 5 baris dan 6 kolom Penyelesaian >> pos = gridtop (5,6) pos = Columns through Columns 8 through Columns 5 through Columns 22 through Columns 29 through Keluaran Matlab diatas menunjukkan koordinat 30 neuron yang dibentuk. Neuron- berada pada posisi (0,0), neuron-2 pada posisi (,0) dan seterusnya... hingga neuron 30 yang berada pada posisi (4,5). Untuk menggambarkannya dipakai perintah plotsom

292 296 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab >> plotsom (pos) Gambar 6.4 adalah grafik yang dihasilkan. Untuk membuat topologi heksagonal dan random, perintah gridtop diganti masing-masing dengan hextop dan randtop. Topologinya tampak pada gambar 6.5 dan 6.6 Gambar 6.4 >> pos = hextop (5,6) pos = Columns through Columns 7 through

293 PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB 297 Columns 3 through Columns 9 through Columns 25 through >> plotsom (pos) Gambar 6.5 >> pos = randtop (5,6) pos =

294 298 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Columns through Columns 7 through Columns 3 through Columns 9 through Columns 25 through >> plotsom (pos)

295 PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB 299 Gambar Jarak Antar Neuron Dalam jaringan Kohonen, perubahan bobot tidak hanya dilakukan pada bobot garis yang terhubung ke neuron pemenang saja, tapi juga pada bobot garis neuron-neuron sekitarnya. Neuron sekitar neuron pemenang ditentukan berdasarkan jaraknya dari neuron pemenang (default jarak = ). Ada 4 macam definisi jarak antara 2 neuron, yaitu jarak Euclidis (dist), boxdist, linkdist dan mandist. Jarak Euclidis (dist) adalah jarak yang antara 2 titik dalam posisi berbeda yang kita kenal sehari-hari. Misal (x, y ) dan (x 2, y 2) adalah koordinat 2 buah neuron. Jarak kedua neuron didefinisikan sebagai 2 2 d x2 x y2 y Jarak persegi (boxdist) sebuah neuron adalah neuron-neuron di sekitarnya secara langsung. Apabila topologi neuron adalah gridtop, maka paling banyak terdapat 8 buah neuron dengan boxdist =, 6 buah neuron dengan boxdist = 2 (lihat gambar 6.7). Jika neuron pemenang berada di pinggir (seperti titik q pada gambar 6.7), maka hanya ada 5 neuron di sekitarnya. Jarak link (linkdist) dari sebuah neuron adalah jumlah langkah yang dibutuhkan untuk menuju neuron tersebut. Jika dalam jaringan Kohonen menggunakan topologi gridtop dengan linkdist = (lihat gambar 6.8), berarti hanya neuron-neuron yang berhubungan langsung dengan neuron pemenang saja yang diubah bobotnya Jarak Manhattan (mandist) antara vektor x (x, x 2,..., x n) dan vektor y = (y, y 2,..., y n) didefinisikan sebagai : sum (abs (x-y)) = Jika x = (x, x 2) dan y = (y, y 2) menyatakan koordinat neuron yang dibentuk melalui topologi tertentu, maka jarak Manhattan antara neuron x dan y adalah D = x y x2 y 2 n i x i y i

296 300 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab p neuron sekitar p dengan jarak = q neuron sekitar p dengan jarak = 2 Gambar 6.7 neuron sekitar p dengan jarak = p neuron sekitar p dengan jarak = 2 q neuron sekitar q dengan jarak = Gambar 6.8 Contoh 6.3 Misalkan terdapat 6 buah neuron dalam topologi gridtop (2,3). Hitunglah jarak antar neuron menggunakan Jarak Euclidis (dist) Boxdist Linkdist

297 PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB 30 Penyelesaian Jarak Manhattan (Mandist) >> pos = gridtop (2,3) pos = Enam neuron yang terbentuk masing-masing memiliki koordinat : Neuron- = (0,0), neuron-2 = (,0),..., dst hingga neuron 6 = (,2) Gambar 6.9 adalah topologi jaringan yang terbentuk dengan perintah plotsom. neuron-5 neuron-6 neuron-3 neuron-4 neuron- neuron-2 >> plotsom (pos) Gambar 6.9 Jarak Euclidis

298 302 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Jarak Euclidis antara 2 neuron dihitung dengan perintah dist. Hasilnya berupa matriks jarak yang menunjukkan jarak antara 2 buah neuron. Jarak suatu neuron dengan dirinya sendiri (terletak sepanjang diagonal utama) = 0. Neuron bersebelahan yang terletak pada sumbu horisontal/vertikal yang sama akan memiliki jarak = >> dist (pos) ans = Tampak bahwa jarak Euclidis antara neuron- dengan neuron 2 =, neuron- (koordinat (0,0)) dengan neuron-6 (koordinat (,2)) = = 2.236, dst. Jarak persegi (boxdist) Jarak persegi diperoleh dengan perintah boxdist >> boxdist (pos) ans =

299 PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB Jarak persegi setiap neuron dengan dirinya sendiri = 0. Hal ini tampak pada jarak sepanjang diagonal utamanya. Jarak persegi neuron- (koordinat (0,0)) dengan neuron sekitarnya yaitu neuron-2, neuron-3 dan neuron-4 (lihat topologinya pada gambar 6.9) =. Neuronneuron sekitar neuron-3 adalah semua neuron lainnya (lihat gambar 6.9). Ini berarti jarak persegi antara neuron 3 dan semua titik lainnya =. Jarak link (linkdist) Jarak link diperoleh dengan perintah linkdist >> linkdist (pos) ans = Hasilnya sedikit berbeda dengan boxdist. Dengan linkdist, jarak neuron- (koordinat (0,0)) dengan neuron-4 (koordinat (,)) = 2 karena dibutuhkan 2 langkah dari neuron- untuk berpindah ke neuron-4. Secara analog, jarak link dari neuron- ke neuron-6 = 3 karena dibutuhkan 3 langkah dari neuron- untuk menuju neuron-6. Sebaliknya dengan boxdist, jarak neuron- dengan neuron-4 = karena neuron-4 merupakan salah satu neuron yang berada di sekitar neuron-

300 304 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Jarak Manhattan (mandist) Jarak Manhattan diperoleh dengan perintah mandist. Jarak Manhattan antara neuron- (koordinat (0,0)) dengan neuron-2 (koordinat (,0)) diperoleh dari rumus =. Jarak neuron-2 (koordinat (,0)) dengan neuron-6 (koordinat (,2)) = 0 2 = 2 dan seterusnya >> mandist (pos) ans = Perhatikan bahwa meskipun definisi jarak yang berbeda menghasilkan matriks jarak yang berbeda, namun semua matriks jarak tersebut merupakan matriks yang simetris. Jarak neuron-i ke neuron-k = jarak neuron-k ke neuron-i Pengelompokan Pola Jaringan Kohonen Langkah pertama implementasi jaringan Kohonen dengan Matlab adalah pendefinisian jaringan dengan perintah newsom yang formatnya adalah sebagai berikut :

301 PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB 305 net = newsom (PR,[D,D2,...],TFCN,DFCN,OLR, OSTEPS,TLR,TND) dengan PR : matriks Rx2 yang berisi nilai minimum dan maksimum R buah elemen masukan Di : Ukuran topologi layar (default = [5 8]) TFCN : Fungsi topologi (default = hextop ) DFCN : Fungsi jarak (default = linkdist ) OLR : Laju pemahaman fase pengaturan (ordering). Default = 0.9 OSTEPS : Jumlah iterasi langkah pengaturan. Default = 000 TLR : Laju pemahaman fase penyempurnaan (tuning). Default = 0.02 TND : Jarak sekitar neuron pemenang pada fase penyempurnaan. Default = Fungsi topologi dapat diganti dengan gridtop atau randtop, sedangkan fungsi jarak dapat diganti dengan dist atau mandist. Selanjutnya, pengelompokan neuron dilakukan dengan perintah train seperti dalam model jaringan terdahulu Dalam pelatihan, jarak antara vektor masukan dan bobot vektor neuron dihitung untuk menentukan neuron pemenang. Kemudian bobot neuron pemenang (dan neuron di sekitarnya) akan dimodifikasi sehingga semakin mendekati vektor masukan. Bobot neuron pemenang diubah sebanding dengan laju pemahaman, sedangkan bobot neuron di sekitarnya diubah sebanding dengan setengah laju pemahamannya. Pada setiap iterasi, laju pemahaman akan diturunkan perlahan-lahan.

302 306 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab Ada 2 fase dalam pelatihan jaringan Kohonen, yaitu fase pengaturan (ordering phase) dan kemudian diikuti dengan fase penyempurnaan (tuning phase). Dalam fase pengaturan, neuronneuron akan mengatur dirinya sendiri dalam topologi yang sama seperti yang didefinisikan. Fase pengaturan dilakukan maksimum sebanyak OSTEPS (default = 000) danmenggunakan laju pemahaman awal seperti yang didefinisikan dalam OLR (default = 0.9). Laju pemahaman ini akan menurun terus secara cepat hingga mencapai laju pemahaman fase penyempurnaan (TLR, yang memiliki default = 0.02). Jarak neuron sekitar juga mengalami penurunan selama fase pengaturan. Dalam fase penyempurnaan, jarak neuron sekitar tidak lagi mengalami penurunan. Akan tetapi laju pemahaman (TLR) tetap mengalami penurunan yang kecil. Ini berarti perubahan bobot neuron berlangsung sangat lambat. Akibatnya, jumlah iterasi yang dilakukan selama fase penyempurnaan seharusnya jauh lebih besar dibandingkan dengan fase pengaturan. Contoh 6.4 Gunakan jaringan Kohonen untuk mengelompokkan 20 buah vektor masukan dalam dimensi 2 yang diberikan secara acak pada range [0, ] 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 6.0 (jika anda mencobanya mungkin akan memperoleh grafik berbeda karena vektor tersebut dibentuk secara acak). Warna titik diatur lewat parameter.blue dan besarnya

303 PEMROGRAMAN JARINGAN KOHONEN DENGAN MATLAB 307 titik diatur lewat parameter 5 (semakin besar nilainya, ukuran titiknya juga semakin besar) >> plot (p(,:), p(2,:),'.blue', 'markersize', 5) Gambar 6.0 Berikutnya didefinisikan jaringan Kohonen >> net = newsom ([0 ; 0 ], [2 3]); Neuron awal jaringan ini memiliki bobot terkumpul di tengah-tengah vektor masukan, yaitu pada koordinat (0.5, 0.5). Hal ini dapat dilihat pada gambar 6.. Titik berukuran agak besar di tengah merupakan bobot awal jaringan. Untuk menggambarkannya digunakan perintah plotsom. Agar grafik vektor masukan dan grafik bobot jaringan berada dalam satu bidang gambar, digunakan perintah hold on dan hold off. >> hold on >> plotsom(net.iw{,}, net.layers{}.distances)

304 308 Jaringan Syaraf Tiruan dan Pemrogramannya Dengan Matlab >> hold off Berikutnya, jaringan dilatih dengan perintah train >> net = train (net,p); TRAINR, Epoch 0/00 TRAINR, Epoch 25/00 TRAINR, Epoch 50/00 TRAINR, Epoch 75/00 TRAINR, Epoch 00/00 TRAINR, Maximum epoch reached. Gambar 6. Hasil pengelompokan neuron dapat dilihat dengan perintah >> b = sim (net,p); >> ac = vec2ind(b)

BAB IV JARINGAN SYARAF TIRUAN (ARTIFICIAL NEURAL NETWORK)

BAB IV JARINGAN SYARAF TIRUAN (ARTIFICIAL NEURAL NETWORK) BAB IV JARINGAN SYARAF TIRUAN (ARTIFICIAL NEURAL NETWORK) Kompetensi : 1. Mahasiswa memahami konsep Jaringan Syaraf Tiruan Sub Kompetensi : 1. Dapat mengetahui sejarah JST 2. Dapat mengetahui macam-macam

Lebih terperinci

Jaringan Syaraf Tiruan. Disusun oleh: Liana Kusuma Ningrum

Jaringan Syaraf Tiruan. Disusun oleh: Liana Kusuma Ningrum Jaringan Syaraf Tiruan Disusun oleh: Liana Kusuma Ningrum Susilo Nugroho Drajad Maknawi M0105047 M0105068 M01040 Jurusan Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sebelas Maret

Lebih terperinci

BAB II MODEL NEURON DAN ARSITEKTUR JARINGAN

BAB II MODEL NEURON DAN ARSITEKTUR JARINGAN BAB II MODEL NEURON DAN ARSITEKTUR JARINGAN Neuron adalah unit pemroses informasi yang menjadi dasar dalam pengoperasian JST. Neuron terdiri dari 3 elemen: Himpunan unit2 yang dihubungkan dengan jalus

Lebih terperinci

Jaringan Syaraf Tiruan

Jaringan Syaraf Tiruan Jaringan Syaraf Tiruan (Artificial Neural Network) Intelligent Systems Pembahasan Jaringan McCulloch-Pitts Jaringan Hebb Perceptron Jaringan McCulloch-Pitts Model JST Pertama Diperkenalkan oleh McCulloch

Lebih terperinci

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI BAB 2 LANDASAN TEORI Pada bab ini akan dielaskan mengenai teori-teori yang berhubungan dengan penelitian ini, sehingga dapat diadikan sebagai landasan berpikir dan akan mempermudah dalam hal pembahasan

Lebih terperinci

I PENDAHULUAN II LANDASAN TEORI

I PENDAHULUAN II LANDASAN TEORI I PENDAHULUAN 1.1 Latar belakang Hujan merupakan salah satu unsur iklim yang berpengaruh pada suatu daerah aliran sungai (DAS). Pengaruh langsung yang dapat diketahui yaitu potensi sumber daya air. Besar

Lebih terperinci

1.1. Jaringan Syaraf Tiruan

1.1. Jaringan Syaraf Tiruan BAB I PENDAHULUAN 1.1. Jaringan Syaraf Tiruan Jaringan Syaraf Tiruan (JST) adalah sistem pemroses informasi yang memiliki karakteristik mirip dengan jaringan syaraf biologi yang digambarkan sebagai berikut

Lebih terperinci

terinspirasi dari sistem biologi saraf makhluk hidup seperti pemrosesan informasi

terinspirasi dari sistem biologi saraf makhluk hidup seperti pemrosesan informasi 25 BAB III JARINGAN SARAF TIRUAN (JST) 3.1 Pengertian JST JST merupakan sebuah model atau pola dalam pemrosesan informasi. Model ini terinspirasi dari sistem biologi saraf makhluk hidup seperti pemrosesan

Lebih terperinci

MODEL N EURON NEURON DAN

MODEL N EURON NEURON DAN 1 MODEL NEURON DAN ARSITEKTUR JARINGAN 1 1 Model Neuron Mengadopsi esensi dasar dari system syaraf biologi, syaraf tiruan digambarkan sebagai berikut : Menerima input atau masukan (baikdari data yang dimasukkan

Lebih terperinci

BAB VIII JARINGAN SYARAF TIRUAN

BAB VIII JARINGAN SYARAF TIRUAN BAB VIII JARINGAN SYARAF TIRUAN A. OTAK MANUSIA Otak manusia berisi berjuta-juta sel syaraf yang bertugas untuk memproses informasi. Tiaptiap sel bekerja seperti suatu prosesor sederhana. Masing-masing

Lebih terperinci

JARINGAN SARAF TIRUAN (ARTIFICIAL NEURAL NETWORK) ERWIEN TJIPTA WIJAYA, ST, M.KOM

JARINGAN SARAF TIRUAN (ARTIFICIAL NEURAL NETWORK) ERWIEN TJIPTA WIJAYA, ST, M.KOM JARINGAN SARAF TIRUAN (ARTIFICIAL NEURAL NETWORK) ERWIEN TJIPTA WIJAYA, ST, M.KOM INTRODUCTION Jaringan Saraf Tiruan atau JST adalah merupakan salah satu representasi tiruan dari otak manusia yang selalu

Lebih terperinci

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI BAB 2 LANDASAN TEORI 2.6. Jaringan Syaraf Tiruan Jaringan syaraf tiruan atau neural network merupakan suatu sistem informasi yang mempunyai cara kerja dan karakteristik menyerupai jaringan syaraf pada

Lebih terperinci

Architecture Net, Simple Neural Net

Architecture Net, Simple Neural Net Architecture Net, Simple Neural Net 1 Materi 1. Model Neuron JST 2. Arsitektur JST 3. Jenis Arsitektur JST 4. MsCulloh Pitts 5. Jaringan Hebb 2 Model Neuron JST X1 W1 z n wi xi; i1 y H ( z) Y1 X2 Y2 W2

Lebih terperinci

JARINGAN SYARAF TIRUAN

JARINGAN SYARAF TIRUAN JARINGAN SYARAF TIRUAN 8 Jaringan syaraf adalah merupakan salah satu representasi buatan dari otak manusia yang selalu mencoba untuk mensimulasikan proses pembelajaran pada otak manusia tersebut. Istilah

Lebih terperinci

BAB 2 TINJAUAN PUSTAKA

BAB 2 TINJAUAN PUSTAKA 79 BAB 2 TINJAUAN PUSTAKA 2.1. Pengenalan Pola Pengenalan pola mengelompokkan data numerik dan simbolik (termasuk citra) secara otomatis oleh komputer. Tujuan pengelompokan ini adalah untuk mengenali suatu

Lebih terperinci

Jaringan Syaraf Tiruan

Jaringan Syaraf Tiruan Jaringan Syaraf Tiruan Pendahuluan Otak Manusia Sejarah Komponen Jaringan Syaraf Arisitektur Jaringan Fungsi Aktivasi Proses Pembelajaran Pembelajaran Terawasi Jaringan Kohonen Referensi Sri Kusumadewi

Lebih terperinci

Jaringan Syaraf Tiruan

Jaringan Syaraf Tiruan 07/06/06 Rumusan: Jaringan Syaraf Tiruan Shinta P. Sari Manusia = tangan + kaki + mulut + mata + hidung + Kepala + telinga Otak Manusia Bertugas untuk memproses informasi Seperti prosesor sederhana Masing-masing

Lebih terperinci

BAB 2 LANDASAN TEORI. Pengenalan suara (voice recognition) dibagi menjadi dua jenis, yaitu

BAB 2 LANDASAN TEORI. Pengenalan suara (voice recognition) dibagi menjadi dua jenis, yaitu BAB 2 LANDASAN TEORI 2.1 Pengenalan Suara. Pengenalan suara (voice recognition) dibagi menjadi dua jenis, yaitu speech recognition dan speaker recognition. Speech recognition adalah proses yang dilakukan

Lebih terperinci

Gambar 2.1 Neuron biologi manusia (Medsker & Liebowitz, 1994)

Gambar 2.1 Neuron biologi manusia (Medsker & Liebowitz, 1994) BAB 2 LANDASAN TEORI 2.1. Jaringan Saraf Biologi Manusia Otak manusia memiliki struktur yang sangat kompleks, serta memiliki kemampuan yang luar biasa. Otak terdiri dari neuron-neuron dan penghubung yang

Lebih terperinci

BAB 2 LANDASAN TEORI. Universitas Sumatera Utara

BAB 2 LANDASAN TEORI. Universitas Sumatera Utara BAB 2 LANDASAN TEORI 2.1 Ginjal Ginjal adalah organ tubuh yang berfungsi untuk mengeluarkan urine, yang merupakan sisa hasil metabolisme tubuh dalam bentuk cairan. Ginjal terletak pada dinding bagian luar

Lebih terperinci

METODE BELAJAR HEBBIAN SUPERVISED & CONTOH

METODE BELAJAR HEBBIAN SUPERVISED & CONTOH METODE BELAJAR HEBBIAN SUPERVISED & CONTOH 1. Jaringan Hebbian Kelemahan model McCulloch-Pitts : penentuan bobot garis dan bias secara analitik. Untuk masalah yang kompleks, hal ini akan sangat sulit dilakukan.

Lebih terperinci

BAB 2 KONSEP DASAR PENGENAL OBJEK

BAB 2 KONSEP DASAR PENGENAL OBJEK BAB 2 KONSEP DASAR PENGENAL OBJEK 2.1 KONSEP DASAR Pada penelitian ini, penulis menggunakan beberapa teori yang dijadikan acuan untuk menyelesaikan penelitian. Berikut ini teori yang akan digunakan penulis

Lebih terperinci

Analisis Jaringan Saraf Tiruan Model Perceptron Pada Pengenalan Pola Pulau di Indonesia

Analisis Jaringan Saraf Tiruan Model Perceptron Pada Pengenalan Pola Pulau di Indonesia Jurnal Ilmiah Teknologi dan Informasi ASIA (JITIKA) Vol.11, No.1, Februari 2017 ISSN: 0852-730X Analisis Jaringan Saraf Tiruan Model Perceptron Pada Pengenalan Pola Pulau di Indonesia Muhammad Ulinnuha

Lebih terperinci

BAB 2 TINJAUAN PUSTAKA

BAB 2 TINJAUAN PUSTAKA BAB 2 TINJAUAN PUSTAKA Pada bab ini akan diuraikan materi yang mendukung dalam pembahasan evaluasi implementasi sistem informasi akademik berdasarkan pengembangan model fit HOT menggunakan regresi linier

Lebih terperinci

BAB IV B METODE BELAJAR HEBBIAN SUPERVISED & CONTOH

BAB IV B METODE BELAJAR HEBBIAN SUPERVISED & CONTOH BAB IV B METODE BELAJAR HEBBIAN SUPERVISED & CONTOH 4B. Jaringan Hebbian Kelemahan model McCulloch-Pitts : penentuan bobot garis dan bias secara analitik. Untuk masalah yang kompleks, hal ini akan sangat

Lebih terperinci

BAB 2 TINJAUAN PUSTAKA

BAB 2 TINJAUAN PUSTAKA 7 BAB 2 TINJAUAN PUSTAKA 2.1 Jaringan Syaraf Biologi Otak manusia memiliki struktur yang sangat kompleks dan memiliki kemampuan yang luar biasa. Otak terdiri dari neuron-neuron dan penghubung yang disebut

Lebih terperinci

RANCANG BANGUN TOOL UNTUK JARINGAN SYARAF TIRUAN (JST) MODEL PERCEPTRON

RANCANG BANGUN TOOL UNTUK JARINGAN SYARAF TIRUAN (JST) MODEL PERCEPTRON RANCANG BANGUN TOOL UNTUK JARINGAN SYARAF TIRUAN (JST) MODEL PERCEPTRON Liza Afriyanti Laboratorium Komputasi dan Sistem Cerdas Jurusan Teknik Informatika, Fakultas Teknologi Industri,Universitas Islam

Lebih terperinci

ANALISIS JARINGAN SARAF TIRUAN BACKPROPAGATION TERHADAP PERAMALAN NILAI TUKAR MATA UANG RUPIAH DAN DOLAR

ANALISIS JARINGAN SARAF TIRUAN BACKPROPAGATION TERHADAP PERAMALAN NILAI TUKAR MATA UANG RUPIAH DAN DOLAR Jurnal Barekeng Vol. 8 No. Hal. 7 3 (04) ANALISIS JARINGAN SARAF TIRUAN BACKPROPAGATION TERHADAP PERAMALAN NILAI TUKAR MATA UANG RUPIAH DAN DOLAR Analysis of Backpropagation Artificial Neural Network to

Lebih terperinci

Jaringan syaraf dengan lapisan tunggal

Jaringan syaraf dengan lapisan tunggal Jaringan syaraf adalah merupakan salah satu representasi buatan dari otak manusia yang mencoba untuk mensimulasikan proses pembelajaran pada otak manusia. Syaraf manusia Jaringan syaraf dengan lapisan

Lebih terperinci

BAB 2 TINJAUAN PUSTAKA

BAB 2 TINJAUAN PUSTAKA 7 BAB 2 TINJAUAN PUSTAKA 21 Anatomi Ayam Pengetahuan tentang anatomi ayam sangat diperlukan dan penting dalam pencegahan dan penanganan penyakit Hal ini karena pengetahuan tersebut dipakai sebagai dasar

Lebih terperinci

JARINGAN SYARAF TIRUAN (ARTIFICIAL NEURAL NETWORK) Pertemuan 11 Diema Hernyka Satyareni, M.Kom

JARINGAN SYARAF TIRUAN (ARTIFICIAL NEURAL NETWORK) Pertemuan 11 Diema Hernyka Satyareni, M.Kom JARINGAN SYARAF TIRUAN (ARTIFICIAL NEURAL NETWORK) Pertemuan 11 Diema Hernyka Satyareni, M.Kom Outline Konsep JST Model Struktur JST Arsitektur JST Aplikasi JST Metode Pembelajaran Fungsi Aktivasi McCulloch

Lebih terperinci

JARINGAN SYARAF TIRUAN (ARTIFICIAL NEURAL NETWORKS)

JARINGAN SYARAF TIRUAN (ARTIFICIAL NEURAL NETWORKS) JARINGAN SYARAF TIRUAN (ARTIFICIAL NEURAL NETWORKS) (Artificial Neural Networks) BAB I PENDAHULUAN 1.1 Sejarah JST JST : merupakan cabang dari Kecerdasan Buatan (Artificial Intelligence ) JST : meniru

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1. Pengenalan Pola Pengenalan pola adalah suatu ilmu untuk mengklasifikasikan atau menggambarkan sesuatu berdasarkan pengukuran kuantitatif fitur (ciri) atau sifat utama dari suatu

Lebih terperinci

BAB 2 LANDASAN TEORI. fuzzy logic dengan aplikasi neuro computing. Masing-masing memiliki cara dan proses

BAB 2 LANDASAN TEORI. fuzzy logic dengan aplikasi neuro computing. Masing-masing memiliki cara dan proses 8 BAB 2 LANDASAN TEORI 2.1 Teori Neuro Fuzzy Neuro-fuzzy sebenarnya merupakan penggabungan dari dua studi utama yaitu fuzzy logic dengan aplikasi neuro computing. Masing-masing memiliki cara dan proses

Lebih terperinci

BAB II TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA BAB II TINJAUAN PUSTAKA 2.1. Jaringan Saraf Tiruan (JST) Jaringan saraf tiruan pertama kali secara sederhana diperkenalkan oleh McCulloch dan Pitts pada tahun 1943. McCulloch dan Pitts menyimpulkan bahwa

Lebih terperinci

Architecture Net, Simple Neural Net

Architecture Net, Simple Neural Net Architecture Net, Simple Neural Net 1 Materi 1. Perceptron 2. ADALINE 3. MADALINE 2 Perceptron Perceptron lebih powerful dari Hebb Pembelajaran perceptron mampu menemukan konvergensi terhadap bobot yang

Lebih terperinci

BAB II TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA BAB II TINJAUAN PUSTAKA 2.1 JARINGAN SARAF SECARA BIOLOGIS Jaringan saraf adalah salah satu representasi buatan dari otak manusia yang selalu mencoba untuk mensimulasikan proses pembelajaran pada otak

Lebih terperinci

FAKULTAS SAINS DAN TEKNOLOGI UIN SUSKA RIAU. IIS AFRIANTY, ST., M.Sc

FAKULTAS SAINS DAN TEKNOLOGI UIN SUSKA RIAU. IIS AFRIANTY, ST., M.Sc IIS AFRIANTY, ST., M.Sc Sistem Penilaian Tugas dan Keaktifan : 15% Quiz : 15% UTS : 35% UAS : 35% Toleransi keterlambatan 15 menit Handphone: Silent Costume : aturan UIN Laki-laki Perempuan Menggunakan

Lebih terperinci

PEMANFAATAN NEURAL NETWORK PERCEPTRON PADA PENGENALAN POLA KARAKTER

PEMANFAATAN NEURAL NETWORK PERCEPTRON PADA PENGENALAN POLA KARAKTER PEMANFAATAN NEURAL NETWORK PERCEPTRON PADA PENGENALAN POLA KARAKTER Fakultas Teknologi Informasi Universitas Merdeka Malang Abstract: Various methods on artificial neural network has been applied to identify

Lebih terperinci

BAB VIIB BACKPROPAGATION dan CONTOH

BAB VIIB BACKPROPAGATION dan CONTOH BAB VIIB BACKPROPAGATION dan CONTOH 7B. Standar Backpropagation (BP) Backpropagation (BP) merupakan JST multi-layer. Penemuannya mengatasi kelemahan JST dengan layer tunggal yang mengakibatkan perkembangan

Lebih terperinci

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI BAB 2 LANDASAN TEORI 2.1 Citra Digital Citra merupakan fungsi kontinyu dari intensitas cahaya pada bidang dua dimensi. Intensitas cahaya merupakan hasil kali antara jumlah pancaran (illuminasi) cahaya

Lebih terperinci

BAB II DASAR TEORI. 2.1 Meter Air. Gambar 2.1 Meter Air. Meter air merupakan alat untuk mengukur banyaknya aliran air secara terus

BAB II DASAR TEORI. 2.1 Meter Air. Gambar 2.1 Meter Air. Meter air merupakan alat untuk mengukur banyaknya aliran air secara terus BAB II DASAR TEORI 2.1 Meter Air Gambar 2.1 Meter Air Meter air merupakan alat untuk mengukur banyaknya aliran air secara terus menerus melalui sistem kerja peralatan yang dilengkapi dengan unit sensor,

Lebih terperinci

ARTIFICIAL NEURAL NETWORK TEKNIK PERAMALAN - A

ARTIFICIAL NEURAL NETWORK TEKNIK PERAMALAN - A ARTIFICIAL NEURAL NETWORK CAHYA YUNITA 5213100001 ALVISHA FARRASITA 5213100057 NOVIANTIANDINI 5213100075 TEKNIK PERAMALAN - A MATERI Neural Network Neural Network atau dalam bahasa Indonesia disebut Jaringan

Lebih terperinci

APLIKASI JARINGAN SYARAF TIRUAN PADA PENGENALAN POLA TULISAN DENGAN METODE BACKPROPAGATION

APLIKASI JARINGAN SYARAF TIRUAN PADA PENGENALAN POLA TULISAN DENGAN METODE BACKPROPAGATION APLIKASI JARINGAN SYARAF TIRUAN PADA PENGENALAN POLA TULISAN DENGAN METODE BACKPROPAGATION Alvama Pattiserlihun, Andreas Setiawan, Suryasatriya Trihandaru Program Studi Fisika, Fakultas Sains dan Matematika,

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1. Barcode Salah satu obyek pengenalan pola yang bisa dipelajari dan akhirnya dapat dikenali yaitu PIN barcode. PIN barcode yang merupakan kode batang yang berfungsi sebagai personal

Lebih terperinci

JARINGAN SARAF TIRUAN (ARTIFICIAL NEURAL NETWORK)

JARINGAN SARAF TIRUAN (ARTIFICIAL NEURAL NETWORK) JARINGAN SARAF TIRUAN (ARTIFICIAL NEURAL NETWORK) Bagian ini membahas jaringan saraf tiruan, pengenalan tulisan tangan, dan algoritma backpropagation. 2. Jaringan Saraf Tiruan Jaringan saraf tiruan (JST)

Lebih terperinci

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 1 PENDAHULUAN. 1.1 Latar Belakang 1 BAB 1 PENDAHULUAN 1.1 Latar Belakang Perangkat keras komputer berkembang dengan pesat setiap tahunnya selalu sudah ditemukan teknologi yang lebih baru. Meskipun demikian masih banyak hal yang belum dapat

Lebih terperinci

VIII.PENGANTAR JARINGAN SYARAF TIRUAN (JST)

VIII.PENGANTAR JARINGAN SYARAF TIRUAN (JST) VIII.PENGANTAR JARINGAN SYARAF TIRUAN (JST) 3 JARINGAN SYARAF BIOLOGIS (JSB) Otak manusia berisi sekitar 0 sel syaraf (neuron) yang bertugas untuk memproses informasi yang masuk. Tiap sel syaraf dihubungkan

Lebih terperinci

PENERAPAN JARINGAN SYARAF TIRUAN DALAM MEMPREDIKSI TINGKAT PENGANGGURAN DI SUMATERA BARAT

PENERAPAN JARINGAN SYARAF TIRUAN DALAM MEMPREDIKSI TINGKAT PENGANGGURAN DI SUMATERA BARAT PENERAPAN JARINGAN SYARAF TIRUAN DALAM MEMPREDIKSI TINGKAT PENGANGGURAN DI SUMATERA BARAT Havid Syafwan Program Studi Manajemen Informatika, Amik Royal, Kisaran E-mail: havid_syafwan@yahoo.com ABSTRAK:

Lebih terperinci

Sebelumnya... Pembelajaran Mesin/Machine Learning Pembelajaran dengan Decision Tree (ID3) Teori Bayes dalam Pembelajaran

Sebelumnya... Pembelajaran Mesin/Machine Learning Pembelajaran dengan Decision Tree (ID3) Teori Bayes dalam Pembelajaran Sebelumnya... Pembelajaran Mesin/Machine Learning Pembelajaran dengan Decision Tree (ID3) Teori Bayes dalam Pembelajaran Kecerdasan Buatan Pertemuan 11 Jaringan Syaraf Tiruan (Artificial Neural Network)

Lebih terperinci

BAB 2 TINJAUAN PUSTAKA. menggunakan teknik statistik, matematika, kecerdasan buatan, tiruan dan machinelearning

BAB 2 TINJAUAN PUSTAKA. menggunakan teknik statistik, matematika, kecerdasan buatan, tiruan dan machinelearning BAB 2 TINJAUAN PUSTAKA 2.1. Data Mining Data mining adalah kombinasi secara logis antara pengetahuan data, dan analisa statistik yang dikembangkan dalam pengetahuan bisnis atau suatu proses yang menggunakan

Lebih terperinci

SATIN Sains dan Teknologi Informasi

SATIN Sains dan Teknologi Informasi SATIN - Sains dan Teknologi Informasi, Vol. 2, No. 1, Juni 2015 SATIN Sains dan Teknologi Informasi journal homepage : http://jurnal.stmik-amik-riau.ac.id Jaringan Syaraf Tiruan untuk Memprediksi Prestasi

Lebih terperinci

METODOLOGI PENELITIAN

METODOLOGI PENELITIAN III. METODOLOGI PENELITIAN A. Kerangka Pemikiran Perusahaan dalam era globalisasi pada saat ini, banyak tumbuh dan berkembang, baik dalam bidang perdagangan, jasa maupun industri manufaktur. Perusahaan

Lebih terperinci

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI BAB 2 LANDASAN TEORI 2.1 Jaringan Saraf Tiruan Jaringan saraf tiruan adalah paradigma pengolahan informasi yang terinspirasi oleh sistem saraf secara biologis, seperti proses informasi pada otak manusia.

Lebih terperinci

SISTEM PENGENALAN KARAKTER DENGAN JARINGAN SYARAF TIRUAN ALGORITMA PERCEPTRON

SISTEM PENGENALAN KARAKTER DENGAN JARINGAN SYARAF TIRUAN ALGORITMA PERCEPTRON Jurnal Informatika Mulawarman Vol. 7 No. 3 Edisi September 2012 105 SISTEM PENGENALAN KARAKTER DENGAN JARINGAN SYARAF TIRUAN ALGORITMA PERCEPTRON Anindita Septiarini Program Studi Ilmu Komputer FMIPA,

Lebih terperinci

PRISMA FISIKA, Vol. I, No. 1 (2013), Hal ISSN :

PRISMA FISIKA, Vol. I, No. 1 (2013), Hal ISSN : Prediksi Tinggi Signifikan Gelombang Laut Di Sebagian Wilayah Perairan Indonesia Menggunakan Jaringan Syaraf Tiruan Metode Propagasi Balik Abraham Isahk Bekalani, Yudha Arman, Muhammad Ishak Jumarang Program

Lebih terperinci

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI BAB 2 LANDASAN TEORI 2.1 Teori-teori Dasar / Umum 2.1.1 Genetic Algorithm Genetic algorithm adalah suatu algoritma yang biasanya digunakan untuk mencari solusi-solusi yang optimal untuk berbagai masalah

Lebih terperinci

IMPLEMENTASI JARINGAN SYARAF TIRUAN MULTI LAYER FEEDFORWARD DENGAN ALGORITMA BACKPROPAGATION SEBAGAI ESTIMASI NILAI KURS JUAL SGD-IDR

IMPLEMENTASI JARINGAN SYARAF TIRUAN MULTI LAYER FEEDFORWARD DENGAN ALGORITMA BACKPROPAGATION SEBAGAI ESTIMASI NILAI KURS JUAL SGD-IDR Seminar Nasional Teknologi Informasi dan Multimedia 205 STMIK AMIKOM Yogyakarta, 6-8 Februari 205 IMPLEMENTASI JARINGAN SYARAF TIRUAN MULTI LAYER FEEDFORWARD DENGAN ALGORITMA BACKPROPAGATION SEBAGAI ESTIMASI

Lebih terperinci

BAB 3 METODOLOGI PENELITIAN

BAB 3 METODOLOGI PENELITIAN BAB 3 METODOLOGI PENELITIAN 3.1. Data Yang Digunakan Dalam melakukan penelitian ini, penulis membutuhkan data input dalam proses jaringan saraf tiruan backpropagation. Data tersebut akan digunakan sebagai

Lebih terperinci

BAB II. Penelitian dengan jaringan syaraf tiruan propagasi balik. dalam bidang kesehatan sebelumnya pernah dilakukan oleh

BAB II. Penelitian dengan jaringan syaraf tiruan propagasi balik. dalam bidang kesehatan sebelumnya pernah dilakukan oleh BAB II TINJAUAN PUSTAKA DAN DASAR TEORI 2.1. Tinjauan Pustaka Penelitian dengan jaringan syaraf tiruan propagasi balik dalam bidang kesehatan sebelumnya pernah dilakukan oleh Sudharmadi Bayu Jati Wibowo

Lebih terperinci

Penerapan Jaringan Saraf Tiruan Metode Backpropagation Menggunakan VB 6

Penerapan Jaringan Saraf Tiruan Metode Backpropagation Menggunakan VB 6 Penerapan Jaringan Saraf Tiruan Metode Backpropagation Menggunakan VB 6 Sari Indah Anatta Setiawan SofTech, Tangerang, Indonesia cu.softech@gmail.com Diterima 30 November 2011 Disetujui 14 Desember 2011

Lebih terperinci

MENGENALI FUNGSI LOGIKA AND MELALUI PEMROGRAMAN PERCEPTRON DENGAN MATLAB

MENGENALI FUNGSI LOGIKA AND MELALUI PEMROGRAMAN PERCEPTRON DENGAN MATLAB POLITEKNOSAINS VOL. X NO. 2 Juni 2011 MENGENALI FUNGSI LOGIKA AND MELALUI PEMROGRAMAN PERCEPTRON DENGAN MATLAB Yaya Finayani Teknik Elektro, Politeknik Pratama Mulia, Surakarta 57149, Indonesia ABSTRACT

Lebih terperinci

Farah Zakiyah Rahmanti

Farah Zakiyah Rahmanti Farah Zakiyah Rahmanti Latar Belakang Struktur Dasar Jaringan Syaraf Manusia Konsep Dasar Permodelan JST Fungsi Aktivasi JST Contoh dan Program Jaringan Sederhana Metode Pelatihan Supervised Learning Unsupervised

Lebih terperinci

PENGENALAN HURUF DAN ANGKA PADA CITRA BITMAP DENGAN JARINGAN SARAF TIRUAN METODE PROPAGASI BALIK

PENGENALAN HURUF DAN ANGKA PADA CITRA BITMAP DENGAN JARINGAN SARAF TIRUAN METODE PROPAGASI BALIK PENGENALAN HURUF DAN ANGKA PADA CITRA BITMAP DENGAN JARINGAN SARAF TIRUAN METODE PROPAGASI BALIK Naskah Publikasi disusun oleh Zul Chaedir 05.11.0999 Kepada SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI 5 BAB II LANDASAN TEORI 2.1. Citra Digital Citra digital dapat didefenisikan sebagai fungsi f(x,y) yaitu dua dimensi, dimana x dan y merupakan koordinat spasial dan f(x,y) disebut dengan intensitas atau

Lebih terperinci

IMPLEMENTASI ALGORITMA PERCEPTRON UNTUK PENGENALAN POLA MASUKAN BINER MAUPUN BIPOLAR MENGGUNAKAN BORLAND DELPHI

IMPLEMENTASI ALGORITMA PERCEPTRON UNTUK PENGENALAN POLA MASUKAN BINER MAUPUN BIPOLAR MENGGUNAKAN BORLAND DELPHI IMPLEMENTASI ALGORITMA PERCEPTRON UNTUK PENGENALAN POLA MASUKAN BINER MAUPUN BIPOLAR MENGGUNAKAN BORLAND DELPHI Andi Harmin Program Studi : Teknik Komputer STMIK Profesional Makassar andiharmin1976@gmail.com

Lebih terperinci

BAB III METODOLOGI PENELITIAN

BAB III METODOLOGI PENELITIAN 19 BAB III METODOLOGI PENELITIAN 3.1. Kerangka Pemikiran Kerangka pemikiran untuk penelitian ini seperti pada Gambar 9. Penelitian dibagi dalam empat tahapan yaitu persiapan penelitian, proses pengolahan

Lebih terperinci

TINJAUAN PUSTAKA. Pengenalan Suara

TINJAUAN PUSTAKA. Pengenalan Suara Pengenalan Suara TINJAUAN PUSTAKA Menurut Peacock (1990), pengenalan suara merupakan kemampuan untuk mengidentifikasi kata-kata yang diucapkan. Terdapat 5 faktor yang dapat mengontrol dan menyederhanakan

Lebih terperinci

PENGGUNAAN JARINGAN SYARAF TIRUAN BACKPROPAGATION UNTUK SELEKSI PENERIMAAN MAHASISWA BARU PADA JURUSAN TEKNIK KOMPUTER DI POLITEKNIK NEGERI SRIWIJAYA

PENGGUNAAN JARINGAN SYARAF TIRUAN BACKPROPAGATION UNTUK SELEKSI PENERIMAAN MAHASISWA BARU PADA JURUSAN TEKNIK KOMPUTER DI POLITEKNIK NEGERI SRIWIJAYA PENGGUNAAN JARINGAN SYARAF TIRUAN BACKPROPAGATION UNTUK SELEKSI PENERIMAAN MAHASISWA BARU PADA JURUSAN TEKNIK KOMPUTER DI POLITEKNIK NEGERI SRIWIJAYA Tesis untuk memenuhi sebagian persyaratan mencapai

Lebih terperinci

MODEL PEMBELAJARAN JARINGAN SYARAF TIRUAN UNTUK OTOMATISASI PENGEMUDIAN KENDARAAN BERODA TIGA

MODEL PEMBELAJARAN JARINGAN SYARAF TIRUAN UNTUK OTOMATISASI PENGEMUDIAN KENDARAAN BERODA TIGA MODEL PEMBELAJARAN JARINGAN SYARAF TIRUAN UNTUK OTOMATISASI PENGEMUDIAN KENDARAAN BERODA TIGA Ramli e-mail:ramli.brt@gmail.com Dosen Tetap Amik Harapan Medan ABSTRAK Jaringan Syaraf Tiruan adalah pemrosesan

Lebih terperinci

PERBANDINGAN ALGORITMA PARTICLE SWARM OPTIMIZATION DAN REGRESI PADA PERAMALAN WAKTU BEBAN PUNCAK

PERBANDINGAN ALGORITMA PARTICLE SWARM OPTIMIZATION DAN REGRESI PADA PERAMALAN WAKTU BEBAN PUNCAK Jurnal POROS TEKNIK, Volume 6, No. 2, Desember 2014 : 55-10 PERBANDINGAN ALGORITMA PARTICLE SWARM OPTIMIZATION DAN REGRESI PADA PERAMALAN WAKTU BEBAN PUNCAK Nurmahaludin (1) (1) Staff Pengajar Jurusan

Lebih terperinci

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI BAB 2 LANDASAN TEORI 2.1. Jaringan Syaraf Tiruan Artificial Neural Network atau Jaringan Syaraf Tiruan (JST) adalah salah satu cabang dari Artificial Intelligence. JST merupakan suatu sistem pemrosesan

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1 Jaringan saraf tiruan Jaringan Syaraf Tiruan (JST) atau neural network adalah suatu metode komputasi yang meniru sistem jaringan Syaraf biologis pada manusia. Metode ini menggunakan

Lebih terperinci

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI BAB 2 LANDASAN TEORI Pada bab ini, peneliti akan memberikan penjelasan tentang teori metode backpropagation jaringan syaraf tiruan dan metode deret berkala ARIMA(Boxjenkins) sehingga dapat mempermudah

Lebih terperinci

Research of Science and Informatic BROILER CHICKENS WEIGHT PREDICTION BASE ON FEED OUT USING BACKPROPAGATION

Research of Science and Informatic   BROILER CHICKENS WEIGHT PREDICTION BASE ON FEED OUT USING BACKPROPAGATION Sains dan Informatika Vol.2 (N0.2) (2016): 1-9 1 Andre Mariza Putra, Chickens Weight Prediction Using Backpropagation JURNAL SAINS DAN INFORMATIKA Research of Science and Informatic e-mail: jit.kopertis10@gmail.com

Lebih terperinci

PENGGUNAAN METODE JARINGAN NEURAL PERCEPTRON UNTUK MENGENAL POLA KARAKTER KAPITAL

PENGGUNAAN METODE JARINGAN NEURAL PERCEPTRON UNTUK MENGENAL POLA KARAKTER KAPITAL J. Pilar Sains 6 (2) Juli 2007 Jurusan Pendidikan MIPA FKIP Universitas Riau ISSN 1412-5595 PENGGUNAAN METODE JARINGAN NEURAL PERCEPTRON UNTUK MENGENAL POLA KARAKTER KAPITAL Zaiful Bahri 1 Dosen Program

Lebih terperinci

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI BAB 2 LANDASAN TEORI 2.1. Forecasting Forecasting (peramalan) adalah seni dan ilmu untuk memperkirakan kejadian di masa yang akan datang. Hal ini dapat dilakukan dengan melibatkan data historis dan memproyeksikannya

Lebih terperinci

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI BAB 2 LANDASAN TEORI 2.1 Kecerdasan Buatan (Artificial Intelligence) Kecerdasan buatan (Artificial Intelligence) adalah bagian dari ilmu komputer yang mempelaari bagaimana membuat mesin (komputer) dapat

Lebih terperinci

Latar Belakang. Pendahuluan(2) Struktur Jaringan pada Otak. Learning (Neural Network) 5/9/2012 IF-UTAMA 1

Latar Belakang. Pendahuluan(2) Struktur Jaringan pada Otak. Learning (Neural Network) 5/9/2012 IF-UTAMA 1 5/9/ Jurusan Teknik Informatika Universitas Widyatama Latar Belakang Learning (Neural Network) Pertemuan : 3 Dosen Pembina : Sriyani Violina Danang Junaedi Neural Network (Jaringan syaraf tiruan) diilhami

Lebih terperinci

OPTICAL CHARACTER RECOGNIZATION (OCR)

OPTICAL CHARACTER RECOGNIZATION (OCR) LAPORAN JARINGAN SYARAF TIRUAN OPTICAL CHARACTER RECOGNIZATION (OCR) DISUSUN OLEH: DIJAS SCHWARTZ. S (524) FIRNAS NADIRMAN (481) INDAH HERAWATI (520) NORA SISKA PUTRI (511) OKTI RAHMAWATI (522) EKSTENSI

Lebih terperinci

APLIKASI JARINGAN SYARAF TIRUAN MULTI LAYER PERCEPTRON PADA APLIKASI PRAKIRAAN CUACA

APLIKASI JARINGAN SYARAF TIRUAN MULTI LAYER PERCEPTRON PADA APLIKASI PRAKIRAAN CUACA Aplikasi Jaringan Syaraf Tiruan Multilayer Perceptron (Joni Riadi dan Nurmahaludin) APLIKASI JARINGAN SYARAF TIRUAN MULTI LAYER PERCEPTRON PADA APLIKASI PRAKIRAAN CUACA Joni Riadi (1) dan Nurmahaludin

Lebih terperinci

APLIKASI JARINGAN SYARAF TIRUAN DALAM PENGHITUNGAN PERSENTASE KEBENARAN KLASIFIKASI PADA KLASIFIKASI JURUSAN SISWA DI SMA N 8 SURAKARTA

APLIKASI JARINGAN SYARAF TIRUAN DALAM PENGHITUNGAN PERSENTASE KEBENARAN KLASIFIKASI PADA KLASIFIKASI JURUSAN SISWA DI SMA N 8 SURAKARTA APLIKASI JARINGAN SYARAF TIRUAN DALAM PENGHITUNGAN PERSENTASE KEBENARAN KLASIFIKASI PADA KLASIFIKASI JURUSAN SISWA DI SMA N 8 SURAKARTA Pembimbing: Desi Fitria Utami M0103025 Drs. Y. S. Palgunadi, M. Sc

Lebih terperinci

ANALISIS JARINGAN SYARAF TIRUAN UNTUK MEMPREDIKSI JUMLAH RESERVASI KAMAR HOTEL DENGAN METODE BACKPROPAGATION (Studi Kasus Hotel Grand Zuri Padang)

ANALISIS JARINGAN SYARAF TIRUAN UNTUK MEMPREDIKSI JUMLAH RESERVASI KAMAR HOTEL DENGAN METODE BACKPROPAGATION (Studi Kasus Hotel Grand Zuri Padang) ANALISIS JARINGAN SYARAF TIRUAN UNTUK MEMPREDIKSI JUMLAH RESERVASI KAMAR HOTEL DENGAN METODE BACKPROPAGATION (Studi Kasus Hotel Grand Zuri Padang) 1 Musli Yanto, 2 Sarjon Defit, 3 Gunadi Widi Nurcahyo

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1 Jaringan Syaraf Biologi Jaringan Syaraf Tiruan merupakan suatu representasi buatan dari otak manusia yang dibuat agar dapat mensimulasikan apa yang dipejalari melalui proses pembelajaran

Lebih terperinci

BAB II NEURAL NETWORK (NN)

BAB II NEURAL NETWORK (NN) BAB II NEURAL NETWORK (NN) 2.1 Neural Network (NN) Secara umum Neural Network (NN) adalah jaringan dari sekelompok unit pemroses kecil yang dimodelkan berdasarkan jaringan syaraf manusia. NN ini merupakan

Lebih terperinci

BAB 2 TINJAUAN PUSTAKA

BAB 2 TINJAUAN PUSTAKA BAB 2 TINJAUAN PUSTAKA 2. Jaringan Saraf Tiruan Jaringan saraf tiruan (JST) pertama kali diperkenankan oleh McCulloch dan Walter Pitts pada tahun 943. Jaringan saraf tiruan merupakan suatu sistem pemrosesan

Lebih terperinci

ANALISIS PENAMBAHAN NILAI MOMENTUM PADA PREDIKSI PRODUKTIVITAS KELAPA SAWIT MENGGUNAKAN BACKPROPAGATION

ANALISIS PENAMBAHAN NILAI MOMENTUM PADA PREDIKSI PRODUKTIVITAS KELAPA SAWIT MENGGUNAKAN BACKPROPAGATION ANALISIS PENAMBAHAN NILAI MOMENTUM PADA PREDIKSI PRODUKTIVITAS KELAPA SAWIT MENGGUNAKAN BACKPROPAGATION Eka Irawan1, M. Zarlis2, Erna Budhiarti Nababan3 Magister Teknik Informatika, Universitas Sumatera

Lebih terperinci

BAB VIII PENGANTAR JARINGAN SYARAF TIRUAN (JST)

BAB VIII PENGANTAR JARINGAN SYARAF TIRUAN (JST) BAB VIII PENGANTAR JARINGAN SYARAF TIRUAN (JST) 8.1 Komponen Jaringan Syaraf JARINGAN SYARAF BIOLOGIS (JSB) Otak manusia berisi sekitar 10 11 sel syaraf (neuron) yang bertugas untuk memproses informasi

Lebih terperinci

PENGENALAN POLA HURUF ROMAWI DENGAN JARINGAN SARAF TIRUAN PERSEPTRON LAPIS JAMAK

PENGENALAN POLA HURUF ROMAWI DENGAN JARINGAN SARAF TIRUAN PERSEPTRON LAPIS JAMAK PENGENALAN POLA HURUF ROMAWI DENGAN JARINGAN SARAF TIRUAN PERSEPTRON LAPIS JAMAK Eko Budi Wahyono*), Suzuki Syofian**) *) Teknik Elektro, **) Teknik Informatika - Fakultas Teknik Abstrak Pada era modern

Lebih terperinci

IMPLEMENTASI JARINGAN SYARAF TIRUAN DENGAN ALGORITMA PROPAGASI BALIK UNTUK MEMPREDIKSI KETINGGIAN AIR DI SUATU DAERAH ALIRAN SUNGAI RENDI PRASETYA

IMPLEMENTASI JARINGAN SYARAF TIRUAN DENGAN ALGORITMA PROPAGASI BALIK UNTUK MEMPREDIKSI KETINGGIAN AIR DI SUATU DAERAH ALIRAN SUNGAI RENDI PRASETYA IMPLEMENTASI JARINGAN SYARAF TIRUAN DENGAN ALGORITMA PROPAGASI BALIK UNTUK MEMPREDIKSI KETINGGIAN AIR DI SUATU DAERAH ALIRAN SUNGAI RENDI PRASETYA DEPARTEMEN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN

Lebih terperinci

ANALISA JARINGAN SARAF TIRUAN DENGAN METODE BACKPROPAGATION UNTUK MENGETAHUI LOYALITAS KARYAWAN

ANALISA JARINGAN SARAF TIRUAN DENGAN METODE BACKPROPAGATION UNTUK MENGETAHUI LOYALITAS KARYAWAN ANALISA JARINGAN SARAF TIRUAN DENGAN METODE BACKPROPAGATION UNTUK MENGETAHUI LOYALITAS KARYAWAN Jasmir, S.Kom, M.Kom Dosen tetap STIKOM Dinamika Bangsa Jambi Abstrak Karyawan atau tenaga kerja adalah bagian

Lebih terperinci

PERAMALAN PRODUKSI CABAI RAWIT DENGAN NEURAL NETWORK Muhammad Fajar

PERAMALAN PRODUKSI CABAI RAWIT DENGAN NEURAL NETWORK Muhammad Fajar PERAMALAN PRODUKSI CABAI RAWIT DENGAN NEURAL NETWORK Muhammad Fajar Abstrak Tujuan penelitian ini untuk melakukan peramalan produksi cabai rawit dengan menggunakan neural network. Data yang digunakan dalam

Lebih terperinci

Estimasi Suhu Udara Bulanan Kota Pontianak Berdasarkan Metode Jaringan Syaraf Tiruan

Estimasi Suhu Udara Bulanan Kota Pontianak Berdasarkan Metode Jaringan Syaraf Tiruan Estimasi Suhu Udara Bulanan Kota Pontianak Berdasarkan Metode Jaringan Syaraf Tiruan Andi Ihwan 1), Yudha Arman 1) dan Iis Solehati 1) 1) Prodi Fisika FMIPA UNTAN Abstrak Fluktuasi suhu udara berdasarkan

Lebih terperinci

VOL. 01 NO. 02 [JURNAL ILMIAH BINARY] ISSN :

VOL. 01 NO. 02 [JURNAL ILMIAH BINARY] ISSN : PENERAPAN JARINGAN SYARAF TIRUAN UNTUK MEMPREDIKSI JUMLAH PRODUKSI AIR MINUM MENGGUNAKAN ALGORITMA BACKPROPAGATION (STUDI KASUS : PDAM TIRTA BUKIT SULAP KOTA LUBUKLINGGAU) Robi Yanto STMIK Bina Nusantara

Lebih terperinci

BAB I PENDAHULUAN 1.1 Latar Belakang

BAB I PENDAHULUAN 1.1 Latar Belakang BAB I PENDAHULUAN 1.1 Latar Belakang Kebutuhan akan piranti pengenal/pendeteksi yang handal sangat dibutuhkan. Pengembangan teknologi pengenalan yang berupa kecerdasan buatan (Artificial Intelligence)

Lebih terperinci

PENYELESAIAN MASALAH TRAVELING SALESMAN PROBLEM DENGAN JARINGAN SARAF SELF ORGANIZING

PENYELESAIAN MASALAH TRAVELING SALESMAN PROBLEM DENGAN JARINGAN SARAF SELF ORGANIZING Media Informatika, Vol. 6, No. 1, Juni 2008, 39-55 ISSN: 0854-4743 PENYELESAIAN MASALAH TRAVELING SALESMAN PROBLEM DENGAN JARINGAN SARAF SELF ORGANIZING Sukma Puspitorini Program Studi Teknik Informatika

Lebih terperinci

PERANCANGAN PROGRAM PENGENALAN BENTUK MOBIL DENGAN METODE BACKPROPAGATION DAN ARTIFICIAL NEURAL NETWORK SKRIPSI

PERANCANGAN PROGRAM PENGENALAN BENTUK MOBIL DENGAN METODE BACKPROPAGATION DAN ARTIFICIAL NEURAL NETWORK SKRIPSI PERANCANGAN PROGRAM PENGENALAN BENTUK MOBIL DENGAN METODE BACKPROPAGATION DAN ARTIFICIAL NEURAL NETWORK SKRIPSI Oleh Nama : Januar Wiguna Nim : 0700717655 PROGRAM GANDA TEKNIK INFORMATIKA DAN MATEMATIKA

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI Bab ini akan dibahas mengenai teori-teori pendukung pada penelitian ini. Adapun teori tersebut yaitu teori jaringan saraf tiruan dan algoritma backpropragation. 2.1. Jaringan Saraf

Lebih terperinci

Analisa Numerik. Matriks dan Komputasi

Analisa Numerik. Matriks dan Komputasi Analisa Numerik Matriks dan Komputasi M AT R I K S Matriks adalah suatu susunan angka atau bilangan, variabel, atau parameter yang berbentuk empat persegi dan biasanya ditutup dengan tanda kurung K O N

Lebih terperinci

PENGENALAN PLAT NOMOR KENDARAAN DALAM SEBUAH CITRA MENGUNAKAN JARINGAN SARAF TIRUAN ABSTRAK

PENGENALAN PLAT NOMOR KENDARAAN DALAM SEBUAH CITRA MENGUNAKAN JARINGAN SARAF TIRUAN ABSTRAK PENGENALAN PLAT NOMOR KENDARAAN DALAM SEBUAH CITRA MENGUNAKAN JARINGAN SARAF TIRUAN Decy Nataliana [1], Sabat Anwari [2], Arief Hermawan [3] Jurusan Teknik Elektro Fakultas Teknologi Industri Institut

Lebih terperinci