Perceptron: Blok Bangunan Jaringan Syaraf Tiruan

Node Sumber: 1216283

Jika Anda seorang penggila pembelajaran mesin dan AI, Anda pasti pernah mendengar kata perceptron. Perceptron diajarkan di bab pertama dari banyak kursus pembelajaran mendalam. Jadi apa sebenarnya itu? Apa inspirasi di baliknya? Bagaimana tepatnya itu memecahkan masalah klasifikasi? Pada artikel ini, kita akan mulai dengan inspirasi biologis di balik perceptron dan kemudian mendalami teknis matematisnya, dan akhirnya membuat pengklasifikasi biner dari awal menggunakan unit perceptron.

Inspirasi biologis Neural Networks

Sebuah neuron (sel saraf) adalah blok bangunan dasar dari sistem saraf. Otak manusia terdiri dari miliaran neuron yang saling berhubungan satu sama lain. Mereka bertanggung jawab untuk menerima dan mengirim sinyal dari otak. Seperti yang terlihat pada diagram di bawah, neuron tipikal terdiri dari tiga bagian utama โ€“ dendrit, akson, dan badan sel atau soma. Dendrit adalah cabang mirip pohon yang berasal dari badan sel. Mereka menerima informasi dari neuron lain. Soma adalah inti dari neuron. Ini bertanggung jawab untuk memproses informasi yang diterima dari dendrit. Akson seperti kabel yang melaluinya neuron mengirimkan informasi. Menjelang ujungnya, akson terbagi menjadi banyak cabang yang membuat koneksi dengan neuron lain melalui dendritnya. Itu hubungan antara akson dan dendrit neuron lainnya disebut sinapsis.

1: Neuron Biologis versus Jaringan Syaraf Tiruan

Sumber Gambar: Willems, K. (2017, 2 Mei). Tutorial Keras: Pembelajaran Mendalam dengan Python.

Karena JST terinspirasi dari fungsi otak, mari kita lihat bagaimana otak bekerja. Otak terdiri dari jaringan miliaran neuron. Mereka berkomunikasi melalui sinyal listrik dan kimia melalui sinaps, di mana informasi dari satu neuron ditransmisikan ke neuron lain. Proses transmisi melibatkan impuls listrik yang disebut 'potensial aksi'. Agar informasi dapat ditransmisikan, sinyal input (impuls) harus cukup kuat untuk melewati penghalang ambang tertentu, kemudian hanya neuron yang mengaktifkan dan mentransmisikan sinyal lebih jauh (output).

Terinspirasi oleh fungsi biologis neuron, seorang ilmuwan Amerika Franck Rosenblatt mengemukakan konsep perceptron di Cornell Aeronautical Laboratory pada tahun 1957.

  • Neuron menerima informasi dari neuron lain dalam bentuk impuls listrik dengan kekuatan yang bervariasi.
  • Neuron mengintegrasikan semua impuls yang diterimanya dari neuron lain.
  • Jika penjumlahan yang dihasilkan lebih besar dari nilai ambang tertentu, neuron 'menyala', memicu potensial aksi yang ditransmisikan ke neuron lain yang terhubung.

Komponen Utama Perceptron

Perceptron Rosenblatt pada dasarnya adalah pengklasifikasi biner. Perceptron terdiri dari 3 bagian utama:

  • Node input atau lapisan input: Lapisan input mengambil data awal ke dalam sistem untuk diproses lebih lanjut. Setiap node input dikaitkan dengan nilai numerik. Itu bisa mengambil nilai nyata apa pun.
  • Bobot dan bias: Parameter bobot mewakili kekuatan koneksi antar unit. Semakin tinggi bobotnya, semakin kuat pengaruh neuron input terkait untuk memutuskan output. Bias berperan sama dengan intersep dalam persamaan linier.
  • Fungsi aktivasi: Fungsi aktivasi menentukan apakah neuron akan menyala atau tidak. Sederhananya, fungsi aktivasi adalah fungsi langkah, tetapi berdasarkan skenario, fungsi aktivasi yang berbeda dapat digunakan.

Kita akan melihat lebih banyak tentang ini di bagian selanjutnya.

Bekerja dari Perceptron

Pada langkah pertama, semua nilai input dikalikan dengan bobot masing-masing dan dijumlahkan. Hasil yang diperoleh disebut jumlah tertimbang โˆ‘wi*xi, atau dinyatakan berbeda,  x1*w1 + x2*w2 +โ€ฆwn*xn. Jumlah ini memberikan representasi input yang sesuai berdasarkan kepentingannya. Selain itu, istilah bias b ditambahkan ke jumlah ini โˆ‘wi*xi + b. Bias berfungsi sebagai parameter model lain (selain bobot) yang dapat disetel untuk meningkatkan performa model.

Pada langkah kedua, fungsi aktivasi f diterapkan atas jumlah di atas โˆ‘wi*xi + b untuk mendapatkan output Y = f(โˆ‘wi*xi + b). Bergantung pada skenario dan fungsi aktivasi yang digunakan, Keluaran juga biner {1, 0} atau nilai kontinu. 

Bekerja dari Perceptron

(Seringkali kedua langkah ini direpresentasikan sebagai satu langkah dalam perceptron multi-layer, di sini saya telah menunjukkannya sebagai dua langkah berbeda untuk pemahaman yang lebih baik)

Fungsi Aktivasi

Neuron biologis hanya menyala ketika ambang tertentu terlampaui. Demikian pula, neuron buatan juga hanya akan menyala ketika jumlah input (jumlah tertimbang) melebihi nilai ambang tertentu, katakanlah 0. Secara intuitif, kita dapat memikirkan pendekatan berbasis aturan seperti ini โ€“

Jika โˆ‘wi*xi + b > 0: keluaran = 1 lainnya: keluaran = 0

Grafiknya akan seperti ini:

Fungsi Aktivasi

Ini sebenarnya adalah fungsi aktivasi Unit Step (Threshold) yang awalnya digunakan oleh Rosenblatt. Tapi seperti yang Anda lihat, fungsi ini terputus pada 0, sehingga menimbulkan masalah dalam perhitungan matematis. Versi yang lebih mulus dari fungsi di atas adalah fungsi sigmoid. Ini menghasilkan antara 0 dan 1. Yang lainnya adalah garis singgung Hiperbolik (tanh) , yang menghasilkan output antara -1 dan 1. Fungsi sigmoid dan tanh mengalami masalah gradien hilang. Saat ini, ReLU dan Leaky ReLU adalah fungsi aktivasi yang paling populer digunakan. Mereka relatif stabil melalui jaringan yang dalam.

Perceptron sebagai Pengklasifikasi Biner

Sejauh ini, kita telah melihat inspirasi biologis dan matematika dari perceptron. Pada bagian ini, kita akan melihat bagaimana perceptron memecahkan masalah klasifikasi linear.

Mengimpor beberapa perpustakaan โ€“

from sklearn.datasets import make_blobs import matplotlib.pyplot as plt import numpy as np %matplotlib inline

Membuat dataset dummy menggunakan buat_gumpalan fungsi yang disediakan oleh scikit belajar -

# Hasilkan kumpulan data X, Y = make_blobs(n_features = 2, centers = 2, n_samples = 1000, random_state = 12)
# Visualisasikan dataset plt.figure(figsize = (6, 6)) plt.scatter(X[:, 0], X[:, 1], c = Y) plt.title('Ground truth', fontsize = 18) plt.tampilkan()
Perceptron sebagai Pengklasifikasi Biner

Misalkan titik biru adalah 1 dan titik hijau adalah 0. Menggunakan logika perceptron, kita dapat membuat batas keputusan (pesawat hiper) untuk klasifikasi yang memisahkan titik data yang berbeda pada grafik.

Sebelum melangkah lebih jauh, mari tambahkan suku bias (satuan) ke vektor masukan โ€“

# Tambahkan bias ke vektor input X_bias = np.ones([X.shape[0], 3]) X_bias[:, 1:3] = X

Dataset akan terlihat seperti ini

kumpulan data

Di sini setiap baris dari kumpulan data di atas mewakili vektor input (titik data). Untuk membuat batas keputusan, kita perlu mengetahui bobot yang sesuai. Bobot 'dipelajari' dari pelatihan menggunakan aturan di bawah ini โ€“

w = w + (diharapkan โ€” diperkirakan) * x

Perceptron w

Ini berarti bahwa mengurangkan hasil yang diestimasi dari kebenaran dasar dan kemudian mengalikannya dengan vektor input saat ini dan menambahkan bobot lama ke dalamnya untuk mendapatkan nilai bobot yang baru. Jika keluaran kita sama dengan kelas sebenarnya, maka bobotnya tidak berubah. Tetapi jika perkiraan kita berbeda dengan kebenaran dasar, maka bobotnya bertambah atau berkurang. Beginilah cara bobot disesuaikan secara progresif di setiap iterasi.

Kita mulai dengan menetapkan nilai arbitrer ke vektor bobot, lalu kita menyesuaikannya secara progresif di setiap iterasi menggunakan kesalahan dan data yang ada โ€“

# menginisialisasi bobot dengan nilai acak w = np.random.rand(3, 1) print(w)

Keluaran:

[[0.37547448] [0.00239401] [0.18640939]]

Tentukan fungsi aktivasi perceptron -

def activation_func(z): jika z >= 1: kembalikan 1 lainnya: kembalikan 0

Selanjutnya, kami menerapkan aturan pembelajaran perceptron -

untuk _ dalam rentang(100): untuk i dalam rentang(X_bias.shape[0]): y = activation_func(w.transpose().dot(X_bias[i, :])) # Perbarui bobot w = w + (( Y[i] - y) * X_bias[i, :]).bentuk ulang(w.bentuk[0], 1)

Tidak ada jaminan bahwa bobot akan menyatu dalam satu lintasan, jadi kami memasukkan semua data pelatihan ke dalam algoritme perceptron sebanyak 100 kali sambil terus menerapkan aturan pembelajaran sehingga pada akhirnya kami berhasil mendapatkan bobot yang optimal.

Sekarang, kami telah mendapatkan bobot optimal, kami memprediksi kelas untuk setiap titik data menggunakan Y = f(โˆ‘wi*xi + b) atau Y = wT.x dalam bentuk vektor.

# memprediksi kelas titik data result_class = [activation_func(w.transpose().dot(x)) for x in X_bias]

Visualisasikan batas keputusan dan label kelas yang diprediksi โ€“

# ubah ke vektor satuan w = w/np.sqrt(w.transpose().dot(w))
# Visualisasikan hasil plt.figure(figsize = (6, 6)) plt.scatter(X[:, 0], X[:, 1], c = result_class) plt.plot([-10, -1], hyperplane ([-10, -1], w), lw = 3, c = 'red') plt.title('Klasifikasi Perceptron dengan batas keputusan') plt.show()
Klasifikasi perceptron dengan batas keputusan

Anda dapat membandingkan gambar kebenaran dasar dengan gambar hasil yang diprediksi dan melihat beberapa poin yang salah klasifikasi. Jika kita hitung akurasinya, kira-kira 98% (saya serahkan ini sebagai latihan untuk para pembaca).

Jika Anda lihat, di sini data asli kami cukup terpisah, sehingga kami bisa mendapatkan akurasi yang baik. Tapi ini tidak terjadi dengan data dunia nyata. Dengan menggunakan satu perceptron, kita hanya dapat membangun batas keputusan linier, jadi jika data dicampurkan, algoritma perceptron akan bekerja dengan buruk. Ini adalah salah satu keterbatasan model perceptron tunggal.

Catatan akhir

Kami mulai dengan memahami inspirasi biologis di balik perceptron Rosenblatt. Kemudian kami melanjutkan ke matematika perceptron dan fungsi aktivasi. Akhirnya dengan menggunakan kumpulan data mainan, kami melihat bagaimana perceptron dapat melakukan klasifikasi dasar dengan membangun batas keputusan linier yang memisahkan titik data milik kelas yang berbeda.

tentang Penulis

Pratik Nabriya adalah Ilmuwan Data terampil yang saat ini bekerja di perusahaan Analisis & AI yang berbasis di Noida. Dia mahir dalam pembelajaran Mesin, Pembelajaran mendalam, NLP, Analisis Rangkaian Waktu, Manipulasi data, SQL, Python, dan terbiasa bekerja di lingkungan Cloud. Di waktu luangnya, dia suka berkompetisi di Hackathons, dan menulis artikel teknis.

Media yang ditampilkan dalam artikel ini bukan milik Analytics Vidhya dan digunakan atas kebijaksanaan Penulis.

Sumber: https://www.analyticsvidhya.com/blog/2021/10/perceptron-building-block-of-artificial-neural-network/

Stempel Waktu:

Lebih dari Analisis Vidhya