Sinir Ağları (Neural Network) Gerçekte Nasıl Çalışır | Bu İşin Sihri Nedir
Önceki yazımızda Yapay Sinir Ağları Nelerdir gibi konulardan bahsetmiştik. Şimdi ise gerçek sihir neymiş onu inceleyeceğiz.
Sinir ağlarının yaptığı asıl sihir siz sadece modele X (input) ve Y(sonuç) veriyorsunuz ve diğer her şeyi model kendi kendine algılıyor. Bu sürece sonuçdan sonuca öğrenme (end-to-end learning) denir.
Peki bu nasıl olacak?
Cevabı bir sonraki yazımız olan Backpropagation Nedir' de inceleyeceğiz.
Sinir Ağları Sihiri (Matematik)
Örnek üzerinden ilerleyelim. Diyelim ki elimizde bir veri kümesi var ve bu veri kümesinde bir evin alanı, yatak oda sayısı ve bulunduğu ilin posta kodu var. Tahmin edilmek istenen ise bu evin fiyatı. İlk yazımız olan Lineer Regresyon ' daki örneği biraz daha komplike yapalım. Bu örnek için şöyle basit bir sinir ağı çizimi yapabiliriz.
![]() |
| Problemimiz için yaptığımız 2 katmanlı sinir ağı |
Ev örneğinden devam edersek elimizde 3 tane feature (özellik) var \(( x_{1} , x_{2}, x_{3})\). Bu üç inputu sinirler ile bağlıyoruz. Bu ilk katmanda kullandığımız 3 sinire önceki yazıda bahsettiğimiz gibi gizli katman (hidden layer) denir. Bu sinir ağının ulaşmaya çalıştığı hedef bu 3 özelliği kullanarak bir evin fiyatını tahmin etmek. Bunun için yapmamız gereken tek şey, modele yeterince veri vermemiz olacaktır.
Hadi şimdi bu sinir ağını formüle dökelim.
Elimizde 3 tane feature (özellik) var \( x_{1} , x_{2}, x_{3}\) ve bunların toplamına ise girdi katmanı (input layer) denir. Daha sonra kullanılan 3 sinir ağına ise gizli katman (hidden layer) ve en sonda bulunan sinire ise sonuç katmanı (output layer) denir.
İlk gizli katman (3 tane sinir ağının bulunduğu) bir sonuç \( a^{1}\) üretebilmek için girdiye (input) \(( x_{1} , x_{2}, x_{3}\) ihtiyaç duyar. Bu \( a\) harfini kullanmamızın sebebi bu değer sinir ağının "aktivasyon" değeridir. Şuan elimizde 3 tane sinir olduğu için bu 3 sinir ağının her birinin değerini şu şekilde yazabiliriz.
- Birinci sinir birimi için \( a_{1}^{\left[ 1 \right]} \)
- İkinci sinir birini için \( a_{2}^{\left[ 1 \right]} \)
- Üçüncü sinir birimi için \( a_{3}^{\left[ 1 \right]} \)
Bazı tanımlamalar yaparsak bu gösterdiğimiz notasyonlar daha kolay olacaktır.
\( a^{n} \) = \( n\). katmanın aktivasyon değeri
\( a^{n}_{m} \) = \( n\).katmandaki \( m\). birimin aktivasyon değeri
Bir başka deyişle ilk katmanımızda üç tane aktivasyon değeri vardır. Bir tane de katman aktivasyonu vardır ve o da : \( a^{1} = \left[ a_{1}^{\left[ 1 \right]}, a_{2}^{\left[ 1 \right]}, a_{3}^{\left[ 1 \right]}\right]\).
Bu notasyonun input değerlerine de uyması için input değerlerini de sanki bir aktivasyon değeriymiş gibi gösterelim.
\[ x_{1} = a_{1}^{\left[ 0 \right]} \]
\[ x_{2} = a_{2}^{\left[ 0 \right]} \]
\[ x_{3} = a_{3}^{\left[ 0 \right]} \]
Her bir sinir biriminde kullanılan bazı parametreler vardır.
- Ağırlık (Weight) = \( W \) ile gösterilir ve her bir input değeri çıkan sonuç için ne kadar önemli onun bilgisini taşır.
- Ön Yargı (Bias): \( b \) ile gösterilir.
- Aktivasyon Değeri ( Activation Value) = \(z \) ile gösterilir ve şu tarz bir formülü vardır. \[ z = W^{T}x + b \]
- Sonuç (Output) = Aktivasyon değerinin aktivasyon fonksiyonundan çıkan sonucunda denir. Önceki yazımızda aktivasyon fonksiyonlarından bahsetmiştik. \( a \) ile gösterilir ve şöyle bir formülü vardır.
\[ a = g\left( z \right) \]
Bir diğer aktivasyon fonksiyonu olan ReLU 'nun formülü ise şu şekildedir.
\[g \left( z\right) = max\left( z, 0\right)\]
Şimdi bütün bu notasyonları daha iyi anlayalım.
\[ z^{\left[1 \right]}_{1} = W^{\left[ 1 \right]^{T}}_{1}x + b^{\left[ 1\right]}_{1} \] \[ a^{\left[ 1 \right]}_{1} = g\left( z^{\left[ 1 \right]}_{1}\right) \]
Yukarıda yazan ilk denklem birinci katmanın birinci sinir biriminin aktivasyon değeri formülüdür.
İkinci satırda yazan denklem ise birinci katmanın birinci sinir biriminin sonucunu bulan formüldür.
Aynı formülleri birinci katmanın ikinci ve sinir ağı için yazarsak ortaya şöyle bir sonuç çıkacaktır.
\( z^{\left[1 \right]}_{2} = W^{\left[ 1 \right]^{T}}_{2}x + b^{\left[ 1\right]}_{2} \) \( a^{\left[ 1 \right]}_{2} = g\left( z^{\left[ 1 \right]}_{2}\right) \)
\( z^{\left[1 \right]}_{3} = W^{\left[ 1 \right]^{T}}_{3}x + b^{\left[ 1\right]}_{3} \) \( a^{\left[ 1 \right]}_{3} = g\left( z^{\left[ 1 \right]}_{3}\right) \)
Üç sinir biriminden çıkan sonuclar ise \( a^{\left[1\right]} = \begin{bmatrix}a^{\left[ 1 \right] }_{1} \\ a^{\left[ 1 \right] }_{2} \\ a^{\left[ 1 \right] }_{3} \end{bmatrix} \) matrisidir.
Birinci katmandan çıkan aktivasyon metrisi ikinci katmanda bulunan sinir birimi için input girdisi olacaktır. Bunun için ikinci katmandaki sinir hücresinin denklemleri ise şu şekildedir.
\[ z^{\left[2 \right]}_{1} = W^{\left[ 2 \right]^{T}}_{1}x + b^{\left[ 2\right]}_{1} \] \[ a^{\left[ 2 \right]}_{1} = g\left( z^{\left[ 2 \right]}_{1}\right) \]
İnput girdisi birinci katmandan çıkan aktivasyon matrisi \( a^{\left[ 1\right]}\) olduğu için denklemde \( x\) gördüğümüz yere \( a^{\left[1 \right]}\) yazalım.
\[ z^{\left[2 \right]}_{1} = W^{\left[ 2 \right]^{T}}a^{\left[1 \right]} + b^{\left[ 2\right]}_{1} \] \[ a^{\left[ 2 \right]}_{1} = g\left( z^{\left[ 2 \right]}_{1}\right) \]
Bu yazdığımız denklemleri genel bir formüle dökelim.
Diyelim ki \( i \) şuanki katmanımız olsun. O zaman bu katman için yazacağımız denklemler şöyledir:
\[ z^{\left[i \right]} = W^{\left[ i \right]^{T}}a^{\left[i-1 \right]} + b^{\left[ i\right]} \] \[ a^{\left[ i \right]} = g\left( z^{\left[ i \right]}\right) \]
Bu durum ilk katman için de sağlanır. \( i = 1\) olduğunda inputumuz \( a^{[0]} \) olacaktır ve bu input da üst kısımda belirttiğimiz gibi modele verilen veriye \( x \) işarettir.
Bu işlemlerin sonucu olan \( g\left( z^{\left[ 2 \right]}_{1}\right) \) bizim modelimizin bulduğu sonuçtur. Bundan sonra yapılması gereken ise modelin parametrelerinin iyileştirilip modeli daha doğru bir modele çevirmek olacaktır.
Birinci katmandan çıkan aktivasyon metrisi ikinci katmanda bulunan sinir birimi için input girdisi olacaktır. Bunun için ikinci katmandaki sinir hücresinin denklemleri ise şu şekildedir.
\[ z^{\left[2 \right]}_{1} = W^{\left[ 2 \right]^{T}}_{1}x + b^{\left[ 2\right]}_{1} \] \[ a^{\left[ 2 \right]}_{1} = g\left( z^{\left[ 2 \right]}_{1}\right) \]
İnput girdisi birinci katmandan çıkan aktivasyon matrisi \( a^{\left[ 1\right]}\) olduğu için denklemde \( x\) gördüğümüz yere \( a^{\left[1 \right]}\) yazalım.
\[ z^{\left[2 \right]}_{1} = W^{\left[ 2 \right]^{T}}a^{\left[1 \right]} + b^{\left[ 2\right]}_{1} \] \[ a^{\left[ 2 \right]}_{1} = g\left( z^{\left[ 2 \right]}_{1}\right) \]
Bu yazdığımız denklemleri genel bir formüle dökelim.
Diyelim ki \( i \) şuanki katmanımız olsun. O zaman bu katman için yazacağımız denklemler şöyledir:
\[ z^{\left[i \right]} = W^{\left[ i \right]^{T}}a^{\left[i-1 \right]} + b^{\left[ i\right]} \] \[ a^{\left[ i \right]} = g\left( z^{\left[ i \right]}\right) \]
Bu durum ilk katman için de sağlanır. \( i = 1\) olduğunda inputumuz \( a^{[0]} \) olacaktır ve bu input da üst kısımda belirttiğimiz gibi modele verilen veriye \( x \) işarettir.
Bu işlemlerin sonucu olan \( g\left( z^{\left[ 2 \right]}_{1}\right) \) bizim modelimizin bulduğu sonuçtur. Bundan sonra yapılması gereken ise modelin parametrelerinin iyileştirilip modeli daha doğru bir modele çevirmek olacaktır.
Peki bu nasıl olacak?
Cevabı bir sonraki yazımız olan Backpropagation Nedir' de inceleyeceğiz.
Bu yazıyı bu güzel meme ile bitirelim.
![]() |
| ReLU Çalışma Mekanizması |


Yorumlar
Yorum Gönder