Algoritma JST (Jaringan Saraf Tiruan) dengan teknik SA (Simulated Annealing)


Algoritma JST (Jaringan Saraf Tiruan) dengan teknik SA (Simulated Annealing) adalah salah satu algoritma berbasis jaringan saraf yang dapat digunakan untuk pengambilan keputusan. Contoh yang dibahas kali ini adalah mengenai penentuan penerimaan pengajuan kredit sepeda motor baru berdasarkan kelompok data yang sudah ada.
Inti perhitungan pada algoritma berbasis jaringan adalah untuk mencari bobot terbaik dari contoh / sampel data yang sudah ada. Karena hasil pada contoh data sudah diketahui, maka nilai bobot akan dihitung berdasarkan nilai hasil yang sudah tersedia, sampai ditemukan nilai bobot terbaik yang paling banyak cocok apabila dihitungkan kembali pada data awal. Kemudian nilai bobot tersebut dapat digunakan untuk menghitung data lain yang tidak diketahui hasilnya. Pada kasus ini, metode yang digunakan untuk mencari bobot terbaik adalah menggunakan metode SA (Simulated Annealing)
Ada argumen yang menyatakan bahwa nama lain dari algoritma ini adalah Algoritma Boltzmann Machine. Saya sendiri tidak menyimpulkan hal tersebut karena keterbatasan referensi yang saya temukan di internet. Silahkan menggunakan algoritma ini sebagai dasar dalam pengembangan algoritma tersebut.



Diasumsikan ada 8 data pelanggan yang sudah diketahui datanya, yaitu Pelanggan A,B,C,D,E,F,G,H
Masing-masing pelanggan memiliki kriteria, yaitu umur, jenis kelamin, skor kepribadian, dan memiliki nilai hasil yaitu Diterima / Ditolak
Diasumsikan 8 data tersebut adalah sebagai berikut:

Pelanggan Umur Jenis Kelamin Skor Kepribadian Hasil
Pelanggan A 44 Laki-laki 3.55 Diterima
Pelanggan B 52 Perempuan 4.71 Diterima
Pelanggan C 60 Perempuan 6.56 Ditolak
Pelanggan D 56 Laki-laki 6.8 Ditolak
Pelanggan E 51 Laki-laki 6.94 Ditolak
Pelanggan F 46 Perempuan 6.52 Ditolak
Pelanggan G 48 Laki-laki 4.25 Diterima
Pelanggan H 58 Perempuan 5.71 Diterima

Contoh data pelanggan awal adalah sebagai berikut:
Untuk Kriteria Jenis Kelamin:
Laki-laki dilambangkan dengan angka -1
Perempuan dilambangkan dengan angka +1
Untuk kriteria Nilai Hasil:
Terdapat 2 kolom untuk merepresentasikan kondisi Diterima dan Ditolak
Jika kondisi Diterima, maka inputan data kolom adalah 1, 0
Jika kondisi Ditolak, maka inputan data kolom adalah 0, 1



Selanjutnya ada 2 orang pelanggan baru yang mengajukan kredit sepeda motor
Maka tentukan pelanggan ini nantinya akan termasuk dalam kelompok Diterima / Ditolak
Diasumsikan data awalnya adalah sebagai berikut:

Pelanggan Umur Jenis Kelamin Skor Kepribadian
Pelanggan I 47 Perempuan 6.05
Pelanggan J 52 Laki-Laki 5

Contoh data pelanggan baru adalah sebagai berikut:
Untuk kriteria Nilai Hasil:
Terdapat 2 kolom untuk merepresentasikan kondisi Diterima dan Ditolak
Karena belum diketahui nilai hasilnya, maka semua inputan data adalah -1, -1


Langkah-langkah penggunaan algoritma ini adalah

1. Lakukan normalisasi data untuk kriteria Umur dan Skor Kepribadian
Penjelasan lebih lanjut dapat dilihat pada penjelasan skrip dibawah ini (poin 1a – 1c)

1a. Hitung nilai rata-rata tiap-tiap kolom
yaitu dengan rumus: jumlah semua data dibagi dengan jumlah datanya

1b. Hitung nilai standar deviasi tiap-tiap kolom
yaitu dengan rumus: akar dari ((kuadrat dari (jumlah dari (data – rata-rata))) / jumlah data)

1c. Normalisasi data dihitung dengan rumus (data – (rata-rata kriteria tersebut)) / standar deviasi kriteria tersebut

2. Tentukan skema awal untuk algoritma ini.
Algoritma ini dapat digunakan untuk melakukan perhitungan yang memiliki banyak input dan menghasilkan banyak output
Diasumsikan dalam kasus ini, skema yang digunakan adalah 3 – 4 – 2, dimana:

  • 3 adalah jumlah saraf input, karena ada 3 kriteria awal, yaitu Umur, Jenis Kelamin, dan Skor Kepribadian
  • 4 adalah jumlah saraf tersembunyi yang digunakan. Jumlah saraf tersembunyi harus lebih dari jumlah saraf input
  • dalam kasus ini bisa lebih dari 4, tetapi hanya digunakan 4 saja untuk mempercepat perhitungan

  • 2 adalah jumlah saraf output, Karena kriteria nilai hasil bergantung pada nilai 2 kolom, yaitu 1,0 jika diterima dan 0,1 jika ditolak

* Diperlukan sebuah class untuk menyimpan semua matriks data untuk digunakan dalam perhitungan algoritma ini. Class ini dinamakan class JaringanSaraf. Deklarasi awal untuk setiap pengisian data adalah sebagai berikut

3. Sebelum masuk ke dalam fungsi utama perhitungan, ada beberapa parameter yang perlu diperhatikan, yaitu:

3a. Tentukan jumlah solusi yang ingin dicari sekaligus dalam sekali perhitungan
Diasumsikan dalam kasus ini, jumlah solusi ada 5 buah

3b. Tentukan banyak perulangan yang dilakukan oleh proses algoritma ini.
DIasumsikan dalam kasus ini, jumlah iterasi yang digunakan adalah 10.000

3c. Tentukan nilai suhu awal yang digunakan dalam proses.
DIasumsikan dalam kasus ini, nilai suhu awal adalah 1.000

3d. Tentukan faktor penurun suhu pada saat digunakan untuk proses berikutnya
Faktor penurun suhu berguna dalam proses perhitungan kemungkinan solusi berikutnya
Pada saat suhu tinggi (perhitungan awal), variabel solusi akan lebih mudah menerima solusi-solusi baru, agar tidak terjebak pada solusi awal yang mungkin tidak optimal
Pada saat suhu rendah (perhitungan akhir), variabel solusi tidak lagi menerima solusi baru, agar jawaban solusi tidak berubah-ubah
Diasumsikan dalam kasus ini, nilai faktor penurun suhu adalah 0.995,
artinya: untuk setiap perulangan berikutnya suhu akan berkurang sebanyak 0.005 * 10.000 = 50 derajat

4. Lakukan proses pencarian nilai bobot dan bias terbaik
Metode yang digunakan adalah SA (Simulated Annealing)
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini (poin 4a – 4b)

Memasuki perhitungan utama pada fungsi SA

* Inisialisasi jumlah bobot yang digunakan dalam perhitungan

  • jumlah nilai bobot pada jaringan saraf input-tersembunyi adalah jumlah saraf input * jumlah saraf tersembunyi (3 * 4 = 12 buah)
  • jumlah nilai bias pada jaringan saraf input-tersembunyi adalah jumlah saraf tersembunyi (4 buah)
  • jumlah nilai bobot pada jaringan saraf tersembunyi-output adalah jumlah saraf tersembunyi * jumlah saraf output (4 * 2 = 8 buah)
  • jumlah nilai bias pada jaringan saraf tersembunyi-output adalah jumlah saraf output (2 buah)

Sehingga, banyak data yang diperlukan adalah 12 + 4 + 8 + 2 = 26 buah data
Fungsi ini akan mencari data yang memiliki bobot terendah diantara semua data input, dan akan mengembalikan 26 buah data dengan susunan seperti diatas

4a. Tentukan solusi acak untuk digunakan sebagai solusi awal sebanyak jumlah solusi yang sudah pernah ditentukan sebelumnya

4a1. Inisialisasi masing-masing solusi sebanyak jumlah bobot
Untuk setiap solusi, Beri nilai acak pada setiap dimensi / bobot

4a2. Hitung nilai kesalahan untuk individu pada posisi tersebut
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

* Gunakan fungsi ini untuk menghitung tingkat kesalahan dari masing-masing data input
Hitung tingkat kesalahan nilai jawaban menggunakan teknik Mean Squared Error
dihitung dengan rumus jumlah dari (kuadrat dari (nilai jawaban – nilai hasil pada matriks data)) / jumlah data
Nilai jawaban yang baru bisa jadi mengembalikan nilai MSE yang lebih tinggi, sehingga nilai jawaban ini tidak bisa dipakai

4a3. Untuk masing-masing solusi awal, lakukan pengecekan apakah solusi ini berada pada posisi terbaik

4b. Lakukan proses perhitungan sebanyak jumlah perulangan dan selama suhu belum mendekati 0 derajat (poin 4b1 – 4b2)

4b1. Lakukan perulangan pada semua solusi yang ada (poin 4b1a – 4b1f)

4b1a. Tentukan kemungkinan solusi berikutnya
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini (poin 4b1a1 – 4b1a2)

Memasuki perhitungan pada fungsi KemungkinanSolusiBerikutnya

4b1a1. Tentukan jumlah bobot yang akan diganti
Semakin tinggi suhu (pada awal perhitungan), maka semakin banyak jumlah bobot yang akan diganti, dan sebaliknya

4b1a2. Lakukan perulangan sebanyak jumlah bobot yang akan diganti,
Tentukan indeks acak bobot yang akan diganti nilainya
Kemudian tentukan nilai bobot yang baru pada posisi tersebut

4b1b. hitung nilai kesalahan untuk solusi yang baru
Penjelasan tentang fungsi ini sudah dibahas pada poin sebelumnya

4b1c. Jika solusi yang ditemukan ternyata lebih baik dari solusi umum, maka ambil solusi ini sebagai solusi terbaik

4b1d. Tentukan nilai acak sebagai nilai pembanding penerimaan solusi baru

4b1e. Hitung probabilitas penerimaan solusi baru
Jika nilai kesalahan solusi baru lebih dari nilai kesalahan sekarang, maka nilai kemungkinan penerimaan solusi baru adalah 1 (pasti diterima)
Jika nilai kesalahan solusi baru tidak lebih dari nilai kesalahan sekarang, maka nilai kemungkinan penerimaan solusi baru akan dihitung dengan rumus exp((e − e’) / T)
Jika nilai suhu tinggi, maka rumus tersebut akan mengembalikan nilai mendekati angka 1, dan sebaliknya pada suhu rendah, maka rumus tersebut akan mengembalikan nilai mendekati angka 0

4b1f. Jika nilai kemungkinan penerimaan solusi baru lebih dari nilai acak p, maka ambil solusi ini sebagai solusi umum terbaik

4b2. Turunkan suhu pada saat memasuki perulangan barikutnya, yaitu dengan rumus: suhu sekarang = suhu * alpha

* Gunakan fungsi ini untuk memasukkan matriks bobot awal kedalam 4 matriks data yaitu matriks ihBobot, hBias, hoBobot, oBias
ihBobot adalah matriks bobot pada jaringan saraf input-tersembunyi, dengan jumlah data = jumlah saraf input * jumlah saraf tersembunyi (3 * 4 = 12 buah)
hBias adalah matriks nilai bias pada jaringan saraf input-tersembunyi, dengan jumlah data = jumlah saraf tersembunyi (4 buah)
hoBobot adalah matriks bobot pada jaringan saraf tersembunyi-output, dengan jumlah data = jumlah saraf tersembunyi * jumlah saraf output (4 * 2 = 8 buah)
oBias adalah matriks nilai bias pada jaringan saraf tersembunyi-output, dengan jumlah data = jumlah saraf output (2 buah)

5. Lakukan perhitungan dari masing-masing contoh data menggunakan nilai bobot dan nilai bias yang sudah ditemukan
Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini (poin 5a – 5g)

Memasuki perhitungan utama pada fungsi hitungNilaiOutput

5a. Beri nilai matriks input sesuai array input

5b. Hitung matriks ihJumlahBobotDanBias dengan cara perkalian matriks antara matriks input dan matriks ihBobot

5c. Kemudian masukkan nilai bias pada matriks ihJumlahBobotDanBias

5d. Hitung nilai output sementara dengan menggunakan fungsi HyperTan untuk masing-masing data pada matriks hJumlahBobotDanBias
Penjelasan tentang fungsi HyperTan akan dijelaskan pada perhitungan dibawah ini

* Gunakan fungsi ini untuk menghitung nilai fungsi HyperTan (tanh)

5e. Hitung matriks hoJumlahBobotDanBias dengan cara perkalian matriks antara matriks output sementara dan matriks hoBobot

5f. Kemudian masukkan nilai bias pada matriks hoJumlahBobotDanBias

5g. Hitung nilai output akhir dengan menggunakan fungsi Softmax untuk masing-masing data pada matriks hoJumlahBobotDanBias
Penjelasan tentang fungsi Softmax akan dijelaskan pada perhitungan dibawah ini (poin 5g1 – 5g3)

Memasuki perhitungan utama pada fungsi Softmax

5g1. Cari nilai maksimal data

5g2. Cari nilai skala

5g3. Hitung hasil akhir
Sehingga semua jumlah bobot pada parameter matriks hoJumlahBobotDanBias akan bernilai 1

6. Jika nilai output bernilai kurang dari 0.5 maka pelanggan tersebut memiliki nilai hasil Ditolak
Jika nilai output bernilai lebih dari 0.5 maka pelanggan tersebut memiliki nilai hasil Diterima
Kemudian bandingkan nilai output dengan nilai hasil pada contoh data
Jika hasilnya sudah sama, maka catat data ini kedalam jumlah data benar
Jika hasilnya tidak sama, maka catat data ini kedalam jumlah data salah

7. Catat tingkat kecocokan perhitungan data dengan hasil awal pada data
Langkah ini tidak wajib, hanya untuk mengetahui seberapa besar tingkat kecocokan perhitungan untuk data baru yang akan dihitung selanjutnya

8. Lakukan perhitungan yang sama (poin 5 dan 6) untuk masing-masing data baru


Hasil akhir adalah: (klik untuk perbesar gambar)

cmd70a


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 *