Cost Function Ve Gradient Descent

Cost Function

Burada Cost Function (Maliyet Fonksiyonu) ile hipotez fonksiyonumuzun doğruluk değerini ölçmeye çalışacağız. Bir önceki yazımda hipotez fonksiyonunu nasıl tanımlarız ondan bahsetmiştim. Adı üstünde tahmin yaptığımız için hatalı olacaktır, Cost Function ile de bu hatanın hangi boyutta olduğunu göreceğiz. Cost Function bize, tüm örnekler için  tahmin değerleri ile gerçek değerlerin arasındaki ortalama farkı verir.

Önce formülü yazalım,sonra adım adım ne yaptığını incleyelim.

J(\theta_{0},\theta_{1})=\frac{1}{2m}*\sum_{i=1}^{m} (h_{\theta(x_{i})-y_{i}}) ^{2}

*J(\theta_{0},\theta_{1}): Parametrelerimiz, bu parametreleri kullanırsak bizim için maliyeti ne olur onu hesaplamaya çalışıyoruz.

\frac{1}{2m}: Burada biliyoruz ki m training setimizdeki satırların sayısı (örneklerimizin sayısı). Burada m'e bölerek ortalamayı elde etmiş oluyoruz. Peki 2 nereden geldi? Bir sonraki bölümde Gradient Descent algoritmasını kullanırken, Cost Function'un türevini alacağız. Türevini aldığımız zaman \frac{1}{2m} ifadesindeki 2 ile, türevden gelen 2 sadeleşecek. Yani 2 ile çarpmamızın sebebi sadece işlem kolaylığı. Sonucu etkileyecek bir şey değil.

\sum_{i=1}^{m} (h_{\theta(x_{i})-y_{i}}) ^{2} : Burada yaptığımız şey, her bir hipotez fonksiyonumuzun sonucundan gerçek değeri çıkarıp karesini alıp her birini toplayarak toplam hatayı buluyoruz. Mesela diyelim ki elimizde 1000 tane örnek var. Yani 1000 tane ev fiyatı tahmininde bulunduk ve herbir tahminden gerçek değerini çıkarıp karesini aldık ve topladık. Bu bize 1000 evin toplam hatasını verir.

 

GRADIENT DESCENT(DERECELİ AZALMA)---TEK DEĞİŞKENLİ

Burada da Cost Function'da bulduğumuz hatayı en aza indirmeye çalışacağız.Bunu yaparken de parametler üzerinde oynamalar yapıp en doğru sonucu tahmin etmeye çalışacağız.

Öncelikle elimizde \theta_{0}\ ve \ \theta_{1} değerleri vardı.

  1. Bu değerlere rastgele sayılar veriyoruz. (Rastgele veriyoruz çünkü zaten bu değerleri optimize etmeye çalışıyoruz.).
  2. Cost Functionun değeri istenen seviyelere gelene kadar \theta değerleri ile oynuyoruz.

Algoritma:

Uygun değeri bulana kadar işlemler tekrar et:

\theta_j:=\theta_j-\alpha*\frac{\partial}{\partial \theta_j}(J(\theta_0,\theta_1))  (J = 0 ve J = 1 için ) J değerleri. Parametre indexi.

Şimdi bu denklemi inceleyelim.

\alpha: Learning rate(Öğrenme katsayısı)

Hatanın her adımda ne kadar büyüklükte azaltılacağını belirtir.

Bunu grafikle açıklayalım.

   Source:Andrew Ng's Machine Learning course on Coursera

Yukarıdaki grafikleri incelediğimiz zaman alphanın seçimi ile öğrenmenin doğrudan ilişkisi olduğunu görebiliriz. Alpha'yı çok büyük seçersek, büyük adım atmış oluruz ve ulaşmamız gereken değeri çoktan geçmiş olabiliriz. Eğer alpha değeri çok küçük seçilirse bu sefer de istenilen noktaya ulaşmak çok uzun sürebilir ve performans kaybına sebep oluruz.

Gradient Descent'in çalışma prensibi, her seferinde denklemin kısmi türevini alarak azaltma işlemi yapıyor.  Kısmi türev bir değişkene göre pozitif veya negatif değişim oranıdır. (Kısmi türevi neden kullandığımızı daha iyi anlayabilmek için bu açıklama çok yardımcı olacaktır).

Şimdi algoritmayı nasıl uygulamamız gerekiyor onu inceleyelim

temp_0:=\theta_0-\alpha* \frac{\partial}{\partial \theta_0}J(\theta_0,\theta_1)

temp_1:=\theta_1-\alpha* \frac{\partial}{\partial \theta_1}J(\theta_0,\theta_1)

\theta_0:=temp_0

\theta_1:=temp_1

Dikkat ederseniz yukarıda thetaları eşzamanlı olarak güncelledik. Eğer önce \theta_0' güncelleseydik, \theta_1 için yaptığımız denklem bundan etkilenecek ve bize farklı sonuç verecekti.

NOT: Bu konuda tek değişkenli Gradient Descent'i anlatıyorum. Dikkat ederseniz özellik olarak sadece x değişkeni vardı. İlerleyen bölümlerde çok değişkenli Gradient Descent'ten bahsedeceğim.

Genel olarak Gradient Descent Algoritmamızı şu şekilde uygulayabiliriz.

repeat

{

temp_0:=\theta_0-\alpha*\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^(i)-y^(i)))

temp_1:=\theta_1-\alpha*\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^(i)-y^(i)))*x^(i)

\theta_0=temp_0

\theta_1=temp_1

}

h_\theta(x^(i)-y^(i))  Bu ifade Cost Function'ın türevidir. Bir önceki yazımda neden 1/2m ile çarptığımızı anlatmıştım, işte türevini aldığımız zaman kullandığım 2 ile sadeleşti ve bize kolaylık sağladı.

Bir sonraki yazımda çok değişkenli (çoklu özellik) lineer regresyondan bahsedeceğim

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *