Bir sinir ağı, sayıları basit işlemlerden oluşan katmanlardan geçirerek girdileri çıktılara dönüştüren matematiksel bir modeldir. Her katman önceki değerleri alır, ağırlıklı toplamlar oluşturur, bias ekler, doğrusal olmayan bir aktivasyon fonksiyonu uygular ve sonucu ileriye aktarır.

Bu açıklama soyut gelebilir, ama temel fikir küçüktür: Bir ağ, girdideki yararlı örüntülerin çıktıda yararlı tahminlere dönüşmesi için ayarlanabilir birçok ağırlık öğrenir.

Sinir Ağı Nedir?

Girdileri x1,x2,,xnx_1, x_2, \dots, x_n olan tek bir nöron için temel hesaplama şöyledir:

z=w1x1+w2x2++wnxn+bz = w_1x_1 + w_2x_2 + \dots + w_nx_n + b

ardından bir aktivasyon uygulanır:

a=g(z)a = g(z)

Burada w1,,wnw_1, \dots, w_n ağırlıklar, bb bir bias ve gg ise ReLU, sigmoid veya tanh gibi bir aktivasyon fonksiyonudur.

Tam bir ileri beslemeli sinir ağı bu örüntüyü katmanlar boyunca tekrarlar. Kısa gösterimle bir katman çoğu zaman şöyle yazılır:

a(l)=g ⁣(W(l)a(l1)+b(l))a^{(l)} = g\!\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)

burada a(l1)a^{(l-1)} bir önceki katmanın çıktısıdır.

Genelde Konuyu Oturtan Sezgi

Her nöron, gördüğü girdi hakkında ağırlıklı bir soru sorar. Büyük pozitif ağırlıklar bazı özellikleri daha önemli hale getirir. Negatif ağırlıklar bir örüntüye karşı etki edebilir. Bias ise eşiği kaydırır. Aktivasyon fonksiyonu da o nöronun ne kadar güçlü tepki vereceğine karar verir.

Katmanları üst üste koymak, ağın özellikleri aşamalı olarak kurmasını sağlar. İlk katmanlar basit örüntüleri yakalar. Daha sonraki katmanlar bunları birleştirerek son görev için daha kullanışlı iç sinyaller üretir.

Bu yüzden sinir ağları sadece “aynı anda birçok formül” değildir. Onlar basit fonksiyonların bileşimidir ve esnekliği veren şey de bu bileşimdir.

Çözümlü Bir Örnek

İki girdili, bir gizli katmanlı ve bir çıktılı küçük bir ağ düşünün. Girdi şu olsun:

x=[21]x = \begin{bmatrix} 2 \\ 1 \end{bmatrix}

Gizli katmanda iki nöron olduğunu ve ReLU kullanıldığını varsayalım. Burada

ReLU(z)=max(0,z)\operatorname{ReLU}(z) = \max(0, z)

Gizli katman hesaplamaları şöyle olsun:

z1=12+(1)1+0=1z_1 = 1 \cdot 2 + (-1) \cdot 1 + 0 = 1 h1=ReLU(z1)=1h_1 = \operatorname{ReLU}(z_1) = 1 z2=0.52+0.511=0.5z_2 = 0.5 \cdot 2 + 0.5 \cdot 1 - 1 = 0.5 h2=ReLU(z2)=0.5h_2 = \operatorname{ReLU}(z_2) = 0.5

Şimdi bu gizli değerleri çıktı nöronuna gönderelim:

s=2h1h2=2(1)0.5=1.5s = 2h_1 - h_2 = 2(1) - 0.5 = 1.5

Kural “s>0s > 0 olduğunda sınıf 1 tahmin et” ise, bu girdi sınıf 1 olarak sınıflandırılır.

Buradaki önemli nokta belirli sayılar değildir. Yapının kendisidir:

  1. girdileri al
  2. ağırlıklı toplamları oluştur
  3. doğrusal olmayan aktivasyonları uygula
  4. tekrarla
  5. son skoru oku

İşte bu, bir sinir ağının ileri yayılım yapmasıdır.

Sinir Ağı Nasıl Öğrenir?

Bir ağı kullanmak bir problemdir. Onu eğitmek ise başka bir problemdir.

Standart denetimli öğrenmede ağ önce bir tahmin üretir. Ardından bir kayıp fonksiyonu, bu tahminin hedeften ne kadar uzak olduğunu ölçer. Gradyan tabanlı eğitim, kaybın her ağırlık ve bias'a göre nasıl değiştiğini hesaplar, sonra da kaybı azaltmak için bunları günceller.

Modern uygulamada bu genellikle backpropagation ile birlikte gradient descent ya da benzer bir optimize edici anlamına gelir. Bu düzenek, gradyan yöntemlerinin çalışabilmesi için türevlenebilir ya da en azından parça parça türevlenebilir bir model ve kayıp fonksiyonuna dayanır.

Kısa hali şöyledir:

predictionlossgradientsparameter update\text{prediction} \to \text{loss} \to \text{gradients} \to \text{parameter update}

Birçok örnek boyunca ağırlıklar, göreve yardımcı olan örüntülere doğru kayar.

Yaygın Hatalar

Daha Fazla Katmanın Otomatik Olarak Daha İyi Sonuç Vereceğini Sanmak

Böyle değildir. Daha fazla katman kapasiteyi artırır, ama aynı zamanda optimizasyonu, veri gereksinimini ve overfitting kontrolünü daha zor hale getirir.

Doğrusal Olmamanın Neden Önemli Olduğunu Unutmak

Eğer her katman yalnızca doğrusal ise, tüm ağ hâlâ tek bir doğrusal dönüşümdür. Derin ağların daha karmaşık ilişkileri temsil etmesini sağlayan şey aktivasyon fonksiyonlarıdır.

Çıktıyı Kesinlik Garantisi Gibi Görmek

Bir ağın çıktısı ancak arkasındaki model, veri ve eğitim düzeni kadar kullanışlıdır. Yüksek bir skor, kanıt ile aynı şey değildir.

Girdi Gösterimini Göz Ardı Etmek

Ağlar ham anlamdan öğrenmez. Kendilerine verilen sayısal gösterimden öğrenirler. Girdiler zayıfsa, tutarsızsa ya da önemli yapıyı içermiyorsa, ağın performansı genellikle düşer.

Sinir Ağları Ne Zaman Kullanılır?

Sinir ağları, girdi ile çıktı arasındaki ilişkinin elle yazılmış kuralların kırılgan ya da yetersiz kalacağı kadar karmaşık olduğu durumlarda kullanılır. Yaygın kullanım alanları arasında görüntü tanıma, konuşma, dil modelleme, öneri sistemleri ve bazı tahmin görevleri vardır.

Her problem için otomatik olarak en iyi seçenek değildirler. Küçük ve yapısal veri kümelerinde daha basit modeller eğitmesi daha kolay, yorumlaması daha kolay ve bazen aynı derecede etkili olabilir.

İyi Bir Zihinsel Model

Bir sinir ağını, ayarlanabilir çok sayıda düğmesi olan katmanlı bir fonksiyon gibi düşünün. İleri yayılım tek bir girdiyi tek bir çıktıya dönüştürür. Eğitim ise gelecekteki çıktılar görev için daha yararlı olsun diye bu düğmeleri değiştirir.

Bu, iki fikri aynı anda akılda tutmanın en temiz yoludur: Sinir ağları bileşim yoluyla hesap yapar ve hatayı azaltmak için parametreleri ayarlayarak öğrenir.

Kendi Sürümünüzü Deneyin

Aynı küçük ağı koruyun, ama girdiyi (2,1)(2, 1) yerine (0,3)(0, 3) yapın. z1z_1, z2z_2, h1h_1, h2h_2 ve son skor ss değerlerini yeniden hesaplayın. Sonra bir ağırlığı değiştirin ve çıktının hangi kısmının oynadığını görün. Bu küçük alıştırma, yalnızca tanımları ezberlemekten çok daha somut biçimde ileri yayılım fikrini kavratır.

Bir soruyla yardıma mı ihtiyacın var?

Sorunuzu yükleyin ve saniyeler içinde doğrulanmış adım adım çözüm alın.

GPAI Solver Aç →