Bu yazı Makine Öğrenmesi Matematiği yazı dizisinin 6. bölümüdür. Hatırlamak isterseniz:

Şimdi daha derine ineceğiz.

Dereceli azalma çeşitleri ve optimizasyon algoritmalarından bahsedelim.

Dereceli Azalma, optimizasyonu gerçekleştiren en popüler algoritmalardan biridir. Dereceli Azalma (Gradyan İnişi) üzerinde bu kadar durmamızın nedeni sadece doğrusal regresyon problemlerinde değil başta sinir ağları olmak üzere birçok makine öğrenmesi probleminde kullanılmasıdır. Aynı zamanda, birçok derin öğrenme kütüphanesi (lasagne, caffe ve keras), dereceli azalmayı optimize etmek için çeşitli algoritmaların uygulamalarını içerir. Bununla birlikte, bu algoritmalar, çoğu zaman kara kutu iyileştirici (black-box optimizers), olarak kullanılır. “Kara Kutu” optimizasyonu, bir optimizasyon algoritmasının sözde bir kara kutu arabirimi yoluyla bir hedef fonksiyonu optimize etmesi yani en aza indirgemesi beklendiği bir problem durumuna işaret eder. Optimizasyonun amacı, önceden tanımlanmış bir zaman içinde mümkün olan en iyi f(x) değerini bulmaktır.

Dereceli Azalma, bir modelin parametreleri(beta/teta) tarafından parametrelendirilen bir hedef fonksiyonu(maliyet fonksiyonunu) J(θ)’yı en aza indirmenin bir yoludur.  Başka bir deyişle, bir vadiye varana kadar yokuş aşağı nesnel fonksiyon tarafından yaratılan yüzeyin eğim yönünü takip etmektir.

Dereceli Azalmanın üç farklı çeşidi vardır; bunlar, hedef fonksiyonun gradyanını(derecesini) hesaplamak için ne kadar veri kullandığımız konusunda farklılık gösterir. Veri miktarına bağlı olarak, parametre güncellemesinin doğruluğu ile bir güncelleme gerçekleştirmek için gereken süre arasında bir denge kurarız.

Toplu Dereceli Azalma (Batch Gradient Descent)

Vanilya Dereceli Azalması olarak da bilinir. Maliyet fonksiyonunun dereceli azalmasını yani gradyan inişini tüm eğitim verisi seti için hesaplar.

Sadece bir güncelleme gerçekleştirmek için tüm veri kümesinin dereceli azalmasını hesaplamamız gerektiğinden, toplu eğim inişi çok yavaş olabilir ve belleğe sığmayan veri kümeleri için de zor olabilir.

Olasılıksal Dereceli Azalma (Stochastic Gradient Descent)

Stochastic Gradient Descent, Batch Gradient Descent’in aksine her eğitim örneği x(i) ve etiket y(i) için bir parametre güncellemesi gerçekleştirir.

Olasılıksal Dereceli Azalma, bir kerede bir güncelleme gerçekleştirir. Bu nedenle genellikle daha hızlıdır ve çevrimiçi öğrenme için de kullanılabilir.

Mini-Toplu Dereceli Azalma (Mini-Batch Gradient Descent)

Mini-Batch Gradient Descent diğer dereceli azalma algoritmalarının en iyisini alıyor ve her bir mini paket için bir güncelleme gerçekleştiriyor.

Eğitim setinden n boyutta paketler seçmek parametre güncellemelerinin varyansını azaltır; bu da daha kararlı yakınsama sağlayabilir. Mini toplu dereceli azalma çok verimlidir. Yaygın mini paket boyutları 50 ile 256 arasında değişir, ancak farklı uygulamalar için değişiklik gösterebilir.

Dereceli Azalma yöntemlerinin sebep olduğu birçok sorun olabilir. Doğru yakınsama için öğrenme oranını seçmek zor olabilir. Bütün ağırlıklar aynı anda güncellenmeyebilir. Bu problemlere çözüm olarak birçok dereceli azalma optimizasyon algoritması kullanılabilir. Bu algoritmalardan bahsetmeden önce şuna bir bakalım. Dereceli Azalma Algoritmasının doğru çalıştığını anlamak için devir sayısı ile maliyet fonksiyonu arasındaki grafiğe bakıyoruz. Hangi grafik doğrudur? Öğrenme Oranını nasıl seçmeliyiz, doğru öğrenme oranını(alfayı) seçebilmiş miyiz? Bu soruların cevabına aşağıdaki grafiği inceleyerek ulaşabilirsiniz. Düşük öğrenme oranına benzer bir grafik elde ederseniz anlarsınız ki alfayı büyütmelisiniz ve ya çok yüksek öğrenme oranına benzer bir eğri elde ettiyseniz alfa değerini azaltmalısınız.

Not: Maliyet fonksiyonuna kayıp fonksiyonu (loss function) da denir.

ogrenme_orani3.png

Dereceli Azalma Optimizasyon Algoritmaları

Bu algoritmalardan bazıları:

  • Momentum
  • Nesterov accelerate gradient
  • Adagrad
  • Adadelta
  • Rmsprop
  • Adam

Zamanla hepsinden bahsedebiliriz. Şimdi Momentum ile başlayalım.

Momentum

Maliyet fonksiyonu uzun ve dar bir vadi şeklinde ise, dereceli azalma vadi duvarlarının aşağısına hızlı bir şekilde ilerlerken vadi tabanında ise çok yavaş ilerler.

momentum1.png

Özellikle Olasılıksal Dereceli Azalmalarda yüksek varyanslı salınımlar yakınsamaya ulaşmayı zorlaştırıyor. Bu nedenle Momentum denilen bir teknik icat edilmiştir.

Bu Momentum Algoritması ile ilgili yönde gezinerek Dereceli Azalmayı hızlandırdı ve ilgisiz yönlerde salınımı yumuşatmıştır.

Yani yaptığı tek şey, bir γ güncelleme vektörüne(momentum vektörü/terimi) geçmiş adımın güncelleme vektörünü eklemektir. Bundan sonra da parametreleri günceller.

momentum_formul.png
γ momentum terimi genellikle 0.9 veya daha büyük bir değere ayarlanır.

En başta belirtildiği gibi Maliyet fonksiyonu uzun ve dar bir vadi şeklinde ise, dereceli azalma vadi duvarlarının aşağısına hızlı bir şekilde ilerlerken vadi tabanında ise çok yavaş ilerler. Parametreleri, önceki güncellemenin ve dereceli azalmanın güncellemesinin bir birleşimi kullanılarak güncelleyerek bu sorunu hafifletebiliriz. Bu ağırlıklara ivme kazandırmaya benzer.

Böylece Momentum güncellemesi ile, momentum terimi tutarlı bir dereceye sahip herhangi bir yönde hız oluşturacaktır.

momentum2.png

Momentum kullanarak, gereksiz parametre güncellemeleri azaltılır ve bu da daha hızlı ve istikrarlı yakınsama ve azalmış salınımlara neden olur.

momentum_grafik.jpg

Şimdi buraya kadar öğrendiklerimizi kullanma zamanı ! 

Bir önceki bölümde bahsettiğimiz gibi AndrewNG’nin hazırladığı Coursera’daki Machine Learning dersinden yararlanacağız. Kullanacağımız veri setine bir önceki bölümden erişebilirsiniz.

Bu veri setini kullanarak çok değişkenli lineer regresyonu dereceli azalmayı kullanarak gerçekleştireceğiz. Bunun yanında dereceli azalmayı birkaç farklı şekilde implement edeceğiz: batch gradient descent, mini-batch gradient descent ve sonrasında mini-batch gradient descent with momentum.

Devamı-> Makine Öğrenmesi Matematiği 7

 

Designed by Freepik