Önceki alıştırmada , ağımıza gizli katmanlar eklemenin doğrusal olmayan işlemleri temsil etmek için yeterli olmadığını gördünüz. Doğrusal işlemler üzerinde gerçekleştirilen doğrusal işlemler yine de doğrusaldır.
Bir sinir ağını değerler arasındaki doğrusal olmayan ilişkileri öğrenecek şekilde nasıl yapılandırabilirsiniz? Modele doğrusal olmayan matematiksel işlemler eklemenin bir yoluna ihtiyacımız var.
Bu size biraz tanıdık geliyorsa, bunun nedeni dersin başlarında doğrusal bir modelin çıktısına doğrusal olmayan matematiksel işlemler uygulamış olmamızdır. Lojistik Regresyon modülünde, modelin çıktısını bir sigmoid fonksiyonundan geçirerek, 0 ile 1 arasında sürekli bir değer (olasılığı temsil eden) üreten doğrusal bir regresyon modelini uyarladık.
Aynı prensibi sinir ağımıza da uygulayabiliriz. Daha önce 2. alıştırmada ele aldığımız modelimize tekrar bakalım, ancak bu sefer her düğümün değerini çıktılamadan önce sigmoid fonksiyonunu uygulayacağız:
Oynat düğmesinin sağındaki >| düğmesine tıklayarak her düğümün hesaplamalarını adım adım inceleyin. Grafiğin altındaki Hesaplamalar panelinde her düğüm değerini hesaplamak için gerçekleştirilen matematiksel işlemleri gözden geçirin. Her düğümün çıktısının artık önceki katmandaki düğümlerin doğrusal kombinasyonunun sigmoid dönüşümü olduğunu ve çıktı değerlerinin tümünün 0 ile 1 arasında sıkıştırıldığını unutmayın.
Burada, sigmoid fonksiyonu sinir ağının aktivasyon fonksiyonu olarak görev yapar; bir nöronun çıktı değerinin, sinir ağının bir sonraki katmanındaki hesaplamalara girdi olarak geçirilmeden önce uygulanan doğrusal olmayan bir dönüşümüdür.
Aktivasyon fonksiyonunu ekledikten sonra, katman eklemenin etkisi daha da artıyor. Doğrusal olmayan fonksiyonları üst üste yığmak, girdiler ve tahmin edilen çıktılar arasındaki çok karmaşık ilişkileri modellememizi sağlıyor. Kısaca, her katman, ham girdiler üzerinde daha karmaşık, daha üst düzey bir fonksiyon öğreniyor. Bunun nasıl çalıştığına dair daha fazla sezgi geliştirmek isterseniz, Chris Olah'ın mükemmel blog yazısına bakabilirsiniz.
Ortak etkinleştirme fonksiyonları
Aktivasyon fonksiyonu olarak yaygın olarak kullanılan üç matematiksel fonksiyon sigmoid, tanh ve ReLU'dur.
Yukarıda bahsedilen sigmoid fonksiyonu, $x$ girdisine aşağıdaki dönüşümü uygulayarak 0 ile 1 arasında bir çıktı değeri üretir:
\[F(x)=\frac{1} {1+e^{-x}}\]
İşte bu fonksiyonun grafiği:

Tanh (hiperbolik tanjantın kısaltması) fonksiyonu, x girdisini -1 ile 1 arasında bir çıktı değeri üretecek şekilde dönüştürür:
\[F(x)=tanh(x)\]
İşte bu fonksiyonun grafiği:

Doğrulmuş doğrusal birim aktivasyon fonksiyonu (kısaca ReLU ), çıktıyı aşağıdaki algoritmayı kullanarak dönüştürür:
- Eğer girilen değer $x$ 0'dan küçükse, 0 döndür.
- Eğer girilen değer $x$ 0'dan büyük veya 0'a eşitse, girilen değeri döndürün.
ReLU, max() fonksiyonu kullanılarak matematiksel olarak ifade edilebilir:
İşte bu fonksiyonun grafiği:

ReLU, sinir ağı eğitimi sırasında kaybolan gradyan problemine daha az duyarlı olduğu için, sigmoid veya tanh gibi düzgün bir fonksiyona kıyasla aktivasyon fonksiyonu olarak genellikle biraz daha iyi sonuç verir. Ayrıca ReLU'nun hesaplanması bu fonksiyonlara göre önemli ölçüde daha kolaydır.
Diğer etkinleştirme fonksiyonları
Pratikte, herhangi bir matematiksel fonksiyon aktivasyon fonksiyonu olarak kullanılabilir. Diyelim ki \(\sigma\) Bu, aktivasyon fonksiyonumuzu temsil eder. Ağdaki bir düğümün değeri aşağıdaki formülle verilir:
Keras, birçok etkinleştirme fonksiyonu için kullanıma hazır destek sunmaktadır. Bununla birlikte, yine de ReLU ile başlamanızı öneririz.
Özet
Aşağıdaki video, sinir ağlarının nasıl oluşturulduğu hakkında şimdiye kadar öğrendiğiniz her şeyin özetini sunmaktadır:
Artık modelimiz, insanların genellikle sinir ağı derken kastettiği tüm standart bileşenlere sahip:
- Sinir hücrelerine benzeyen ve katmanlar halinde düzenlenmiş bir düğüm kümesi.
- Her bir sinir ağı katmanı ile altındaki katman arasındaki bağlantıları temsil eden, öğrenilmiş ağırlıklar ve sapmalar kümesi. Alttaki katman başka bir sinir ağı katmanı veya başka bir tür katman olabilir.
- Bir katmandaki her düğümün çıktısını dönüştüren bir aktivasyon fonksiyonu. Farklı katmanlar farklı aktivasyon fonksiyonlarına sahip olabilir.
Bir uyarı: sinir ağları her zaman özellik çaprazlamalarından daha iyi olmayabilir, ancak sinir ağları birçok durumda iyi sonuç veren esnek bir alternatif sunar.