Aktivasyon Fonksiyonları

Mehmet Fatih AKCA
Deeper Deep Learning TR
6 min readMar 17, 2021

Bu yazı, AdresGezgini Ar-Ge Merkezi’nde gerçekleştirdiğimiz çalışmalar kapsamında yazılmıştır.

Aktivasyon fonksiyonları, elimizdeki verileri belirli bir aralığa sıkıştırmak için kullanılan matematiksel fonksiyonlardır.

Aktivasyon Fonksiyonları hakkında detaylı açıklama için buradaki yazımıza bakabilirsiniz.

Örnek vermek gerekirse, normal sıcaklıktaki bir yüzeye dokunduğumuzda beynimiz bunun olağan bir durum olduğunu düşünüp tepki vermeyecektir. Aslında sinir hücrelerimiz olağan dışı bir sıcaklık algılamadığı için normal sinyaller gönderdi. Normal sinyaller de aktivasyon fonksiyonu sonucunda tepki verme durumunu tetikleyecek kadar önemli olmadığı için, aktivasyon fonksiyonu tetiklenmedi ve tepki verilmedi. Diğer taraftan, dokunduğumuz yüzey çok sıcak olsaydı, girdi değişkenimiz aktivasyon fonksiyonunu tetikleyecek ve biz ani tepki verecektik. Yani sinir hücrelerimiz beynimize bu durumunun önemli ve acil olduğunu belirtmek için büyük sinyaller yollayacak ve bu sinyaller aktivasyon fonksiyonundan geçerek refleks göstermemizi sağlayacaktı.

En çok kullanılan aktivasyon fonksiyonlarının birkaçına bakalım.

ReLU Fonksiyonu:

ReLU diğer aktivasyon fonksiyonlarına göre oldukça kolaydır. Kısaca, girdi negatifse 0, pozitifse kendi değerini alır.

ReLU Fonksiyonu Formülü
  • Diğer aktivasyon fonksiyonlarına göre daha hızlıdır. Bu yüzden sıkça kullanılır.

Neden daha hızlıdır:

Sadece pozitif değerlerle ilgilenir, bu sayede eşit dağılmış bir veri setinde yarı yarıya daha az işlem yapar. Yaptığı işlem de kompleks olmadığı için hızını artırır.

  • 0 noktasında türevi hesaplanamaz, sol tarafa bakılır ve türev alınır.

Neden türevi hesaplanamaz:

Türev hesaplamak için o noktanın limiti olmalı ve 3 şartı sağlamalıdır. Sol tarafının limitinin olması, sağ tarafının limitinin olması ve sağ ile sol limitinin birbirine eşit olması gerekmektedir.

Kaynak

Negatif değerler için türev 0 olacaktır.

Kaynak

Pozitif değerler için türev 1 olacaktır.

Kaynak

Grafik üzerinden bakacak olursak:

Yani 0 noktasının solundaki türev 0, sağındaki türev ise 1'dir. Bu da 3. kuralı ihlal eder. Bu yüzden 0 noktasında türev hesaplanamaz. Bu durumda 0 noktasının türevi genellikle sol tarafa bakılarak 0'mış gibi işlem yapılır. (0.5 veya 1 de olabilir.)

  • Vanishing Gradient problemini hafifletir.

Vanishing Gradient Problemi nedir ve nasıl hafifletir:

Vanishing Gradient Problemi, kısaca Aktivasyon fonksiyonlarının verileri belirli bir aralığa sıkıştırması ve bu sıkıştırılan aralığın küçük olması hatta türevinin daha da küçük olmasıdır. Dolayısıyla belirli bir süre sonra dikkate alınmayacak kadar küçük optimizasyon parametrelerine ulaşması ve modelin tam olarak öğrenememesi sorunudur. RNN’ler (Recurrent Neural Network) bu sorun yüzünden uzun metinlerde istenilen performansı veremez ve LSTM’in (Long-Short Term Memory) geliştirilmesindeki ana sebep budur. ReLU fonksiyonunun türevi yukarıdaki grafikte görüldüğü gibi negatif ise 0, pozitif ise 1'dir. Yani optimizasyon kısmında ya 0 katsayısını alır ve yok olur ya da 1 katsayısını alır ve herhangi bir değişikliğe uğramaz. Bu sayede Vanishing Gradient Problemini hafifletmiş olur.

  • Gerçek hayat problemi olarak yaş örneği verilebilir. Çünkü 0'dan başlar ve artı sonsuza kadar gider.
  • Görüntü işleme problemlerinde sıkça kullanılır. Bunun nedeni piksellerin negatif değer almaması yani 0–255 arası değerler almasıdır.

Negatif değerlere 0 vermesi bazen bizim avantajımızayken bazen bir sorun oluşturur. Mesela metin üzerinde duygu analizi yapılırken -1 etiketini karşılığının negatif olduğunu düşünelim. Bu durumda negatif etiketi silinmiş olacaktır. Bu sorunları aşmak için ReLU’nun birkaç varyasyonunu kullanabiliriz.

Leaky ReLU:

Formülü:

ReLU’daki gibi pozitif ve 0 değerine dokunmaz ama negatif değerleri 0.01 ile çarparak konumlandırır. Kısmen negatifliği korumaya çalışır.

Parametric ReLU:

Formülü:

Dışarıdan α parametresi alır, negatif değerleri onunla çarparak ReLU’da bahsetmiş olduğumuz negatif değerlerin göz ardı edilmesi sorununu çözer.

ELU:

Formülü:

Exponential Linear Units (ELU) ortalama aktivasyon değerini sıfıra yaklaştırmaya çalışır, bu da öğrenmeyi hızlandırır.

Sigmoid Fonksiyonu:

Verileri 0 ve 1 aralığına sıkıştırır. Bu yüzden genellikle ikili (binary) sınıflandırmalarda veya çıktıyı olasılık olarak almak istediğimizde kullanırız.

Sigmoid Fonksiyonu Formülü

Formülü parçalayarak yakından bakalım.

Neden e üzeri negatif:

Formülü biraz düzenledim ve ikisini de birlikte görmek için bir grafik çizdirdim. Üssü negatif almazsam göndermiş olduğum negatif değer için pozitif değer döndürürken, pozitif değer için negatif değer dönüyor. Bu istenilen bir şey değil.

Neden payda kısmında:

Mavi ile turuncu arasında bir uçurum var. Kısaca 1+exp(-x)’nın payda kısmında yer alması 0 ve 1 arasına sıkışmasını sağlar.

e kullanarak üs almasının nedeni negatif değerlerden kurtulmaktır.

  • Genelde yerini hızlı olmasından dolayı ReLU’ya bıraktı.
  • Türevi maksimum 0.25'e çıkar.

Bu duruma dikkat edilmesi gerekir. Çünkü bu durum Vanishing Gradient Problemine neden olabilir.

  • Çok sık tercih edilir.

Neden çok sık tercih edilir?

İkili sınıflandırma yaparken her zaman eşik değerin 0.5 olmasını istemeyiz. Örnek vermek gerekirse, metinler üzerinde duygu analizi yapıyoruz ve nefret ile ilgili içerikleri sınıflandırıyoruz. Nefret uç bir duygu olduğu için eşik değeri daha yüksek bir noktaya çekmemiz bizim için daha doğru olacaktır. Sigmoid fonksiyonu ile çok kolay bir şekilde eşik değeri güncelleyip, güncellenmiş grafik üzerinden sınıflandırma yapabiliriz.

Eşik değeri 0.7

Tanh Fonksiyonu:

Verileri -1 ve 1 aralığına sıkıştırır.

Tanh Fonksiyonu Formülü

Neden 2 ile çarpılıyor:

Bir şeyler değişti. Biraz abartarak 2 ile değil de 3 ile çarpsak veya 4 ile çarpsak ne olur diye düşünmüştüm.

Eğri git gide 0'a yaklaşıyor ve dikleşiyor. Yani girdiye göre oluşan değişim git gide düşüyor. Diğer bir deyişle, verilen x değerine göre alınan sonuç değerindeki aralık daralıyor. Bu da ayrım yapabilme yeteneğini düşürür. Diğer taraftan x küçüldükçe eğri, neredeyse bir doğru haline geliyor. Bu iki dengeyi sağlayan 2 katsayısı olduğu için x’in -2 ile çarpıldığını düşünüyorum. Ayrıca bu grafik aşağıda belirttiğim, x arttıkça kıvrımlar keskinleşiyor maddesinin neden sorusuna da cevap veriyor.

Sigmoid fonksiyonu ile benzerliğine bakmak istedim ve Sigmoid fonksiyonunun formülünü biraz değiştirdim. 0 ve 1 aralığında olduğu için 2 ile çarptım. Çarpım sonucu 0 ve 2 aralığında olduğu için 1 çıkartıp -1 ve 1 aralığına getirdim. Çıkan sonuç beni şaşırttı. 2 ile çarpılmayan eğri ile aynı sonuçları veriyorlar. Yani tanh fonksiyonu 2 ile çarpılmazsa, Sigmoid fonksiyonu ile arasındaki tek fark -1 ve 1 aralığında sıkıştırmış olması olacaktır.

  • Daha geniş bir aralığa sıkıştırdığı için probleme bağlı olarak Sigmoid’ten daha yararlı olabilir.
  • x arttıkça kıvrımlar keskinleşir.
  • Input 0'a yaklaştıkça türevi 1'e yaklaşır. 0'dan uzaklaştıkça türevi 0'a yaklaşır.

Aktivasyon fonksiyonları üzerinde biraz pratik yapmak gerektiğini düşünüyorum. Elleri kirletmek lazım. Bunun için bir Google Colab Notebook’u hazırladım.

Özet:

  1. Aktivasyon fonksiyonları, elimizdeki verileri belirli bir aralığa sıkıştırmak için kullanılan matematiksel fonksiyonlardır.
  2. ReLU fonksiyonunda girdi negatifse 0, pozitifse kendi değerini alır. Vanishing Gradient Problemini hafifletir.
  3. Sigmoid Fonksiyonu 0 ve 1 arasında değer döndürür. Genellikle Binary Classification işlemlerinde kullanılır.
  4. Tanh Fonksiyonu -1 ve 1 arasında değer döndürür.

Aktivasyon Fonksiyonu hakkında yazmış olduğum yazım bu kadardı. Okuduğunuz için teşekkür ederim.

Esen kalın.

Yararlandığım Kaynaklar:

https://sebastianraschka.com/faq/docs/relu-derivative.html#:~:text=The%20reason%20why%20the%20derivative,point%2C%20the%20limit%20must%20exist.

--

--

Mehmet Fatih AKCA
Deeper Deep Learning TR

Sakarya Üniversitesi Yönetim Bilişim Sistemleri 4.sınıf öğrencisiyim. Makine Öğrenmesi, Veri Madenciliği, Veri Analizi ve Görüntü İşleme www.mfakca.com