Lewati ke konten
Dasar-Dasar Neural Network20 menit baca

Apa yang Sebenarnya Dihitung Neural Network

Pelajaran gratisinteraktif

Sebuah neuron hanyalah jumlah berbobot ditambah satu fungsi yang membengkokkan. Tumpuk beberapa, dan garis lurus berubah menjadi batas apa pun yang Anda butuhkan.

Yang akan Anda bisa

  • Menuliskan apa yang dihitung satu neuron
  • Menjelaskan kenapa tanpa aktivasi nonlinear, kedalaman tidak ada gunanya
  • Membaca efek learning rate pada gradient descent

Kata "neural" membuat banyak orang membayangkan otak. Lupakan itu sebentar. Satu neuron buatan melakukan tiga hal: mengalikan setiap masukan dengan sebuah bobot, menjumlahkannya bersama sebuah bias, lalu melewatkan hasilnya ke sebuah fungsi yang disebut aktivasi.

a = φ(w₁x₁ + w₂x₂ + … + wₙxₙ + b) = φ(w · x + b)
x
vektor masukan
w
bobot — yang dipelajari
b
bias — juga dipelajari
φ
fungsi aktivasi, mis. ReLU: φ(z) = max(0, z)
Satu neuron

Kalau φ adalah sigmoid, satu neuron ini persis regresi logistik. Batas keputusannya adalah tempat w · x + b = 0 — dan itu selalu garis lurus (atau bidang datar, di dimensi lebih tinggi).

Kenapa nonlinearitas adalah intinya#

Satu lapisan adalah banyak neuron yang membaca masukan yang sama. Jaringan "dalam" adalah lapisan yang ditumpuk: keluaran satu lapisan menjadi masukan lapisan berikutnya. Godaannya adalah berpikir bahwa menumpuk lebih banyak lapisan otomatis memberi model yang lebih kuat. Tanpa φ, itu salah.

W₂(W₁x + b₁) + b₂ = (W₂W₁)x + (W₂b₁ + b₂) = W′x + b′
Dua lapisan linear runtuh menjadi satu
Loading simulation…

Lapisan membengkokkan ruang#

Dengan dua masukan, setiap neuron di lapisan tersembunyi pertama menggambar satu garis di bidang. ReLU "mematikan" satu sisi garis itu. Lapisan berikutnya menggabungkan potongan-potongan itu, jadi batas akhirnya tersusun dari segmen lurus — dan dengan cukup banyak segmen, bentuknya bisa melengkung sejauh yang dibutuhkan datanya.

Loading simulation…

Dengan 2 neuron ReLU, XOR bisa diselesaikan, tapi pelatihan sering tersangkut tergantung bobot awalnya. Menambah neuron jarang dibutuhkan untuk representasinya — tapi sangat membantu optimasinya. Itu pola yang akan Anda lihat berulang kali di deep learning: jaringan yang lebih besar dari yang "seharusnya" perlu justru lebih mudah dilatih.

Bagaimana bobotnya belajar#

Pelatihan berarti mencari bobot yang membuat loss — ukuran seberapa salah prediksinya — sekecil mungkin. Gradient descent melakukannya dengan langkah kecil berulang: hitung arah di mana loss naik paling cepat (gradien), lalu melangkah ke arah sebaliknya.

w ← w − η · ∂L/∂w
L
loss pada batch saat ini
∂L/∂w
gradien loss terhadap bobot
η
learning rate — besar langkahnya
Aturan pembaruan gradient descent
Loading simulation…

Neural network nyata punya jutaan bobot, bukan dua, tapi aturannya sama. Yang membuatnya mungkin adalah backpropagation: cara menghitung gradien untuk setiap bobot sekaligus dengan aturan rantai, dengan biaya kira-kira sebesar satu forward pass tambahan. Itu topik pelajaran berikutnya.

Hal yang sama, di PyTorch#

mlp.py· python
import torchfrom torch import nn model = nn.Sequential(    nn.Linear(2, 8),   # 2 masukan -> 8 neuron tersembunyi    nn.ReLU(),         # tanpa ini, model tetap linear    nn.Linear(8, 1),   # 8 -> 1 logit) loss_fn = nn.BCEWithLogitsLoss()optimizer = torch.optim.SGD(model.parameters(), lr=0.1) for X_batch, y_batch in loader:    optimizer.zero_grad()            # buang gradien langkah sebelumnya    loss = loss_fn(model(X_batch), y_batch)    loss.backward()                  # backpropagation    optimizer.step()                 # w <- w - lr * grad
Checkpoint

Sebuah jaringan punya 10 lapisan Linear tanpa fungsi aktivasi di antaranya. Apa yang bisa ia pelajari?

Checkpoint

Loss Anda naik dan menjadi NaN setelah beberapa langkah. Apa tersangka pertama?