Yapay Sinir Aglarinda Kullanilan Optimizasyon Algoritmalari

ABDULLAH ATCILI
Machine Learning Turkiye
7 min readNov 6, 2020

Yapay Sinir Ağlarında Kullanılan Optimizasyon Algoritmaları nelerdir? Avantajları, dezavantajları ve arka planda kullanılan matematik modelleri ile beraber bu yazıda ele alınmıştır.

Optimizasyon

Yapay sinir ağlarında uygulanan aşamalardan olan optimizasyon için öncelikle hata fonksiyonunun (loss function) tanımlanmasına ihtiyaç duyulmaktadır. Geleneksel ve modern yöntemlerde, optimizasyon demek, bir maliyet/kayıp fonksiyonunun belirli kısıtlara ve parametrelere tabi olarak en yüksek/düşük hale getirilmesi demektir.

Yapılan optimizasyon neticesinde bulunan minimum değerin, local minima değil, global minimaya götürmesi, optimizasyonun en önemli hedefidir. Eğitim setinde (training set) bulunan minimum değerler, en iyi sonuç bulunduğunu garanti etmez; optimizasyon, local minimaya düşmüş de olabilir. Bu yüzden hangi modelde hangi optimizasyonun uygulandığı önem kazanır. Yapay sinir ağlarında kullanılan optimizasyon algoritmalarına şimdi giriş yapabiliriz.

Gradient Descent (Gradyan Azalma)

Gradyan azalma modelinde, rastgele seçilmiş olan parametre değerleri ile global minimuma ulaşılmak hedeflenir. F(x) = Xb olduğu durumda :

Bu durumda ise b = b — learning_rate* (de/db) olacaktır.

Sonuç olarak, öğrenme oranı, gradyan azalma optimizasyonunda önemli bir yer tutar. Büyük öğrenme oranı, çözümden uzaklaştırırken, küçük öğrenme oranı sonuca götürmeye yardımcı olmayabilir. Gradyan azalma local minimaya takılabilir veya çok boyutlu veri setlerinde öğrenme oranını bulabilmek komplike olabilmektedir.

Avantajları:

Minimum noktaya kararlı yakınsama yapar,

Vektörleştirme (vectorisation) yararları kullanılabilir,

Hesaplama açısından verimlidir.

Dezavantajları:

Lokal minimaya düşebilir.

Bütün data seti kullandığında dolayı daha yavaş öğrenir.

Sonuç olarak Batch Gradyan azalma küçük veri setlerinde (m<2000) mükemmel şekilde çalışabilmektedir.

Stochastic Gradient Descent

Stokastik gradyan azalma, gradyan azalma gibidir ancak gradyan azalmada bütün veri seti kullanılırken, stokastik gradyan azalmada tek bir örneklem kullanılır. Stokastik gradyan azalma yönteminde tek seçilen veri ile işlem yapıldığı için global mimimum noktasına kararlı bir şekilde ilerleme gözlenmez. Diğer taraftan, rastgele parametre katsayıları ile bir örnek üzerinde işlem yaptığından local minimaya düşme ihtimali daha düşüktür.

Stokastik gradyan azalma, gradyan azalmaya nazaran daha gürültülü bir grafik çizer. Minima noktasına ulaşması için daha fazla iterasyon sayısına ihtiyaç duymaktadır ancak tek bir örnek üzerinde çalıştığı için, hesaplama maliyeti gradyan azalmadan daha verimlidir.

Avantajları:

Büyük veri setlerinde minimuma daha hızlı ulaşır,

Tek örnek üzerinde çalıştığından, hesaplama yönünden hızlıdır,

Farklı rastgele veriler seçerek işlem yaptığı için, local minimaya düşme ihtimali azdır.

Dezavantajları:

Minimum noktaya kararlı yakınsama yapamaz,

Kararlı yakınsama olmadığından, daha fazla iterasyona ihtiyaç duyar,

Tek örnek üzerinde çalıştığından,vektör işlemlerinden kazanılan hız kaybolur.

MiniBatch Gradient Descent

Gradyan azalma bütün veri setini aldığını, Stokastik gradyan azalmanın ise tek bir veri üzerinde çalıştığını yukarıda belirtmiştik, MiniBatch ise 1 ile m (veri setinin uzunluğu) arasında değer alarak hesaplamalarını yapar, Stokastik gradyan azalma ve gradyan azalmanın avantajlarını alıp uygulayan bir optimizasyon algoritmasıdır. Minibatch algoritmasının tek bir veri ile çalıştığı düşünülürse, bu algoritma, Stokastik gradyan azalma algoritması olacaktır. Aynı şekilde bütün veriyi kullandığı düşünülürse, bu algoritma Batch gradyan azalma (gradyan azalma) olacaktır.

Avantajları:

Vektörleştirme (vectorisation) kodu daha verimli hale getirir,

Gradyan azalma ve Stokastik gradyan azalmanın avantajlı taraflarını kullanır,

Hesaplama yönünden verimlidir,

Daha hızlı öğrenebilir.

Dezavantajları:

Hiperparametrelerin yapılandırılmasına ihtiyaç duyulmaktadır.

Görüldüğü üzere Stokastik Gradyan Azalma metodlarında salınımlar mevcuttur. Bu salinimlarin azaltilmasi, global minimum noktasina daha hizli ve daha kararli bir yakinsama saglar.

Üstel Ağırlıklı Ortalama (Exponentially Weighted Averages)

Üstel ağırlıklı ortalama işlemi, gürültülü sinyallerin trendini belirlemede önemli bir rol oynar. Algoritma, belirlenen bir katsayı ile üstel bir şekilde ters orantılı olarak son gelen verilere öncelik verir, ağırlığın sonda gelen verilerde kalmasını sağlar. Beta katsayısına göre genel işlemler yapılır. kullanılan formul 1/(1-Beta)’dır.

Beta değeri her zaman 0 ile 1 arasında olmaktadır ve değer büyüdükçe işleme dahil edilen veri sayısı artmaktadır. Betanın 0.9 olması durumunda, son 10 değer işleme katılırken, Betanın 0.98 olması durumunda, son 50 değer işleme katılır. Veya Betanın 0.5 olması durumunda ise sın 2 değer işleme katılmış olur, bu sayede sinyal daha dinamik bir şekilde takip edilebilir. İşleme alınan örneklemlerde ise mevcut örneklemden geriye gittikçe, geride kalan örneklemlerin değerleri üstel olarak sönümlenir. Yani son değerin ağırlığı en yüksek iken, önceki örneklemlerin değeri azaltılır.

Şekildeki grafikte yılın bütün günlerinden gelen sıcaklık verileri scatter olarak plotlanmıştır. Bu grafikte bütün verileri işleme dahil ederek modelleme yapmanın bizi doğru sonuca götürmeyeceği aşikardır. Bu yüzden mevcut günden önceki bir kaç günün ortalaması alınarak, mevcut günün trend tahmini yapmak daha sağlıklı olacaktır. İşte burada Eksponansiyel ağırlık ortalamalı optimizasyon algoritması devreye girmektedir.

Yukarıdaki ilk grafikte Beta değerinin 0.9 olup, yaklaşık 10 günlük ortalama sıcaklıklar alınarak çizilen plot görülmektedir. İkinci grafikte ise, Beta 0.98 alınarak çizilen (yeşil plot) yaklaşık 50 günlük sıcaklık ortalamaları plotlanmıştır. Grafikler yorumlandığında, alınan Beta değerine göre, önceki verilerin ağırlıkları işlemi etkilemekte ve sonucun doğruluğuna direk katkı sağladığı görülmektedir.

Momentum

Momentum, Stokastik gradyan azalma ile kullanılan popüler bir tekniktir. Sadece mevcut durumda hesaplanan gradyan değerini kullanmak yerine eski gradyanların değerlerini de kullanarak gideceği yönü belirlemeye çalışır. Gradyan azalmada hatırlayacağımız üzere grafik (Şekil 2 Stokastik Gradyan Azalma Grafiği) salınım yaparak minimuma ulaşmaya çalışmaktadır. Çünkü bir batch için hatayı azaltacak olan parametre güncellemeleri verinin tamamında aynı etkiyi oluşturmayabilir.

Burada yapılan dikey hareket salınımlardır ve bu dikey salınımlar öğrenmeyi yavaşlatır. Momentum, bu yapılan dikey hareketleri minimize ederek minimuma daha hızlı ilerlemeyi amaçlamaktadır. Yatay yapılan hareketler ise öğrenmeyi hızlandırarak, daha kısa sürede minimuma ulaşmayı hedefler.

Avantajları:

Momentum, gradyenleri önceki gradyanlarla işleme sokarak sonuca gider, bu durumda kararsız ilerlemeyi önler

Hem gürültüsüz gradyan azalma da hem de gürültülü Stokastik gradyan azalmada arzu edilen durumdur,

Momentum, gradyen azalmadan hemen her zaman daha hızlı çalışır

Dezavantajları:

Momentum 0 olarak başladığı için öğrenme algoritmasınnı hız kazanması belli bir süre alır,

Modele fazladan hiperparametreler girmiş olur (beta).

RMSprop Optimizasyon (Root Mean Square Propagation)

RMSprop optimizasyon, momentum optimizasyon ile benzerdir. RMSprop optimizasyon dikey olarak meydana gelen salınımı minimize eder, Dolayısıyla öğrenme oranını artırarak, yatay boyutta daha hızlı hareket edip minimuma daha hızlı ulaşma imkanı elde ederiz. RMSprop optimizasyon ve gradyan azalma arasındaki fark, matematiksel formülden kaynaklanmaktadır.

Bazı durumlarda v_dw parametresi çok küçük olmakta ve sıfıra bölüm hatası meydana gelebilmektedir. Bunu engellemek için epsilon değeri eklenerek bu hatadan kurtulmak mümkündür.

Avantajları:

Çok geniş kapsamlı veri setlerinde iyi şekilde çalışır.

Daha büyük öğrenme oranları kullanmak mümkündür.

Adam Optimizasyon Algoritması (Adaptive Moment Estimation)

2015 yılında Toronto Üniversitesinde sunumu yapılan Adam optimizasyon algoritması; Momentum ve RMSprop algoritmalarını birleştirip kullanılan algoritmadır. Adam algoritması, son zamanlarda doğal dil işleme konularında geniş kabul görmüştür. Bu algoritma deep learning konularında çok kullanılmaktadır, çünkü iyi sonuçları hızlı şekilde vermektedir.

Moment ve RmsProb algoritmaları başlangıç değeri olarak sıfırdan başlamakta ve bu hız bakımında algoritmaları dezavantajlı duruma getirmekteydi. RMSProp ve Momentum algoritmalarında doğrudan türeve uygulanan yön düzeltmesi Adam algoritmasında önce iterasyon sayısına bağlı bir düzeltmeye tabi tutulur:

Bu düzeltme, momentum ve RMSProp algoritmalarının aksine Adam algoritmasının ilk iterasyondan itibaren etkin bir şekilde yakınsamaya başlamasını sağlar.

Avantajları:

Algoritmanın uygulaması kolaydır,

Küçük hafıza gereksinimlerine ihtiyaç duyar,

Gürültülü veri setleri için uygundur,

Adam algoritması hesaplama açısından verimli bir algoritmadır

Uyarlanabilir Gradyan Algoritması (Adagrad)

Minibatch Gradyan azalmada başarıyı etkileyen faktörlerden biride kullanılan adımın boyutuydu. Bu adım boyutunu doğru belirleyememek, bizi minimuma yakınsamama problemi ile karşı karşıya bırakabilirdi. AdaGrad burada devreye girmekte ve adım boyutunu otomatik olarak belirlemektedir.

Uyarlanabilir Gradyan Algoritması, gradyan tabanlı optimizasyon için bir algoritmadır. Öğrenme oranı, geçmiş gözlemleri hesaba dahil edilerek parametrelere bileşen olarak uyarlanır. Her parametrenin performansı artıran kendi öğrenme oranı vardır. NLP ve Görüntü tanıma konularında kullanımı uygundur.

Avantajları:

Öğrenme oranını manuel olarak ayarlama ihtiyacını ortadan kaldırır,

Adımın boyutuna çok duyarlı değildir,

Yakınsama, ağırlıkların ölçeklendirilmesi eşit olmadığında basit SGD’den daha hızlı ve daha güvenilirdir,

Dezavantajları:

Öğrenme oranını agresif şekilde küçültebilir

Adadelta Optimizasyon Algoritması

Adadelta, Uyarlanabilir Gradyan Algoritması (Adagrad)’ın bir uzantısıdır ve aynı zamanda Adagrad’ın öğrenme oranı agresifliğini azaltmaya çalışır. Bunu , geçmiş birikmiş gradyan penceresini sabit bir w değeriyle sınırlayarak yapar . T zamanında çalışan ortalama daha sonra önceki ortalamaya ve mevcut eğime bağlıdır. Adadelta’da, önceki zaman adımlarının hareketli ortalamasının mevcut eğime oranını aldığımız için varsayılan öğrenme oranını ayarlamamıza gerek yoktur.

Öğrenme Oranı Azalması (Learning Rate Decay)

Optimizasyon algoritmamızı hızlandırmaya yardımcı olabilecek maddelerden biri de, zamanla öğrenme oranını yavaşça azaltmaktır. Buna, öğrenme oranı azalması diyoruz. Buradaki temel amaç, diğer gradyan azalmalarda olduğu gibi minimum değer etrafından yapılacak gezintileri minimize etmektir. Epok sayısı arttıkça, öğrenme oranı azalmakta ve minimum noktaya daha fazla yaklaşma yapmaktadır.

Grafik incelendiğinde, azalan öğrenme oranlarının hem eğitim hem test setinde daha iyi sonuçlar verdiği gözlemlenmiştir.

Kaynakça:

https://www.coursera.org/learn/deep-neural-network/home/week/2

https://d2l.ai/chapter_optimization/minibatch-sgd.html

https://towardsdatascience.com/gradient-descent-811efcc9f1d5

https://medium.com/datadriveninvestor/overview-of-different-optimizers-for-neural-networks-e0ed119440c3

--

--