Setiap model deep learning, sebesar apa pun ukurannya, tersusun dari satu unit komputasi yang diulang berkali-kali: neuron artifisial. Unit ini menerima beberapa angka masukan, mengalikan masing-masing dengan bobot, menjumlahkan hasilnya, lalu meneruskan nilai tersebut melalui fungsi aktivasi. Seluruh kemampuan model — mengenali wajah, menerjemahkan bahasa, memprediksi harga — pada akhirnya berasal dari operasi sederhana ini yang disusun berlapis-lapis. Pada chapter ini kita bedah neuron artifisial sampai ke komponen terkecilnya: analogi biologisnya, rumus matematisnya, lalu implementasi satu neuron dengan tiga input menggunakan NumPy murni.

Dari Neuron Biologis ke Neuron Artifisial #

Neuron biologis menerima sinyal listrik dari ribuan neuron lain melalui cabang penerima bernama dendrit. Badan sel menjumlahkan seluruh sinyal yang sampai; apabila hasil penjumlahan melewati ambang tertentu, neuron mengirim impuls listrik keluar melalui akson menuju neuron-neuron berikutnya. Model matematis yang kita pakai sekarang mengikuti abstraksi yang diperkenalkan Warren McCulloch dan Walter Pitts pada tahun 1943: representasi sederhana yang menjaga pola masukan-ambang-keluaran, bukan tiruan lengkap perilaku biologis.

Tabel berikut memetakan komponen biologis ke padanan matematisnya:

Komponen biologisPadanan matematisPeran
Dendrit (penerima sinyal)Input x1, x2, x3, ...Data yang masuk ke neuron
Kekuatan sinapsisBobot w1, w2, w3, ...Penentu pentingnya tiap input
Ambang aktivasi di badan selBias bPenggeser ambang aktif
Impuls yang keluar dari aksonKeluaran yNilai yang diteruskan neuron berikutnya

Diagram berikut menggambarkan alur satu neuron dengan tiga input yang akan kita implementasikan sebentar lagi:

Matematika di Balik Satu Neuron #

Perhitungan neuron terdiri atas dua tahap. Tahap pertama menghitung weighted sum atau jumlah tertimbang:

z = w·x + b = w1·x1 + w2·x2 + w3·x3 + b

Tahap kedua meneruskan z ke fungsi aktivasi f untuk menghasilkan keluaran y = f(z). Setiap simbol punya peran yang jelas:

  • x — vektor input: angka-angka yang masuk, misalnya nilai tiga sensor.
  • w — vektor bobot: pengali tiap input; bobot besar berarti input tersebut berpengaruh kuat terhadap z.
  • b — bias: konstanta penggeser; bias negatif membuat neuron lebih sulit aktif, bias positif sebaliknya.
  • z — skor mentah sebelum aktivasi, sering disebut pre-activation.
  • f — fungsi aktivasi; pada chapter ini kita pakai fungsi step: f(z) = 1 bila z >= 0, selain itu f(z) = 0.

Operasi w·x adalah dot product yang sudah kita bahas tuntas pada chapter Aljabar Linear . Fungsi step sendiri adalah keputusan biner: neuron “menyala” atau tidak, persis gagasan ambang pada neuron biologis.

Satu Neuron Tiga Input dalam NumPy #

Kita terapkan rumus tersebut pada kasus kecil: sebuah neuron pengambil keputusan di stasiun cuaca. Neuron menerima tiga sinyal sensor — suhu, kelembapan, dan kecepatan angin — lalu menyalakan indikator kondisi ekstrem (1) atau tidak (0). Berkas neuron_step.py menghitung z untuk dua kelompok sinyal berbeda:

python
"""Satu neuron artifisial: weighted sum, bias, dan aktivasi step.

Neuron menerima tiga sinyal masuk, menghitung z = w.x + b, lalu
fungsi step memutuskan neuron aktif (1) atau tidak (0).
"""

import numpy as np


def weighted_sum(x, w, b):
    """Hitung z = w.x + b untuk satu vektor input."""
    return np.dot(w, x) + b


def aktivasi_step(z):
    """Fungsi step: keluaran 1 bila z >= 0, selain itu 0."""
    return 1 if z >= 0.0 else 0


# Tiga sinyal masuk: suhu, kelembapan, kecepatan angin (nilai contoh)
sinyal_a = np.array([2.0, 1.0, 0.5])
sinyal_b = np.array([1.0, 0.5, 0.2])

# Parameter neuron: bobot tiap sinyal dan satu bias
bobot = np.array([0.7, 0.2, 1.1])
bias = -2.0

for nama, sinyal in [("A", sinyal_a), ("B", sinyal_b)]:
    z = weighted_sum(sinyal, bobot, bias)
    y = aktivasi_step(z)
    print(f"Sinyal {nama}: {sinyal}")
    print(f"  z = w.x + b = {z:+.2f}")
    print(f"  keluaran step = {y}")
    print()

# Hitung ulang z untuk sinyal A secara manual sebagai pembanding
z_manual = 0.7 * 2.0 + 0.2 * 1.0 + 1.1 * 0.5 - 2.0
print(f"Hitung manual z sinyal A: {z_manual:+.2f}")

Output yang Dihasilkan:

text
Sinyal A: [2.  1.  0.5]
  z = w.x + b = +0.15
  keluaran step = 1

Sinyal B: [1.  0.5 0.2]
  z = w.x + b = -0.98
  keluaran step = 0

Hitung manual z sinyal A: +0.15

Perhatikan perilaku ambangnya. Kelompok sinyal A menghasilkan z = +0.15 — melewati nol dengan selisih tipis — sehingga neuron aktif. Kelompok sinyal B menghasilkan z = -0.98 sehingga neuron tidak aktif. Selisih kecil di sekitar nol mengubah keluaran totalnya, dan di situlah letak kepekaan neuron terhadap bobot serta bias. Mari kita telaah kode di atas baris per baris:

  1. Baris 10-12 (def weighted_sum): membungkus rumus z = w·x + b menjadi fungsi; np.dot(w, x) mengalikan pasangan elemen lalu menjumlahkannya, kemudian bias ditambahkan.
  2. Baris 15-17 (def aktivasi_step): menerapkan fungsi step — keluaran 1 saat z >= 0, 0 untuk sisanya.
  3. Baris 20-22 (sinyal_a, sinyal_b): dua vektor input berisi nilai tiga sensor sebagai kasus pembanding.
  4. Baris 24-26 (bobot, bias): parameter neuron. Nilai ini sengaja dipilih manual; pada model terlatih nilainya ditemukan otomatis dari data.
  5. Baris 28-34 (for nama, sinyal ...): menghitung z dan keluaran step untuk kedua kelompok sinyal, lalu mencetak nilai antara agar prosesnya transparan.
  6. Baris 36-38 (z_manual): menghitung ulang z untuk sinyal A tanpa np.dot — hasilnya sama persis, membuktikan dot product hanyalah perkalian berpasangan plus penjumlahan.

Rincian perilaku np.dot dapat dibaca pada dokumentasi resmi numpy.dot .

Makna Bobot dan Bias #

Tanda dan besaran tiap parameter mengubah keputusan neuron secara teratur. Bobot 1.1 pada sinyal kecepatan angin paling besar, artinya sinyal tersebut paling kuat mendorong neuron menuju kondisi aktif. Bias -2.0 bekerja sebagai penahan: seluruh sinyal harus cukup kuat agar penjumlahan tertimbangnya mampu melewati nilai -2.0 menuju nol. Tanpa bias, neuron selalu aktif begitu w·x >= 0 — kebebasan menggeser ambang inilah yang membuat bias menjadi parameter wajib, bukan pelengkap.

Satu neuron dengan fungsi step pada dasarnya sudah menjadi pengklasifikasi sederhana: ia membagi ruang input menjadi dua wilayah dengan sebuah garis batas. Pertanyaan berikutnya adalah bagaimana garis batas tersebut dicari secara otomatis dari data — dan di sanalah aturan pembelajaran perceptron pada chapter berikutnya memainkan perannya.