Geri yayılım - Backpropagation

In makine öğrenimi , geri yayılım ( backprop , BP ) yaygın olarak kullanılan bir algoritma eğitim için ileri beslemeli sinir ağları . Geri yayılımın genellemeleri, diğer yapay sinir ağları (YSA'lar) ve genel olarak işlevler için mevcuttur. Bu algoritma sınıflarının tümü, genel olarak "geri yayılım" olarak adlandırılır. Gelen bir sinir ağı uydurma , geri yayılım hesaplar gradyanı bir kayıp fonksiyonu ile ilgili olarak ağırlık tek bir giriş-çıkış, örneğin ağ ve yapar verimli tek tek her ağırlığına göre degrade saf bir doğrudan hesaplama farklı olarak,. Bu verimlilik, çok katmanlı ağları eğitmek için gradyan yöntemlerini kullanmayı , kaybı en aza indirmek için ağırlıkları güncellemeyi mümkün kılar ; gradyan inişi veya stokastik gradyan inişi gibi varyantlar yaygın olarak kullanılır. Geri yayılım algoritması, zincir kuralı tarafından her ağırlığa göre kayıp fonksiyonunun gradyanını hesaplayarak, gradyanı her seferinde bir katman hesaplayarak, zincir kuralındaki ara terimlerin gereksiz hesaplamalarını önlemek için son katmandan geriye doğru yineleyerek çalışır ; bu bir dinamik programlama örneğidir .

Geri yayılım terimi, degradenin nasıl kullanıldığını değil, yalnızca degradeyi hesaplamak için kullanılan algoritmayı ifade eder; bununla birlikte, terim genellikle, stokastik gradyan inişi gibi gradyanın nasıl kullanıldığı da dahil olmak üzere, tüm öğrenme algoritmasına atıfta bulunmak için gevşek bir şekilde kullanılır. Geri yayılım, geri yayılımın tek katmanlı versiyonu olan delta kuralındaki gradyan hesaplamasını genelleştirir ve geri yayılımın özel bir ters birikim durumu olduğu (veya "ters mod") otomatik farklılaşma ile genelleştirilir . Geri yayılım terimi ve sinir ağlarındaki genel kullanımı Rumelhart, Hinton & Williams'da (1986a) duyurulmuş , daha sonra Rumelhart, Hinton & Williams'da (1986b) detaylandırılmış ve popüler hale getirilmiştir , ancak teknik birçok kez bağımsız olarak yeniden keşfedilmiştir ve birçok öncülleri tarihlenmektedir. 1960'lara; bkz. § Geçmiş . Goodfellow, Bengio & Courville (2016) tarafından hazırlanan derin öğrenme ders kitabında modern bir genel bakış sunulmaktadır .

genel bakış

Geriye yayılma hesaplar gradyanı içinde ağırlık alanı bir ile ilgili olarak, yapay sinir ağı kayıp fonksiyonu . Belirtmek:

  • : girdi (özellikler vektörü)
  • : hedef çıktı
    Sınıflandırma için çıktı, sınıf olasılıklarının bir vektörü olacaktır (örneğin, ve hedef çıktı, one-hot / kukla değişken (örneğin, ) tarafından kodlanmış belirli bir sınıftır .
  • : kayıp fonksiyonu veya "maliyet fonksiyonu"
    Sınıflandırma için, bu genellikle çapraz entropidir (XC, log kaybı ), regresyon için ise genellikle kare hata kaybıdır (SEL).
  • : katman sayısı
  • : Tabaka arasında ağırlıkları ve , arasındaki ağırlık katmanda inci düğüm ve katmandaki inci düğüm
  • : katmandaki aktivasyon fonksiyonları
    Sınıflandırma için son katman genellikle ikili sınıflandırma için lojistik fonksiyon ve çok sınıflı sınıflandırma için softmax (softargmax) iken, gizli katmanlar için bu geleneksel olarak her düğümde (koordinat) bir sigmoid fonksiyonu (lojistik fonksiyon veya diğerleri) idi, ancak günümüzde doğrultucu ( rampa , ReLU ) yaygın olmakla birlikte daha çeşitlidir .

Geri yayılımın türetilmesinde diğer ara miktarlar kullanılır; aşağıda gerektiği gibi tanıtılırlar. Sapma terimleri, 1'lik sabit bir girdiye sahip bir ağırlığa karşılık geldikleri için özel olarak ele alınmaz. Geri yayılım amacıyla, onlar ve türevleri verimli bir şekilde değerlendirilebildiği sürece, spesifik kayıp fonksiyonu ve aktivasyon fonksiyonları önemli değildir.

Genel ağ, işlev bileşimi ve matris çarpımının bir birleşimidir :

Bir eğitim seti için bir dizi girdi-çıktı çifti olacaktır, . Eğitim setindeki her girdi-çıktı çifti için, o çiftteki modelin kaybı, tahmin edilen çıktı ile hedef çıktı arasındaki farkın maliyetidir :

Ayrıma dikkat edin: model değerlendirmesi sırasında, girdiler değişirken (ve hedef çıktı bilinmeyebilir) ağırlıklar sabitlenir ve ağ çıktı katmanıyla sona erer (kayıp fonksiyonunu içermez). Model eğitimi sırasında girdi-çıktı çifti sabitlenirken ağırlıklar değişir ve ağ kayıp fonksiyonu ile sona erer.

Geri yayılım , ağırlıkların değişebileceği sabit bir girdi-çıktı çifti için gradyanı hesaplar . Gradyanın her bir bileşeni zincir kuralı ile hesaplanabilir; ancak bunu her ağırlık için ayrı ayrı yapmak verimsizdir. Geri yayılım, her katmanın gradyanını - özellikle, her katmanın ağırlıklı girişinin gradyanı - arkadan öne doğru hesaplayarak, çift hesaplamalardan kaçınarak ve gereksiz ara değerleri hesaplamadan gradyanı verimli bir şekilde hesaplar .

Gayrı, kilit nokta tek yolu bir ağırlık beri olmasıdır etkileyen kaybı üzerindeki etkisi geçer sonraki katmana ve bunu yapar doğrusal , tek veri katmanında ağırlıkların geçişlerini hesaplamamız gerekir vardır , sonra ve önceki katmanı hesaplayabilir ve özyinelemeli olarak tekrarlayabilirsiniz. Bu, verimsizliği iki şekilde önler. İlk olarak, çoğaltmayı önler, çünkü katmandaki gradyanı hesaplarken, sonraki katmanlardaki tüm türevleri her seferinde yeniden hesaplamanız gerekmez . İkinci olarak, gereksiz ara hesaplamalardan kaçınır, çünkü her aşamada, ağırlıklardaki değişikliklere göre gizli katmanların değerlerinin türevlerini gereksiz yere hesaplamak yerine, nihai çıktıya (kayıp) göre ağırlıkların gradyanını doğrudan hesaplar .

Geri yayılım, basit ileri beslemeli ağlar için matris çarpımı veya daha genel olarak birleşik grafik cinsinden ifade edilebilir .

matris çarpımı

Her katmandaki düğümlerin yalnızca bir sonraki katmandaki düğümlere bağlı olduğu (herhangi bir katmanı atlamadan) ve nihai çıktı için bir skaler kaybı hesaplayan bir kayıp fonksiyonu olduğu bir ileri beslemeli ağ temel durumu için, geri yayılım şu şekilde olabilir: basitçe matris çarpımı ile anlaşılır. Esasen, geri yayılım, maliyet fonksiyonunun türevi ifadesini , sağdan sola her katman arasındaki türevlerin bir ürünü olarak değerlendirir - "geriye doğru" - her katman arasındaki ağırlıkların gradyanı kısmi ürünlerin basit bir modifikasyonudur (" geriye doğru yayılan hata").

Bir girdi-çıktı çifti verildiğinde kayıp:

Bunu hesaplamak için girişle başlar ve ileriye doğru ilerler; her katmanın ağırlıklı girdisini ve katmanın çıktısını aktivasyon olarak belirtin . Geri yayılım için, aktivasyonun yanı sıra türevler ( 'de değerlendirilir ) geriye doğru geçiş sırasında kullanılmak üzere önbelleğe alınmalıdır.

Kaybın girdiler cinsinden türevi zincir kuralı ile verilir; her terimin, girişteki ağın (her düğümde) değerine göre değerlendirilen toplam bir türev olduğuna dikkat edin :

Bu terimler şunlardır: kayıp fonksiyonunun türevi; aktivasyon fonksiyonlarının türevleri; ve ağırlık matrisleri:

Gradyan olan devrik matrisler transpoze ve çarpma sırası tersine, ancak girişler aynı olacak şekilde, giriş açısından çıkış türevinin:

Geri yayılım esas olarak bu ifadeyi sağdan sola değerlendirmekten (eşdeğer olarak, türev için önceki ifadeyi soldan sağa çarparak), yolda her katmandaki gradyanı hesaplamaktan oluşur; ek bir adım var, çünkü ağırlıkların gradyanı sadece bir alt ifade değil: fazladan bir çarpma var.

"Seviyede hata" olarak yorumlanan ve seviyedeki girdi değerlerinin gradyanı olarak tanımlanan kısmi ürünler (sağdan sola çarpılarak) için yardımcı niceliğin tanıtılması :

Düzeydeki düğüm sayısına eşit uzunlukta bir vektör olduğuna dikkat edin ; her bileşen "o düğüme (değerine) atfedilebilen maliyet" olarak yorumlanır.

Katmandaki ağırlıkların gradyanı şu şekildedir:

Faktörü, seviye ile seviye arasındaki ağırlıkların seviyeyi girdilerle orantılı olarak etkilemesidir (aktivasyonlar): girdiler sabittir, ağırlıklar değişir.

Kolayca yinelemeli olarak hesaplanabilir:

Ağırlıkların gradyanları böylece her seviye için birkaç matris çarpımı kullanılarak hesaplanabilir; bu geri yayılımdır.

Saf bir şekilde ileriye dönük hesaplama ile karşılaştırıldığında ( resim için kullanılarak ):

geri yayılım ile iki önemli fark vardır:

  1. Açısından hesaplama , katmanların ve ötesinin bariz şekilde çoğaltılmasını önler .
  2. Başlangıç ​​noktasından çarpma – hatayı geriye doğru yayma – her adımın basitçe bir vektörü ( ) ağırlık matrisleri ve aktivasyonların türevleri ile çarpması anlamına gelir . Buna karşılık, daha önceki bir katmandaki değişikliklerden başlayarak ileriye doğru çarpma, her çarpmanın bir matris ile bir matris çarptığı anlamına gelir . Bu daha pahalı ve bir tabaka bir değişikliğin mümkün olan her türlü yolu izlemeye tekabül tabakasındaki değişimleri ileri (Çoğaltma tarafından gereksiz kadar ağırlığı orta miktarlarda hesaplar, etkinleştirme türevleri için ek çarpma ile) değişiklikler gizli düğümlerin değerlerini etkiler.

birleşik grafik

Daha genel grafikler ve diğer gelişmiş varyasyonlar için, geri yayılım otomatik farklılaşma açısından anlaşılabilir , burada geri yayılım ters birikimin özel bir durumudur (veya "ters mod").

Sezgi

Motivasyon

Herhangi bir denetimli öğrenme algoritmasının amacı, bir dizi girdiyi doğru çıktılarına en iyi şekilde eşleyen bir işlev bulmaktır. Geri yayılım için motivasyon, çok katmanlı bir sinir ağını, girdiden çıktıya herhangi bir keyfi eşlemeyi öğrenmesine izin vermek için uygun dahili temsilleri öğrenebilecek şekilde eğitmektir.

Bir optimizasyon problemi olarak öğrenme

Geri yayılım algoritmasının matematiksel türevini anlamak için, önce bir nöronun gerçek çıktısı ile belirli bir eğitim örneği için doğru çıktı arasındaki ilişki hakkında bazı sezgiler geliştirmeye yardımcı olur. İki giriş birimi, bir çıkış birimi ve gizli birimi olmayan ve her bir nöronun doğrusal bir çıkış kullandığı (girdilerden çıkışlara eşlemenin doğrusal olmadığı sinir ağlarındaki çoğu çalışmanın aksine) basit bir sinir ağı düşünün . girdisinin ağırlıklı toplamı.

İki giriş birimi (her biri tek girişli) ve bir çıkış birimi (iki girişli) olan basit bir sinir ağı

Başlangıçta, antrenmandan önce ağırlıklar rastgele ayarlanacaktır. Daha sonra gelen nöron öğrenir eğitim örnekleri , bu durumda bir dizi oluşur küpe burada ve ağa giriş ve t (eğitilmiş olan ağ girişlere verilen vermesi gerekmektedir çıkış) doğru çıktı. İlk ağ, verilen ve bir çıkış hesaplamak y ile ilgili olası farklı olduğu t (rastgele ağırlıkları verilen). Hedef çıktı t ile hesaplanan çıktı y arasındaki farkı ölçmek için bir kayıp fonksiyonu kullanılır . İçin regresyon analizi problemlerine kare hata, bir kayıp fonksiyonu olarak kullanılabilecek sınıflandırma kategorik crossentropy kullanılabilir.

Örnek olarak kare hatasını kayıp olarak kullanan bir regresyon problemini düşünün:

burada E tutarsızlık veya hatadır.

Ağı tek bir eğitim durumu üzerinde düşünün: . Böylece, giriş ve sırasıyla 1 ve 1'dir ve doğru çıkış, t 0'dır. Şimdi, ağın yatay eksendeki çıkışı y ile dikey eksendeki E hatası arasındaki ilişki çizilirse , sonuç bir paraboldür. En az bir parabol çıkış tekabül y hata minimize E . Tek bir eğitim durumu için, minimum yatay eksene de dokunur, bu da hatanın sıfır olacağı ve ağın hedef çıktı t ile tam olarak eşleşen bir çıktı y üretebileceği anlamına gelir . Bu nedenle, girdileri çıktılara eşleme problemi , minimum hatayı üretecek bir fonksiyon bulma optimizasyon problemine indirgenebilir .

Tek bir eğitim durumu için doğrusal bir nöronun hata yüzeyi

Bununla birlikte, bir nöronun çıktısı, tüm girdilerinin ağırlıklı toplamına bağlıdır:

giriş birimlerinden çıkış birimine bağlantıdaki ağırlıklar nerede ve bunlardır. Bu nedenle, hata aynı zamanda nörona gelen ağırlıklara da bağlıdır, bu da öğrenmeyi sağlamak için ağda nihayetinde değiştirilmesi gereken şeydir.

Bu örnekte, eğitim verilerinin enjekte edilmesi üzerine kayıp işlevi

Daha sonra kayıp fonksiyonu , tabanı boyunca yönlendirilmiş bir parabolik silindir şeklini alır . Kayıp fonksiyonunu en aza indiren tüm ağırlık setleri, bu durumda benzersiz bir çözüme yakınsama için ek kısıtlamalar gereklidir. Ağırlıklara belirli koşullar ayarlanarak veya ek eğitim verileri enjekte edilerek ek kısıtlamalar oluşturulabilir.

Hatayı en aza indiren ağırlık kümesini bulmak için yaygın olarak kullanılan bir algoritma gradyan inişidir . Geri yayılım ile, mevcut sinaptik ağırlıklara karşı kayıp fonksiyonun en dik iniş yönü hesaplanır. Daha sonra ağırlıklar en dik iniş yönü boyunca değiştirilebilir ve hata verimli bir şekilde en aza indirilir.

türetme

Gradyan iniş yöntemi, ağın ağırlıklarına göre kayıp fonksiyonunun türevinin hesaplanmasını içerir. Bu normalde geri yayılım kullanılarak yapılır. Bir çıkış nöronu varsayarsak, karesi alınmış hata fonksiyonu

nerede

çıktı ve hedef değer için kayıp ,
bir eğitim örneği için hedef çıktıdır ve
çıkış nöronunun gerçek çıktısıdır.

Her nöron için çıktısı şu şekilde tanımlanır:

burada aktivasyon fonksiyonu olan doğrusal olmayan ve türevlenebilir (relu bir noktada değil bile). Tarihsel olarak kullanılan bir etkinleştirme işlevi, lojistik işlevdir :

uygun bir türevi olan:

Bir nöronun girdisi , önceki nöronların çıktılarının ağırlıklı toplamıdır . Eğer nöron girdi katmanından sonraki ilk katmandaysa , girdi katmanınınkiler sadece ağın girdileridir . Nörona giriş birimlerinin sayısı . Değişken , önceki katmanın nöronu ile mevcut katmanın nöronu arasındaki ağırlığı ifade eder .

Hatanın türevini bulma

Burada kullanılan gösterimi gösteren bir yapay sinir ağı diyagramı

Hesaplama kısmi türevi bir ağırlığına göre hata kullanılarak yapılır zincir kuralı iki kez:

 

 

 

 

( Denklem 1 )

Yukarıdakilerin sağ tarafının son faktöründe, toplamda yalnızca bir terim bağlıdır , yani

 

 

 

 

( Denklem 2 )

Eğer nöron giriş katmanından sonraki ilk katmandaysa , sadece .

Nöronun çıktısının girdisine göre türevi, aktivasyon fonksiyonunun kısmi türevidir:

 

 

 

 

( Denklem 3 )

bunun için lojistik aktivasyon fonksiyonu durumunda olduğu:

Geri yayılımın aktivasyon fonksiyonunun türevlenebilir olmasını gerektirmesinin nedeni budur . (Yine de, 0'da türevlenemeyen ReLU aktivasyon fonksiyonu oldukça popüler hale geldi, örneğin AlexNet'te )

İlk faktör, nöronun çıktı katmanında olup olmadığını değerlendirmek için basittir, çünkü o zaman ve

 

 

 

 

( Denklem 4 )

Kare hatasının yarısı kayıp fonksiyonu olarak kullanılırsa, onu şu şekilde yeniden yazabiliriz:

Bununla birlikte, eğer bir türevini bulmak ağın bir rasgele, iç katmandaki olduğu göre daha az açıktır.

Girdilerin nörondan girdi alan tüm nöronlar olduğu bir fonksiyon olarak düşünüldüğünde ,

ve 'ye göre toplam türev alındığında, türev için özyinelemeli bir ifade elde edilir:

 

 

 

 

( Denk. 5 )

Bu nedenle, bir sonraki katmanın çıktılarına göre tüm türevler – çıktı nöronuna daha yakın olanlar – biliniyorsa , türeve göre türev hesaplanabilir . [Not, kümedeki nöronlardan herhangi biri nörona bağlı olmasaydı, nöronlardan bağımsız olacaklardı ve toplama altındaki karşılık gelen kısmi türev 0'a kaybolacaktı.]

Değiştirme Denklem 2 , Denk. 3 Denk.4 ve Denk. 5 yılında Denk. 1 elde ederiz:

ile birlikte

eğer lojistik fonksiyonudur ve hata kare hatadır:

Gradyan inişini kullanarak ağırlığı güncellemek için , bir öğrenme oranı seçilmelidir, . Ağırlıktaki değişimin , bir artış veya azalma üzerindeki etkisini yansıtması gerekir . Eğer , bir artış artar ; tersine, eğer , bir artış azalır . Yeni , eski ağırlığa eklenir ve öğrenme oranı ve gradyanın çarpımı , her zaman azalan bir şekilde değişen garantiler ile çarpılır . Başka bir deyişle, hemen aşağıdaki denklemde, her zaman azalan şekilde değişir :

kayıp fonksiyonu

Kayıp işlevi, bir veya daha fazla değişkenin değerlerini, bu değerlerle ilişkili bazı "maliyetleri" sezgisel olarak temsil eden gerçek bir sayı üzerine eşleyen bir işlevdir . Geri yayılım için, kayıp işlevi, bir eğitim örneğinin ağ üzerinden yayılmasından sonra, ağ çıkışı ile beklenen çıkışı arasındaki farkı hesaplar.

varsayımlar

Kayıp fonksiyonunun matematiksel ifadesi, muhtemelen geri yayılımda kullanılabilmesi için iki koşulu yerine getirmelidir. Birincisi , bireysel eğitim örnekleri için hata fonksiyonlarının ortalaması olarak yazılabilmesidir . Bu varsayımın nedeni, geri yayılım algoritmasının, genel hata fonksiyonuna genelleştirilmesi gereken tek bir eğitim örneği için hata fonksiyonunun gradyanını hesaplamasıdır. İkinci varsayım, sinir ağından gelen çıktıların bir fonksiyonu olarak yazılabileceğidir.

Örnek kayıp fonksiyonu

vektörleri olsun .

İki çıkış arasındaki farkı ölçen bir hata fonksiyonu seçin . Standart seçim, vektörler arasındaki Öklid mesafesinin karesidir ve :

Eğitim örnekleri üzerindeki hata fonksiyonu daha sonra bireysel örnekler üzerindeki kayıpların ortalaması olarak yazılabilir:

sınırlamalar

Gradyan inişi, global minimum yerine yerel bir minimum bulabilir.
  • Geri yayılımlı gradyan inişinin , hata fonksiyonunun global minimumunu bulması garanti edilmez , sadece yerel bir minimum bulunur; ayrıca, hata işlevi ortamında platoları geçmekte sorun yaşıyor . Sinir ağlarındaki hata fonksiyonlarının dışbükey olmamasından kaynaklanan bu sorunun uzun süredir büyük bir dezavantaj olduğu düşünülüyordu, ancak Yann LeCun ve ark. birçok pratik problemde öyle olmadığını iddia ediyor.
  • Geri yayılımlı öğrenme, girdi vektörlerinin normalleştirilmesini gerektirmez; ancak normalleştirme performansı iyileştirebilir.
  • Geri yayılım, aktivasyon fonksiyonlarının türevlerinin ağ tasarım zamanında bilinmesini gerektirir.

Tarih

Geri yayılım terimi ve sinir ağlarındaki genel kullanımı Rumelhart, Hinton & Williams'da (1986a) duyurulmuş , daha sonra Rumelhart, Hinton & Williams'da (1986b) detaylandırılmış ve popüler hale getirilmiştir , ancak teknik birçok kez bağımsız olarak yeniden keşfedilmiştir ve birçok öncülleri tarihlenmektedir. 1960'lara.

Sürekli geri yayılım temelleri çerçevesinde elde edilmiştir kontrol teorisi ile Henry J. Kelley 1960, tarafından Arthur E. Bryson Bunlar prensipleri kullanılır 1961 yılında dinamik programlama . 1962'de Stuart Dreyfus , yalnızca zincir kuralına dayanan daha basit bir türetme yayınladı . Bryson ve Ho , 1969'da bunu çok aşamalı bir dinamik sistem optimizasyon yöntemi olarak tanımladılar . Geri yayılım, 60'ların başında birden fazla araştırmacı tarafından türetildi ve 1970'lerde Seppo Linnainmaa tarafından bilgisayarlarda çalıştırılmak üzere uygulandı . Paul Werbos , 1974 tezinde derinlemesine analiz ettikten sonra sinir ağları için kullanılabileceğini öneren ABD'deki ilk kişiydi . Sinir ağlarına uygulanmamakla birlikte, 1970 yılında Linnainmaa, otomatik farklılaşma (AD) için genel yöntemi yayınladı . Çok tartışmalı olmasına rağmen, bazı bilim adamları bunun aslında bir geri yayılım algoritması geliştirmeye yönelik ilk adım olduğuna inanıyor. 1973'te Dreyfus , kontrolörlerin parametrelerini hata gradyanlarıyla orantılı olarak uyarlar . 1974'te Werbos, bu prensibi yapay sinir ağlarına uygulama olasılığından bahsetti ve 1982'de Linnainmaa'nın AD yöntemini doğrusal olmayan fonksiyonlara uyguladı.

Daha sonra Werbos yöntemi 1985'te Parker ve 1986'da Rumelhart , Hinton ve Williams tarafından yeniden keşfedildi ve tanımlandı . Rumelhart, Hinton ve Williams, deneysel olarak, bu yöntemin, sinir ağlarının gizli katmanlarında gelen verilerin kullanışlı iç temsillerini üretebileceğini gösterdi. Yann LeCun 1987'deki doktora tezinde sinir ağları için geri yayılımlı öğrenme algoritmasının modern biçimini önerdi. 1993'te Eric Wan, geri yayılım yoluyla uluslararası bir örüntü tanıma yarışmasını kazandı.

2000'lerde gözden düştü, ancak 2010'larda ucuz, güçlü GPU tabanlı bilgi işlem sistemlerinden yararlanarak geri döndü . Bu, özellikle konuşma tanıma , makine görme , doğal dil işleme ve dil yapısı öğrenme araştırmalarında (birinci ve ikinci dil öğrenimiyle ilgili çeşitli fenomenleri açıklamak için kullanılmıştır) böyle olmuştur.

N400 ve P600 gibi insan beyni ERP bileşenlerini açıklamak için hata geri yayılımı önerilmiştir .

Ayrıca bakınız

Notlar

Referanslar

daha fazla okuma

Dış bağlantılar