Yapay Sinir Ağlarında Aktivasyon Fonksiyonları Çeşitleri
Selamlar herkese,
Derin öğrenme algoritmalarıyla uğraşan kişiler yapay sinir ağları ve aktivasyon fonksiyonları gibi terimlere aşinalardır. Bu yazımda yapay sinir ağlarını eğitirken sıkça kullandığımız aktivasyon fonksiyonlarından ve çeşitlerinden bahsedeceğim. Umarım herkes için faydalı olur.
Aktivasyon Fonksiyonu Nedir?
Yapay sinir ağlarına komplex verileri öğretebilmemiz için aktivasyon fonksiyonları gereklidir. Aktivasyon fonksiyonlarının amacı weight(ağırlık) ve bias değerlerini ayarlamaktır.
L=x.w+b işlemini yaptıktan sonra bu değeri bir aktivasyon fonksiyonundan geçiriyoruz. Bu fonksiyonlar tensorlere etki eder ve aslında bunu nöronların tetiklenmesi olarak da düşünebiliriz.
Aktivasyon Fonksiyonu Çeşitleri
Birden fazla aktivasyon fonksiyonu bulunmaktadır. Burada aktivasyon fonksiyonları çeşitlerinden bahsedeceğim. Dezavantaj ve avantajlarına göre hangisinin daha sık ya da daha az kullanıldığını hep birlikte görelim.
1. Sigmoid Fonksiyonu
Geçmişte oldukça popüler olan bu fonksiyon aldığı değerleri 0 ve 1 arasına hapseder. Yüksek bir değer geldiğinde 1'e yakın olurken düşük bir değer geldiğinde 0'a yakın olur. Dolayısıyla 1'i ve 0'ı geçen herhangi bir değer gözlemlenmez. Sigmoid fonksiyonunun dezavantajları ise birden fazladır. Gradient ölümünün fazla olması, 0 odaklı bir fonksiyon olmaması ve exp() hesaplamalarının oldukça yavaş olması bunlara örnek olarak gösterilebilir.
2. tanh (Hiperbolik Tanjant) Fonksiyonu
Hiperbolik tanjant kısaca “tanh”n sigmoid’e benzerliği ile bilinir. İkisinde de sıkıştırma bulunur ancak tanh gelen değerleri [-1,1] arasına hapseder. Sigmoid fonksiyonuna göre daha iyi sonuçlar alınabilir çünkü 0 odaklıdır. Özellikle LSTM ve GRU gibi sinir ağlarında yaygın olarak kullanılan bir aktivasyon fonksiyonudur. Ancak gradient ölümleri hala devam etmektedir.
3.ReLu Fonksiyonu
Günümüzde en sık kullanılan ve popülerliğini koruyan aktivasyon fonksiyonudur. İlk olarak 2012 yılında kullanıldı ve günümüze kadar popülerliği giderek arttı. Ayrıca ReLu fonksiyonu biyolojik nörona benzerliğiyle bilinir. Çalışma mantığı olarak gelen değerlerin pozitif mi negatif mi olduğuna bakar sonrasında eğer gelen değer negatif bir değerse işlem sonucunu 0 verir. Ancak gelen değer pozitifse herhangi bir sıkıştırma ya da değiştirme işlemi uygulamaz olduğu gibi geçer. Bilgisayarlar tanh ve sigmoid’de karmaşık hesaplamalar yaparken ReLu’da yalnızca pozitiflik negatiflik durumuna bakar. Bu nedenle bilgisayar bu denklemi 6 kat daha hızlı hesaplar. Kısacası hızlıdır. Ancak muhteşem bir fonksiyon diyemeyiz çünkü bu fonksiyonda 0 odaklı olmadığından bazı nöronlar (%40'a kadar) ölebiliyor.
4. Leaky ReLu Fonksiyonu
ReLu fonksiyonlarında dezavantajlardan biri olarak nöronların ölümünden bahsetmiştik. Hatta bu ölümler bazen %40'a kadar çıkabilmektedir. İşte Leaky ReLu fonksiyonu tam burada devreye giriyor. Ölü nöron sonunu ortadan kaldırmak için geliştirilmiş bir fonksiyondur diyebiliriz. Negatif bir değer geldiğinde çok küçük bir sayı döndürür ve bu sayede nöronların ölmesinin önüne geçer. Hesaplama sayısının artmasına rağmen diğer fonksiyonlara göre oldukça hızlı çalışır. Son olarak ReLu ‘nun sahip olduğu tüm avantajları barındırır.
5. Exponential Linear Unit (ELU)
Bu fonksiyonda orta nokta 0 olduğundan ölü nöron sorunun önüne geçebilir. Exponential yani e^x cinsinden hesaplama yaptığı için oldukça yavaştır. Ancak ReLu’nun avantajlarına sahiptir.
6. Maxout Fonksiyonu
Kullanlan bir diğer aktivasyon fonksiyonu ise Maxout fonksiyonudur. ReLu ve Leaky ReLu’yu genelleştiren bir fonksiyondur ancak parametre sayısı 2 katına çıktığından ReLu’ ya göre oldukça yavaş çalışır. Avantajı ise ReLu’da olduğu gibi nöron ölümü gerçekleşmez. Son olarak maxout fonksiyonunun herhangi bir grafiksel gösterimi yoktur.
Hangi Aktivasyon Fonksiyonunu Kullanmalıyız?
Peki bu fonksiyonlardan ve özelliklerinden bahsettik, dezavantaj ve avantajlarını sıraladık. Hangisini kullanmalıyız sorusuna nasıl bir cevap verebiliriz?
Geçmiş dönemlerde son derece popüler olan “sigmoid fonksiyonu’nun” yerini artık ReLu Fonksiyonu almıştır. Dolayısıyla çalışmalarınızda ReLu fonksiyonu kullanmanızı şiddetle tavsiye ederim.
Bu yazımda sizlere derin öğrenme aktivasyon fonksiyonlarının çeşitlerini, performanslarını ve hangi koşullarda hangi fonksiyonun etkili olduğunu ve özelliklerini açıklamaya çalıştım. Umarım derin öğrenme algoritmalarıyla ilgilenen kişiler ve diğer herkes için faydalı olabilmişimdir :)
Bir daha ki yazımda görüşmek üzere..
Referanslar
- Kızrak, A. (2020, January 7). Derin Öğrenme için Aktivasyon Fonksiyonlarının Karşılaştırılması. Medium. https://ayyucekizrak.medium.com/derin-%C3%B6%C4%9Frenme-i%C3%A7in-aktivasyon-fonksiyonlar%C4%B1n%C4%B1n-kar%C5%9F%C4%B1la%C5%9Ft%C4%B1r%C4%B1lmas%C4%B1-cee17fd1d9cd
- Kumawat, D. (2019, August 22). 7 types of activation functions in neural network. Analytics Steps | Learn AI, Machine Learning, Business Analytics, Startups & other Technologies. https://www.analyticssteps.com/blogs/7-types-activation-functions-neural-network