İleri yayılım
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 5/78
- 5 dk
İleri yayılım, girdinin katmanlardan geçerek çıktı üretmesidir.
İleri yayılım
İleri yayılım, girdinin katmanlar boyunca sırayla dönüştürülüp çıktıya ulaşmasıdır. İki katmanlı bir sınıflandırıcıda:
z1 = X @ W1 + b1 # (n, gizli)
h = np.maximum(0, z1) # ReLU
z2 = h @ W2 + b2 # (n, sınıf) "logit"ler
p = softmax(z2) # satır başına olasılıkAğ eğitilirken önce ileri yayılımla tahmin yapılır, sonra hata geri yayılımla ağırlıklara dağıtılır; bunu autograd grubunda göreceksin.
Çapraz entropi kaybı
Sınıflandırmada tahminin kalitesi, doğru sınıfa verilen olasılığın negatif logaritmasıyla ölçülür. Doğru sınıfa 1'e yakın olasılık veren tahmin düşük, 0'a yakın veren yüksek kayıp alır:
def capraz_entropi(p, y):
return -np.log(p[np.arange(len(y)), y]).mean()
p = np.array([[0.7, 0.2, 0.1], [0.1, 0.1, 0.8]])
print(round(capraz_entropi(p, np.array([0, 2])), 3)) # 0.290p[np.arange(n), y] her satırdan doğru sınıfın olasılığını seçen gelişmiş indekslemedir.
Uygulama İki katmanlı ileri yayılım
Verilen ağırlıklarla iki katmanlı ağın ileri yayılımını yap: ReLU gizli katman, softmax çıktı (satır başına, axis=1). Olasılıkların şeklini ve satır toplamlarını np.round(..., 3) ile, ardından y için çapraz entropi kaybını round(..., 3) ile yazdır.
Başlangıç kodu
import numpy as np
rng = np.random.default_rng(0)
X = rng.normal(size=(4, 3))
y = np.array([0, 1, 2, 1])
W1 = rng.normal(size=(3, 5))
b1 = np.zeros(5)
W2 = rng.normal(size=(5, 3))
b2 = np.zeros(3)
# buraya yazÖrnek çözüm
import numpy as np
rng = np.random.default_rng(0)
X = rng.normal(size=(4, 3))
y = np.array([0, 1, 2, 1])
W1 = rng.normal(size=(3, 5))
b1 = np.zeros(5)
W2 = rng.normal(size=(5, 3))
b2 = np.zeros(3)
h = np.maximum(0, X @ W1 + b1)
z = h @ W2 + b2
e = np.exp(z - z.max(axis=1, keepdims=True))
p = e / e.sum(axis=1, keepdims=True)
print(p.shape)
print(np.round(p.sum(axis=1), 3))
print(round(-np.log(p[np.arange(len(y)), y]).mean(), 3))Beklenen çıktı
(4, 3) [1. 1. 1. 1.] 1.539
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Softmax'tan önceki ham çıktılara ne ad verilir?
- Etiket
- Logit Doğru cevap
- Olasılık
- Gradyan
Açıklama: Logitler sınırsız skorlardır; softmax onları olasılığa çevirir.
2 Her satırdan doğru sınıfın olasılığını seç.
dogru = p[np.____(len(y)), y]
dogru = p[np.arange(len(y)), y]
Açıklama: np.arange satır indekslerini, y sütun indekslerini verir.
3 Adımları eşleştir.
| Kavram | Anlamı |
|---|---|
X @ W1 + b1 |
Birinci doğrusal adım |
np.maximum(0, ·) |
ReLU |
h @ W2 + b2 |
Logitler |
-log p[doğru] |
Çapraz entropi |