Tanh Fonksiyonu: Sinir Ağları İçin Sıfır Merkezli Çıktılar Neden Önemlidir
Bu rehber, tanh fonksiyonunun ardındaki matematiksel sezgiyi, sigmoid ve ReLU ile karşılaştırmasını, avantajlarını ve ödünlerini, ayrıca derin öğrenmede nasıl etkili şekilde uygulanacağını açıklar.
Sinir ağınız %60 doğrulukta takılıp mı kaldı ve nedenini bir türlü bulamıyor musunuz?
Öğrenme oranını ayarladınız, daha fazla katman eklediniz, batch boyutuyla oynadınız. Hiçbiri işe yaramıyor. İlk birkaç epoch'tan sonra eğitim kaybı zar zor düşüyor. Kurduğunuz düzeni sorgulamaya başlıyorsunuz. Belki veri kötü, belki mimari yanlış. Oysa gerçekte olan, aktivasyon fonksiyonunuzun tüm çıktıları tek bir yöne itmesi; bu da ağın dengeli örüntüler öğrenmesini imkânsız hale getiriyor.
Tanh (hiperbolik tanjant), -1 ile 1 arasında sıfırın etrafında çıktıları merkezleyerek bunu çözer. Bu, modellerinizin daha hızlı yakınsamasına yardımcı olur ve geri yayılım sırasında gradyanların simetrik akmasını sağlar.
Bu yazıda tanh nedir, matematiksel olarak nasıl çalışır, ne zaman ReLU veya sigmoid yerine kullanılır ve PyTorch'ta nasıl uygulanır öğreneceksiniz. Derin öğrenmeye yeni başladıysanız, sinir ağlarında aktivasyon fonksiyonlarına giriş başlıklı kapsamlı rehberimize göz atın.
Tanh Fonksiyonu Nedir?
Tanh fonksiyonu herhangi bir girdiyi -1 ile 1 arasında bir değere eşler.
Aşağıdaki formülle tanımlanan, pürüzsüz, S-şekilli bir eğridir:
Tanh fonksiyonu. Görsel: Yazar
Fonksiyon uçlarda öngörülebilir davranır. Büyük bir pozitif sayı verdiğinizde 1'e yakın bir çıktı üretir. Büyük bir negatif sayı için -1'e yakın bir değer alırsınız.
Sıfıra yakın bölgede tanh neredeyse doğrusal davranır. Bu, geri yayılım sırasında gradyanların ezilmeden veya bozulmadan pürüzsüzce akması anlamına gelir.
Karşılaştırma için, sigmoid yalnızca 0 ile 1 arasında pozitif değerler üretir. Tanh hem pozitif hem negatif sayılar üretir. Aktivasyonları sıfır etrafında dengede tutar; bu da birçok ağ mimarisinde optimizasyonun daha hızlı yakınsamasına yardımcı olur.
Tanh'i en çok yinelemeli ağlarda ve merkezli aktivasyonların kararlılığı artırdığı her yerde görürsünüz.
Matematiksel ve Hesaplamalı Özellikler
Tanh'in her makine öğrenimi mühendisi adayının bilmesi gereken birkaç matematiksel özelliği vardır.
Pürüzsüz ve türevlenebilir
Tanh her yerde sonsuz kez türevlenebilir ve pürüzsüzdür.
Bu, gradyan tabanlı optimizasyon için önemlidir. Türevin aniden 0'dan 1'e sıçradığı ReLU'da olduğu gibi keskin köşelere çarpmazsınız. Pürüzsüz gradyanlar, geri yayılım sırasında daha öngörülebilir ağırlık güncellemeleri demektir.
Sıfır merkezli çıktı
Sigmoid 0 ile 1 arasında değerler üretir. Tanh -1 ile 1 arasında değerler üretir.
Aktivasyonlar sıfır etrafında dengede kaldığında ağınız daha hızlı yakınsar. Ağırlık güncellemeleri tek bir yöne doğru yanlı hale gelmez ve gradyanlar katmanlar boyunca daha eşit akar.
Sınırlı ve kararlı
Tanh'in çıktı aralığı -1 ile 1 arasında sabittir.
Bu sınırlar sayısal istikrarsızlığı önler. Taşan aktivasyonları kaldıramayan ağlarla çalışıyorsanız, tanh kırpma veya özel işleme gerek olmadan işleri kontrol altında tutar.
Uçlardaki davranış
Büyük pozitif değerler için tanh 1'e yaklaşır. Büyük negatif değerler için -1'e yaklaşır.
Bu simetri, aktivasyonları merkezde tutar ve sigmoid gibi sıfır merkezli olmayan fonksiyonlarda gördüğünüz yanlılık kaymasını engeller. Derin ağlarda bu özellik, ağırlık güncellemelerinin katmanlar boyunca daha eşit yayılmasına yardımcı olur; ağınız pozitif ya da negatif değerlere karşı bir tercih geliştirmez.
Tanh'in türevi
Tanh'in türevi şöyledir:
Tanh türevi. Görsel: Yazar.
Bu, gradyanların sıfıra yakın bölgede güçlü olduğu, ancak fonksiyon doygunluğa yaklaştıkça kenarlarda küçüldüğü anlamına gelir. Tanh(x) 1'e veya -1'e yaklaştığında türev sıfıra yaklaşır; bu da o nöronlar için öğrenmeyi yavaşlatır.
Pratikte, orta büyüklükteki girdiler için kararlı bir öğrenme elde edersiniz; ancak girdiler çok büyük veya çok küçük olduğunda gradyanların kaybolma ihtimali vardır. Bu yüzden derin ağlar sıklıkla ReLU'yu tercih eder — pozitif değerlerde doygunluğa ulaşmaz.
Tanh ve Diğer Fonksiyonlar
Tanh tek aktivasyon fonksiyonu değildir ve alternatiflerle nasıl karşılaştırıldığını anlamak, ağınız için doğru olanı seçmenize yardımcı olur.
Sigmoid tanh'in yakın akrabasıdır. Aslında tanh, sigmoidun ölçeklenmiş ve kaydırılmış bir versiyonudur:
Burada σ(x) sigmoid fonksiyonudur.
Sigmoid fonksiyonu. Görsel: Yazar
Temel fark, Sigmoidun 0 ile 1 arasında değerler, tanh'in ise -1 ile 1 arasında değerler üretmesidir. Bu sıfır merkezleme, çoğu durumda tanh'in daha hızlı yakınsamasını sağlar.
ReLU farklı bir yaklaşım izler. Negatif girdiler için sıfır, pozitif girdiler içinse girdiyi aynen geçirir. Bu, seyrekliği oluşturur; yani birçok nöron etkin kalmaz ve bu da eğitimi hızlandırır. Ancak ReLU, negatif değerler için gradyanları yok eder. Tanh bu sorunu yaşamaz; negatif girdiler için de sıfır olmayan gradyanlar üretir. Öte yandan her iki uçta da doygunluğa ulaşır; bu da girdiler çok büyük veya çok küçük olduğunda öğrenmeyi yavaşlatabilir.
ReLU fonksiyonu. Görsel: Yazar
Softsign tanh'e benzer görünür. Her ikisi de pürüzsüz, S-şekilli eğrilerdir. Ancak tanh, sıfıra yakın bölgede daha dik bir eğime sahip olduğu için daha hızlı yakınsar. Bu, eğitimin erken aşamalarında daha güçlü gradyanlar anlamına gelir; bu da girdiler doygunluk bölgelerine ulaşmadan ağınızın daha hızlı öğrenmesine yardımcı olabilir.
Softsign fonksiyonu. Görsel: Yazar
Bu aktivasyon fonksiyonlarıyla yalnızca yüzeyi kazıyorum. Tanh ve ReLU'ya alternatiflerle ilgileniyorsanız, Softmax ve Softplus için derinlemesine rehberlerimizi okuyun.
Tanh'in Avantajları
Tanh'i denemeye değer olup olmadığını düşünüyorsanız, sonunda daha doğru bir model elde etmenizi sağlayabilecek bazı avantajlar şunlardır.
Sıfır merkezli çıktı
Tanh, sıfır etrafında dengeli çıktılar üretir.
Bu, ağırlık güncellemelerindeki yanlılığı azaltır. Aktivasyonlarınız sigmoidde olduğu gibi pozitif tarafa kaymak yerine sıfır etrafında merkezlendiğinde, gradyanlar ağırlıkları bir yöne diğerinden daha fazla çekmez. Sonuçta daha hızlı yakınsama ve daha kararlı eğitim elde edersiniz.
Sıfıra yakın bölgede daha güçlü gradyanlar
Tanh, sıfıra yakın bölgede dik bir eğime sahiptir.
Bu, sigmoid ile karşılaştırıldığında geri yayılım sırasında daha güçlü gradyanlar demektir. Çoğu aktivasyonun sıfıra yakın olduğu eğitimin erken evrelerinde ağınız daha hızlı öğrenir. Öte yandan sigmoidun daha yumuşak eğimi, bu ilk güncellemeleri daha zayıf ve yavaş hale getirir.
Pürüzsüz gradyan akışı
Tanh'in türevleri her yerde süreklidir.
Ani sıçramalar veya süreksizlikler yoktur. Bu, türevin sıfırda aniden 0'dan 1'e geçtiği parçaçıl fonksiyonlar (örneğin ReLU) ile karşılaştırıldığında daha kararlı bir optimizasyon sağlar. Pürüzsüz gradyanlar, eğitim boyunca öngörülebilir ağırlık güncellemeleri anlamına gelir.
Yinelemeli ağlar için ideal
RNN'ler, LSTM'ler ve GRU'lar gizli katmanlarında tanh'e dayanır.
Bu mimariler, zaman adımları boyunca pürüzsüz iç durumları korumalıdır. Tanh, hem pozitif hem negatif sinyallerin akmasına izin verirken değerleri sınırlı tutar. Bu denge, aktivasyonların taşmasını engeller ve ağın daha uzun diziler boyunca bilgiyi hatırlamasına yardımcı olur.
Sınırlamalar ve Dengeler
Koda dalmadan önce, Tanh'in yetersiz kalabileceği birkaç noktayı ele alacağım.
Bunun nedeni, tanh'in -1 ve 1'de doygunluğa ulaşmasıdır. Aktivasyonlarınız bu uçlara vurduğunda türev çok küçük hale gelir ve ağırlık güncellemeleri neredeyse durur. Çok derin ağlarda bu sorun bileşik hale gelir; gradyanlar her katmanda geri yayılırken küçülür ve öğrenme fiilen durana dek üstel olarak azalır.
Daha yavaş eğitim
Tanh seyrekliği oluşturmaz.
Her nöron belli bir ölçüde etkin kalır; oysa ReLU'da negatif girdiler sıfır çıktı üretir. Bu, ağınızın her ileri yayılımda daha fazla bilgi işlemesi anlamına gelir; kulağa iyi gelse de aslında işleri yavaşlatır. ReLU'nun seyrekliği, etkin olmayan nöronların hesaplamayı tamamen atlamasını sağladığı için eğitimi hızlandırır.
Donanım açısından daha az optimize
Modern çerçeveler ve donanım hızlandırıcıları ReLU'yu tercih eder.
Tanh işlemleri üstel hesaplamalar içerir; bu da ReLU'nun basit max(0, x) işleminden daha maliyetlidir. GPU çekirdekleri ve özelleşmiş yapay zeka çipleri, çoğu mimaride varsayılan haline geldiği için ReLU'ya optimize edilmiştir. Bu, aynı donanımda, ağ mimarisi aynı olsa bile tanh'in daha yavaş çalışacağı anlamına gelir.
PyTorch'ta Tanh
PyTorch, Tanh fonksiyonunun yerleşik bir uygulamasını sağlar; yani sıfırdan yazmanıza gerek yoktur.
İşte basit bir sinir ağında aktivasyon fonksiyonu olarak nasıl kullanılacağı:
import torch
import torch.nn as nn
model = nn.Sequential(
nn.Linear(10,20),
nn.Tanh(),
nn.Linear(20,1))
x = torch.randn(5,10)
output = model(x)print(output)Altyapı:
Çıktıların sıfır etrafında simetrik olduğuna dikkat edin — negatif girdiler negatif çıktılar üretir ve fonksiyon her iki tarafı da eşit şekilde ele alır. Bu dengeli dağılım, eğitim sırasında ağınızı kararlı tutar ve sigmoid gibi fonksiyonlarda gördüğünüz yanlılık kaymasını engeller.
Tanh Ne Zaman Kullanılır
Modeliniz merkezli aktivasyonlardan fayda sağladığında veya daha küçük ya da yinelemeli ağlarla çalışırken Tanh fonksiyonunu seçin.
Özellikle şu durumlarda etkilidir:
Dengeli aktivasyonlara ihtiyaç duyan RNN veya LSTM'ler eğitiyorsunuz. Bu mimariler, zaman adımları boyunca pürüzsüz iç durumları korumak ve hem pozitif hem negatif sinyallerin akmasına izin vermek için Tanh'e dayanır.
Sürekli veya pürüzsüz hedefleri modelliyorsunuz. Tanh'in pürüzsüz gradyan akışı, çıktılarınızın doğal olarak bir aralıkta kalması gerektiği durumlarda (ör. belirli bir aralıkta değer tahmini) iyi çalışır.
İstikrarlı, türevlenebilir gradyanlar istiyorsunuz ancak ReLU'nun seyrekliğine ihtiyaç duymuyorsunuz. Ağınız, ReLU'nun hız avantajından faydalanacak kadar derin değilse, Tanh size daha öngörülebilir bir eğitim davranışı sunar.
Buna karşılık, gradyanların kaybolmasının endişe verici olduğu çok derin mimarilerde Tanh'ten kaçının. ReLU veya GELU burada daha uygundur; çünkü pozitif değerlerde doygunluğa ulaşmazlar.
Sonuç
Özetle, Tanh fonksiyonu Sigmoid'un sadeliği ile ReLU'nun hızı arasında konumlanır.
Pürüzsüz, simetrik ve derin öğrenmede hâlâ geçerliliği olan bir yöntemdir; özellikle de dengeli aktivasyonların en çok önem taşıdığı yerlerde. Her modern mimaride karşınıza çıkmasa da, merkezli çıktılar ve kararlı gradyan akışı gerektiğinde yeri vardır.
Tanh kullanıp kullanmama konusunda emin değilseniz, şu yönergeleri izleyin:
Büyük, derin ağlar için ReLU kullanın. Daha hızlıdır, modern donanımla iyi çalışır ve pozitif değerlerde kaybolan gradyanlardan kaçınır.
İstikrar, simetri ve daha pürüzsüz gradyan akışına ihtiyaç duyduğunuzda Tanh kullanın. Bu, yinelemeli ağlar, daha küçük mimariler ve sıfır merkezli aktivasyonların yakınsamayı iyileştirdiği durumlar anlamına gelir.
Deneyler yapın, sonuçları karşılaştırın ve görevinize en uygun aktivasyonu verilerinizin belirlemesine izin verin. Daha fazlasını öğrenmek ister misiniz? Denetimli, denetimsiz ve derin öğrenmenin inceliklerini kavramak için Python ile Makine Öğrenimi Bilimcisi eğitim yolumuza kaydolun.
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ı.
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ı.
SSS
Tanh aktivasyon fonksiyonu nedir?⌄
Tanh (hiperbolik tanjant), herhangi bir girdiyi -1 ile 1 arasında bir değere eşleyen bir aktivasyon fonksiyonudur. tanh(x) = (e^x - e^-x) / (e^x + e^-x) şeklinde tanımlanır ve sigmoid'e benzer S-şekilli bir eğri oluşturur. Temel fark, tanh'in sıfır merkezli olmasıdır; yani hem pozitif hem negatif değerler üretir; bu da sinir ağlarının eğitim sırasında daha hızlı yakınsamasına yardımcı olur.
ReLU yerine tanh'i ne zaman kullanmalıyım?⌄
Dengeli, sıfır merkezli aktivasyonlara ihtiyaç duyan yinelemeli ağlar (RNN, LSTM, GRU) kurarken tanh kullanın. Ayrıca, ReLU'nun sağladığı seyrekliğe ihtiyaç olmaksızın pürüzsüz, türevlenebilir gradyanlara gerek duyulan daha küçük ağlar için de uygundur. Çok derin ileri beslemeli ağlarda ise, ReLU'nun hızı ve kaybolan gradyanlara karşı dayanıklılığı onu daha iyi bir seçenek haline getirir; bu nedenle tanh'ten kaçının.
Tanh'in sigmoid'e göre başlıca avantajları nelerdir?⌄
Tanh'in sıfır merkezli çıktısı (-1 ile 1 arası), sigmoidun 0 ile 1 aralığında yaşanan yanlılık kaymasını önler. Bu da daha dengeli ağırlık güncellemeleri ve daha hızlı yakınsama sağlar. Tanh ayrıca sıfıra yakın bölgede daha dik bir eğime sahiptir; bu da sigmoid ile karşılaştırıldığında geri yayılım sırasında daha güçlü gradyanlar demektir.
Tanh neden kaybolan gradyanlara yol açar?⌄
Tanh -1 ve 1'de doygunluğa ulaşır; yani girdiler sıfırdan uzaklaştığında türevi sıfıra yaklaşır. Derin ağlarda bu küçük gradyanlar geri yayılım sırasında birbiriyle çarpılarak her katmanda üstel olarak küçülür ve sonunda fiilen yok olur. Bu, erken katmanların öğrenmesini zorlaştırır; bu yüzden çok derin mimarilerde ReLU tercih edilir.
PyTorch'ta tanh'i nasıl uygularım?⌄
PyTorch, katman olarak nn.Tanh() veya fonksiyon olarak torch.tanh() üzerinden tanh sağlar. Modelinize ekleyebilir veya doğrudan tensörlere uygulayabilirsiniz. Her iki yaklaşım da aynıdır ve geri yayılım için otomatik gradyan hesaplaması sunar.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Sinir ağınız %60 doğrulukta takılıp mı kaldı ve nedenini bir türlü bulamıyor musunuz?
Öğrenme oranını ayarladınız, daha fazla katman eklediniz, batch boyutuyla oynadınız. Hiçbiri işe yaramıyor. İlk birkaç epoch'tan sonra eğitim kaybı zar zor düşüyor. Kurduğunuz düzeni sorgulamaya başlıyorsunuz. Belki veri kötü, belki mimari yanlış. Oysa gerçekte olan, aktivasyon fonksiyonunuzun tüm çıktıları tek bir yöne itmesi; bu da ağın dengeli örüntüler öğrenmesini imkânsız hale getiriyor.
Tanh (hiperbolik tanjant), -1 ile 1 arasında sıfırın etrafında çıktıları merkezleyerek bunu çözer. Bu, modellerinizin daha hızlı yakınsamasına yardımcı olur ve geri yayılım sırasında gradyanların simetrik akmasını sağlar.
Bu yazıda tanh nedir, matematiksel olarak nasıl çalışır, ne zaman ReLU veya sigmoid yerine kullanılır ve PyTorch'ta nasıl uygulanır öğreneceksiniz. Derin öğrenmeye yeni başladıysanız, sinir ağlarında aktivasyon fonksiyonlarına giriş başlıklı kapsamlı rehberimize göz atın.
Tanh Fonksiyonu Nedir?
Tanh fonksiyonu herhangi bir girdiyi -1 ile 1 arasında bir değere eşler.
Aşağıdaki formülle tanımlanan, pürüzsüz, S-şekilli bir eğridir:
Tanh fonksiyonu. Görsel: Yazar
Fonksiyon uçlarda öngörülebilir davranır. Büyük bir pozitif sayı verdiğinizde 1'e yakın bir çıktı üretir. Büyük bir negatif sayı için -1'e yakın bir değer alırsınız.
Sıfıra yakın bölgede tanh neredeyse doğrusal davranır. Bu, geri yayılım sırasında gradyanların ezilmeden veya bozulmadan pürüzsüzce akması anlamına gelir.
Karşılaştırma için, sigmoid yalnızca 0 ile 1 arasında pozitif değerler üretir. Tanh hem pozitif hem negatif sayılar üretir. Aktivasyonları sıfır etrafında dengede tutar; bu da birçok ağ mimarisinde optimizasyonun daha hızlı yakınsamasına yardımcı olur.
Tanh'i en çok yinelemeli ağlarda ve merkezli aktivasyonların kararlılığı artırdığı her yerde görürsünüz.
Matematiksel ve Hesaplamalı Özellikler
Tanh'in her makine öğrenimi mühendisi adayının bilmesi gereken birkaç matematiksel özelliği vardır.
Pürüzsüz ve türevlenebilir
Tanh her yerde sonsuz kez türevlenebilir ve pürüzsüzdür.
Bu, gradyan tabanlı optimizasyon için önemlidir. Türevin aniden 0'dan 1'e sıçradığı ReLU'da olduğu gibi keskin köşelere çarpmazsınız. Pürüzsüz gradyanlar, geri yayılım sırasında daha öngörülebilir ağırlık güncellemeleri demektir.
Sıfır merkezli çıktı
Sigmoid 0 ile 1 arasında değerler üretir. Tanh -1 ile 1 arasında değerler üretir.
Aktivasyonlar sıfır etrafında dengede kaldığında ağınız daha hızlı yakınsar. Ağırlık güncellemeleri tek bir yöne doğru yanlı hale gelmez ve gradyanlar katmanlar boyunca daha eşit akar.
Sınırlı ve kararlı
Tanh'in çıktı aralığı -1 ile 1 arasında sabittir.
Bu sınırlar sayısal istikrarsızlığı önler. Taşan aktivasyonları kaldıramayan ağlarla çalışıyorsanız, tanh kırpma veya özel işleme gerek olmadan işleri kontrol altında tutar.
Uçlardaki davranış
Büyük pozitif değerler için tanh 1'e yaklaşır. Büyük negatif değerler için -1'e yaklaşır.
Bu simetri, aktivasyonları merkezde tutar ve sigmoid gibi sıfır merkezli olmayan fonksiyonlarda gördüğünüz yanlılık kaymasını engeller. Derin ağlarda bu özellik, ağırlık güncellemelerinin katmanlar boyunca daha eşit yayılmasına yardımcı olur; ağınız pozitif ya da negatif değerlere karşı bir tercih geliştirmez.
Tanh'in türevi
Tanh'in türevi şöyledir:
Tanh türevi. Görsel: Yazar.
Bu, gradyanların sıfıra yakın bölgede güçlü olduğu, ancak fonksiyon doygunluğa yaklaştıkça kenarlarda küçüldüğü anlamına gelir. Tanh(x) 1'e veya -1'e yaklaştığında türev sıfıra yaklaşır; bu da o nöronlar için öğrenmeyi yavaşlatır.
Pratikte, orta büyüklükteki girdiler için kararlı bir öğrenme elde edersiniz; ancak girdiler çok büyük veya çok küçük olduğunda gradyanların kaybolma ihtimali vardır. Bu yüzden derin ağlar sıklıkla ReLU'yu tercih eder — pozitif değerlerde doygunluğa ulaşmaz.
Tanh ve Diğer Fonksiyonlar
Tanh tek aktivasyon fonksiyonu değildir ve alternatiflerle nasıl karşılaştırıldığını anlamak, ağınız için doğru olanı seçmenize yardımcı olur.
Sigmoid tanh'in yakın akrabasıdır. Aslında tanh, sigmoidun ölçeklenmiş ve kaydırılmış bir versiyonudur:
Burada σ(x) sigmoid fonksiyonudur.
Sigmoid fonksiyonu. Görsel: Yazar
Temel fark, Sigmoidun 0 ile 1 arasında değerler, tanh'in ise -1 ile 1 arasında değerler üretmesidir. Bu sıfır merkezleme, çoğu durumda tanh'in daha hızlı yakınsamasını sağlar.
ReLU farklı bir yaklaşım izler. Negatif girdiler için sıfır, pozitif girdiler içinse girdiyi aynen geçirir. Bu, seyrekliği oluşturur; yani birçok nöron etkin kalmaz ve bu da eğitimi hızlandırır. Ancak ReLU, negatif değerler için gradyanları yok eder. Tanh bu sorunu yaşamaz; negatif girdiler için de sıfır olmayan gradyanlar üretir. Öte yandan her iki uçta da doygunluğa ulaşır; bu da girdiler çok büyük veya çok küçük olduğunda öğrenmeyi yavaşlatabilir.
ReLU fonksiyonu. Görsel: Yazar
Softsign tanh'e benzer görünür. Her ikisi de pürüzsüz, S-şekilli eğrilerdir. Ancak tanh, sıfıra yakın bölgede daha dik bir eğime sahip olduğu için daha hızlı yakınsar. Bu, eğitimin erken aşamalarında daha güçlü gradyanlar anlamına gelir; bu da girdiler doygunluk bölgelerine ulaşmadan ağınızın daha hızlı öğrenmesine yardımcı olabilir.
Softsign fonksiyonu. Görsel: Yazar
Bu aktivasyon fonksiyonlarıyla yalnızca yüzeyi kazıyorum. Tanh ve ReLU'ya alternatiflerle ilgileniyorsanız, Softmax ve Softplus için derinlemesine rehberlerimizi okuyun.
Tanh'in Avantajları
Tanh'i denemeye değer olup olmadığını düşünüyorsanız, sonunda daha doğru bir model elde etmenizi sağlayabilecek bazı avantajlar şunlardır.
Sıfır merkezli çıktı
Tanh, sıfır etrafında dengeli çıktılar üretir.
Bu, ağırlık güncellemelerindeki yanlılığı azaltır. Aktivasyonlarınız sigmoidde olduğu gibi pozitif tarafa kaymak yerine sıfır etrafında merkezlendiğinde, gradyanlar ağırlıkları bir yöne diğerinden daha fazla çekmez. Sonuçta daha hızlı yakınsama ve daha kararlı eğitim elde edersiniz.
Sıfıra yakın bölgede daha güçlü gradyanlar
Tanh, sıfıra yakın bölgede dik bir eğime sahiptir.
Bu, sigmoid ile karşılaştırıldığında geri yayılım sırasında daha güçlü gradyanlar demektir. Çoğu aktivasyonun sıfıra yakın olduğu eğitimin erken evrelerinde ağınız daha hızlı öğrenir. Öte yandan sigmoidun daha yumuşak eğimi, bu ilk güncellemeleri daha zayıf ve yavaş hale getirir.
Pürüzsüz gradyan akışı
Tanh'in türevleri her yerde süreklidir.
Ani sıçramalar veya süreksizlikler yoktur. Bu, türevin sıfırda aniden 0'dan 1'e geçtiği parçaçıl fonksiyonlar (örneğin ReLU) ile karşılaştırıldığında daha kararlı bir optimizasyon sağlar. Pürüzsüz gradyanlar, eğitim boyunca öngörülebilir ağırlık güncellemeleri anlamına gelir.
Yinelemeli ağlar için ideal
RNN'ler, LSTM'ler ve GRU'lar gizli katmanlarında tanh'e dayanır.
Bu mimariler, zaman adımları boyunca pürüzsüz iç durumları korumalıdır. Tanh, hem pozitif hem negatif sinyallerin akmasına izin verirken değerleri sınırlı tutar. Bu denge, aktivasyonların taşmasını engeller ve ağın daha uzun diziler boyunca bilgiyi hatırlamasına yardımcı olur.
Sınırlamalar ve Dengeler
Koda dalmadan önce, Tanh'in yetersiz kalabileceği birkaç noktayı ele alacağım.
Kaybolan gradyanlar
Girdiler sıfırdan uzaklaştığında gradyanlar sıfıra yaklaşır.
Bunun nedeni, tanh'in -1 ve 1'de doygunluğa ulaşmasıdır. Aktivasyonlarınız bu uçlara vurduğunda türev çok küçük hale gelir ve ağırlık güncellemeleri neredeyse durur. Çok derin ağlarda bu sorun bileşik hale gelir; gradyanlar her katmanda geri yayılırken küçülür ve öğrenme fiilen durana dek üstel olarak azalır.
Daha yavaş eğitim
Tanh seyrekliği oluşturmaz.
Her nöron belli bir ölçüde etkin kalır; oysa ReLU'da negatif girdiler sıfır çıktı üretir. Bu, ağınızın her ileri yayılımda daha fazla bilgi işlemesi anlamına gelir; kulağa iyi gelse de aslında işleri yavaşlatır. ReLU'nun seyrekliği, etkin olmayan nöronların hesaplamayı tamamen atlamasını sağladığı için eğitimi hızlandırır.
Donanım açısından daha az optimize
Modern çerçeveler ve donanım hızlandırıcıları ReLU'yu tercih eder.
Tanh işlemleri üstel hesaplamalar içerir; bu da ReLU'nun basit max(0, x) işleminden daha maliyetlidir. GPU çekirdekleri ve özelleşmiş yapay zeka çipleri, çoğu mimaride varsayılan haline geldiği için ReLU'ya optimize edilmiştir. Bu, aynı donanımda, ağ mimarisi aynı olsa bile tanh'in daha yavaş çalışacağı anlamına gelir.
PyTorch'ta Tanh
PyTorch, Tanh fonksiyonunun yerleşik bir uygulamasını sağlar; yani sıfırdan yazmanıza gerek yoktur.
İşte basit bir sinir ağında aktivasyon fonksiyonu olarak nasıl kullanılacağı:
Tanh'i tensörlere doğrudan da uygulayabilirsiniz:
Çıktıların sıfır etrafında simetrik olduğuna dikkat edin — negatif girdiler negatif çıktılar üretir ve fonksiyon her iki tarafı da eşit şekilde ele alır. Bu dengeli dağılım, eğitim sırasında ağınızı kararlı tutar ve sigmoid gibi fonksiyonlarda gördüğünüz yanlılık kaymasını engeller.
Tanh Ne Zaman Kullanılır
Modeliniz merkezli aktivasyonlardan fayda sağladığında veya daha küçük ya da yinelemeli ağlarla çalışırken Tanh fonksiyonunu seçin.
Özellikle şu durumlarda etkilidir:
Buna karşılık, gradyanların kaybolmasının endişe verici olduğu çok derin mimarilerde Tanh'ten kaçının. ReLU veya GELU burada daha uygundur; çünkü pozitif değerlerde doygunluğa ulaşmazlar.
Sonuç
Özetle, Tanh fonksiyonu Sigmoid'un sadeliği ile ReLU'nun hızı arasında konumlanır.
Pürüzsüz, simetrik ve derin öğrenmede hâlâ geçerliliği olan bir yöntemdir; özellikle de dengeli aktivasyonların en çok önem taşıdığı yerlerde. Her modern mimaride karşınıza çıkmasa da, merkezli çıktılar ve kararlı gradyan akışı gerektiğinde yeri vardır.
Tanh kullanıp kullanmama konusunda emin değilseniz, şu yönergeleri izleyin:
Deneyler yapın, sonuçları karşılaştırın ve görevinize en uygun aktivasyonu verilerinizin belirlemesine izin verin. Daha fazlasını öğrenmek ister misiniz? Denetimli, denetimsiz ve derin öğrenmenin inceliklerini kavramak için Python ile Makine Öğrenimi Bilimcisi eğitim yolumuza kaydolun.