Makine Öğrenmesi -II

Zeynep Budak
4 min readMay 7, 2021

Merhaba, bugün makine öğrenmesini daha iyi kavrayabilmek için ikinci gözlüğümüzü takıyor olacağız.

Makine Öğrenmesi -I ’de yazdıklarımı iyi pekiştirebildiysek (yani ilk gözlüğü gözümüze takabildiysek) bundan sonraki kısım artık derinlemesine uzmanlık gerektiren bir alan olacaktır. Yani akademik bir bakış açısı sunacaktır. Açıkcası ilk kısmı anlamak bu süreci anlayabilmek açısından yeterlidir. Fakat ikinci gözlükle olayı optimizasyon boyutuna taşıyor olacağız.

Problemin Matematiksel Olarak Modellenmesi ve Optimizasyon Problemine Dönüştürülmesi

Her şeyden önce optimizasyonun ne anlama geldiğine bir bakalım.

Optimizasyon: En iyileme, iyileştirme, en düşük maliyetle en iyi çözüm, belirli kısıtlar altında en uygun sonucu arama.

Matematiksel optimizasyon ise bazı uygun alternatifler arasından en iyi seçimin yapılmasıdır.

Bu tanımların hepsi aslında bir süreç ifade eder.

Peki bizim amacımız nedir?

Cost fonksiyonunu minimum yapacak b ve w katsayılarına ulaşmaktır. Bunu ise problemi optimizasyon boyutuna taşıyarak yapacağız.

Cost fonksiyonu bildiğimiz MSE fonksiyonudur ama bizim burada yaptığımız teorik-varsayımsal dünyadan bir bakış sunmaktır. Fark edildiği üzere MSE’den farklı olarak Cost fonksiyonunda 1/2m şeklinde bir değişiklik vardır, bu da türev işlemlerinin daha hızlı yapılması için eklenmiştir.

“MSE” değeri aynı anda iki gözlükle bakabildiğimiz bir değerdir. Model parametrelerinin tahminlerini bulmak üzere kullanacak olduğumuz optimize edilecek fonksiyondur. Log Loss’da bu fonksiyonlardan biridir. İkinci gözlüğe ait Log-Loss fonksiyonundan Makine Öğrenmesi -I yazımda kısaca bahsetmiştim.

Bir tablo ile tüm olayı adım adım özetleyelim:

Cost fonksiyonunun detaylarına baktığımızda alacağı değerin b ve w katsayılarına bağlı olduğunu görürüz, öyleyse bu fonksiyonu minimum yapmak için bu katsayıların minimum olması gerekir. Peki ama nasıl?

Bunun için iki yöntem vardır.

  1. EKK (En küçük kareler yöntemi, OLS, Normal Denklemler Yöntemi) Yöntemi
  2. Gradient Descent Yöntemi

Yaygın olarak kullanılan makine öğrenmesi kütüphanelerinde gradient descent kullanılmaz. Scikit-learn’de, statsmodels’de, regresyonlarda normal denklemler yöntemi kullanılır.

Şimdi gelin birlikte bu yöntemlerin altında yatan derin teorilere bakalım:

Analitik Çözüm: EKK/ Normal Denklemler Yöntemi

En küçük kareler yöntemi, birbirine bağlı olarak değişen iki fiziksel büyüklük arasındaki matematiksel bağlantıyı, mümkün olduğunca gerçeğe uygun bir denklem olarak yazmak için kullanılan, standart bir regresyon yöntemidir. Vikipedi

Beta0 ve Beta1 değerleri tahmin modelinde (y_sapka = b0+b1*xi ya da y_sapka = b+w*xi) ilgilendiğimiz katsayılardır. Türev işlemiyle beta1(w) ve beta0(b) tahmin değerleri aşağıdaki gibi bulunur.

Katsayı bulma konusunda da görüldüğü üzere iki gözlüğe ihtiyacımız vardır. Birinci gözlük analitik çözümdür. Yani kısmi türevleri sıfıra eşitleyip, matris çözümü yaparak anlık olarak bir fotoğraf çekeriz, parametre tahminlerini de bu denklemi çözdüğümüzde elde ederiz.

İkinci gözlük ise gradient descent ile çözümdür.

Gradient Descent Yöntemi

Peki Gradient Descent nedir?

Gradient Descent herhangi bir parametreye bağlı olan fonksiyonun parametresini değiştirmek üzere o fonksiyonu minimize etmeye çalışan bir optimizasyon yöntemidir. Bir süreçtir. Birçok makine öğrenmesi problemine uyarlanmış bir fonksiyondur. NLP, tavsiye sistemleri gibi birçok alanda kullanılmaktadır.

Nasıl Çalışır?

Gradyanın negatifi olarak tanımlanan “en dik iniş” yönünde, iteratif olarak parametre değerlerini güncelleyerek, ilgili fonksiyonun minimum değerini verecek parametreleri bulur.

Bu tanım biraz havada kaldıysa aşağıda gradient descent fonksiyonu üzerinden çalışma sürecini tekrar anlattım.

Aşağıda gradient descent fonksiyonunu görmektesiniz. Bu fonksiyon tetaya bağlıdır ve tetayı değiştirerek fonksiyonun değerini gözlemleyen iterasyonlar gerçekleştirir. Update kuralındaki teta0(b) ve teta1(w) değerlerini güncelleyip hatanın minimize olmasını hedefler. Bu güncellemeyi ise türev ile yapar. Çünkü türev bir fonksiyonun belirli bir noktadaki maksimum artabileceği yönü verir ve eğer biz bu yönün tersine gidersek fonksiyonun maksimum azalacağı yönü buluruz. Bazı kaynaklarda negative gradient descent olarakta geçer. Tüm olay alfaların (learning rate, öğrenme oranı) önünde yer alan eksilerdedir. En kritik nokta ise bu eksilerdir. Update kuralında türevi alınmış fonksiyonu, öğrenme oranıyla çarpıp, parametrenin eski değerinden çıkarıp (yada ekleyip) parametrenin değerini güncelleriz. Böylece yeni ağırlıkları bulmuş oluruz, bu olay cost fonksiyonu minimum olana kadar devam ettirilir.

Katsayılar bulunduktan sonra model hatamızı değerlendiririz. Gerekirse de geliştirmeler yaparız.

Gradient descent’de katsayı bulmak bir süreç gerektirirken, normal denklemler yönteminde katsayı bulmak tek seferlik bir iştir. Ayrıca:

EKK’da:

  • Hata(MSE) bellidir.
  • Hatayı düşürmek için değişken mühendisliği (feature engineering) yada veri ön işleme yöntemleri (data preprocessing) kullanılır.

Gradient descent’de:

  • Sürece müdahale edilmesi gereken noktalar vardır.
  • Model dışı ayarlanması gereken hiperparametreler vardır. (iterasyon sayısı, öğrenme oranı vb.) Hiperparametre: Modelin veriden öğrenemediği kullanıcının dışardan ayarlaması gereken parametrelerdir.
  • Hatayı düşürmek için hiperparametre optimizasyonu, değişken mühendisliği, veri ön işleme yöntemleri kullanılabilir.

Buraya kadar anlattıklarım umarım makine öğrenmesinin optimizasyon boyutunu anlamanızı kolaylaştırmıştır. Geri bildirimleriniz benim için çok kıymetli. Keyifli okumalar dilerim. :)

Kaynak: https://www.veribilimiokulu.com/

--

--