Dari perseptron hingga arsitektur modern — pahami bagaimana jaringan saraf belajar dan implementasikan dengan PyTorch.
9.1 Dasar Jaringan Saraf
Jaringan saraf adalah komposisi fungsi sederhana (neuron) yang diorganisasi dalam lapisan. Setiap neuron menghitung jumlah tertimbang input, menambahkan bias, dan menerapkan fungsi aktivasi.
y = f(Σ wᵢxᵢ + b) di mana f adalah fungsi aktivasi
ReLU
f(x) = max(0, x)
Default untuk hidden layer. Cepat, tidak ada vanishing gradient.
Sigmoid
f(x) = 1/(1+e⁻ˣ)
Output layer untuk klasifikasi biner. Bisa mengalami vanishing.
Tanh
f(x) = (eˣ−e⁻ˣ)/(eˣ+e⁻ˣ)
Berpusat di nol. Bagus untuk RNN. Tetap bisa vanishing.
Softmax
f(xᵢ) = eˣⁱ/Σeˣʲ
Output layer untuk multi-kelas. Menghasilkan probabilitas.
9.2 Backpropagation
Backpropagation adalah algoritma yang menghitung gradien loss terhadap setiap bobot menggunakan aturan rantai, memungkinkan optimasi berbasis gradien.
Masalah utama:Vanishing gradients di jaringan dalam (diselesaikan oleh ReLU, batch norm, residual connections). Exploding gradients (diselesaikan oleh gradient clipping, inisialisasi yang tepat).
Rumus ukuran output: O = ⌊(I − K + 2P) / S⌋ + 1 di mana I=input, K=kernel, P=padding, S=stride. Kernel 3×3 dengan padding=1 mempertahankan dimensi spasial.
Gunakan kembali model yang dilatih sebelumnya pada dataset besar (misalnya ImageNet) dan fine-tune untuk tugas spesifik Anda. Ini cara sebagian besar deep learning dilakukan di dunia nyata.
from torchvision import models
# Muat ResNet-18 yang sudah dilatih
model = models.resnet18(pretrained=True)
# Bekukan semua layerfor param in model.parameters():
param.requires_grad = False# Ganti layer final untuk tugas kita
num_features = model.fc.in_features # 512
model.fc = nn.Linear(num_features, 5) # 5 kelas# Hanya latih layer baru
optimizer = optim.Adam(model.fc.parameters(), lr=0.001)
# Setelah beberapa epoch, buka kunci layer terakhir untuk fine-tuningfor param in model.layer4.parameters():
param.requires_grad = True
optimizer = optim.Adam([
{'params': model.layer4.parameters(), 'lr': 1e-4},
{'params': model.fc.parameters(), 'lr': 1e-3}
])
Latihan: Fine-tune ResNet-18 pada dataset gambar kustom (misalnya kucing vs anjing dari Kaggle). Bandingkan: (1) training dari nol, (2) backbone dibekukan + head baru, (3) fine-tuned backbone. Laporkan akurasi dan waktu training.