Ana içeriğe geç

Düzeltilmiş Doğrusal Birime (ReLU) Yeni Başlayanlar İçin Rehber

Sinir ağları için en popüler aktivasyon fonksiyonlarından birinin temellerini keşfedin
Javier Canales Luna
Javier Canales Luna

Ücretsiz Hesabınızı Oluşturun

Alıştırma and program your progress.

Google ile devam edinDevam ederek, Kullanım Koşullarımızı ve Gizlilik Politikamızı kabul etmiş ve verilerinizin ABD'de saklandığını onaylamış olursunuz.

Düzeltilmiş Doğrusal Birim (ReLU) gibi aktivasyon fonksiyonları modern sinir ağlarının temel taşlarından biridir. Onlar olmadan, görüntü tanımadan öneri sistemlerine kadar birçok gerçek dünya yapay zeka uygulaması mümkün olmazdı. Bu rehber, ReLU’nun temellerini, avantajlarını, sınırlamalarını ve nasıl uygulanacağını ele alır.

ReLU Temelleri

Yapay zekanın en güçlü uygulamalarının bazıları yapay sinir ağları olmadan mümkün olmazdı. Sinir ağları, insan beyninden esinlenen hesaplama modelleridir. Bu ağlar, birlikte bilgi işleyen ve karar veren birbirine bağlı düğümlerden veya "nöronlardan" oluşur. Bir sinir ağını "derin" yapan, girdi ile çıktı arasındaki katman sayısıdır. Derin bir sinir ağı, daha karmaşık özellikleri öğrenmesini ve daha doğru tahminler yapmasını sağlayan birden fazla katmana sahiptir.

Derin sinir ağı

Derin Sinir Ağı. Kaynak: DataCamp

Ancak bu modeller basit katmanlardan çok daha fazlasıdır. Sinir ağlarının sihrini gerçekleştirmesi için başka bileşenler de kritik öneme sahiptir. 

Bu bileşenlerden biri aktivasyon fonksiyonlarıdır. Aktivasyon fonksiyonlarını karar vericiler olarak görebilirsiniz; hangi bilginin bir sonraki katmana aktarılacağını belirleyerek sinir ağlarının ince ayarlı kararlar almasına olanak tanıyan yeni bir karmaşıklık düzeyi sağlarlar.

Burada en popüler ve yaygın kullanılan aktivasyon fonksiyonlarından birini tanıtacağız: Rectified Linear Unit (ReLU). Bu aktivasyon fonksiyonunun ve bazı varyantlarının temellerini, avantajlarını ve sınırlamalarını, ayrıca PyTorch ile nasıl uygulanacağını açıklayacağız. Devam edelim mi?

Aktivasyon Fonksiyonları Nedir?

Aktivasyon fonksiyonları sinir ağlarının ayrılmaz bir yapı taşıdır. Bir sinir ağındaki bir düğümün girdi sinyalini, daha sonra bir sonraki katmana aktarılan çıktı sinyaline dönüştürürler. Aktivasyon fonksiyonları olmadan, sinir ağları girdi ve çıktılar arasında yalnızca doğrusal ilişkileri modellemekle sınırlı olurdu; örneğin matris çarpımı yoluyla.

Oysa çoğu gerçek dünya verisi doğrusallıklarla modellenemez. Doğrusal olmayanlıklar, örneğin hiç çocuğunuz yokken bir çocuğa sahip olmanın bankacılık işlemlerinizi, üç çocuktan dörde geçişe kıyasla farklı etkilemesi gibi örüntüleri yakalar. Sinir ağlarında aktivasyon fonksiyonları olmasaydı, gerçek dünyadaki olaylarda var olan karmaşık doğrusal olmayan örüntüleri öğrenemezlerdi.

Doğrusal ve doğrusal olmayan fonksiyonlar

Doğrusal ve doğrusal olmayan fonksiyonlar. Kaynak: DataCamp

Aktivasyon fonksiyonları, doğrusal olmayan davranışlar getirerek sinir ağlarının ilişkileri öğrenmesini sağlar. Başka bir deyişle, aktivasyon fonksiyonları bir nöronu etkinleştirme kararı için sayısal bir eşik oluşturur; bu da sinir ağlarının karmaşık ve incelikli verileri modellemesi için kilit olan bir esneklik derecesi sunar.

ReLU Nedir?

En popüler ve en yaygın kullanılan aktivasyon fonksiyonlarından biri ReLU’dur (rectified linear unit). Diğer aktivasyon fonksiyonlarında olduğu gibi, daha iyi hesaplama performansı için modele doğrusal olmayanlık kazandırır. 

ReLU aktivasyon fonksiyonunun biçimi şöyledir:

f(x) = max(0, x)

ReLU fonksiyonu, giriş değeri ile sıfırın maksimumunu çıktılar; bu grafikle de gösterilir. Pozitif girdilerde, fonksiyonun çıktısı girdiyle aynıdır. Kesinlikle negatif girdilerde ise fonksiyonun çıktısı sıfıra eşittir.

Düzeltilmiş Doğrusal Birim (ReLU) aktivasyon fonksiyonu.

Düzeltilmiş Doğrusal Birim (ReLU) aktivasyon fonksiyonu. Kaynak: DataCamp

ReLU Kullanmanın Avantajları

ReLU’nun en önemli avantajlarından biri, kaybolan gradyan sorununu hafifletmeye yardımcı olmasıdır. Kaybolan gradyan sorunu, derin sinir ağlarını geri yayılım kullanarak eğitirken ortaya çıkan bir zorluktur. Ağın ağırlıklarını güncellemek için kullanılan gradyan, ağ boyunca geriye doğru ilerlerken çok küçük hale geldiğinde veya "kaybolduğunda" meydana gelir. Bu durum, ağırlıkların düzgün güncellenmesini engeller ve öğrenme sürecini yavaşlatabilir veya durdurabilir. Kaybolan gradyan sorunlarının tam açıklamasını PyTorch ile Derin Öğrenmeye Giriş kursumuzda okuyabilirsiniz.

ReLU fonksiyonunun bir üst sınırı olmadığı ve x’in yüksek değerlerinde gradyanların sıfıra yakınsamadığı için, ReLU sigmoid ve softmax aktivasyon fonksiyonları kullanılırken sık görülen kaybolan gradyan sorununu aşar. Diğer popüler aktivasyon fonksiyonlarını keşfetmek için ayrı yazımıza göz atın.

Ayrıca, ReLU tüm negatif girdiler için sıfır çıktıladığından doğal olarak seyrek aktivasyonlara yol açar. Başka bir deyişle, eğitim sırasında yalnızca bir alt küme nöron etkinleştiği için bu daha verimli hesaplama sağlar.

Son olarak, bu davranış ağların, tanh veya sigmoid gibi daha karmaşık fonksiyonlara kıyasla hesaplama yükünde önemli bir artış olmadan birçok katmana ölçeklenmesine olanak tanır. Bu da ReLU’yu en yaygın varsayılan aktivasyon fonksiyonu yapar ve modelinizde hangi aktivasyon fonksiyonunu kullanacağınızdan emin olmadığınızda genellikle iyi bir seçimdir.

PyTorch’ta ReLU Uygulaması

PyTorch’ta ReLU uygulamak oldukça kolaydır. Fonksiyonu oluşturmak için nn.ReLU() fonksiyonunu kullanıp modelinize eklemeniz yeterlidir.

Aşağıdaki örnekte, basit bir nörona ReLU uyguluyor ve negatif bir değer durumunda gradyanı hesaplıyoruz.

# Create a ReLU function with PyTorch
relu_pytorch = nn.ReLU()

# Apply your ReLU function on x, and calculate gradients
x = torch.tensor(-1.0, requires_grad=True)
y = relu_pytorch(x)
y.backward()

# Print the gradient of the ReLU function for x
gradient = x.grad
print(gradient)
>>> tensor(0.)

Girdi değerinin -1 olduğuna ve ReLU fonksiyonunun sıfır döndürdüğüne dikkat edin. Negatif x değerleri için ReLU çıktısının her zaman sıfır olduğunu hatırlayın ve gerçekten de x’in herhangi bir negatif değeri için fonksiyonda bir değişim olmadığı için gradyan her yerde sıfırdır.

ReLU’nun Varyantları

ReLU tartışmasız en çok kullanılan aktivasyon fonksiyonudur; ancak bazen, çözmeye çalıştığınız problem için işe yaramayabilir. Neyse ki, derin öğrenme araştırmacıları modellerinizde denemeye değer bazı ReLU varyantları geliştirdi. İşte en popüler alternatifler

Leaky ReLU

Leaky ReLU’nun biçimi şöyledir:

f(x) = max(0.01x, x)

Leaky ReLU’nun amacı, "ölü ReLU" olarak adlandırılan sorunu ele almaktır. ReLU’nun negatif girdiler için her zaman sıfır değerler ürettiğini zaten belirtmiştik. Bu olduğunda, negatif değerlere sahip düğümlerin gradyanları eğitimin geri kalanı için sıfıra ayarlanır ve bu parametrenin öğrenmesini engeller. Bu zorluğun üstesinden gelmek için Leaky ReLU negatif girdiler için bir çarpan kullanır. Sonuç olarak, fonksiyon sıfır olmayacak; bunun yerine, aşağıdaki grafikte gösterildiği gibi küçük bir negatif eğime sahip olacaktır:

Leaky ReLU aktivasyon fonksiyonu.

Leaky ReLU aktivasyon fonksiyonu. Kaynak: DataCamp

Parametrik ReLU (PReLU)

Leaky ReLU, ölü ReLU sorununu aşmak için bir çarpan sunar. Parametrik ReLU (PReLU) ise bir adım daha ileri giderek, negatif girdilerin değerini hesaplamak için basit bir sabit yerine öğrenilebilir bir parametre (a) sunar: 

f(x) = max(ax, x)

PReLU, doğruluk ve uyarlanabilirlik açısından (özellikle bilgisayarlı görü veya konuşma tanıma gibi karmaşık görevlerdeki örüntüleri yakalamada) ReLU ve Leaky ReLU’ya göre bir iyileştirme sunsa da modele karmaşıklık katar. Bu parametrenin eğitimi zaman alabilir ve dikkatli ayarlama ile düzenleme gerektirir. 

Parametrik ReLU aktivasyon fonksiyonu

Parametrik ReLU aktivasyon fonksiyonu. Kaynak: DataCamp

Üstel doğrusal birim (ELU).

ReLU’ya bir başka iyi alternatif de aşağıdaki formülle gelen Üstel Doğrusal Birim (ELU)’dur:

ReLU’nun aksine, ELU’lar negatif değerlere sahiptir; bu da ortalama birim aktivasyonlarını sıfıra daha yakın iter ve böylece kaybolan gradyanlara daha az yatkın hale getirir. Ayrıca ortalama aktivasyonların sıfıra yakın olması, daha hızlı öğrenme ve yakınsamaya yol açar.

ELU aktivasyon fonksiyonu

ELU aktivasyon fonksiyonu. Kaynak: DataCamp

ReLU ile Yaygın Sorunlar

ReLU harika bir aktivasyon fonksiyonudur; ancak her derde deva değildir. Özellikle, ReLU iki iyi bilinen sorundan muzdarip olabilir.

İlki, ölü ReLU sorunudur. Daha önce belirtildiği gibi, ReLU negatif girdiler için her zaman sıfır değerler üretir. Bu, ağırlıkların öyle güncellenmesine neden olabilir ki ilgili nöron bir daha hiçbir veri noktasında etkinleşmez. 

Bu gerçekleşirse, o noktadan itibaren birim boyunca akan gradyan sonsuza dek sıfır kalır ve bu parametrenin öğrenmesini engeller. Leaky ReLU ve PReLU gibi ReLU varyantları bu sorunu ele almak için oluşturulmuştur.

Dengesiz gradyanlar diğer uçta da ortaya çıkabilir. Patlayan gradyan sorunu, gradyanlar giderek büyüdüğünde, çok büyük parametre güncellemelerine ve ayrışan eğitime yol açtığında meydana gelir. 

Bu durumda, daha büyük hata gradyanları birikir ve model ağırlıkları çok büyük hale gelir. Bu sorun, daha uzun eğitim sürelerine ve zayıf model performansına neden olabilir. Patlayan gradyan sorunlarını ele almak için gradyan kırpma ve batch normalization gibi çeşitli teknikler vardır. 

Sinir Ağlarında ReLU’nun Uygulamaları

Benzersiz özellikleri sayesinde ReLU, PyTorch ve TensorFlow gibi çerçevelerde varsayılan seçenek haline gelerek en popüler aktivasyon fonksiyonu olmuştur ve şu derin öğrenme uygulamalarında yaygın olarak kullanılır:

  • Görüntü tanıma: ReLU, öznitelik çıkarımı ve görüntü işleme için yaygın olarak kullanılan uzmanlaşmış ağlar olan evrişimsel sinir ağlarında (CNN) kritik bir bileşendir.
  • Doğal dil işleme (NLP): ReLU, birçok Doğal Dil İşleme (NLP) görevinde de kullanılır. Bu aktivasyon fonksiyonu, konuşma tanıma ve ses işleme gibi alanlarda doğrusal olmayanlık sağlamada başarıyla kullanılmıştır.
  • Öneri sistemleri: ReLU, kişiselleştirilmiş öneriler sağlamak için öneri sistemlerinde kullanılır. 

Sonuç

Sinir ağlarının eğitimi sırasında ReLU aktivasyon fonksiyonlarının kritik rolünü inceledik. Basitliğine rağmen ReLU, mevcut en etkili aktivasyon fonksiyonlarından biridir ve muhtemelen en popüler olanıdır. 

Sinir ağları gelişmeye devam ettikçe, aktivasyon fonksiyonlarının keşfi de kuşkusuz genişleyecek ve ortaya çıkan mimarilerin belirli zorluklarını ele alan yeni biçimleri içerebilir. 

Aktivasyon fonksiyonlarının dikkatli seçimi, sinir ağlarının performansını önemli ölçüde etkileyebilen bilimsel anlayış ile sezgisel sanatı harmanlayan bir denge işidir. 

Derin öğrenme hakkında daha fazla bilgi edinmek ister misiniz? Ayrılmış materyallerimize göz atın ve yapay zekadaki en dönüştürücü teknolojilerden birine hazırlanın:

ReLU SSS

ReLU’yu sigmoid ve tanh aktivasyon fonksiyonlarından farklı kılan nedir?

ReLU, çıktıyı sabit bir aralığa sıkıştırmadığı (ör. sigmoid için [0,1] veya tanh için [-1,1]) için sigmoid ve tanh’tan farklıdır. Bunun yerine, pozitif değerler için girdiyi doğrudan, negatif değerler için ise sıfırı çıktılar. Bu sadelik, ReLU’yu hesaplama açısından verimli kılar ve sigmoid ile tanh’ta yaygın olarak görülen kaybolan gradyan sorununu ele almaya yardımcı olur.

Diğer aktivasyon fonksiyonları yerine ne zaman ReLU kullanmalıyım?

ReLU, özellikle büyük modelleri eğitirken veya karmaşık, doğrusal olmayan ilişkiler içeren veri kümeleriyle çalışırken, derin sinir ağlarındaki çoğu gizli katman için harika bir varsayılan seçenektir. Ancak "ölü ReLU" gibi sorunlarla karşılaşırsanız veya modeliniz bekleneni vermezse, Leaky ReLU, PReLU veya ELU gibi varyantları denemeyi düşünün.

ReLU bir sinir ağının çıktı katmanında kullanılabilir mi?

ReLU genellikle bir sinir ağının çıktı katmanında kullanılmaz; çünkü aralığı sınırsızdır ve bu da çıktının yorumlanmasını zorlaştırabilir. Çıktı katmanları için yaygın seçimler şunlardır:

  • Sigmoid: İkili sınıflandırma problemleri için.
  • Softmax: Çok sınıflı sınıflandırma için.
  • Doğrusal aktivasyon: Regresyon görevleri için.
ReLU seyrek aktivasyonlara nasıl katkı sağlar ve bu neden önemlidir?

ReLU, tüm negatif girdiler için sıfır çıktıladığı için seyrek aktivasyonlara katkıda bulunur; bu da herhangi bir anda yalnızca bir alt küme nöronun etkin olduğu anlamına gelir. Seyrek aktivasyonlar, hesaplama yükünü azaltır, aşırı uyumu önler ve ağın verinin en ilgili özelliklerine odaklanmasını teşvik eder.

Eğitimde ReLU’nun neden olduğu sorunları ayıklamak için bazı pratik ipuçları nelerdir?

İşte birkaç ipucu:

  • Ölü ReLU sorununu kontrol edin: Eğitim sırasında aktivasyonlarınızı izleyin. Çok sayıda nöron sürekli olarak sıfır üretiyorsa, Leaky ReLU veya PReLU kullanmayı düşünün.
  • Batch normalization kullanın: Bu, gradyanları istikrara kavuşturmaya ve ReLU büyük pozitif değerler ürettiğinde ortaya çıkabilen patlayan gradyanlar gibi sorunları önlemeye yardımcı olabilir.
  • Gradyan kırpma: Patlayan gradyanlar meydana gelirse, kırpma gradyan büyüklüğünü belirli bir değerde sınırlandırarak kararlılığı artırabilir.
  • Ağırlık başlatmayı deneyin: Uygun başlatma (ör. He başlatma), ölü nöronlar veya yavaş yakınsama gibi sorunların olasılığını azaltabilir.
Javier Canales Luna

Yazar

Javier Canales Luna

Serbest çalışan bir veri analistiyim; dünya genelinde şirketler ve kuruluşlarla veri bilimi projelerinde iş birliği yapıyorum. Ayrıca 2+ yıllık deneyime sahip bir veri bilimi eğitmeniyim. Düzenli olarak İngilizce ve İspanyolca veri bilimiyle ilgili makaleler yazıyorum; bunların bir kısmı DataCamp, Towards Data Science ve Analytics Vidhya gibi köklü internet sitelerinde yayımlandı. Siyaset bilimi ve hukuk geçmişine sahip bir veri bilimci olarak amacım, kamu politikası, hukuk ve teknolojinin kesişiminde çalışmak; fikirlerin gücünden yararlanarak özellikle iklim krizi olmak üzere acil sorunların üstesinden gelmemize yardımcı olabilecek yenilikçi çözümler ve anlatılar geliştirmek. Kendimi otodidakt bir kişi, sürekli öğrenen ve disiplinlerarasılığın güçlü bir savunucusu olarak görüyorum. Yeni şeyler öğrenmek için asla geç değildir.

Konular

İlgili