Pengenalan Pola (Pattern Recognition) dengan teknik Hopfield Network


Pengenalan Pola adalah cabang kecerdasan yang menitik-beratkan pada metode pengklasifikasian objek ke dalam kelas – kelas tertentu untuk menyelesaikan masalah tertentu. Contoh yang dibahas kali ini adalah mengenai penentuan pola angka baru berdasarkan pola angka sebelumnya.
Pengenalan Pola sebelumnya sudah pernah dibahas dengan menggunakan Algoritma Perceptron. Pada kali ini akan digunakan algoritma lain yang dinamakan algoritma HN (Hopfield Network) untuk memecahkan masalah yang sama. Algoritma ini sangat bergantung dari korelasi dari contoh data yang digunakan, sehingga hasil akhir akan ditentukan dari perpaduan contoh data yang digunakan. Algoritma ini cukup populer dan sangat mudah untuk diterapkan, tetapi memiliki sisi buruk dimana penghitungan nilai jawaban berujung pada jawaban yang kurang tepat.



Diasumsikan ada 5 pola angka yang diketahui, yaitu pola angka 1 sampai dengan 5
Diasumsikan 5 pola angka tersebut adalah sebagai berikut:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Contoh data awal adalah sebagai berikut:



Selanjutnya ada pola baru yang ingin diketahui hasilnya
Maka tentukan pola baru ini cocok dengan pola yang mana
Diasumsikan pola baru adalah sebagai berikut:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Contoh data baru yang akan dihitung adalah sebagai berikut:



Sebelum masuk kedalam langkah-langkah pembahasan algoritma, ada beberapa konstanta atau parameter yang harus diketahui, yaitu:
* Tentukan jumlah dimensi pola contoh angka yang digunakan
Diasumsikan dalam kasus ini, jumlah dimensi pola adalah 5, karena setiap pola angka berdimensi 5 x 5


Langkah-langkah penggunaan algoritma ini adalah

1. Masukkan contoh pola angka kedalam variabel yang dibutuhkan
Tidak semua contoh pola digunakan sebagai data pembelajaran pada masing-masing pola baru,
melainkan hanya 3 data yang paling memiliki kemiripan dengan masing-masing pola baru

1a. Lakukan perhitungan pada masing-masing contoh data (poin 1a1 – 1a2)

1a1. Hitung jumlah data yang sama antara data baru dengan masing-masing contoh data

1a2. Tentukan 3 contoh pola angka yang memiliki kemiripan dengan pola baru yang sedang dihitung
bobot = alpha * delta * nilai contoh data (0 atau 1)

1b. Lakukan perhitungan pada 3 contoh data yang telah terpilih (poin 1b1 – 1b4)

1b1. Buat neuron baru

1b2. Tentukan state / keadaan dari masing-masing neuron apakah bernilai -1 atau +1

1b3. Rangkai neuron-neuron yang sudah dihitung ke dalam sebuah pola

1b4. Tambahkan pola yang didapatkan ke dalam matriks T
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

* Gunakan fungsi ini untuk memasukkan pola yang digunakan ke dalam matriks T
Nilai pada posisi diagonal matriks tersebut akan selalu bernilai 0
Sisanya dihitung dengan perkalian antara s(i) * s(j)
dimana s(i) = state pola neuron pada indeks ke i
dan s(j) = state pola neuron pada indeks ke j

2. Lakukan perhitungan pada masing-masing data baru (poin 2a – 2d)

2a. Buat neuron baru

2b. Tentukan state / keadaan dari masing-masing neuron apakah bernilai -1 atau +1

2c. Rangkai neuron-neuron yang sudah dihitung menjadi sebuah state / keadaan awal

2d. Lakukan perhitungan data baru menggunakan state awal neuron yang sudah ditemukan sebelumnya
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

Memasuki perhitungan pada fungsi Hitung

2d1. Lakukan perhitungan selama masih ada neuron yang berubah state / keadaan

2d1a. Lakukan perhitungan pada semua neuron (poin 2d1a1 – 2d1a3)

2d1a1. Hitung total jumlah dari W(i,j) * s(i)

2d1a2. Cek neuron tersebut apakah berubah state / keadaan
Perubahan state adalah keadaan dimana nilai neuron tersebut berubah tanda (dari positif ke negatif atau dari negatif ke positif)

* Gunakan fungsi ini untuk menentukan apakah neuron ini berubah state / keadaaan nya
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

2d1a3. Apabila neuron tersebut berubah state / keadaan,
Maka hitung energi yang baru,
Kemudian lakukan perubahan data baru untuk dataBaru

* Gunakan fungsi ini untuk menghitung nilai energi pada jaringan Hopfield
Nilai Energi dihitung dengan rumus:
Energi = -(1/2) * E(W(i,j) * s(i) * s(j))
dimana s(i) = state neuron pada indeks ke i
dan s(j) = state neuron pada indeks ke j
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

* Gunakan fungsi ini untuk mengupdate data baru
Data pada posisi tertentu, apabila bernilai 1 akan diubah menjadi 0, dan sebaliknya data yang bernilai 0 akan diubah menjadi 1

2d2. Lakukan proses perhitungan energi sekali lagi sebagai nilai energi dari neuron akhir
Penjelasan fungsi Hitung Energi sudah dijelaskan pada perhitungan sebelumnya

* Agar dapat menjalankan skrip diatas, maka diperlukan sebuah 4 buah class
Class Neuron digunakan untuk menampung data state / keadaan neuron tersebut
Class StateNeuron digunakan untuk membatasi nilai state / keadaan dari sebuah neuron, apakah bernilai -1 atau +1
Class EnergiNeuron digunakan untuk menampung nilai energi dan menyimpan indeks neuron yang mengalami perubahan state / keadaan
Class HopfieldNetwork sebagai class utama untuk melakukan perhitungan data
Deklarasi masing-masing class adalah sebagai berikut:


Hasil akhir adalah: (klik untuk perbesar gambar)

cmd73


Contoh modul / source code dalam bahasa VB (Visual Basic) dapat didownload disini:



Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.

Tinggalkan sebuah komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *