Yapay zeka temelleri
Backpropagation Nedir?
Backpropagation Nedir?
Derin öğrenme sistemleri son derece karmaşık kalıpları öğrenme yeteneğine sahiptir ve bunu ağırlıklarını ayarlayarak gerçekleştirirler. Derin bir sinir ağındaki ağırlıklar tam olarak nasıl ayarlanır? Bir processo aracılığıyla ayarlanırlar ve bu processo backpropagation olarak adlandırılır. Backpropagation olmadan, derin sinir ağları resimleri tanıyarak ve doğal dili yorumlayarak görevleri gerçekleştiremezler. Backpropagation’un nasıl çalıştığını anlamak, genel olarak derin sinir ağlarını anlamak için kritiktir, bu nedenle backpropagation’u tartışalım ve bir ağın ağırlıklarının nasıl ayarlandığını görelim.
Backpropagation anlaşılması zor olabilir ve backpropagation’u gerçekleştirmek için kullanılan hesaplamalar oldukça karmaşık olabilir. Bu makale, karmaşık matematikten kaçınarak backpropagation hakkında sezgisel bir anlayış sağlamak için tasarlanmıştır. Ancak, backpropagation’un arkasındaki matematik hakkında bazı tartışmalar gerekli olacaktır.
Backpropagation’un Amacı
Backpropagation’un amacını tanımlayarak başlayalım. Derin bir sinir ağındaki ağırlıklar, sinir ağı birimlerinin arasındaki bağlantıların gücünü temsil eder. Sinir ağı kurulduğunda, birimler arasındaki bağlantılar hakkında varsayımlar yapılır. Veri sinir ağından geçerken, ağırlıklar hesaplanır ve varsayımlar yapılır. Veri ağın son katmanına ulaştığında, özelliklerin veri setindeki sınıflarla ilişkisine ilişkin bir tahmin yapılır. Tahmin edilen değerler ile gerçek değerler arasındaki fark, kayıp/hata olarak adlandırılır ve backpropagation’un amacı kayıp/hatayı azaltmaktır. Bu, ağırlıkları ayarlayarak ve varsayımları gerçek ilişkiler arasında daha fazla benzerlik göstererek gerçekleştirilir.
Derin Bir Sinir Ağını Eğitme
Backpropagation bir sinir ağına uygulanmadan önce, sinir ağındaki normal/ileri eğitim geçişi gerçekleştirilmelidir. Bir sinir ağı oluşturulduğunda, bir dizi ağırlık başlatılır. Ağırlıkların değerleri, ağ eğitilirken değiştirilir. Sinir ağındaki ileri eğitim geçişi, üç ayrı adımdan oluşur: nöron aktivasyonu, nöron transferi ve ileri propagasyon.
Derin bir sinir ağını eğittiğimizde, çeşitli matematiksel fonksiyonları kullanmamız gerekir. Derin bir sinir ağındaki nöronlar, gelen veri ve bir aktivasyon fonksiyonundan oluşur ve bu fonksiyon, nodu etkinleştirmek için gereken değeri belirler. Bir nöronun aktivasyon değerini hesaplamak için, ağırlıklı girişlerin toplamı ve bir bias değeri kullanılır. Ağırlık ve girdi değerleri, kullanılan nodların indeksine bağlıdır. Aktivasyon değerini hesaplamak için dikkate alınması gereken bir diğer sayı, bias değeridir. Bias değerleri değişmediğinden, ağırlık ve girdilerle birlikte çarpılmaz, sadece eklenir. Bu, aktivasyon değerinin aşağıdaki denklem kullanılarak hesaplanabileceği anlamına gelir:
Aktivasyon = (ağırlık * girdi) toplamı + bias
Nöron aktivasyonu yapıldıktan sonra, aktivasyon fonksiyonu, nöronun gerçek çıktısının ne olacağını belirlemek için kullanılır. Farklı öğrenme görevleri için farklı aktivasyon fonksiyonları optimaldir, ancak yaygın olarak kullanılan aktivasyon fonksiyonları sigmoid fonksiyonu, Tanh fonksiyonu ve ReLU fonksiyonudur.
Nöronların çıktıları, aktivasyon değerini istenen aktivasyon fonksiyonuna uygulayarak hesaplanır. İleri propagasyon, bir katmandan alınan çıktıları bir sonraki katmana girdiler olarak kullanmaktır. Yeni girdiler, yeni aktivasyon fonksiyonlarını hesaplamak için kullanılır ve bu işlemin çıktısı bir sonraki katmana iletilir. Bu işlem, sinir ağındaki son katmana kadar devam eder.
Ağda Backpropagation
Backpropagation süreci, bir modelin eğitim geçişinin son kararlarını alır ve sonra bu kararların hatalarını belirler. Hatalar, ağındaki çıktılar ile beklenen/istenen çıktılar arasındaki fark olarak hesaplanır.
Hatalar hesaplandıktan sonra, bu bilgiler ağı geri yönde yayılır ve ağın parametreleri bu sırada değiştirilir. Ağın ağırlıklarını güncellemek için kullanılan yöntem, kalkülüsün zincir kuralına dayanır. Ancak, backpropagation’un arkasındaki fikirleri anlamak için kalkülüs bilgisine gerek yoktur. Sadece, bir nöronun çıktısı verildiğinde, çıktının eğimi bir transfer fonksiyonu kullanılarak hesaplanır ve bu, türetilmiş bir çıktı üretir. Backpropagation yapılırken, bir nöron için hata aşağıdaki formül kullanılarak hesaplanır:
hata = (beklenen_çıktı – gerçek_çıktı) * nöronun çıktısının eğimi
Çıktı katmanındaki nöronlar için, sınıf değeri beklenen değer olarak kullanılır. Hata hesaplandıktan sonra, hata gizli katmandaki nöronlar için girdi olarak kullanılır, yani gizli katmandaki hata, çıktı katmanındaki nöronların ağırlıklı hatalarının toplamıdır. Hata hesaplamaları, ağırlık ağı boyunca geri yönde yayılır.
Ağın hataları hesaplandıktan sonra, ağındaki ağırlıklar güncellenmelidir. Daha önce de bahsedildiği gibi, hata hesaplamak, çıktının eğiminin belirlenmesini içerir. Eğimi hesapladıktan sonra, gradient descent olarak bilinen bir processo, ağındaki ağırlıkları ayarlamak için kullanılabilir. Bir gradient, bir eğimdir ve bu eğim ölçülebilir. Eğim, “y” nin “x” e göre hesaplanmasıyla hesaplanır. Sinir ağı ve hata oranı durumunda, “y” hesaplanan hatadır, “x” ise ağındaki parametrelerdir. Ağındaki parametreler, hesaplanan hata değerleriyle ilişkili bir ilişkiye sahiptir ve ağındaki ağırlıklar değiştirildikçe hata artar veya azalır.
“Gradient descent” , ağırlıkları güncellemek için kullanılan bir processo olup, hata oranını azaltmaya çalışır. Backpropagation, sinir ağı parametreleri ile hata oranı arasındaki ilişkiyi öngörmek için kullanılır ve bu da ağı gradient descent için hazırlar. Bir ağı gradient descent ile eğitmek, ağırlıkları ileri propagasyon ile hesaplamak, hatayı geri yaymak ve sonra ağındaki ağırlıkları güncellemek anlamına gelir.












