Machine Learning : Single Layer Perceptron

vincentmichael089
7 min readApr 21, 2019

--

via GIPHY

ini adalah story lanjutan dari Machine Learning: Sebuah Pengantar. Pembahasan pada bagian ini akan lebih menekankan pada proses Training yang terjadi pada Single Layer Perceptron (Penentuan Parameter, Arsitektur, Update Bobot dengan Stochastic Gradient Descent)

Single Layer Perceptron

Gambar Single Layer Perceptron

Single Layer Perceptron adalah sebuah Jaringan Saraf Tiruan yang terdiri dari 1 layer pemrosesan saja. Kalau anda sudah membaca story Machine Learning: Sebuah Pengantar, maka sebenarnya anda sudah mempelajari cara kerja Single Layer Perceptron dalam menyelesaikan operasi AND dan OR. Di story ini kita akan bahas lebih dalam bagaimana Single Layer Perceptron digunakan untuk masalah yang lebih kompleks.

Linear Classifier: Sebuah Single Layer Perceptron sederhana

Linear Classifier adalah sebuah cara membagi suatu data kedalam kelas / label tertentu dengan menggunakan garis lurus sehingga dapat dibentuk suatu model yang memprediksi data-data yang belum memiliki label.

Contohnya misal membagi data kedalam kelas ‘pria’ dan ‘wanita’, ‘anjing’ dan ‘kucing’, atau kelas-kelas lainya berdasar ciri / fitur / input yang dimiliki data tersebut. Oya, sesuai namanya ‘Classifier’ menunjukan bahwa SLP termasuk kedalam Supervised Learning.

Contoh masalah sederhana pada SLP

Misalkan kita memiliki beberapa data dengan 4 fitur/input berupa ‘Panjang Kelopak Bunga’, ‘Lebar Kelopak Bunga’, ‘Panjang Mahkota Bunga’, dan ‘Lebar Mahkota Bunga’ dengan 2 label/output tujuan yaitu ‘Iris-versicolor’ dan ‘Iris-virginica’. Kita harus dapat membuat model dengan Linear Classifier sehingga ketika kita memiliki suatu data dengan fitur:

Panjang Kelopak Bunga’ = 6cm

Lebar Kelopak Bunga’ = 3cm

Panjang Mahkota Bunga’ = 4cm

Lebar Mahkota Bunga’ = 2cm

model yang kita bangun dapat memprediksi apakah data tersebut termasuk kedalam label ‘Iris-versicolor’ atau ‘Iris-virginica’.

Siapkan Data Input untuk Single Layer Perceptron

Data pada Machine Learning dibagi kedalam 2 kelompok, yaitu data Training dan data Testing.

Data Training

Data Training adalah data yang telah memiliki label dan akan diolah sedemikian rupa oleh mesin untuk mendapatkan model yang bisa memprediksi data yang belum memiliki label. Data Validasi merupakan bagian kecil dari data Training untuk mengecek tingkat perbandingan akurasi dan error pada data Training untuk memastikan apakah model mengalami Overfitting atau Underfitting. Selain itu Data Validasi juga digunakan sebagai patokan Tuning Hyperparameter (bentuk arsitektur, banyaknya neuron, dll)

Contoh pembagian data Training dan data Validasi

Data Testing

Data Testing adalah data yang belum memiliki label, dan akan diprediksi oleh mesin apa label dari masing-masing data.

contoh data Testing

Pada story kali ini kita akan gunakan dataset Iris dari UCI Machine Learning Repository dengan mengambil data ke 51 sampai 150 saja (Kelas Iris-versicolor sampai kelas Iris-virginica)

Membentuk Model Single Layer Perceptron untuk masalah ‘Iris-versicolor’ dan ‘Iris-virginica’

Masalah klasifikasi Iris-versicolor dan Iris-virginica sebenarnya cukup mirip dengan masalaha operasi AND dan OR. Bedanya hanya dari input saja, dimana AND dan OR memiliki input berupa 0 dan 1 saja sementara klasifikasi Iris-versicolor dan Iris-virginica memiliki input ‘Panjang Kelopak Bunga’, ‘Lebar Kelopak Bunga’, ‘Panjang Mahkota Bunga’, dan ‘Lebar Mahkota Bunga’ dalam rentang pengukuran panjang tertentu.

Penentuan Parameter

Untuk membentuk suatu model klasifikasi yang akurat, kita perlu membuat arsitektur Jaringan Saraf Tiruan sederhana (kita sebut SLP) dengan parameter-parameter berikut:

Input1 = ‘Panjang Kelopak Bunga’

Input2 = ‘Lebar Kelopak Bunga’

Input 3 = ‘Panjang Mahkota Bunga’

Input 4 = ‘Lebar Mahkota Bunga’

Bobot1 = Bobot2 = Bobot3 = Bobot 4= Bias = Random = 0.5

Fungsi Aktivasi = Sigmoid

jika Output == 0 adalah ‘Iris-versicolor’, jika Output == 1 adalah ‘Iris-virginica’

Arsitektur Single Layer Perceptron untuk klasifikasi ‘Iris-versicolor’ dan ‘Iris-virginica’

dari Parameter yang telah ditentukan sebelumnya, dapat dibuat suatu arsitektur SLP berikut:

Arsitektur SLP untuk klasifikasi ‘Iris-versicolor’ dan ‘Iris-virginica’

Parameter yang dibutuhkan sudah lengkap dan arsitekturnya sudah tergambar. Sekarang kita bahas proses belajar dari SLP ini sendiri.

Proses Pembelajaran dari Single Layer Perceptron

Yang terjadi pada proses pembelajaran di SLP adalah kita memasukan data-data Training yang kita miliki ke dalam model arsitektur SLP, dan terus mengupdate bobot-bobot sampai didapatkan model yang akurat. Kemudian data Validasi akan dimasukan kedalam model yang telah dibentuk oleh proses Training untuk mengetahui apakah model yang didapat bersifat Overfitting atau Underfitting. Setelah proses pembelajaran selesai, data Testing akan dimasukan kedalam model yang sama untuk menentukan Label dari masing-masing data.

Proses Training

Perhatikan potongan data Training berikut:

Potongan data Training

Kita masukan data pertama ke dalam arsitektur model yang telah kita buat:

Input1 * Bobot1 = 7.0 * 0.5 = 3.5

Input2 * Bobot2 = 3.2 * 0.5 = 1.6

Input3 * Bobot3 = 4.7 * 0.5 =2.35

Input4 * Bobot 4 = 1.4 * 0.5 =0.7

Bias = 0.5

Σ (Input*Bobot) + Bias= (3.5 + 1.6 + 2.35 + 0.7) + 0.5 = 8.65

Sigmoid(Σ (Input*Bobot) + Bias) = 1/(1+(exp(-8.65))) = 0.9998249038

Prediksi Label = 1 = Iris-virginica

Selanjutnya kita cari nilai Error dari penggunaan bobot dengan rumus berikut:

Perhitungan nilai Error sendiri sangat berguna dalam mengupdate bobot. Secara intuitif adalah ‘Kita kecilkan error dengan mencari bobot terbaik untuk masing-masing input’. Cara intuitif tersebut dapat di-matematika-kan dengan Stochastic Gradient Descent (SDG).

Misal kita tentukan nilai η (Learning Rate) = 0.1

Cari ∂Error/∂Bobot dengan cara berikut:

Sehingga ∂Error/∂Bobot untuk masing-masing Bobot:

Dengan SGD, didapatkan BobotBaru untuk 4 input sebagai berikut:

BobotBaru1 = 0.5 – 0.1 * 0.00245048821 = 0.4997549512

BobotBaru2 = 0.5 – 0.1 * 0.00112022318 = 0.4998879777

BobotBaru3 = 0.5–0.1 * 0.001645327798 = 0.4998354672

BobotBaru4 = 0.5–0.1 * 0.000490097642 = 0.4999509902

Bias = 0.5–0.1 * 0.0003500697443 = 0.499964993

Bobot-bobot baru dan nilai Bias baru yang kita dapatkan tersebut kita gunakan untuk data selanjutnya dan dilakukan terus-menerus sampai seluruh data Training habis.

update Bobot dan Bias sampai data Training habis

Tunggu dulu, apakah mungkin hanya dengan mengupdate Bobot dan Bias sampai data habis dapat membentuk model yang dapat memprediksi dengan akurat? pada kenyataanya tidak! Pada gambar diatas terlihat bahwa model belum bisa melakukan prediksi untuk kelas Iris-versicolor. Lantas apakah yang harus kita lakukan?

Pada Machine Learning terdapat istilah Epoch. 1 Epoch adalah melakukan proses Training (Update Bobot) pada seluruh data Training sebanyak 1 kali. Untuk meningkatkan kualitas model, biasanya digunakan lebih dari 1 Epoch. Caranya? perhatikan gambar berikut:

visualisasi Epoch

Kita hanya perlu menggabungkan data Training dengan data Training yang sama, dan menggunakan Bobot dan Bias terakhir yang didapat dari Epoch sebelumnya sebagai Bobot dan Bias pertama di Epoch baru. Pada Epoch ke-10 didapatkan model yang memprediksi benar kelas ‘Iris-versicolor’ sebesar 48/50 dan memprediksi benar kelas ‘Iris-virginica’ sebesar 46/50. Klik disini untuk melihat proses update Bobot dan Bias pada 10 Epoch.

Proses Validasi

Proses Validasi digunakan untuk memastikan apakah model mengalami Overfitting atau Underfitting. Selain itu Proses Validasi juga digunakan sebagai patokan Tuning Hyperparameter (bentuk arsitektur, banyaknya neuron, dll) untuk memilih model yang menghasilkan Error paling kecil.

Yang terjadi pada Proses Validasi adalah kita menggunakan Bobot dan Bias pada tiap Epoch proses Training, dan menjalankanya pada seluruh data Validasi. Pada proses ini tidak terjadi update Bobot. Catat tingkat akurasi dan error yang terjadi pada data Validasi dan bandingkan dengan tingkat akurasi dan error data Training untuk mengetahui apakah model mengalami Overfitting atau Underfitting

Proses Testing

Proses Testing dilakukan untuk memprediksi data-data yang belum memiliki Label. Misalkan kita memiliki data Testing sebagai berikut:

Dengan menggunakan model yang telah dibentuk sebelumnya, berikut prediksi Label yang didapat untuk data Testing:

0 untuk kelas ‘Iris-versicolor’ dan 1 untuk kelas ‘Iris-virginica’

Selesaii!!

via GIPHY

Berikut adalah daftar yang telah kita pelajari pada story kali ini:

  • Membuat Single Layer Perceptron untuk menyelesaikan masalah klasifikasi ‘Iris-versicolor dan ‘Iris-virginica’
  • Mengetahui jenis-jenis data yang ada pada Machine Learning
  • Menentukan parameter dan model untuk menyelesaikan masalah klasifikasi ‘Iris-versicolor dan ‘Iris-virginica’
  • Memahami proses pembelajaran pada ‘Machine Learning’ (Update Bobot, Epoch)
  • Penjelasan singkat mengenai proses Validasi dan proses Testing

Sekian dulu untuk story kali ini, semoga apa yang saya tulis cukup mudah untuk dimengerti. Kalau ada kesalahan saya mohon maaf dan diupayakan untuk direvisi. Terimakasih :D

--

--