Neural Network adalah replika dari cara kerja neuron-neuron yang terdapat dalam manusia. Dimana tiap neuron yang kita miliki saling terhubung dan ada informasi yang mengalir pada neuron-neuron yang kita miliki. Neuron tersebut berfungsi untuk memproses setiap informasi yang masuk.
credits: Wikipedia |
Perceptron adalah salah satu metode yang sangat sederhana dalam cabang ilmu kecerdasan buatan dimana di dalamnya terdapat pemrosesan data secara linier untuk mengklasifikasikan data.
Perceptron ini hanya dapat digunakan untuk mengklasifikasikan data menjadi 2 kelas yang berbeda.
Perceptron menggunakan hardlimit step function untuk memproses datanya.
credits: mathworks.com |
credits: mathworks.com |
Gambar diatas merupakan single-neuron perceptron dimana didalamnya menggunakan hardlimit step function seperti gambar sebelumnya.
Pn merupakan input data dan Wmn merupakan bobot yang dimiliki oleh setiap input.
Ada juga additional weight bias(b) yang diasosiasikan bersama neuron tersebut. dimana bias tersebut bisa kita katakan untuk menggeser letak garis.
Jumlah(sum) dari setiap input yang ditransmisikan dengan bias kemudian dimasukkan ke step function. Jadi hasilnya kita akan memiliki angka antara 1 dan 0 (atau 1 dan -1).
Jadi kita memiliki rumus sebagai berikut:
a = hardlim(Wp + b)
a = hardlim(W1,1P1 + W1,2P2 + .. + W1,3P3 + b)
Algoritma perhitungan:
catatan: bias boleh digunakan boleh tidak (additional)
Contoh:
Saya memiliki training data sebagai berikut:
Saya mendefinisikan initial weight vector dan bias secara random:
Selanjutnya kita akan melakukan iterasi pada setiap input data.
Epoch 1:
Data 1:
Pada data pertama ini kita mendapat hasil 0, padahal kita ketahui target seharusnya bernilai 1. Oleh sebab itu, kita memerlukan update weight dan bias.
Data 2:
update weight dan bias:
Data 3:
update weight dan bias:
Epoch 2:
Data 1:
Data 2:
Data 3:
Pada epoch 2 semua training data dapat terklasifikasi dengan baik. Jadi, pada epoch ini kita mendapat
Contoh diatas kita kerjakan hingga semua training data dapat terklasifikasi dengan benar, tapi ada kalanya kita melakukan training data dengan batasan epochs tertentu.
Berikut saya sertakan kode python berdasarkan algoritma diatas :
Pn merupakan input data dan Wmn merupakan bobot yang dimiliki oleh setiap input.
Ada juga additional weight bias(b) yang diasosiasikan bersama neuron tersebut. dimana bias tersebut bisa kita katakan untuk menggeser letak garis.
Jumlah(sum) dari setiap input yang ditransmisikan dengan bias kemudian dimasukkan ke step function. Jadi hasilnya kita akan memiliki angka antara 1 dan 0 (atau 1 dan -1).
Jadi kita memiliki rumus sebagai berikut:
a = hardlim(Wp + b)
a = hardlim(W1,1P1 + W1,2P2 + .. + W1,3P3 + b)
Algoritma perhitungan:
- Set yang terdiri atas data training ({p1, t1}, {p2, t2}, .. ,{pn, tn})
dimana p adalah input, dan t adalah kelas target(label) - Inisiasi bobot w dan b secara acak (random)
- Masukkan setiap input (p) ke dalam fungsi yang kita miliki ( a = hardlim(Wp + b) ) dan update weight(w) serta bias(b) apabila fungsi yang kita miliki menghasilkan hasil yang tidak cocok dengan kelas target(label).
- Ulangi langkah ke-3 hingga semua training data dapat terklasifikasi dengan baik(tingkat error rendah) atau tentukan batas iterasi dalam training data (epochs)
catatan: bias boleh digunakan boleh tidak (additional)
Contoh:
Saya memiliki training data sebagai berikut:
Saya mendefinisikan initial weight vector dan bias secara random:
Selanjutnya kita akan melakukan iterasi pada setiap input data.
Epoch 1:
Data 1:
Pada data pertama ini kita mendapat hasil 0, padahal kita ketahui target seharusnya bernilai 1. Oleh sebab itu, kita memerlukan update weight dan bias.
Data 2:
update weight dan bias:
Data 3:
update weight dan bias:
Epoch 2:
Data 1:
Data 2:
Data 3:
Pada epoch 2 semua training data dapat terklasifikasi dengan baik. Jadi, pada epoch ini kita mendapat
Contoh diatas kita kerjakan hingga semua training data dapat terklasifikasi dengan benar, tapi ada kalanya kita melakukan training data dengan batasan epochs tertentu.
Berikut saya sertakan kode python berdasarkan algoritma diatas :
import numpy as np n_training_data = int(input("Input jumlah training data: ")) #n n_features = int(input("Input jumlah fitur: ")) #p training_data = list() w = list() for j in range(n_features): feature = float(input("Input initial weight(fitur-{}): ".format(j+1))) w = w + [feature, ] w = np.asarray(w) bias = int(input("Input bias: ")) for i in range(n_training_data): target = int(input("Label: ")) # antara 0 dan 1 / 1 dan -1 -> dikodingan ini menggunakan 0 dan 1 input_data = { "p" : list(), "t" : target } for j in range (n_features): feature = float(input("Input fitur-{}: ".format(j+1))) input_data["p"] = input_data["p"] + [feature, ] training_data = training_data + [input_data,] epochs = 0 while(True): #step function 0 dan 1 epochs = epochs + 1 correct = 0 print("Epochs - ", epochs) print("======================") for i in range (n_training_data): p = np.asarray(training_data[i]["p"]) a = 0 if np.matmul(p, w) + bias < 0 else 1 if a == training_data[i]["t"]: correct = correct + 1 else: print("Data ", i+1) #update weight e = training_data[i]["t"] - a w = w + (e*np.transpose(p)) bias = bias + e print("Data: ", i) print("Error: ", e) print("w-new: ", w) print("bias-new: {}\n\n".format(bias)) if correct == n_training_data: break print("Epochs: ", epochs) print("W :", w) print("Bias :", bias)
Terima kasih telah membaca artikel tentang Artificial Neural Network: Perceptron di blog Blognya Ardiant jika anda ingin menyebar luaskan artikel ini di mohon untuk mencantumkan link sebagai Sumbernya, dan bila artikel ini bermanfaat silakan bookmark halaman ini di web broswer anda, dengan cara menekan Ctrl + D pada tombol keyboard anda.
1 comments :
Thanks for sharing this valuable and understanding article with us.
BalasFinding SEO Company Surat
then plusply digital is offering the best SEO Services in Surat for
your business website or Online Marketing.