CodeBlanks Logo Icon CodeBlanks

Aktivasyon

Aktivasyon fonksiyonu, doğrusal olmayanlık ekler ve ReLU en yaygın olanıdır.

Aktivasyon fonksiyonları

Aktivasyon fonksiyonu ağa doğrusal olmama kazandırır. En yaygınları:

sigmoid = lambda z: 1 / (1 + np.exp(-z))   # (0, 1)
tanh    = np.tanh                            # (-1, 1)
relu    = lambda z: np.maximum(0, z)         # [0, ∞)
z = np.array([-2.0, 0.0, 2.0])
print(relu(z), np.tanh(z).round(3))

Gizli katmanlarda varsayılan seçim ReLU'dur: hesaplaması ucuzdur ve pozitif bölgede gradyanı sönmez.

Çıktı aktivasyonları

Çıktı katmanının aktivasyonu probleme göre seçilir:

  • Regresyon: aktivasyon yok (doğrusal).
  • İkili sınıflandırma: sigmoid → tek olasılık.
  • Çok sınıflı: softmax → toplamı 1 olan olasılıklar.
def softmax(z):
    e = np.exp(z - z.max())   # sayısal kararlılık için en büyüğü çıkar
    return e / e.sum()
print(softmax(np.array([2.0, 1.0, 0.1])).round(3))   # [0.659 0.242 0.099]

En büyük değeri çıkarmak sonucu değiştirmez ama exp'in taşmasını önler.

Uygulama Softmax

Sayısal olarak kararlı softmax(z) fonksiyonunu yaz (en büyüğü çıkar). [1, 2, 3] için sonucu np.round(..., 3) ile, ardından [1001, 1002, 1003] için sonucun aynı olduğunu np.allclose ile yazdır.

Başlangıç kodu

model.py
import numpy as np

# buraya yaz

Örnek çözüm

model.py
import numpy as np

def softmax(z):
    e = np.exp(z - z.max())
    return e / e.sum()

print(np.round(softmax(np.array([1.0, 2.0, 3.0])), 3))
print(np.allclose(softmax(np.array([1001.0, 1002.0, 1003.0])), softmax(np.array([1.0, 2.0, 3.0]))))

Beklenen çıktı

[0.09  0.245 0.665]
True

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Sigmoid'in derin ağlardaki temel sorunu nedir?

  • Negatif çıktı verir
  • Doğrusaldır
  • Uçlarda gradyanı sıfıra yaklaşır (sönme) Doğru cevap
  • Hesaplanamaz

Açıklama: Sigmoid'in türevi en fazla 0.25'tir; katmanlar boyunca çarpılınca gradyan hızla küçülür.

2 ReLU'yu yaz.

Soru
relu = lambda z: np.____(0, z)
Cevap
relu = lambda z: np.maximum(0, z)

Açıklama: np.maximum eleman bazlı en büyüğü alır; np.max dizinin en büyüğünü verir.

3 Aktivasyonları eşleştir.

Kavram Anlamı
ReLU max(0, z)
sigmoid (0, 1) aralığı
tanh (-1, 1) aralığı
softmax Olasılık dağılımı

İleri seviye bölümündeki tüm dersler