Herkese merhabalar,
Yeni yazı serimizin 2.yazısında Learning Rate Nedir ve Nasıl Optimize Edilir sorularının cevabını öğreneceğiz.
Önceki yazımızda seriye giriş niteliğinde bilgilendirmelerden ve iteratif bir hata düşürücü bir algoritma olan Gradient Descent algoritmasından bahsettik. Şimdi sırada bu algoritmada kullanılan Learning Rate Hiperparametresinden bahsedeceğim.
Hiperparametrenin ne olduğunu önceki yazı serimin 3. yazısında açıklamıştım. Buradan ulaşabilirsiniz.
O zaman ne duruyoruz, haydi başlayalım!
LEARNING RATE
Serimizin bir önceki yazısına flashback yaparsak gradient descent’te yer alan vektörün 2 karakteristiğinin bulunduğunu söylemiştik.
Gradient descent algoritmamız bir sonraki iterede gideceği yeri bulmak için bu vektörü learning rate isminde bir değer ile çarpar. Bu değer bir hiper parametredir ve hiper parametreler modelimizin optimizasyonu sırasında değeri ayarlanabilen parametrelerdir.
Learning rate çarpımına örnek vermek gerekirse, elinizdeki gradient büyüklüğü 2.5, learning rate’iniz ise 0.01 olsun. Bir sonraki adımda gradient descent algoritmamız vektörümüzü 0.025 uzaklıkta bir yere taşıyacaktır.
Bunu matematiğe dökmek istersek gradient descent fonksiyonumuza bakmamız gerekiyor.

Burada thetaj değerlerimiz weight değerlerimizi, a(alfa) değerimiz learning rate’i gösteriyor. Learning rate’in sağındaki kısım ise bize ilgili weight değerinin Cost Function’ının kısmi türevinin alınacağını söylüyor. Kısmi türev derken elimizde 2 weight değeri varsa bu weight değerlerinin türevlerinin ayrı ayrı alınacağını kastediyorum. Böylece her iterasyonda her weight değeri kendine has olarak hesaplanabiliyor.
Bir dakika Cost Function da ne? Onun için sizleri şuraya alalım:
Burada ilgili weight’in kısmi türev sonucu kendisinden çıkartılarak minimum noktaya yakınlaştırılmak istenmektedir ancak dikakt ederseniz orada learning rate parametresi de var. Zaten weight’in türev sonucu kendisinden çıkınca minimuma yaklaşacak ancak learning rate bu süreci biraz daha kontrollü yapmaya yarayabiliyor.
Ek bir bilgi olarak da gradient descent’ta learning rate parametresini verme amacımız en kısa iterede minimuma yakınsamaktır.
LEARNING RATE İNCELİKLERİ
O zaman düz mantık yürütüp şunu diyebiliriz. “Learning rate değeri ne kadar fazla olursa minimum noktaya çabuk yakınsarız.”
Diyebilir miyiz?
Pek sanmıyorum.
Neden mi? Bunun ilk nedeni ikinci bir düz mantık. Eğer adımlarınız fazla olursa minimum noktayı kaçırabilirsiniz. Ne mi demek istiyorum? Aşağıdaki şekli inceleyelim.
Burada learning rate parametresini olması gerektiği gibi, olması gerekenden az veya çok vermeniz durumu görselleştirilmiştir.
- Eğer parametrenizi çok az verdiğinizde modelinizin minimuma yaklaşma hızı Beşiktaş’ın şampiyon olma hızı ile aynı olacaktır. (Edit: Beşiktaşlıyım 🙂 ) Yani learning rate küçükken minimuma atacağınız adımlar da küçük olduğu için modeliniz minimuma çok uzun sürede yakınsayacaktır.
- Eğer parametremizi çok verirsek (ki sorumuz buydu) o zaman bir sonraki adım minimumun da ilerisinde kalabilir. Hatta her iterasyonda minimuma yakınsayacağınıza ondan uzaklaşabilirsiniz.
- Parametremizi en uygun şekilde vermemiz durumunda en az iterasyonda minimuma yakınsamış oluruz.
UYGUN LEARNING RATE PARAMETRESİNİ BULMA
Öncelikle şunu söylemem gerekiyor ilk seferde hiçbir işlem yapmadan direk uygun learning rate parametresini bulursanız hayattaki tüm şanslarınızı tek seferde tüketmişsiniz demektir. (Şaka şaka ya gülün diye 🙂 )
Sizleri Crash Course’un bir parçası olan şu egzersize almak isterim: https://developers.google.com/machine-learning/crash-course/fitter/graph
Burada learning rate değerlerini ayarlayarak Step tuşuna bastığınızda o learning rate değeri ile bir iterasyon gerçekleştirmiş oluyorsunuz.
İlgili sayfada Optional Challenge altında Goldilocks learning rate değeri gözümüze çarpmakta. Peki nedir bu Goldilocks learning rate? Bunun için önce Goldilocks’a göz atmamız lazım.
GOLDILOCKS LEARNING RATE VE LEARNING RATE ŞİFRELERİ
Başlamadan önce belirtmek isterim ki Tolga Akkuş, şu yazısında Goldilocks konusuna değinmiş. Benim bu açıklamamın kaynağı da orasıdır. İsteyenler orayı da okuyabilirler. Kısaca alıntılamak gerekirse:
“Ormanda yaşayan üç kişilik bir ayı ailesi vardır. Anne ayı yaptığı çorbaları tabaklara doldurur ve çorbalar soğuyana kadar ailecek dışarı çıkarlar. O sırada dışarda gezen minik kız Goldilocks evi görünce içeri girer ve çorbalarla karşılaşır. Önce büyük tabaktaki baba ayının çorbasının tadına bakar ama ağzı yanar, sonra orta tabaktaki anne ayının çorbasının tadına bakar yine ağzı yanar, en son küçük tabaktakini içer, küçük çorba her şeyi ile tam Goldilocks’a göredir.”
Buna göre burada Goldilocks Learning Rate aslında Gradient Descent algoritmamızın en optimizasyonlu duruma gelmesi için gereken Learning Rate değeridir. Goldilocks prensibini hatırlarsak burada Goldilocks kendi ağzının yanmayacağı optimum tabak büyüklüğünü bulup ondan çorba içiyordu.
Bahsetmek istediğim bir diğer konu da her iterasyonda minimuma atılan adımların katettiği mesafenin azaldığı konusu.
Bunun nedeni ise her iterasyonda Cost Function’ımızın türevi alınacağından Cost Function’ımızın daha da küçülmesidir.
Gradient Descent formülünü hatırlayalım.

Burada learning rate ile çarpılan J(theta) kısmı ilgili Cost Function değerini ifade eder. Aşağıdaki görsel daha açıklayıcı olacaktır.
Yalnız dikkatli olmanız gereken bi husus var, Learning Rate’i seçerken bu adım küçülmelerine güvenmemeliyiz. Yani nasıl olsa adımlar küçülecek ben yine de büyük vereyim derseniz minimumfan uzaklaşma problemiyle karşılaşmanız olası olacaktır. Uygun learning rate’i bulmak için ise bir çok yöntem mevcut:
Sabit değer olarak belirlenebilir, ya da adım adım artan bir değer olarak da belirlenebilir (örneğin belli bir öğrenme adımına kadar 0.001 arttıra arttıra gidip, o adımdan sonra 0.01 arttırarak gitme gibi), momentum değerine bağlı olarak belirlenebilir ya da adaptif algoritmalar tarafından öğrenme esnasında öğrenilebilir.
Burada benim değineceğim yöntem bir değer aralığı belirleyip o değer aralığında kalan değerleri Learning Rate değeri olarak verip algoritmayı denemek. Örneğin 0.1-1 arasında bir aralık seçtiğinizde ve gradient descent algoritmasında learning rate olarak verdiğinizde çıkan sonucun optimuma yaklaşma step sayısı, optimumdan uzaklaşma durumlarına göre doğru aralığı seçebilirsiniz. Eğer bu aralıkta learning rate bulamazsanız aralığınızı genişletebilirsiniz.
KAPANIŞ
Geldik bir yazımızın daha sonuna. Bu yazımda Learning Rate hiperparametresinden bahsetmeye çalıştım. Eğer sorularınız olursa benimle iletişime geçebilir veya buradan yorum olarak yazabilirsiniz. Serinin bir sonraki yazısında Gradient Descent çeşitlerine değineceğim. Hepinize güzel, verimli, mutlu ve koronasız günler diliyorum Yapay Zeka ve sağlıcakla kalın. Serinin sonraki yazısında görüşmek üzere 🙂