Seluruh model yang kita bahas sepanjang course ini — regresi linear, pohon keputusan, hingga gradient boosting — hidup dalam satu dunia yang sama: mereka belajar dari fitur yang sudah tersaji, dan kualitas mereka sangat bergantung pada seberapa baik fitur itu dirancang. Deep learning menempuh jalan berbeda: daripada memakai fitur buatan tangan, ia menyusun lapisan-lapisan kecil yang belajar sendiri menyaring representasi dari data mentah — inilah kata “deep”-nya, kedalaman lapisan. Kita tidak akan membangun jaringan raksasa di sini; justru sebaliknya: kita membedah jaringan terkecil yang mungkin dengan MLPClassifier scikit-learn — kerabat dekat deep learning yang sudah ada di kotak peralatan kita — supaya konsep neuron, lapisan, dan aktivasi terlihat dari dekat sebelum menyentuh pustaka yang lebih berat.

Dari Satu Neuron ke Jaringan #

Blok terkecil jaringan saraf tiruan adalah neuron — dan ia lebih sederhana dari namanya. Sebuah neuron menerima beberapa masukan angka, memberi bobot pada masing-masing, menjumlahkannya dengan sebuah bias, lalu menggeser hasilnya lewat fungsi aktivasi. Itu seluruhnya:

python
import numpy as np

# satu "neuron": jumlah tertimbang + aktivasi
bobot = np.array([0.6, -0.4])
bias = 0.1

masukan = np.array([1.0, 0.8])              # [umur ternormalisasi, frekuensi belanja]
z = bobot @ masukan + bias                  # gabungan linear
keluaran = 1 / (1 + np.exp(-z))             # aktivasi sigmoid

print("Gabungan linear z :", round(float(z), 3))
print("Keluaran sigmoid  :", round(float(keluaran), 3))

Output yang Dihasilkan:

text
Gabungan linear z : 0.38
Keluaran sigmoid  : 0.594

Mari kita telaah baris-baris pentingnya:

  1. Baris 8 (bobot @ masukan + bias): gabungan linear — persis bentuk yang dihitung regresi linear. Satu neuron tanpa aktivasi memang hanya regresi linear kecil.
  2. Baris 10 (sigmoid): fungsi aktivasi menekan hasil ke rentang 0-1, dan yang terpenting — ia melengkungkan ruang hitung. Tanpa aktivasi non-linear, seribu neuron pun yang tersusun tetap hanya bisa menghasilkan garis lurus.
  3. Bobot dan bias inilah “yang dipelajari”: pelatihan jaringan adalah pencarian nilai bobot dan bias yang membuat keluaran-keluaran lapisan berguna bagi lapisan berikutnya.

Kekuatan muncul ketika neuron disusun berlapis: lapisan pertama menyaring pola sederhana (misalnya “belanja tinggi DAN umur muda”), lapisan kedua menggabungkan pola-pola itu menjadi konsep lebih besar, dan seterusnya. hidden_layer_sizes=(8,) berarti satu lapisan tersembunyi berisi delapan neuron antara masukan dan keluaran.

Kapan Lapisan Menyala: Batas Model Linear #

Contoh klasiknya adalah data berbentuk lingkaran: pelanggan loyal justru yang berada di tengah (datang dekat, kafe langganan), dan pelanggan sesekali tersebar di pinggir. Tidak ada satu garis pun yang memisahkan kedua kelompok ini — dunia model linear berhenti di sini, jaringan saraf melangkah:

python
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.neural_network import MLPClassifier

rng = np.random.default_rng(42)
n = 120
# data lingkaran: pelanggan "loyal" justru di tengah (non-linear)
sudut = rng.uniform(0, 2 * np.pi, n)
jarak = rng.choice([0.4, 1.0], n, p=[0.5, 0.5]) + rng.normal(0, 0.08, n)
umur = jarak * np.cos(sudut)
belanja = jarak * np.sin(sudut)
loyal = (jarak < 0.7).astype(int)

X = np.column_stack([umur, belanja])
X_latih, X_uji, y_latih, y_uji = train_test_split(
    X, loyal, test_size=0.25, random_state=42, stratify=loyal)

skala = StandardScaler().fit(X_latih)
Xl, Xu = skala.transform(X_latih), skala.transform(X_uji)

model_linear = LogisticRegression().fit(Xl, y_latih)
model_mlp = MLPClassifier(hidden_layer_sizes=(8,), max_iter=2000,
                          random_state=42).fit(Xl, y_latih)

print(f"Akurasi LogisticRegression : {model_linear.score(Xu, y_uji):.3f}")
print(f"Akurasi MLP (8 neuron)     : {model_mlp.score(Xu, y_uji):.3f}")
n_param = (model_mlp.coefs_[0].size + model_mlp.coefs_[1].size
           + model_mlp.intercepts_[0].size + model_mlp.intercepts_[1].size)
print(f"Jumlah parameter MLP       : {n_param}")

Output yang Dihasilkan:

text
Akurasi LogisticRegression : 0.467
Akurasi MLP (8 neuron)     : 1.000
Jumlah parameter MLP       : 33

Mari kita telaah hasilnya:

  1. Regresi logistik kandas (0,467 — di bawah lempar koin): model linear hanya bisa memasang satu garis pemisah, dan untuk kelompok konsentris garis mana pun membelah dua lingkaran sekaligus. Bukan soal kualitas data — soal bentuk alatnya.
  2. MLP dengan 8 neuron menuntaskan (1,000): delapan neuron lapisan pertama masing-masing mempelajari satu “garis imajiner”; keluaran-keluarannya digabung lapisan berikutnya menjadi batas lengkung mengelilingi kelompok tengah. Kapasitas membentuk batas non-linear inilah inti keunggulan jaringan saraf.
  3. Harganya terbaca di jumlah parameter: 33 angka yang harus dipelajari dari data — bobot dan bias seluruh neuron. Parameter tumbuh cepat seiring lebar dan kedalaman jaringan; itulah sebabnya jaringan besar membutuhkan data besar pula, sebagaimana model apa pun: tanpa cukup data, kapasitas berubah menjadi mesin hafalan (ingat overfitting di Section Dasar Machine Learning).
  4. Scaling tetap wajib: jaringan saraf sensitif terhadap skala masukan — StandardScaler di-fit pada data latih sebelum kedua model dilatih, persis disiplin anti-kebocoran kita.

Daerah yang Layak dan Tidak Layak #

Deep learning bukan sekadar “versi lebih baik” dari model biasa — ia alat dengan daerah kerja yang jelas:

SituasiLayak deep learning?Alasan
Citra, audio, teks panjangYaPola hierarkisnya dalam; fitur tangan kalah canggih
Data tabular kecil-menengahUmumnya tidakGradient boosting/linear lebih akurat, cepat, mudah dijelaskan
Data tabular raksasa + hubungan rumitKadangPerlu eksperimen jujur melawan baseline gradient boosting
Butuh interpretasi ketatHati-hatiLapisan menengah sulit dibaca (lihat chapter Explainable AI)
Sumber daya terbatasTidakPelatihan dan penyajian menuntut komputasi besar

Catatan terakhir yang sering dilupakan: deep learning tidak membatalkan semua yang kita pelajari — split data, evaluasi, baseline, kebocoran, penskalaan, semuanya tetap berlaku dan justru lebih kritis karena jumlah parameternya besar. Fondasinya sama; hanya bentuk alatnya yang berubah.

Rangkuman #

  • Neuron = gabungan linear (bobot, bias) plus fungsi aktivasi non-linear; tanpa aktivasi, susunan neuron apa pun tetap hanya model linear.
  • Lapisan tersembunyi membangun representasi bertingkat: pola sederhana dirangkai jadi konsep besar — “deep” merujuk kedalaman lapisan ini.
  • Pada data konsentris, model linear gagal total (0,467) sementara MLP 8 neuron memisahkan sempurna — batas non-linear adalah keunggulan intinya.
  • Kapasitas besar menuntut data besar: parameter yang banyak tanpa cukup data berujung hafalan; seluruh disiplin evaluasi dan anti-kebocoran tetap berlaku.
  • Deep learning unggul di citra/audio/teks; untuk tabular kecil-menengah, gradient boosting biasanya lebih praktis dan setara atau lebih baik.

Teknik-teknik lanjutan yang kita jelajahi sepanjang Section ini — dari deteksi anomali sampai deep learning — memancarkan pesona yang bisa membuat kita lupa bertanya: apakah semua ini sepadan? Chapter penutup section mengajukan pertanyaan itu dengan jujur: Batasan Teknik Lanjutan .

Referensi #

  1. scikit-learn — MLPClassifier
  2. scikit-learn — Preprocessing
  3. scikit-learn — Model evaluation