Ana içeriğe geç

Softplus: Bilinmeye Değer Pürüzsüz Aktivasyon Fonksiyonu

Bu rehber Softplus’un matematiksel özelliklerini, avantaj ve tavizlerini, PyTorch’taki uygulamasını ve ReLU’dan ne zaman geçiş yapılacağını açıklar.
· 9 dk. oku

Yapay Zeka ile Keşfedin

ReLU yıllardır derin öğrenmede varsayılan aktivasyon fonksiyonu oldu. Bunun iyi bir nedeni var — basittir ve çoğu durumda iyi çalışır. Ancak eğitim sırasında nöronlar sıfır çıktısı üretmeye başladığında öğrenmeyi durdururlar, gradyanları sıfır olur ve geri yayılım ağırlıkları güncelleyemez. Daha derin ağlarda bu sorun birden fazla nöronu etkileyebilir ve modelinizin verinizdeki desenleri yakalama yeteneğini azaltabilir.

Basitçe söylemek gerekirse: ağınız öğrenmeyi bırakır.

Softplus, bu sorunu ele alan pürüzsüz, türevlenebilir bir alternatif sunar ve bunu yaparken ReLU’nun çoğu avantajını korur. Pozitif girdiler için ReLU’nun davranışını yaklaştırır ancak negatif değerler için sıfır olmayan gradyanlar sağlar. Bu da nöronların eğitim boyunca aktif kalmasını sağlar.

Bu yazıda Softplus’un ne olduğunu, ReLU ile matematiksel olarak nasıl karşılaştırıldığını ve diğer aktivasyon fonksiyonlarına ne zaman tercih edilmesi gerektiğini öğreneceksiniz.

Derin öğrenmeye tamamen yeniyseniz, sinir ağlarında aktivasyon fonksiyonlarına dair kapsamlı rehberimize göz atın.

Softplus Fonksiyonu Nedir?

Softplus, ReLU’nun türevlenebilir bir yaklaştırması olarak davranan pürüzsüz bir aktivasyon fonksiyonudur.

Fonksiyon herhangi bir gerçek sayıyı girdi olarak alır ve pozitif bir değer üretir. Softplus, ReLU gibi sıfırda keskin bir köşeye sahip değildir. O geçiş noktasından pürüzsüzce kıvrılır.

Matematiksel tanımı şöyledir:

Softplus formülü

Burada:

  • x, girdi değeridir
  • e, Euler sayısıdır (yaklaşık 2,718)
  • ln, doğal logaritmadır

Büyük pozitif girdiler için Softplus, girdinin kendisine yakın değerler döndürür. Negatif girdiler için sıfır yerine küçük pozitif değerler verir.

Softplus’un Türevi

Softplus’un türevi lojistik sigmoid fonksiyonudur.

Bu şu anlama gelir:

Softplus türevi

Burada σ(x) daha önce muhtemelen gördüğünüz sigmoid fonksiyonudur. 

Bu türev özelliği, geri yayılım sırasında pürüzsüz gradyan akışına ihtiyacınız olduğunda Softplus’u kullanışlı kılar. Gradyanlar asla sıfıra düşmez. Bu da nöronların ağırlıklarını her zaman güncelleyebileceği ve öğrenmeye devam edebileceği anlamına gelir.

Aşırı uçlardaki davranış

Softplus, girdinin büyük ve pozitif ya da büyük ve negatif olmasına bağlı olarak farklı davranır.

Büyük pozitif değerler için:

Büyük pozitif değerler için Softplus davranışı

Büyük negatif değerler için:

Görüntü 4 - Büyük negatif değerler için Softplus davranışı

Softplus’un ReLU’yu bu kadar iyi yaklaştırmasının nedeni budur. x pozitif ve büyük olduğunda, her iki fonksiyon da yaklaşık olarak aynı değeri döndürür.

Fark negatif girdilerde görünür. ReLU negatif girdiler için tam olarak sıfır verirken Softplus küçük pozitif değerler üretir.

Bu küçük fark ölü nöron sorununu önler. Softplus kullanan nöronlar, gradyanları tamamen yok olmadığı için negatif aktivasyonlardan kurtulabilir.

Matematiksel ve Hesaplamalı Özellikler

Softplus’un bilmeniz gereken matematiksel özellikleri vardır. Onlar, onu yalnızca ReLU’nun pürüzsüz bir sürümü olmaktan daha fazlası yapar.

Pürüzsüzlük ve türevlenebilirlik

Softplus her noktada sonsuz kez türevlenebilir.

Bu, türevi istediğiniz kadar alabileceğiniz ve fonksiyonun pürüzsüz kalacağı anlamına gelir. Matematiksel olarak, analitik bir fonksiyondur.

ReLU ise sıfırda bir kırığa sahiptir — türevin var olmadığı keskin bir köşe. Bu, pürüzsüz gradyan varsayan optimizasyon algoritmalarında sorunlara yol açabilir.

Derin öğrenmede, kayıp yüzeyi pürüzsüz olduğunda pürüzsüz optimizasyon daha iyi çalışır. İkinci dereceden optimizasyon yöntemleri veya pürüzsüz gradyan geçişlerine dayanan herhangi bir algoritma kullanıyorsanız, Softplus size bu pürüzsüzlüğü sağlar.

Sayısal kararlılık

Üstel hesaplamalar, girdiler büyüdüğünde taşma sorunlarına neden olabilir.

Derin öğrenme çatıları bunu bir threshold parametresiyle ele alır. Girdi bu eşiği aştığında, fonksiyon logaritma hesaplamaktan doğrusal çıktı döndürmeye geçer.

Nasıl çalıştığı şöyledir:

  • Küçük girdiler için: Softplus’u doğrudan hesaplayın
  • Eşiği aşan büyük girdiler için: girdileri doğrudan döndürün

Bu, sayısal taşmayı önlerken ihtiyacınız olan davranışı korur. Zaten büyük pozitif girdiler için Softplus doğrusal bir fonksiyonu yaklaştırır, bu nedenle geçiş çıkışı anlamlı biçimde etkilemez.

Diğer fonksiyonlarla ilişki

Softplus, bazı diğer aktivasyon ve olasılık fonksiyonlarıyla bağlantılıdır. Şöyle:

  • Sigmoid: Daha önce gördüğünüz gibi, Softplus’un türevi sigmoid fonksiyonudur. Bu, Softplus’un sigmoidin integrali olduğu anlamına gelir; şekillerini düşündüğünüzde bu mantıklıdır.

  • LogSumExp: Softplus aslında LogSumExp fonksiyonunun özel bir halidir. İki girdi için, LogSumExp(0, x) = ln(1 + e^x) = Softplus(x). Bu, Softplus’u makine öğreniminde kullanılan sayısal kararlılık tekniklerine bağlar.

  • Softmax: LogSumExp, Softmax’in temelidir; dolayısıyla Softplus bu soy paylaşımına sahiptir. Her iki fonksiyon da sayısal kararlılık için log-exp hilesini kullanır.

  • Logit fonksiyonu: Logit, sigmoidin tersidir. Sigmoid Softplus’un türevi olduğuna göre, bu üç fonksiyon olasılık kuramında bağlantılı bir aile oluşturur.

  • Konveks eşlenik: Konveks analizde, Softplus’un konveks eşleniği negatif ikili entropidir. Bu, Softplus’u bilgi kuramı ve olasılıksal modellemede kullanılan entropi maksimizasyonu ilkelerine bağlar.

Olasılıksal modeller veya Bayesçi çerçevelerle çalışıyorsanız, bu entropi bağlantısı, aktivasyonlarınızın maksimum entropi ilkeleriyle uyumlu olmasını sağlamak için Softplus’u doğal bir seçim haline getirir.

Softplus Kullanmanın Avantajları

Softplus, ReLU’nun iyi başa çıkamadığı belirli sorunları çözer. İşte bunlardan dördü.

Pürüzsüz ve türevlenebilir

Softplus eğrinin her noktasında pürüzsüzdür.

Bu, geri yayılım sırasında gradyanların ani sıçrama veya kopmalar olmadan sürekli akması demektir. Bir ağı eğitirken pürüzsüz gradyan akışı daha istikrarlı ağırlık güncellemelerine ve daha iyi yakınsama davranışına yol açar.

ReLU’nun sıfırdaki keskin köşesi gradyan süreksizliklerine neden olabilir. Softplus’ta bu sorun yoktur.

Ölü nöronları önler

Softplus, büyük negatif girdilerde bile asla tam olarak sıfır üretmez.

Bu, her nöronun öğrenmeye devam edebileceği anlamına gelir çünkü gradyanlar tamamen yok olmaz. ReLU’da sıfır üretmeye başlayan bir nöron sonsuza dek orada takılı kalabilir — gradyanı sıfırdır, dolayısıyla ağırlık güncellemeleri onu hareket ettirmez.

Softplus size bir güvenlik ağı sunar. Nöronlar negatif aktivasyonlardan toparlanabilir ve yeniden ağa katkı sağlamaya başlayabilir.

Çıktı her zaman pozitiftir

Softplus, herhangi bir girdi için negatif olmayan çıktıları garanti eder.

Bu, pozitif tahminler gerektiren modeller kurarken önemlidir. Poisson regresyonu müşteri, olay, tıklama gibi sayım verilerini modeller; negatif değerlerin anlamı yoktur. Üretici modeller de sıklıkla olasılık veya yoğunlukları temsil etmek için pozitif çıktılara ihtiyaç duyar.

Belirli görevler için daha uygundur

Bazı görevler pürüzsüz, sürekli aktivasyon davranışından fayda sağlar.

Pürüzsüz hedef fonksiyonlarına sahip regresyon görevleri, pürüzsüz aktivasyonlarla daha iyi çalışır. Sıcaklık, fiyat veya mesafe gibi sürekli değerleri tahmin ediyorsanız, Softplus verinizin altta yatan pürüzsüzlüğüyle daha iyi örtüşür.

Bayesçi modeller ve olasılıksal çerçeveler de pürüzsüz fonksiyonları tercih eder. Belirsizliği modelliyor veya olasılık dağılımlarıyla çalışıyorsanız, Softplus’un sürekli türevleri matematiksel işlemleri daha temiz ve daha kararlı kılar.

Bu alanlarda çalışıyorsanız, Softplus size ReLU’nun keskin geçişlerinden daha iyi teorik garantiler ve pratik sonuçlar sunar.

Sınırlamalar ve Tavizler

ReLU’yu tamamen terk etmeden önce Softplus hakkında bilmeniz gereken bazı sınırlamalar var. İşte üçü.

Daha yüksek hesaplama maliyeti

ReLU basit bir maksimum işlemi kullanır: max(0, x).

Softplus ise üstel ve logaritmaları hesaplar: ln(1 + e^x). Bu işlemler daha yavaştır; özellikle binlerce nöronlu büyük ağlar boyunca milyonlarca kez çalıştırıldıklarında.

Fark birikir. Bu hesaplama yükü eğitim süresini artırabilir.

Daha yavaş yakınsama

Softplus daha pürüzsüz gradyanlara sahiptir; bu kâğıt üzerinde kulağa iyi gelir.

Ancak pürüzsüz her zaman hızlı demek değildir. ReLU’nun keskin geçişleri seyrek aktivasyonlar yaratır — birçok nöron tam olarak sıfır üretir. Bu seyreklik, geri yayılım sırasında gradyanların ağ boyunca daha hızlı yayılmasına yardımcı olur.

Softplus’ta bu seyreklik yoktur. Her nöron sıfır olmayan bir değer üretir; bu da daha fazla hesaplama ve derin mimarilerde potansiyel olarak daha yavaş yakınsama anlamına gelir.

Uygulamada daha az yaygın

ReLU yıllardır derin öğrenmeye hakimdir.

Bu da etrafında daha fazla dokümantasyon, problem/çözüm ve genel kaynak olduğu anlamına gelir. Softplus aynı muameleyi görmez. Daha az kişi kullanır; bu nedenle daha az topluluk bilgisi, daha az Stack Overflow yanıtı ve daha az önceden eğitilmiş model vardır.

Softplus’u seçtiğinizde, daha az destekli ve potansiyel olarak daha fazla kendi başınıza hata ayıklama yapacağınız bir yolu seçmiş olursunuz.

PyTorch’ta Softplus

PyTorch, yerleşik destek ve davranışını kontrol eden iki parametre ile Softplus’u kullanmayı kolaylaştırır.

Referans olması için, kullandığım PyTorch sürümü şu:

import torch
import torch.nn as nn

print(torch.__version__)

PyTorch sürüm 2.8.0

Temel uygulama şöyle:

# Create a Softplus activation function
softplus = nn.Softplus(beta=1, threshold=20)

# Apply it to some input
x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])
output = softplus(x)

print(output)

Bir tensöre uygulanan Softplus

Yeterince basit. Ancak bu iki parametre — beta ve threshold — fonksiyonun davranışını değiştirir. Gelin bunları daha derinlemesine inceleyelim.

Beta parametresi

beta parametresi, Softplus eğrisinin pürüzsüzlüğünü kontrol eder.

betayı artırdığınızda fonksiyon daha dik hale gelir ve ReLU’ya yaklaşır. Azalttığınızda fonksiyon daha pürüzsüz ve kademeli olur. Kodda çalışma şekli şöyledir:

x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])

# Steeper activation (closer to ReLU)
softplus_steep = nn.Softplus(beta=2, threshold=20)
output_steep = softplus_steep(x)

# Smoother activation
softplus_smooth = nn.Softplus(beta=0.5, threshold=20)
output_smooth = softplus_smooth(x)

print("Softplus - Steeper activation")
print(output_steep)

print()

print("Softplus - Smoother activation")
print(output_smooth)

Beta parametresini ayarlama

Varsayılan beta=1 çoğu durumda iyi çalışır. Bu değeri yalnızca, belirli görevler için aktivasyonun keskinliğini ayarlamanız gerektiğinde değiştirirsiniz.

Threshold parametresi

threshold parametresi, büyük girdiler için sayısal taşmayı önler.

Unutmayın, e^x hesaplamak, x büyük olduğunda patlayabilir. Girdi eşiği aştığında, PyTorch tam Softplus formülünü hesaplamaktan sadece girdiyi doğrudan döndürmeye geçer:

softplus = nn.Softplus(beta=1, threshold=20)

# Large input bypasses the exponential
large_input = torch.tensor([25.0])
print(softplus(large_input))

Threshold parametresini ayarlama

Varsayılan threshold=20 çoğu senaryo için uygundur. Bu noktada Softplus zaten doğrusal bir fonksiyonu yaklaştırdığından, geçiş sonuçları etkilemez.

Softplus Ne Zaman Kullanılır

Optimizasyon için gradyan pürüzsüzlüğüne ihtiyaç duyduğunuzda Softplus’u seçin. İkinci dereceden optimizasyon yöntemleri veya pürüzsüz kayıp yüzeyleri varsayan algoritmalar kullanıyorsanız, Softplus bu yöntemlerin dayandığı sürekli türevleri sağlar.

Modelinizin negatif olmayan çıktılara ihtiyaç duyduğu durumlarda kullanın. Sayım verileri, yoğunluk değerleri ve olasılık parametreleri pozitif kalmalıdır. Softplus bunu ek kısıtlar olmadan doğal olarak ele alır.

Sığ ağlar Softplus’tan derin olanlardan daha çok fayda sağlar. Yalnızca birkaç katmana sahip olduğunuzda, ReLU’nun ölü nöron sorunuyla tek bir nöronu bile kaybetmek performansı zedeler. Softplus tüm nöronları aktif ve öğrenir halde tutar.

Ayrıca olasılıksal modeller ve Bayesçi çerçeveler için de Softplus’u tercih edebilirsiniz. Pürüzsüz gradyanlar ve entropi bağlantıları matematiksel işlemleri daha temiz kılar. Enerji tabanlı modeller de Softplus’un sürekli doğasından faydalanır.

Sürekli gradyanları yorumlamanız gereken modeller Softplus ile daha iyi çalışır. Ağınızın girdilerdeki değişimlere nasıl yanıt verdiğini analiz ediyor veya gradyan akışını inceliyorsanız, pürüzsüz türevler size ReLU’nun keskin geçişlerinden daha net içgörüler sunar.

ReLU’nun hâlâ daha iyi olduğu durumlar

Kâğıt üzerinde daha iyi göründüğü ya da yeni ve havalı olduğu için Softplus’a geçmeyin.

  • Büyük, derin ağlar ReLU ile daha hızlı eğitilir. Softplus’un hesaplama yükü yüzlerce katman ve milyonlarca parametre boyunca birikir. ReLU’nun seyrekliğinin bellek ve hız açısından da faydası vardır.
  • Üretim sistemleri genellikle ReLU’yu tercih eder çünkü donanım optimizasyonları özellikle ona yöneliktir. Aynı donanımda Softplus ile eğitiminiz %10–20 daha yavaş olabilir.
  • Standart bilgisayarlı görü ve NLP görevleri genellikle Softplus’tan fayda görmez. Topluluk yıllarını ReLU etrafında mimarileri optimize etmeye harcadı ve aktivasyon fonksiyonunu değiştirmek bu bilgi birikimini yeniden inşa etmek demektir.

Çoğu proje için ReLU ile başlayın. Yalnızca Softplus’un özelliklerinin çözdüğü belirli sorunlarla karşılaştığınızda ona geçin.

Sonuç

Kısacası, Softplus ihtiyacınız olduğunda ReLU’ya pürüzsüz bir alternatiftir.

Varsayılan aktivasyon fonksiyonu olarak ReLU’nun yerini almayacak — ve alması da gerekmiyor. Softplus belirli sorunları çözer: sığ ağlardaki ölü nöronlar, negatif olmayan çıktılara ihtiyaç duyan modeller ve optimizasyon için pürüzsüz gradyan akışının önemli olduğu görevler.

Hesaplama hızının maliyeti karşılığında daha iyi matematiksel özellikler elde edersiniz. Çoğu derin öğrenme projesinde ReLU’nun sadeliği ve hızı kazanır. Ancak olasılıksal modeller, Bayesçi çerçeveler veya pürüzsüz hedef fonksiyonlarına sahip regresyon görevlerinde Softplus daha iyi bir seçenektir.

İkisini de deneyin. Deneyler yapın. Kararı özel sorununuz versin.

Daha fazlasını öğrenmek ister misiniz? Harika kaynaklarımıza göz atın:

Dario Radečić

Yazar

Dario Radečić

Hırvatistan merkezli Kıdemli Veri Bilimci. 700’ün üzerinde yayımlanmış makaleyle 10 M+ görüntüleme elde eden, önde gelen bir teknoloji yazarı. TPOT ile Makine Öğrenimi Otomasyonu kitabının yazarı.

Softplus SSS

Softplus aktivasyon fonksiyonu nedir?

Softplus, f(x) = ln(1 + e^x) olarak tanımlanan ve ReLU’nun türevlenebilir bir yaklaştırması olarak hizmet eden pürüzsüz bir aktivasyon fonksiyonudur. ReLU’nun sıfırda keskin bir köşesi varken, Softplus geçiş noktasından pürüzsüzce kıvrılır. Büyük pozitif girdiler için girdinin kendisine yakın değerler döndürür; negatif girdiler için ise sıfır yerine küçük pozitif değerler verir. Bu da sinir ağlarında ölü nöron sorununu önlemede onu kullanışlı kılar.

ReLU yerine ne zaman Softplus kullanmalıyım?

İkinci dereceden optimizasyon yöntemleri veya pürüzsüz kayıp yüzeyleri varsayan algoritmalar gibi durumlarda optimizasyon için gradyan pürüzsüzlüğüne ihtiyaç duyduğunuzda Softplus’u seçin. Modeliniz negatif olmayan çıktılar gerektiriyorsa (sayım verileri veya olasılık parametreleri gibi) ve sığ ağlarda, ölü ReLU sorunuyla bir nöronu bile kaybetmenin performansa zarar verdiği durumlarda idealdir. Softplus, olasılıksal modeller, Bayesçi çerçeveler ve pürüzsüz hedef fonksiyonlu regresyon görevlerinde iyi çalışır. Ancak hızın daha önemli olduğu büyük, derin ağlarda ve standart bilgisayarlı görü veya NLP görevlerinde ReLU’da kalın.

Softplus’un ReLU’ya göre başlıca avantajları nelerdir?

Softplus dört temel avantaj sunar: her noktada pürüzsüz ve türevlenebilirdir, bu da gradyan süreksizliklerini önler; asla tam olarak sıfır üretmediği için ölü nöronları önler ve tüm nöronların öğrenmeye devam etmesini sağlar; herhangi bir girdi için negatif olmayan çıktıları garanti eder; ve regresyon ile olasılıksal modelleme gibi pürüzsüz, sürekli aktivasyon davranışı gerektiren görevlere daha uygundur. Sürekli gradyan akışı, eğitim sırasında daha istikrarlı ağırlık güncellemelerine ve daha iyi yakınsamaya yol açar.

PyTorch’taki Softplus’ta beta ve threshold parametreleri nasıl çalışır?

Beta parametresi Softplus eğrisinin pürüzsüzlüğünü kontrol eder — beta’nın artırılması fonksiyonu daha dik ve ReLU’ya daha yakın yapar, azaltılması ise fonksiyonu daha pürüzsüz ve kademeli hale getirir. Threshold parametresi ise büyük girdiler için, girdi eşiği aştığında tam Softplus formülünü hesaplamaktan sadece girdiyi doğrudan döndürmeye geçerek sayısal taşmayı önler. Varsayılan değerler (beta=1, threshold=20) çoğu senaryo için uygundur.

Softplus ile ReLU arasındaki hesaplama maliyeti farkı nedir?

Softplus, ReLU’ya göre daha yüksek hesaplama maliyetine sahiptir çünkü ReLU’nun basit maksimum işlemi (max(0, x)) yerine üstel ve logaritmaları (ln(1 + e^x)) hesaplar. Bu işlemler daha yavaştır; özellikle binlerce nörona sahip büyük ağlar boyunca milyonlarca kez çalıştırıldığında. Bu hesaplama yükü aynı donanımda eğitim süresini %10–20 artırabilir; bu nedenle hızın kritik olduğu üretim sistemleri ve büyük, derin ağlar için ReLU tercih edilmeye devam eder.

Bir sinir ağı neden bir aktivasyon fonksiyonuna ihtiyaç duyar?

Bir sinir ağının modele doğrusal olmayanlık kazandırmak için bir aktivasyon fonksiyonuna ihtiyacı vardır. Bu olmadan, ağ kaç katmana sahip olursa olsun yalnızca doğrusal dönüşümler yapar ve verideki karmaşık örüntüleri veya ilişkileri öğrenemez. Aktivasyon fonksiyonları sinir ağlarının doğrusal olmayan fonksiyonları yaklaştırmasına olanak tanır; böylece görüntü tanıma, dil anlama ve karar verme gibi görevleri yerine getirebilirler.

 
 

Konular

İlgili