Mas Sehat | Blog Tentang Kesehatan | Mas Sehat ~ Blog Tentang Kesehatan | www.mas-sehat.com

Artificial Neural Network: Perceptron

Kecerdasan buatan merupakan teknologi yang sedang nge-trend beberapa tahun belakangan ini. Banyak sekali kecerdasan-kecerdasan buatan yang ada disekitar kita. Kecerdasan buatan yang paling dekat dengan kita adalah kecerdasan buatan yang terdapat pada smartphone yang kita miliki, contohnya adalah face recognition pada kamera smartphone yang kita miliki.

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.

ANN vs Biological neuron
credits: Wikipedia
Pada tulisan ini, saya akan menjelaskan tentang apa itu Perceptron.
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.


hardlim
credits: mathworks.com



Single-Neuron Perceptron
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:

  • 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.

Artikel terbaru :

Mas Sehat | Blog Tentang Kesehatan | Mas Sehat ~ Blog Tentang Kesehatan | www.mas-sehat.com

1 comments :

Thanks for sharing this valuable and understanding article with us.
Finding SEO Company Surat
then plusply digital is offering the best SEO Services in Surat for
your business website or Online Marketing.

Balas