Gradyan iniş, en yaygın kullanılan makine öğrenimi optimizasyon algoritmalarından biridir. Doğru Veri Bilimine doğru, gradyan iniş prensibini ve çalışma sürecini basit ve anlaşılır bir şekilde açıklayan bir makale yayınladı.
"Erken optimizasyon kötülüğün kaynağıdır."
-Bilgisayar bilimci ve matematikçi Donald Ervin Knuth
Çevik, yazılım geliştirme sürecinde iyi bilinen bir terimdir. Arkasındaki temel fikir basittir: hızlı bir şekilde oluşturun yayınlayın geri bildirim alın geri bildirime göre değişiklikler yapın süreci tekrarlayın. Bu yaklaşımın amacı, ürünü kullanıcıya yakın hale getirmek ve en az hatayla mümkün olan en iyi ürünü elde etmek için kullanıcının geri bildirim yoluyla size rehberlik etmesine izin vermektir. Ek olarak, iyileştirme adımlarının küçük olması ve kullanıcıların katılmaya devam etmesine izin vermesi gerekir. Çevik yazılım geliştirme süreci bir dereceye kadar hızlı yinelemeyi içerir. Temel gradyan iniş süreci, mümkün olduğunca çabuk bir çözümle hemen hemen aynıdır ve mümkün olduğunca sık ölçülür ve yinelenir.
AmaçlarıGradyan iniş algoritması, bir fonksiyonun minimum değerini elde etmemizi sağlayan yinelemeli bir işlemdir (burada bazı ek hususlardan bahsedilmemiştir). Aşağıdaki formül, tüm gradyan iniş algoritmasını tek bir satırda özetler:
Ama bu formülü nasıl elde ettik? Aslında çok basit ve sadece bazı lise matematik bilgilerini içeriyor (Editör: Yurtdışı lise matematiği mi? Yüzünüzü kapatın). Bu makale aracılığıyla bu formülü doğrusal regresyon modelleri bağlamında anlamayı ve yeniden üretmeyi umuyoruz.
Bir makine öğrenimi modeli2B alanda bazı veri noktaları vardır. Bu verilerin bir grup öğrencinin boyu ve kilosu ile ilgili olduğunu varsayalım. Gelecekte yeni bir öğrencinin ağırlığını tahmin edebilmek için bu miktarlar arasında belirli bir ilişki tahmin etmeyi umuyoruz. Bu, temelde basit bir denetimli makine öğrenimi teknolojisi durumudur.
Şimdi, uzayda rastgele bir çizgi çizelim ve bazı veri noktalarından geçmesini sağlayalım. O zaman bu çizginin denklemi Y = mX + b'dir, burada m eğimdir ve b bu çizginin Y eksenindeki kesişmesidir.
tahmin
Bilinen bir dizi girdi ve bunlara karşılık gelen çıktılar verildiğinde. Makine öğrenimi modelleri, bu verilere dayanarak yeni girdilerin çıktı sonuçlarını tahmin etmeye çalışacaktır.
Makine öğrenimi süreci
Hata, iki tahmin sonucu arasındaki farktır.
İlgili kavram, maliyet fonksiyonu veya zarar fonksiyonudur.
Maliyet fonksiyonuMaliyet işlevi / zarar işlevi, makine öğrenimi algoritmamızın performansını değerlendirir. Kayıp işlevi, tek bir eğitim örneğinin hatasını hesaplar ve maliyet işlevi, tüm eğitim seti üzerindeki kayıp işlevinin ortalamasıdır. Bu nedenle, bu iki terimi birbirinin yerine kullanacağım.
Temel olarak, maliyet fonksiyonu bize m ve b değerleri verildiğinde modelin tahminlerde "ne kadar iyi" performans gösterdiğini söyleyebilir.
Örneğin, veri setinde N nokta varsa ve tüm bu N veri noktaları için hatayı en aza indirmek istiyoruz. Dolayısıyla, maliyet fonksiyonu toplam kare hatası olacaktır, yani:
N veri noktası için maliyet fonksiyonu
Neden doğrudan mutlak fark yerine kare farkı kullanıyoruz? Çünkü kare farkı daha kolay bir regresyon doğrusu türetmemize izin verir. Aslında, bu doğruyu bulmak için, maliyet fonksiyonunun ilk türevini hesaplamamız gerekir ve mutlak değerin karşılığını hesaplamak, kare değerinin türevini hesaplamaktan çok daha zordur.
Maliyet işlevini en aza indirin
Herhangi bir makine öğrenimi algoritmasının amacı, maliyet işlevini en aza indirmektir.
Bunun nedeni, gerçek değer ile tahmin edilen değer arasındaki hata ne kadar düşükse, algoritmanın öğrenmedeki performansı o kadar iyi olur. En düşük hata değerini elde etmek istediğimiz için, bu m ve b değerlerinin mümkün olan en küçük hatayı almasını istiyoruz.
Keyfi işlevleri nasıl en aza indiririz?
Dikkatlice gözlemleyin, maliyet fonksiyonumuz Y = X² biçimindedir. Kartezyen koordinat sisteminde bu, aşağıdaki şekilde çizilebilen parabolik bir denklemdir:
parabol
Yukarıdaki işlevi en aza indirmek için, kırmızı noktanın konumu olan en düşük Y değerini alabilen X değerini bulmamız gerekir. Bu 2B bir görüntü olduğu için minimum değerini bulmak kolaydır, ancak daha yüksek boyutlarda durum böyle değildir. Bu durumlarda, minimum değeri bulabilen bir algoritma tasarlamamız gerekir.Bu algoritma gradyan düşüştür.
Dereceli alçalmaGradyan inişi, en yaygın kullanılan optimizasyon algoritmalarından biridir ve aynı zamanda sinir ağlarını optimize etmenin en yaygın kullanılan yoludur. Bu, bir fonksiyonun minimum değerini bulmak için yinelemeli bir optimizasyon algoritmasıdır.
Sezgisel anlayış
Aşağıdaki resim boyunca yürüdüğünüzü ve şu anda yeşil noktada olduğunuzu varsayalım. Amacınız minimuma, kırmızı nokta konumuna ulaşmaktır; ancak konumunuzda minimumun nerede olduğunu göremezsiniz.
Olası eylemler şöyle olacaktır:
Esasen, asgariye ulaşmak için iki şeyi bilmeniz gerekir: hangi yoldan gideceğiniz ve ne kadar ileri gideceğiniz.
Gradyan iniş algoritmaları, bu kararları etkili ve verimli bir şekilde almamıza yardımcı olmak için türevleri kullanabilir. Türev, hesaplamadan türetilen bir terimdir ve bir grafiğin belirli bir noktadaki eğimi olarak hesaplanabilir. Bu nedenle, bu teğeti hesaplama yeteneğimiz varsa, minimuma ulaşmak için seçilmesi gereken yönü hesaplayabiliriz. Bunu daha sonra daha ayrıntılı olarak tanıtacağız.
Minimum
Yukarıdaki görselde yeşil noktaya teğet bir çizgi çizebiliriz ve biliyoruz ki yukarı çıkarsak minimumdan uzaklaşacağız ya da tam tersi. Ayrıca bu teğet, eğimin dikliğini anlamamızı da sağlar.
Mavi noktadaki eğim yeşil noktadaki kadar dik değildir, bu da mavi noktadan minimuma ulaşmak için gereken adımın yeşil noktadan çok daha küçük olduğu anlamına gelir.
Maliyet fonksiyonunun matematiksel açıklaması
Şimdi yukarıda açıklanan her şeyi matematiksel formüller olarak yazalım. Y = mX + b denkleminde, m ve b parametreleridir. Eğitim sürecinde, değerleri küçük değişikliklere uğrayacaktır. Bu küçük değişikliği olarak gösteriyoruz. Parametrelerin değerleri sırasıyla m = m-m ve b = b-b ile güncellenecektir. Buradaki amacımız, y = mx + b'deki hatayı en aza indiren, yani maliyet fonksiyonunun değerini en aza indiren m ve b değerlerini bulmaktır.
Maliyet işlevini yeniden yazın:
Buradaki fikir, fonksiyonun türevini ve eğimini hesaplayarak, fonksiyonun türevini / eğimini bulabileceğimizdir.
Öğrenme oranıMinimum veya en alt seviyeye ulaşmak için gereken adım boyutuna öğrenme oranı denir. Daha büyük bir adım / daha yüksek bir öğrenme oranı, daha geniş bir alanı kapsayabilir, ancak minimumu geçme riski vardır. Öte yandan, daha küçük bir adım / daha düşük öğrenme oranıyla en alçak noktaya ulaşmak çok zaman alır.
Aşağıdaki resim, öğrenme oranı kavramını göstermektedir. Üçüncü resimde en az adımla minimuma ulaştık. Bu, bu problem için en uygun öğrenme oranıdır.
Öğrenme oranı çok düşük olduğunda, yakınsamanın birçok adım attığı görülebilir. Öğrenme oranı çok yüksek olduğunda, gradyan inişi aşağıdaki şekilde gösterildiği gibi minimum değere ulaşmayacaktır.
Farklı öğrenme oranlarının deneysel sonuçlarına şu adresten başvurulabilir: https://developers.google.com/machine-learning/crash-course/fitter/graph.
TürevMakine öğrenimi, türevleri optimizasyon problemlerinde kullanır. Gradyan inişi gibi optimizasyon algoritmaları, türevi kullanarak, amaç fonksiyonunu artırmak veya azaltmak için ağırlığı artırıp artırmayacağına karar verir.
Bir fonksiyonun türevini hesaplayabilirsek, devam etme yönünün fonksiyonu minimize etmek olduğunu biliyoruz. Analizden esas olarak iki kavramı ele alıyoruz:
Güç kuralı
Kuvvet kuralı, bir kuvvete yükseltilmiş bir değişkenin türevini hesaplar.
Zincir kuralı
Zincir kuralı, bileşik bir fonksiyonun türevini hesaplamak için kullanılır. Zincir kuralı, Leibniz gösterimi kullanılarak aşağıdaki gibi ifade edilebilir:
Z değişkeni y değişkenine bağlıysa ve y değişkeni x değişkenine bağlıysa, o zaman y ve z bağımlı değişkenlerdir ve z ayrıca ara değişkenler aracılığıyla x'e de bağlıdır. Buna zincir kuralı denir ve matematiksel olarak şu şekilde yazılabilir:
Bir örnekle anlayalım:
Türevler için güç kuralı ve zincir kuralını kullanarak, maliyet fonksiyonunun m ve b'ye göre nasıl değiştiğini hesaplayabiliriz. Bu, kısmi türev kavramını içerir, yani bir fonksiyonun iki değişkeni varsa, fonksiyonun bir değişkene göre kısmi türevini bulmanın yolu, diğer değişkeni bir sabit olarak ele almaktır. Örneklerle açıklamak daha net olacaktır:
Gradyan inişini hesapla
Şimdi bu hesaplama kurallarını orijinal denklemimize uyguluyoruz ve maliyet fonksiyonunun m ve b'ye göre türevini buluyoruz. Maliyet işlevini yeniden gözden geçirin:
Basit olması için içindeki toplama sembolünden kurtulalım. Bu toplama kısmı, özellikle stokastik gradyan inişi (SGD) ve toplu gradyan inişi kavramları söz konusu olduğunda çok önemlidir. Toplu gradyan iniş sürecinde, tüm eğitim numunelerinin hatalarını tek seferde kontrol ederiz; SGD sürecinde her hatayı her seferinde kontrol ederiz. Ancak, basit olması açısından, her hatayı her seferinde kontrol ettiğimizi varsayıyoruz.
Şimdi m ve b ile ilişkili hatanın gradyanını hesaplayalım:
Bu değerleri maliyet fonksiyonuna geri koyun ve öğrenme oranıyla çarpın:
Şimdi, bu denklemdeki 2 o kadar önemli değil, çünkü bu sadece öğrenme oranımızın iki veya yarısı kadar büyük olduğu anlamına geliyor. Bu yüzden onu atıyoruz. Bu nedenle, sonunda, bu makalenin tamamı gradyan inişi için iki basit denkleme yoğunlaştırılmıştır.
m¹, b¹ = sonraki pozisyon parametresi; m, b = mevcut pozisyon parametresi.
Bu nedenle, gradyanı çözmek için veri noktalarımızı yeni m ve b değerleriyle yineliyor ve kısmi türevleri hesaplıyoruz. Bu yeni gradyan, mevcut konumdaki maliyet fonksiyonunun eğimini ve parametrelerimizi güncellemek için hareket etmemiz gereken yönü gösterebilir. Güncellememizin boyutu, öğrenme oranına göre kontrol edilir.
sonuç olarakBu makalenin amacı gradyan iniş kavramını göstermektir. Doğrusal regresyon için bir optimizasyon stratejisi olarak gradyan inişini kullandık. En uygun çizgiyi çizerek öğrencinin boyu ve kilosu arasındaki ilişkiyi ölçün. Bununla birlikte, bu doğrusal regresyon örneğinin gösterimin basitliği için seçildiğini ve gradyan inişinin diğer makine öğrenimi teknikleri için de kullanılabileceğini belirtmek önemlidir.
Aktarım: Makinenin Kalbi https://www.jiqizhixin.com/articles/2019-04-07-6