Gradyan iniş, minimum hatayı veya kayıp değerinin nerede daha az olduğunu bulmamıza yardımcı olan bir algoritmadır. Fonksiyonda herhangi bir noktayı seçip minimum hatayı elde etmek için negatif yönde yavaşça hareket ediyoruz. Ancak hareket ederken tahmin değerinden ve doğruluğundan çıkarılan değer olan hata değerini de önemsiyoruz. Ayrıca, olumsuz hale gelmemelidir.
Aşağıdaki örnekten daha iyi anlayabiliriz:
Bir makinenin kilometreleri mile çevirdiğini varsayalım.
Ancak kilometreyi mile çevirecek bir formülümüz yok. Her iki değerin de doğrusal olduğunu biliyoruz, yani mili ikiye katlarsak kilometre de iki katına çıkar.
Formül şu şekilde sunulmuştur:
mil = kilometre * c
Burada C bir sabittir ve sabitin tam değerini bilmiyoruz.
Bir ipucu olarak, bazı evrensel doğruluk değerlerimiz var. Doğruluk tablosu aşağıda verilmiştir:
Şimdi keyfi bir C değeri kullanacağız ve sonucu tanımlayacağız.
Yani C değerini 0.5 ve kilometre değerini 100 olarak kullanıyoruz. Bu bize cevap olarak 50 veriyor. Bildiğimiz gibi doğruluk tablosuna göre değer 62.137 olmalıdır. Yani bulmamız gereken hata aşağıdaki gibidir:
yanlış = doğru – hesaplandı
= 62.137 – 50
= 12.137
Benzer şekilde, sonucu aşağıdaki resimde görebiliriz:
Şu anda 12.137 hatamız var. Daha önce tartıştığımız gibi, mil ve kilometre arasındaki ilişki doğrusaldır. Dolayısıyla rastgele sabit C’nin değerini artırırsak daha az hata alabiliriz.
Bu sefer C değerini 0,5’ten 0,6’ya değiştirdik ve aşağıdaki resimde gösterildiği gibi 2137 hata değerini aldık:
Şimdi hata oranımız 12317’den 2137’ye yükseldi.C değeri hakkında daha fazla tahmin kullanarak hatayı hala iyileştirebiliriz.C değerini 0.6 ile 0.7 arasında tahmin ediyoruz ve -7.863 çıkış hatası alıyoruz.
Bu kez hata, doğruluk tablosunu ve gerçek değeri geçer. Ardından minimum hatayı geçiyoruz. Yani hatadan, 0.6 (Hata = 2.137) çıktımızın 0.7’den (Hata = -7.863) daha iyi olduğunu söyleyebiliriz.
C’nin sabit veya sabit öğrenme hızında neden küçük değişiklikler yapmaya çalışmadık? C’nin değerini 0,6’dan 0,61’den 0,7’ye değiştireceğiz.
C = 0,61 değeri bize 1,137 gibi daha küçük bir hata verir, bu 0,6’dan daha iyidir (Hata = 2,137).
Şimdi 0.61 C değerimiz var ve 62.137 tamsayı değerinden sadece 1.137 hatası veriyor.
Bu, minimum hatayı bulmaya yardımcı olan gradyan iniş algoritmasıdır.
Python kodu:
Yukarıdaki senaryoyu Python programlamaya dönüştürüyoruz. Bu Python programı için ihtiyacımız olan tüm değişkenleri başlatıyoruz. Kilo_mile yöntemini de bir C (sabit) parametresi ilettiğimiz yerde tanımlıyoruz.
Aşağıdaki kodda sadece durdurma ve maksimum iterasyon için koşulları tanımlıyoruz. Bahsedildiği gibi, maksimum iterasyona ulaşıldığında veya hata değeri hassasiyetten büyük olduğunda kod duracaktır. Sonuç olarak, sabit değer otomatik olarak küçük bir hata olan 0,6213’e ulaşır. Yani kademeli oranlar da bu şekilde çalışır.
Python’da gradyan regresyonu
Dahil edilen veri kümeleriyle birlikte gerekli paketleri ve Sklearn’ü içe aktarıyoruz. Ardından, aşağıdaki resimde gösterildiği gibi öğrenme oranını ve birkaç yinelemeyi ayarlıyoruz:
Yukarıdaki resimde sigmoid fonksiyonunu gösterdik. Şimdi bunu aşağıdaki görseldeki gibi matematiksel forma çeviriyoruz. Ayrıca Sklearn’ün iki özellik ve iki pivot içeren yerleşik veri setini de içe aktarıyoruz.
Artık X değerlerini ve şeklini görebiliriz. Şekil, toplam satır sayısının 1000 olduğunu ve daha önce tanımladığımız iki sütun olduğunu göstermektedir.
Aşağıda gösterildiği gibi sapmayı eğitilebilir bir değer olarak kullanmak için her X satırının sonuna bir sütun ekliyoruz. Şimdi, X şekli 1000 satır ve 3 sütundur.
Ayrıca y’yi yeniden şekillendiriyoruz ve şimdi aşağıda gösterildiği gibi 1000 satır ve 1 sütunumuz var:
Ağırlık matrisini de aşağıda gösterildiği gibi X rakamı yardımıyla tanımlıyoruz:
Şimdi sigmoid türevini kurduk ve X’in değerinin daha önce gösterdiğimiz sigmoid aktivasyon fonksiyonundan geçtikten sonra olacağını varsaydık.
Ardından, önceden belirlenmiş yineleme sayısına ulaşılana kadar döngü yaparız. Tahminleri sigmoid aktivasyon fonksiyonlarından geçtikten sonra öğreniyoruz. Ağırlıkları güncellemek için aşağıdaki kodda gösterildiği gibi hatayı ve gradyanı hesaplıyoruz. Ayrıca, kayıp grafiğini görüntülemek için geçmiş listesindeki her dönem için kaybı kaydediyoruz.
Artık bunları her çağda görebiliriz. Hata azalıyor.
Artık hata değerinin sürekli olarak düştüğünü görebiliriz. Yani bu bir gradyan iniş algoritması.
Diğer gönderilerimize göz at
[wpcin-random-posts]
İlk Yorumu Siz Yapın