Sigmoid
Sigmoid fonksiyonu, herhangi bir gerçek sayıyı 0 ile 1 arasında bir değere dönüştürür. Formülünü, gradyanını, olasılık çıktılarını, kapı işlevlerini ve PyTorch kodunu ele alır.
Sigmoid fonksiyonu σ(x) = 1 / (1 + e^(−x)), herhangi bir gerçek sayıyı S biçimli bir eğri boyunca 0 ile 1 arasında bir değere eşler: büyük negatif girdiler 0'a yakın, büyük pozitif girdiler 1'e yakın çıktı verir; 0 girdisi ise tam olarak 0,5 verir. Makine öğrenmesinde (ML) “sigmoid” neredeyse her zaman, lojistik regresyonda doğrusal bir puanı olasılığa dönüştüren eğrinin aynısı olan lojistik fonksiyonu ifade eder. Bir sinir ağında (NN) sigmoid üç rol oynar: Başlangıçta gizli katmanların aktivasyon fonksiyonuydu, ikili ve çok etiketli çıktılarda son puanı olasılığa dönüştürür, ayrıca yinelemeli hücrelerin ve diğer kapılı katmanların kapılarında yumuşak bir açma-kapama anahtarı işlevi görür. Gizli katmanlarda artık ReLU gibi fonksiyonlar kullanıldığından, güncel modellerde sigmoidlerin çoğu çıktılarda ve kapılarda yer alır.
Formül ve Özellikler#
Sigmoid orta noktasına göre simetriktir: σ(−x) = 1 − σ(x). Tersi olan logit fonksiyonu log(p / (1 − p)), olasılığı yeniden log-olasılık oranına dönüştürür. Bu nedenle sigmoid öncesindeki bir ağın ham çıktısına logit denir. Türevinin yalın biçimi σ′(x) = σ(x)(1 − σ(x)) şeklindedir; x = 0'da 0,25 ile zirveye ulaşır ve eğri her iki uçta düzleştikçe sıfıra doğru düşer. Bu davranış doyum olarak adlandırılır. Aşağıdaki PyTorch kodu, beş noktadaki çıktıları ve gradyanları hesaplar:
import torch
x = torch.tensor([-6.0, -2.0, 0.0, 2.0, 6.0], requires_grad=True)
y = torch.sigmoid(x)
# Backpropagate to get the derivative sigmoid(x) * (1 - sigmoid(x)) at each input
y.sum().backward()
print(f"Sigmoid: {[round(v, 4) for v in y.tolist()]}")
print(f"Gradient: {[round(v, 4) for v in x.grad.tolist()]}")Kod, [0.0025, 0.1192, 0.5, 0.8808, 0.9975] sigmoid değerlerini ve [0.0025, 0.105, 0.25, 0.105, 0.0025] gradyanlarını yazdırır. ±6'da çıktı, sınır değerinden 0,0025'ten daha az uzaktadır ve gradyan sıfırdakinden 100 kat küçüktür; bu aralıktaki bir girdi, kendisini üreten ağırlıkları neredeyse hiç değiştirmez.
Gizli Katmanlarda Sigmoid#
İlk çok katmanlı ağlar her gizli katmanda sigmoid kullanıyordu ve bu iki soruna yol açıyordu. Geri yayılım, her katmandan bir aktivasyon türevini çarpar. Sigmoid türevi 0,25'i hiç aşmadığı için on sigmoid katman boyunca yalnızca bu türevler gradyanı en fazla 0,25¹⁰ ile, yani milyonda birden daha azına düşürür; bu, kaybolan gradyan sorunudur. Sigmoid çıktıları ayrıca her zaman pozitiftir; bu nedenle çıktıları alan bir nöronun tüm ağırlık gradyanları her güncellemede aynı işareti taşır ve ağırlıklar optimuma doğru yalnızca zikzak çizerek ilerleyebilir. Tanh, çıktıları sıfır çevresinde merkezler; Xavier Glorot ve Yoshua Bengio ise 2010'da sigmoid'in pozitif ortalamasının, rastgele başlatılmış bir derin ağın en üst gizli katmanını doyuma sürüklediğini gösterdi. ReLU her iki sorunu da ortadan kaldırarak gizli katmanların varsayılanı oldu; SiLU gibi yumuşak ardılları, x · σ(x), içlerinde kapı olarak yine sigmoid kullanır.
Çıktı Katmanı Olarak Sigmoid#
İkili sınıflandırmada tek bir z çıktısı p = σ(z) değerine, yani pozitif sınıfın tahmin edilen olasılığına dönüşür; p üzerinde 0,5 eşiği kullanmak, z üzerinde 0 eşiği kullanmakla aynıdır. Eğitim, sigmoid işlevini ikili çapraz entropiyle eşleştirir; bu işlevin logit'e göre gradyanı basitçe p − y, yani tahmin edilen olasılık eksi etikettir. Çerçeveler sayısal kararlılık için bu ikisini birleştirir: PyTorch'un BCEWithLogitsLoss işlevi ham logitleri alır ve içeride log-sum-exp yöntemini kullanır; böylece tam olarak 0'a veya 1'e yuvarlanmış bir olasılığın logaritmasını alma gereği ortadan kalkar.
Etiketlerin birlikte görülebildiği durumlarda model, çok etiketli sınıflandırma adı verilen düzende her etiket için bir sigmoid kullanır. Softmax ise sınıfları toplamı 1 olan tek bir olasılık değeri için yarıştırır; bu, birbirini dışlayan etiketler için uygundur:
import torch
# Logits from a classifier for the labels "person", "backpack", and "car"
logits = torch.tensor([2.0, 1.5, -3.0])
# Sigmoid scores each label on its own; softmax makes the labels compete for one total
sigmoid_probs = torch.sigmoid(logits)
softmax_probs = torch.softmax(logits, dim=0)
print(f"Sigmoid: {[round(p, 3) for p in sigmoid_probs.tolist()]}, sum {sigmoid_probs.sum():.3f}")
print(f"Softmax: {[round(p, 3) for p in softmax_probs.tolist()]}, sum {softmax_probs.sum():.3f}")Sigmoid puanlarının toplamı [0.881, 0.818, 0.047] değeriyle 1,746'dır; dolayısıyla “kişi” ve “sırt çantası” puanları da 0,5'i geçer. Softmax ise aynı logitleri [0.62, 0.376, 0.004] değerine böler ve yalnızca “kişi” 0,5'in üzerinde kalır. YOLO26 tespit modelleri, her sınıfı BCEWithLogitsLoss ile eğitilmiş bağımsız bir sigmoid kullanarak puanlar; bu nedenle bir kutunun sınıf puanlarının toplamının 1 olması gerekmez. YOLO26 poz modelleri ise anahtar noktaların görünürlük logitlerine sigmoid uygulayarak anahtar noktanın görünür olma olasılığını verir.
Kapı Olarak Sigmoid#
Sigmoid çıktısı 0 ile 1 arasında olduğundan, türevlenebilirliğini korurken başka bir sinyali öğe öğe tamamen engellenmişten tamamen geçirilmişe kadar ölçekleyebilir:
- LSTM ve GRU hücreleri: Sigmoid kapıları, her zaman adımında eski belleğin ne kadarının korunacağına, yeni içeriğin ne kadarının yazılacağına ve durumun ne kadarının gösterileceğine karar verir; tanh ise içeriğin kendisini biçimlendirir.
- SwiGLU: Birçok büyük dil modelinin (LLM) ileri beslemeli katmanları, öğrenilmiş bir izdüşümü SiLU ile etkinleştirilmiş ikinci bir izdüşümle çarpar; bu, sigmoid üzerine kurulu bir kapıdır.
- SigLIP: Bu görüntü-metin modeli, bir grup içindeki her görüntü-başlık çiftini kendi sigmoid'iyle puanlayarak eşleşme olasılığını evet veya hayır olarak verir; bu nedenle kayıp için grup genelinde normalleştirme gerekmez.
Sigmoid ve İlgili Fonksiyonlar#
- Lojistik fonksiyon: Makine öğrenmesinde sigmoid'in eş anlamlısıdır. Matematikte “sigmoid”, tanh ve hata fonksiyonu dahil başka S biçimli eğrileri de kapsar.
- Softmax: Tüm vektörü toplamı 1 olan olasılıklara normalleştirir. İki sınıf için, (z₁, z₂) logitlerine uygulanan softmax ilk sınıf için σ(z₁ − z₂) sonucunu verir; dolayısıyla iki çıktılı softmax ile tek çıktılı sigmoid aynı modeli tanımlar.
- Tanh: Sıfır çevresinde merkezlenmiş −1 ile 1 aralığında çıktılar veren ve maksimum türevi 1 olan, tanh(x) = 2σ(2x) − 1 biçimindeki ölçeklenmiş bir sigmoid'dir.
- Sert sigmoid: Mobil donanımda üstel işlemden kaçınan parçalı doğrusal bir yaklaşımdır. MobileNetV3, x = −3'ün altında 0, x = 3'ün üstünde 1 ve bu iki değer arasında düz bir çizgi veren ReLU6(x + 3) / 6 ifadesini kullanır.










