#7 Artificial Neural Network (ANN) — Part 2 (Single Layer Perceptron)

Muhammad Yunus
5 min readApr 10, 2020

--

Implementasi Single Layer Perceptron — Training & Testing

source [link]

Setelah sebelumnya kita bahas tentang pengenalan ANN Part 1 disini.

Selanjutnya kita akan coba implementasikan algoritma ANN dalam pemrograman Python, setidaknya untuk beberapa part kedepan. Di part ke-2 ini kita akan coba gunakan Single Layer Perceptron (SLP) untuk menyelesaikan permasalahan sederhana. Seperti telah dibahas sebelumnya, Single Layer Perceptron tergolong kedalam Supervised Machine Learning untuk permasalahan Binary Classification. Binary classification pada intinya akan memisahkan input data menjadi dua group/class terpisah, dua group/class ini harus lineary separable [1].

sumber [link]

Kasus sederhana yang dapat diselesaikan oleh Single Layer Perceptron diataranya adalah logic AND dan OR.

sumber [link]

Single Layer Perceptron Algorithm

Single Layer Perceptron memetakan output dengan hasil dari kombinasi linear semua perkalian feature vector / input value terhadap ‘weight’.

Arsitektur Single Layer Perceptron [link]

Single layer Perceptron menggunakan Delta Rule pada saat proses training, nilai ‘weight’ akan diatur sedemikian rupa sehingga hasil perhitungan tepat dengan output sebenarnya.

Learning Rate merupakan hyperparameter yang digunakan saat proses training, bernilai positif pada rentang yang tidak lebih diatara 0.0–1.0. Learning Rate mengontrol seberapa cepat perubahan model dilakukan sebagai respon terhadap estimasi error setiap kali ‘weight’ diupdate [2].

Implementasi

Tahap ini kita akan coba terapkan apa yang sudah kita ketahui tentang Single Layer Perceptron terhadap permaslahan logika AND.

Buka Jupyter Notebook dan buat Notebook Baru dengan nama “Single Layer Perceptron”

Buka jupyter notebootk

Jika anda belum pernah menginstall jupyter notebook, bisa diikuti langkah disini.

Training Single Layer Perceptron

Training dilakukan dengan langkah berikut,

1. Mendefinisikan Input & Output (Logic AND)
+---+---+---+
| xₐ| xᵦ| y |
+---+---+---+
| 0 | 0 | 0 |
+---+---+---+
| 0 | 1 | 0 |
+---+---+---+
| 1 | 0 | 0 |
+---+---+---+
| 1 | 1 | 1 |
+---+---+---+
2. Inisialisasi hyperparameter
w = 0, b = 0, η = 0.5
3. Itrasi fungsi berikut sampai Δw = 0,
→ untuk tiap training data xᵏ dengan label yᵏ
y_pred = Σ x.w + b
apply activation function :
f(x) = 1, y_pred > 0
f(x) = 0, y_pred <= 0
if (y — f(x)) = 0,
stop
else,
update w, △w = (y — f(x)) * η * x
update b, △b = (y — f(x)) * η

Implementasi pada Python,

NUM_FEATURES merupakan banyaknya koneksi input pada neuron, sehingga untuk permasalahan logic AND, hanya memiliki dua input.

NUM_ITER dipilih secara random, kita pilih 100 sudah dirasa cukup, penentuan parameter ini bisa dilakukan secara intuitif, melihat banyaknya sample data yang digunakan untuk proses training hanya sedikit pada kasus ini, maka 100 sudah lebih dari cukup.

learning_rate dipilih secara random, ambil nilai antara 0.0–1.0, kita set 0.1.

weight berukuran 2x1 dan bias diinisialisasi dengan nilai 0, pada saat proses pembelajaran, nilai ini kita akan update sesuai dengan langkah diatas.

x sebagai input matrix/ feature vector berukuran 4x2, sedangkan y sebagai target output berukuran 2x1.

Selanjutnya kita akan lakukan proses training untuk mencari weight w dan bias b ,

y_pred dihitung dengan cara melakukan oprasi dot antara x dengan size 4x2 dengan W dengan size 2x1 yang akan menghasilkan matrix berukuran 4x1.

fungsi aktivasi mengikuti aturan berikut,

sumber [link]

Sehingga didapatkan hasil sebagai berikut,

hasil proses training dengan learning rate 0.1

Dari hasil diatas terlihat error = 0 di iterasi ke 2, dengan nilai weight W = [0.1, 0.1] dan bias b = -0.10000002.

Jika kita ubah learning rate η = 0.5, nilai W dan b yang dihasilkan sebagai berikut,

hasil proses training dengan learning rate 0.5

Kita akan coba evaluasi hasil ini menggunakan program test berikut,

sehingga didapatkan hasil testing sebagai berikut,

hasil testing

Dari hasil testing terlihat jika Neural Network Single Layer Perceptron dapat menyelesaikan permasalahan logic AND.

Setelah itu kita dapat memvisualisasikan model yang kita buat terhadap input dan output data. Sesuai dengan definisi diatas, Single Layer Perceptron hanya bisa menyelesaikan permasalahan yang bersifat lineary sparable,

dihasilkan visualisasi sebagai berikut,

visualisasi model SLP dengan w = [0.1, 0.1] dan b = -0.10000002

Dot ungu menandakan output 0, sedangkan dot kuning menandakan output 1. Dari hasil tersebut terlihat bahwa model yang dihasilkan mampu memisahkan dua group/class output dengan baik.

Kita dapat melakukan modifikasi pada program training dengan menerapkan Activation Function lain, misalnya kita coba gunakan Sigmoid Activation function,

Kita atur ulang NUM_ITER menjadi 4000 dan learning_rate menjadi 0.01, dan sedikit melakukan modifikasi, program akan stop jika error dibawah 10%, hal ini diperlukan agar paling tidak proses berhenti disaat mendapatkan 90% akurasi.

Dan didapatkan model hasil training SLP dengan Activation Function Sigmoid, sebagai berikut,

Hasil training SLP menggunakan Sigmoid Activation Function

Dari hasil training diatas terlihat bahwa proses berhendi di iterasi ke-2296 dengan persentasi error 9.9%, didapatkan W = [2.9025893 2.9025893] b=-4.5756445].

jika kita visualisasikan separasi datanya menjadi lebih jelas,

visualisasi model SLP dengan Activation Function Sigmoid

Dari hal diatas kita bisa melihat pemilihan Activation Function dapat mempengaruhi batas-batas class. Pemilihan Activation Function harus dilihat dari karakterstik data yang sedang di analisa dan kedepanya akan coba kita bahas secara terpisah ditulisan lain.

Sekian implementasi Single Layer Perceptron menggunakan Python. Selanjutnya akan dibahas implementasi Multi Layer Prceptron untuk meelakukan prediksi terhadap data time series (forecasting).

Terima kasih.

Sumber :

  1. https://en.wikipedia.org/wiki/Perceptron
  2. https://machinelearningmastery.com/understand-the-dynamics-of-learning-rate-on-deep-learning-neural-networks/
  3. https://www.saedsayad.com/artificial_neural_network_bkp.htm
  4. https://nasirml.wordpress.com/2017/11/19/single-layer-perceptron-in-tensorflow/

--

--

Muhammad Yunus
Muhammad Yunus

Written by Muhammad Yunus

IoT Engineer, Software Developer & Machine Learning Enthusiast

No responses yet