!-- Global site tag (gtag.js) - Google Analytics -->

Yapay Sinir Ağlarının Temelleri

YSA
Sinir Ağları büyük bir konudur. Bugün Sinir Ağlarının temellerini tartışacağım.

Otantik kaynaklardan referanslar vereceğim. Bu yüzden bana sormaya çekinmeyin.

Yapay bir sinir ağı (YSA) , insan beyninin çalışma şeklini taklit eden bir süreç aracılığıyla bir dizi veri içinde altta yatan ilişkileri tanımayı amaçlayan bir dizi algoritmadır. Böyle bir sistem, genellikle göreve özel kurallarla programlanmadan örnekleri analiz ederek görevleri yerine getirmeyi “öğrenir”.

Global Mimari

Sinir ağları çeşitli katmanlarda düzenlenmiştir:

  • Giriş katmanı : giriş katmanı nöronları analiz edilecek problemi açıklamak için gereken bilgileri alır;
  • Gizli katman : gizli katman, sinir ağlarının doğrusal olmayan olayları modellemesine izin veren bir ara kattır. Bunun "gizli" olduğu söyleniyor çünkü dış dünya ile doğrudan bir temas yok. Her gizli katmanın çıktıları, aşağıdaki katmanın birimlerinin girişleridir;
  • Çıktı katmanı : çıktı katmanı ağın son katmanıdır; sonucu, tahmini üretir.

Algılayıcı

Algılayıcı, yapay zeka alanında dikkate değer bir psikolog olan Frank Rosenblatt tarafından 1957'de icat edilen denetimli bir öğrenme algoritması olan ilk ve en basit sinir ağı modeli.

Bu ağın basit olduğu söyleniyor çünkü sadece iki katmanı var: bir giriş katmanı ve bir çıktı katmanı. Bu yapı yalnızca bir ağırlık matrisi içerir ve giriş katmanının tüm birimleri çıkış katmanına bağlanır.

Algılayıcı, ikili tahminler için doğrusal bir sınıflandırıcıdır, başka bir deyişle, verileri iki kategoriye ayırabilir veya ayırabilir.

Doğrusal olarak ayrılabilir verilerin 3D gösterimi

Algılayıcı işlemi

Her şeyden önce, basit algılayıcı giriş değerini ( x1 x2 ,…, xn ) alır ve ayrıca n + 1 sabitleri ile tanımlanır :

  • sinaptik katsayılar (veya ağırlıklar: w1 w2 ,…, wn );
  • Bir sapma: aktivasyon fonksiyonunun 1'e eşit olduğu bir nöron. Diğer nöronlar gibi, bir sapma, kendisini genellikle eşik adı verilen bir ağırlık yoluyla önceki tabaka nöronlarına bağlar.

Daha sonra her bir giriş değeri, ilgili ağırlığı ( wixi ) ile çarpılmalıdır ve ağırlıklı bir toplam elde etmek için bu ürünlerin her birinin sonucu eklenmelidir Nöron daha sonra toplamın sonucunun threshold eşiğinden daha düşük veya daha yüksek olmasıyla belirlenen iki olası değerden birini oluşturur .

Ağırlıklı toplamı, iki vektörün bir nokta ürün haline transforme edilebilir (ağırlık), ve (giriş), burada w⋅ X = Σ Wixi ardından eşitsizlik hareket çözülebilir İçeride ISTV melerin RWMAIWi'nin diğer tarafa (eşik).

Ayrıca, aktivasyon fonksiyonunun 1'e eşit olduğu bir nöron gibi olduğunu unutmayın, bu nedenle bu sonun ağırlığı (eşiği) ile çarpımı, eşiği 1 ile çarpmak anlamına gelir. Sonuç olarak, ortak gösterim, eşiğin bir ile değiştirilmesini içerir. değişken (yanlılık için), burada = - θ .

Tüm bu adımları tamamlamak aşağıdaki mimariyi üretir:

Basit algının şematik gösterimi

Ağırlıklı toplam elde edildiğinde, bir aktivasyon fonksiyonunun uygulanması gerekir Basit bir algılayıcı, sonuç değerlerini 0 veya 1 olarak sınıflandırarak elde edilen değeri bir ikili çıkışa dönüştürmek için Heaviside adım işlevini kullanır.

Heaviside basamak fonksiyonunun grafik gösterimi

Heaviside adım işlevi, giriş verilerinin doğrusal olarak ayrılabildiği sınıflandırma görevlerinde özellikle yararlıdır.

Çok Katmanlı Algılayıcı (Multi-Layer Perceptron)

Çok katmanlı Algılayıcı (Multi-Layer Perceptron - MLP) bir giriş katmanı, bir çıkış katmanı ve bir veya daha fazla gizli katmandan oluşur. Yani, artık basit algılayıcı gibi bir sinir ağı değil , çoğul biçimde sinir ağlarıdır . MLP'nin katmanı varsa, n-1 ağırlık matrislerine sahiptir.

Teorik olarak, gizli katmana yeterli sayıda nöron eklemek, doğrusal olmayan herhangi bir işleve yaklaşmak için yeterli olabilir.

Çok Katmanlı Algılayıcı mimarisi:

Çok Katmanlı Algılayıcının grafiksel gösterimi

Bir sinir ağı, tüm girişleri tüm katmanlardan, çıkış katmanına kadar geçirdikten sonra bir tahmin oluşturur. Bu işleme ileri yayılma denir .

Sinir ağları, bir algılayıcı ile aynı şekilde çalışır. Bu nedenle, sinir ağlarını anlamak için algılayıcının anlaşılması gerekir!

Aktivasyon Fonksiyonları

Aktarma işlevi olarak da bilinen etkinleştirme işlevi, sinir ağının önemli bir bileşenidir. Doğrusal olmayan kavramın ağa sokulmasına ek olarak, bir birime (nöron) giren sinyalin bir çıkış sinyaline (yanıt) dönüştürülmesini amaçlamaktadır.

Fonksiyonun adı biyolojik eşdeğeri “aksiyon potansiyeli” nden gelir ulaşıldığında bir nöron tepkisi ile sonuçlanan uyarma eşiği.

Eğilim sayesinde, aktivasyon fonksiyon eğrisini yukarı veya aşağı kaydırmanın mümkün olduğunu bu da ağ için daha büyük öğrenme fırsatları anlamına geldiğini belirtmek gerekir .

İki tür aktivasyon işlevi vardır: doğrusal ve doğrusal olmayan.

Doğrusal Aktivasyon Fonksiyonu

Bu, f (x) = x biçimini alan basit bir işlevdir . Giriş, çok az değişiklik yapılarak veya hiç değişiklik yapılmadan çıkışa geçer. Bu bir orantılılık durumundan ne fazla ne de azdır.

Doğrusal bir fonksiyonun grafik temsili

Doğrusal Olmayan Aktivasyon Fonksiyonları

Doğrusal olmayan fonksiyonlar en yaygın olarak kullanılır ve doğrusal olarak ayrılamayan verilerin ayrılmasını mümkün kılar. Doğrusal olmayan bir denklem, girdiler ve çıktılar arasındaki yazışmayı düzenler.

Doğrusal olmayan ana fonksiyonlar:

  • sigmoid:

Sigmoid fonksiyonu (veya lojistik fonksiyonu) 0 ile 1 arasında bir çıktı üreten bir “S” eğrisidir, olasılık olarak ifade edilir.

Sigmoid fonksiyon tanımı

Sigmoid fonksiyonunun grafik temsili

“Daha pürüzsüz” bir versiyon olan Heaviside adım işlevine tercih edilir, ancak hatasız değildir. Gerçekten de, sigmoid işlevi sıfır merkezli değildir, bu nedenle negatif girdiler pozitif çıktılar üretebilir. Dahası, nöronlar üzerindeki etkisi nispeten düşüktür, sonuç genellikle 0 veya 1'e çok yakındır, bu nedenle bazılarının doygunluğuna yol açar. Son olarak, üstel fonksiyon işlemi bir hesaplama olarak pahalı hale getirir.

  • Hiperbolik Teğet (TanH):

Hiperbolik tanjant, öncekine benzer bir sigmoidal işlevdir; ancak simetrisinden dolayı genellikle lojistik fonksiyondan daha iyi sonuçlar verir. Aslında fark, TanH fonksiyonunun sonucunun -1 ile 1 arasında eşleştirilmesidir. Genellikle sıfır merkezli olduğu için Sigmoid fonksiyonuna tercih edilir. Bu işlev, özellikle gizli katmanlar için çok katmanlı algılayıcılar için idealdir.

Hiperbolik tanjant tanımı

TanH fonksiyonunun grafiksel gösterimi

Bu yönün dışında, Tanh işlevi Sigmoid işleviyle aynı dezavantajları paylaşır.

  • Rektifiye Doğrusal Ünite (ReLU):

ReLU işlevi, yukarıdaki işlevlerin doygunluk sorununu çözmeye yardımcı olur. En sık kullanılanıdır.

ReLU fonksiyon tanımı

ReLU işlevinin grafiksel gösterimi

Giriş negatifse, çıkış 0, pozitifse çıkış z olur . Bu etkinleştirme işlevi ağ yakınsamasını önemli ölçüde artırır ve doymaz.

Ancak ReLU işlevi de mükemmel değildir. Girdi değeri negatifse nöronun inaktif kalması, dolayısıyla ağırlıklar güncellenmemesi ve ağın artık öğrenmemesi mümkündür.

Bu aktivasyon işlevi neden gerekli?

Doğrusal olmayan bir aktivasyon işlevi olmadan, yapay bir sinir ağı, kaç katmana sahip olursa olsun, basit bir algılayıcı gibi davranacaktır, çünkü katmanlarını toplamak yalnızca başka bir doğrusal işlevle sonuçlanacaktır.

Hangi işlev kullanılmalıdır?

Bu bir gerileme veya sınıflandırma sorunu mu? İlk durumda, bu bir ikili sınıflandırma durumu mu? Sonuçta, daha iyi bir aktivasyon fonksiyonu yoktur, bu ele alınacak göreve bağlıdır.

Maliyet fonksiyonu

Öğrenmek için, algılayıcı bir hata yaptığını ve vermesi gereken cevabı bilmelidir. Denetimli öğrenmedir. Bunu yapmak için, amacı hatayı hesaplamak, başka bir deyişle y_hat tahmini ile beklenen değeri arasındaki boşluğu ölçmek olan bir maliyet fonksiyonu kullanmak gerekir . Bu nedenle, maliyet işlevini en uygun olana kadar en aza indirmek gerekir: sinir ağı eğitimidir.

Maliyet fonksiyonunu tanımlamak için , ortalama kare hatası kullanılabilir:

Ortalama kare hata (MSE)

nerede:

  • eğitim örneklerinin sayısıdır;
  • beklenen değerdir;
  • y_hat , tahmin edilen değerdir.

Tahmin ve beklenen değer arasındaki karşılaştırma yapıldıktan sonra, bilgi sinir ağına geri gönderilmelidir, böylece sinapslara dönüş yolculuğunu yapar ve ağırlıkları günceller. Bu, daha önce sözü edilen ileri yayılmanın ters yolundan ne daha fazla ne de daha azdır. Geri yayılım denir .

Daha önce belirtildiği gibi, bir Makine Öğrenimi algoritmasının amacı, maliyet fonksiyonunu en aza indirmek için bir ağırlık kombinasyonu bulmaktır

Dereceli alçalma

Daha fazla ağırlığa ve dolayısıyla yüksek boyutlu alanlara sahip bir durumda, bir sorun vardır: boyutsallığın laneti (The Curse of Dimensionality). Kaba kuvvet gibi saf bir yaklaşım artık kullanılamaz. Maliyet fonksiyonu hesaplamak için uygulanabilir bir yöntemi kullanmak için bu nedenle gereklidir gradyan arttırma, optimizasyon gerçekleştirmek için en popüler algoritmalar birini.

Diyelim ki maliyet fonksiyonu dışbükey:

Dışbükey bir fonksiyonun üç boyutlu gösterimi

Yatay eksenler, parametreler, ağırlık ve yanlılık alanını temsil ederken, maliyet fonksiyonu J, yatay eksenlerin üzerinde bir hata yüzeyidir. Mavi daire, ilk maliyet değeridir. Geriye kalan tek şey aşağıya inmek, ama buradan gitmek için en iyi yol hangisi?

Bu soruyu cevaplamak için, bazı parametrelerin, yani ağırlıkların ve sapmanın değiştirilmesi gerekir. Daha sonra, degrade vektörü doğal olarak en dik eğimi göstereceğinden, maliyet fonksiyonunun gradyanını içerecektir. Giriş değerlerinin sabit olduğunu bilmek önemlidir, bu nedenle ağırlıklar (ve yanlılık) kontrol edilebilen tek ayar değişkenlerini temsil eder.

Şimdi, bir topun yuvarlak bir kova (dışbükey işlevi) içine düştüğünü, sadece onun tabanına ulaşması gerektiğini hayal edin. Bu optimizasyondur. İniş durumunda, konumunu optimize etmek için soldan sağa hareket etmesi gerekecektir.

Bir başlangıç ​​konumundan başlayarak, bu noktaya teğeti çizmek için eğim açısına bakın: bu bir türevi hesaplamak anlamına gelir. Eğim negatifse, top sağa gider, eğer pozitifse sola gider.

Ancak bir şey eksiktir, en azından bir hiperparametre olduğu için: öğrenme oranı ( α ). Eğim, alınacak yönü gösterir, ancak topun o yönde ne kadar ileri gitmesi gerektiğini söylemez. Bu, her bir adımın boyutunu asgari düzeye çıkarmak için belirleyen öğrenme hızının rolüdür.

Her şeyi bir araya getirdiğimizde, gradyan inişi şu şekilde tanımlanabilir:

Gradyan iniş için kanonik formül

nerede:

  • θ modelin parametreleridir (ağırlık vektörü);

  • ∇ J (θ) , maliyet fonksiyonunun gradyanıdır, başka bir deyişle, bu, kısmi türevlerin her birini içeren vektördür. İşlevi bir kez farklılaştırarak alacağız;
  • α , öğrenme sürecinden önce belirlenen öğrenme oranıdır (adım boyutu).

Öğrenme oranının seçimi hala açık uçlu bir sorudur, belirli bir veri kümesindeki belirli bir model için optimal değer analitik olarak hesaplanamaz. Bunun yerine, deneme yanılma yoluyla yeterince iyi bir öğrenme oranı keşfedilmelidir, ancak zaman geçtikçe azalması gerektiğini unutmayın.

Öğrenme oranı için doğru değeri seçmek önemlidir çünkü bir yandan öğrenme hızını ve diğer yandan yerel optimum (yakınsama) bulma fırsatını etkileyecektir. Bu değer, yanlış seçilirse, tahmine dayalı modellerde düşük performansın iki ana nedenini destekleyebilir:

  • Aşırı uyum: algoritma, eğitim veri kümesine gerçekte çok iyi uyum sağlar ve bu bir sorundur çünkü artık verileri genelleştiremeyecektir. Yüksek bir öğrenme oranıyla, her adımda daha fazla mesafe ele alınabilir, ancak eğim sürekli değiştiği için en düşük noktayı aşma riski. Basitçe söylemek gerekirse, kayıp fonksiyonu minimumda dalgalanıyor ve hatta farklı olabilir;
  • Yetersiz yerleştirme : çok düşük bir öğrenme oranı ayarlamak, negatif eğime doğru güvenle hareket etmeyi mümkün kılar. Düşük bir α daha kesindir, ancak eğimi hesaplamak çok zaman alır ve acı verici bir şekilde yavaş yakınsamaya yol açar.

Sol: α çok küçük; Orta: iyi α; Sağ: α çok büyük.

İyi bir öğrenme oranı ile ve birkaç tekrardan sonra, uygun bir minimum bulunmalıdır, o zaman top artık aşağı inemez.

Son olarak, ağı optimize etmek için en iyi ağırlıklar belirlenir.

Ayrtıştırma bununla ilgilidir: her bir ağırlığın ağın toplam hatasına katkısını bilmek ve böylece optimize edilmiş ağırlık konfigürasyonuna yaklaşmak.

Stokastik eğim inişi

Bununla birlikte, bir sorun var: gradyan inişinin maliyet fonksiyonunun dışbükey olması gerekiyor. Başka bir deyişle, eğri, her bir teğetinin tamamen üzerindedir ve böyle bir fonksiyonun türevi, aralığı boyunca artmaktadır. Daha önce gösterildiği gibi, bu formu alır: ∪. Peki dışbükey olmayan bir fonksiyon ne olacak?

Bu sefer maliyet fonksiyonu J'nin dışbükey olmadığını varsayalım :

Dışbükey olmayan bir fonksiyonun üç boyutlu gösterimi

Böyle bir durumda, artık en dik eğimi almak için yeterli değildir. Hata yüzeyinin anlaşılması görsel olarak daha karmaşık hale gelir ve yerel minimumlar ve olası eyer noktaları gibi belirli özelliklere sahiptir .

Bu nedenle risk, bazı yinelemeli algoritmaların bloke edilmesine, geri yayılımı büyük ölçüde yavaşlatmasına ve en küçük toplam değer (küresel minimum) olmayan bir pozisyona düşmesine neden olmaktır.

Bu sorunun üstesinden gelmek için stokastik gradyan inişini (SGD) kullanmak mümkündür .

SGD için matematiksel formül

Görünüşe rağmen, bu daha hızlı. Daha az ağırlık dalgalanması sağlar, bu da yerel minimum değeri yerel minimumda durdurmadan algılama şansını artırır.

Nitekim, ağırlıkları sadece sonunda ayarlamak için hafızadaki tüm veri setini test etmek ve yüklemek gerekli değildir. Stokastik gradyan inişi bunu her yinelemeden sonra yapacak ve işlemi bir hesaplama olarak daha hafif hale getirecektir. Dahası, standart (veya toplu) gradyan inişi deterministiktir: eğer başlangıç ​​koşulları (ağırlıklar) her zaman aynıysa, sonuç da her zaman aynı olacaktır.

Yapay Sinir Ağları ile ilgili tüm önemli konuları ele aldım. Ama eğer birisi daha fazla veya belirli bir konu hakkında bilmek isterse bana mesaj atmaktan çekinmeyin :)