Hatanın geriye yayılım örneği. Geri yayılım yöntemi

Algoritma geri yayılım hatalar, çok katmanlı algılayıcılar olarak da adlandırılan çok katmanlı ileri beslemeli sinir ağlarını eğitme yöntemlerinden biridir. Çok katmanlı algılayıcılar birçok karmaşık problemin çözümünde başarıyla kullanılmıştır.

Geri yayılım algoritmasıyla eğitim, ağın tüm katmanlarından iki geçişi içerir: ileri ve geri. İleri geçişte, giriş vektörü sinir ağının giriş katmanına beslenir ve daha sonra ağ boyunca katmandan katmana yayılır. Sonuç olarak, ağın belirli bir giriş görüntüsüne gerçek tepkisi olan bir dizi çıkış sinyali üretilir. İleri geçiş sırasında ağın tüm sinaptik ağırlıkları sabitlenir. Geri geçiş sırasında, tüm sinaptik ağırlıklar bir hata düzeltme kuralına göre ayarlanır, yani: ağın gerçek çıktısı istenen çıktıdan çıkarılır, bu da bir hata sinyaliyle sonuçlanır. Bu sinyal daha sonra ağ boyunca sinaptik bağlantıların yönünün tersi yönde yayılır. Dolayısıyla adı - geri yayılım algoritması. Sinaptik ağırlıklar, ağ çıkışını istenen çıktıya mümkün olduğunca yaklaştıracak şekilde ayarlanır.

Algoritmanın çalışmasını daha ayrıntılı olarak ele alalım. Diyelim ki geri yayılım algoritmasını kullanarak aşağıdaki sinir ağını eğitmeniz gerekiyor:

Şekilde aşağıdaki semboller kullanılmıştır:

Çok katmanlı algılayıcılarda bir aktivasyon fonksiyonu olarak, kural olarak, özellikle lojistik olan bir sigmoid aktivasyon fonksiyonu kullanılır:

sigmoid fonksiyonunun eğim parametresi nerede. Bu parametreyi değiştirerek farklı eğimlere sahip fonksiyonlar oluşturabilirsiniz. Sonraki tüm argümanlar için yalnızca yukarıdaki formülle temsil edilen lojistik aktivasyon fonksiyonunu tam olarak kullanacağımıza dair bir rezervasyon yapalım.

Sigmoid, değerin sıfır ile bir arasında kalması için varyasyon aralığını daraltır. Çok katmanlı sinir ağları, yalnızca doğrusal olmama durumunda tek katmanlı sinir ağlarından daha yüksek temsil gücüne sahiptir. Sıkıştırma işlevi gerekli doğrusal olmamayı sağlar. Gerçekte kullanılabilecek birçok işlev vardır. Geri yayılım algoritması yalnızca fonksiyonun her yerde türevlenebilir olmasını gerektirir. Sigmoid bu gereksinimi karşılar. Otomatik kazanç kontrolünün ek faydası vardır. Zayıf sinyaller için (yani sıfıra yakın olduğunda) giriş-çıkış eğrisinin güçlü bir eğimi vardır ve bu da büyük bir kazanç sağlar. Sinyal büyüklüğü büyüdükçe kazanç düşer. Bu sayede büyük sinyaller ağ tarafından doygunluk olmadan kabul edilir, küçük sinyaller ise aşırı zayıflama olmadan ağ üzerinden geçer.

Ağ eğitiminin amacı Geri yayılım algoritması, belirli bir girdi kümesinin uygulanmasının gerekli çıktı kümesine yol açacağı şekilde ağırlıklarının ayarlanmasıdır. Kısaca belirtmek gerekirse, bu girdi ve çıktı kümelerine vektörler adı verilecektir. Eğitim sırasında, her giriş vektörü için, gerekli çıktıyı belirten, kendisiyle eşleştirilmiş bir hedef vektörün olduğu varsayılır. Birlikte bunlara eğitim çifti denir. Ağ birçok çift üzerinde eğitilmiştir.

Sonraki:

  1. Sinaptik ağırlıkları küçük rastgele değerlerle başlatın.
  2. Eğitim setinden bir sonraki eğitim çiftini seçin; giriş vektörünü ağ girişine gönderin.
  3. Ağ çıkışını hesaplayın.
  4. Ağ çıkışı ile gerekli çıktı (eğitim çiftinin hedef vektörü) arasındaki farkı hesaplayın.
  5. Hatayı en aza indirmek için ağ ağırlıklarını ayarlayın (aşağıya bakın).
  6. Tüm setteki hata kabul edilebilir bir seviyeye ulaşana kadar eğitim setinin her vektörü için 2'den 5'e kadar olan adımları tekrarlayın.

2. ve 3. adımlarda gerçekleştirilen işlemler, ağ önceden eğitilmişken gerçekleştirilen işlemlere benzer; bir giriş vektörü verilir ve elde edilen çıktı hesaplanır. Hesaplamalar katman katman gerçekleştirilir. Şek. 1'de, ilk olarak katmanın nöronlarının çıktıları hesaplanır (katman girdidir, yani içinde hiçbir hesaplama yapılmaz), daha sonra bunlar katmanın girdileri olarak kullanılır, katmanın nöronlarının çıktıları hesaplanır ağın çıkış vektörünü oluşturur. 2. ve 3. adımlar, sinyal ağ boyunca girişten çıkışa doğru ilerlerken "ileri geçiş" adı verilen bir geçiş oluşturur.

4. ve 5. adımlar, hesaplanan hata sinyalinin ağ üzerinden geri yayıldığı ve ağırlıkları ayarlamak için kullanıldığı bir "geri geçiş" oluşturur.

Ağ ağırlıklarının ayarlanması olan 5. adıma daha yakından bakalım. Aşağıda açıklanan iki durumun burada vurgulanması gerekmektedir.

Durum 1. Çıkış katmanının sinaptik ağırlıklarının ayarlanması

Örneğin, Şekil 2'deki sinir ağı modeli için. Şekil 1'de gösterildiği gibi, bunlar aşağıdaki tanımlamalara sahip ağırlıklar olacaktır: ve . Endeksin, sinaptik ağırlığın çıktığı nöronu ve girdiği nöronu temsil edeceğine karar verelim:

Gerekli ve gerçek çıktılar arasındaki farkın lojistik aktivasyon fonksiyonunun türeviyle çarpımına eşit olan değeri tanıtalım (yukarıdaki lojistik aktivasyon fonksiyonunun formülüne bakın):

Daha sonra düzeltmeden sonra çıktı katmanının ağırlıkları şuna eşit olacaktır:

Sinaptik ağırlık için hesaplamalara bir örnek:

Durum 2. Gizli katmanın sinaptik ağırlıklarının ayarlanması

Şekil 2'deki sinir ağı modeli için Şekil 1'de bunlar katmanlara karşılık gelen ağırlıklar olacaktır ve . Endeksin, sinaptik ağırlığın çıktığı nöronu ve girdiği nöronu göstereceğine karar verelim (yeni bir değişkenin ortaya çıkışına dikkat edin).

Geri yayılım yöntemi

Geri yayılım yöntemi, denetimli öğrenme seçeneklerinden biri olan çok katmanlı bir algılayıcıyı eğitmeye yönelik bir yöntemdir. Yöntem ilk olarak Paul J. Verbos tarafından tanımlandı. 1986'da David I. Rumelhart, J. E. Hinton ve Ronald J. Williams tarafından daha da önemli ölçüde geliştirildi. Bu, çok katmanlı bir algılayıcının çalışma hatasını en aza indirmek ve istenen çıktıyı elde etmek için kullanılan yinelemeli bir gradyan algoritmasıdır.

Bu yöntemin ana fikri, normal çalışmada sinyallerin doğrudan yayılmasının tersi yönde hata sinyallerini ağ çıkışlarından girişlerine yaymaktır. Bartsev ve Okhonin hemen teklif etti genel yöntem(“ikilik ilkesi”), gecikmeli sistemler, dağıtılmış sistemler vb. dahil olmak üzere daha geniş bir sistem sınıfına uygulanabilir.

Yöntem bir değişikliktir klasik yöntem gradyan inişi.

Geri yayılım algoritması

Bize sahip olalım çok katmanlı ağ rastgele ağırlıklandırma katsayıları ile doğrudan yayılma. Ağ girişi - istenen çıktı çiftlerinden oluşan bazı eğitim seti vardır. Y'nin, ağırlık katsayılarının rastgeleliğinden dolayı başlangıçta neredeyse rastgele olan ağımızın gerçek çıktı değerini göstermesine izin verin.

Eğitim, ağırlık katsayılarının bazı amaç fonksiyonlarını en aza indirecek şekilde seçilmesinden oluşur. Gibi amaç fonksiyonu Eğitim setindeki örnekleri kullanarak ağ hatalarının karelerinin toplamını ele alalım.

j'inci eğitim örneğinde p'inci nöron için ağın N'inci çıktı katmanının gerçek çıktısı, istenen çıktı nerede? Yani böyle bir fonksiyoneli en aza indirerek yöntemi kullanarak bir çözüm elde ederiz. en küçük kareler.

Ağırlık katsayıları bağımlılığa doğrusal olmayan bir şekilde girdiğinden, minimumu bulmak için yöntemi kullanacağız. en dik iniş. Yani, her öğrenme adımında ağırlık katsayılarını formüle göre değiştireceğiz.

ile iletişim için n'inci katmanın j'inci nöronunun ağırlık katsayısı nerede i'inci nöron(n-1).katman.

Parametreye öğrenme hızı parametresi denir.

Bu nedenle E amaç fonksiyonunun tüm ağ ağırlıklandırma katsayıları üzerinden kısmi türevlerinin belirlenmesi gerekmektedir. Farklılaşma kurallarına göre karmaşık fonksiyon

çıktı nerede ve n'inci katmanın j'inci nöronunun girdilerinin ağırlıklı toplamıdır. Aktivasyon fonksiyonunu bilerek hesaplayabileceğimizi unutmayın. Örneğin, bir sigmoid için bu değer şuna eşit olacaktır:

Üçüncü faktör /, (n-1)-inci katmanın i-inci nöronunun çıktısından başka bir şey değildir, yani

Çıkış katmanı nöronlarının ağırlıklarına göre amaç fonksiyonunun kısmi türevleri artık kolaylıkla hesaplanabilmektedir. (1)'i (3) ve (5)'e göre ayırıp hesaba katarsak, şunu elde ederiz:

Gösterimi tanıtalım

Daha sonra çıktı katmanının nöronları için

Nöron ağırlıkları için iç katmanlar(4)'teki ilk faktörün neye eşit olduğunu hemen yazamayız, ancak şu şekilde temsil edilebilir:

Bu formülde ilk iki faktörün bundan başka bir şey olmadığını unutmayın. Böylece (9)'u kullanarak n'inci katmandaki nöronların değerlerini (n+1)'inci katmandaki nöronlar cinsinden ifade etmek mümkündür. Son katman için (8) ile hesaplamak kolay olduğundan, özyinelemeli formülü kullanmak mümkündür.

tüm katmanlardaki tüm nöronlar için değerler alın.

Son olarak ağırlık katsayılarını değiştirmek için formül (2) şu şekilde yazılabilir:

Böylece, geri yayılım algoritmasını kullanarak bir sinir ağını eğitmeye yönelik algoritmanın tamamı aşağıdaki şekilde oluşturulur.

Tüm ağ ağırlıklarına rastgele ağırlık katsayıları atarız başlangıç ​​değerleri. Bu durumda ağ bazı işlemleri gerçekleştirecektir. rastgele dönüşüm giriş sinyalleri ve amaç fonksiyonunun (1) değerleri büyük olacaktır.

Eğitim setindeki giriş vektörlerinden birini ağ girişine besleyin. Her bir nöronun çıkış değerlerini hatırlayarak ağın çıkış değerlerini hesaplayın.

Ağ ağırlıklarını ayarlayın:

Ağ Performansı Değerlendirmesi

Ağ performansının değerlendirilmesinin mümkün olduğu durumlarda sinir ağlarının eğitimi bir optimizasyon problemi olarak temsil edilebilir. Değerlendirmek, ağın kendisine verilen görevleri iyi veya kötü çözüp çözmediğini niceliksel olarak belirtmek anlamına gelir. Bu amaçla bir değerlendirme fonksiyonu oluşturulmuştur. Kural olarak, açıkça ağın çıkış sinyallerine ve örtülü olarak (işlem yoluyla) tüm parametrelerine bağlıdır. Değerlendirmenin en basit ve en yaygın örneği, ağ çıkış sinyallerinden gereken değerlere olan mesafelerin karelerinin toplamıdır:

çıkış sinyalinin gerekli değeri nerede.

En küçük kareler yöntemi her zaman geçerli değildir en iyi seçim değerlendirmeler. Değerlendirme fonksiyonunun dikkatli tasarımı, ağ eğitiminin verimliliğini büyük ölçüde arttırmanın yanı sıra, Ek Bilgiler- Verilen cevaba göre ağın “güven düzeyi”.

Algoritmanın dezavantajları

Sayısız olmasına rağmen başarılı uygulamalar geri yayılım her derde deva değildir. En çok sıkıntıyı getiren şey, süresiz uzun öğrenme sürecidir. İÇİNDE karmaşık görevler Ağı eğitmek günler hatta haftalar alabilir veya hiç öğrenmeyebilir. Bunun nedeni aşağıda açıklananlardan biri olabilir.

Ağ felci

Ağın eğitilmesi sürecinde düzeltme sonucunda ağırlıkların değerleri çok büyük değerlere çıkabilmektedir. büyük miktarlar. Bu, nöronların tamamının veya çoğunun çok hızlı çalışmasına neden olabilir. büyük değerler OUT, sıkıştırma fonksiyonunun türevinin çok küçük olduğu bölgede. Öğrenme sürecinde geri gönderilen hata bu türevle orantılı olduğundan öğrenme süreci pratik olarak donabilir. Teorik açıdan bakıldığında bu sorun yeterince anlaşılmamıştır. Bu genellikle h adım boyutunun azaltılmasıyla önlenir, ancak bu, eğitim süresini artırır. Felci önlemek veya felçten kurtulmak için çeşitli buluşsal yöntemler kullanıldı, ancak şimdilik bunlar yalnızca deneysel olarak kabul edilebilir.

Yerel minimum

Geri yayılım, bir tür gradyan inişini kullanır; yani, ağırlıkları sürekli olarak minimuma doğru ayarlayarak hata yüzeyinden aşağı iner. Karmaşık bir ağın hata yüzeyi oldukça sağlamdır ve yüksek boyutlu uzaydaki tepeler, vadiler, kıvrımlar ve vadilerden oluşur. Ağa girebilir yerel minimum(sığ vadi) yakınlarda çok daha fazlası olduğunda derin alçak. Yerel minimum noktasında tüm yönler yukarıya bakar ve ağ bundan kaçamaz. Sinir ağlarını eğitmedeki ana zorluk, tam olarak yerel minimumlardan çıkma yöntemleridir: yerel minimumdan her ayrıldığında, bir sonraki yerel minimum, aynı hata geri yayılım yöntemini kullanarak, bundan bir çıkış yolu bulmak artık mümkün olmayana kadar tekrar aranır. .

Adım boyutu

Yakınsama kanıtının dikkatli bir incelemesi, ağırlık düzeltmelerinin sonsuz küçük olduğunun varsayıldığını gösterir. Bunun pratikte mümkün olmadığı açıktır, çünkü sonsuz bir öğrenme süresine yol açmaktadır. Adım büyüklüğü sonlu olarak alınmalıdır. Adım boyutu sabit ve çok küçükse yakınsama çok yavaş olur, ancak sabit ve çok büyükse felç veya sürekli istikrarsızlık meydana gelebilir. Skorun iyileşmesi durana kadar adımı etkili bir şekilde artırın bu yönde anti-gradyan ve böyle bir gelişme olmazsa azaltın. P. D. Wasserman, öğrenme süreci sırasında adım boyutunu otomatik olarak ayarlayan uyarlanabilir bir adım seçim algoritmasını tanımladı. A. N. Gorban'ın kitabı öğrenmeyi optimize etmek için kapsamlı bir teknoloji öneriyor.

Ağın yeniden eğitilebileceği de unutulmamalıdır ki bu büyük olasılıkla topolojisinin hatalı tasarımının bir sonucudur. ne zaman da büyük miktarlar nöronlar, ağın bilgiyi genelleme yeteneği kaybolur. Eğitim için sağlanan görsellerin tamamı ağ tarafından öğrenilecektir ancak diğer görseller, hatta çok benzer olanlar bile yanlış sınıflandırılabilir.

Geliştirme ortamı ve onu seçme nedenleri

Uygulama, MicrosoftVisualStudio 2010 geliştirme ortamında .NETFramework4.0 çerçevesi ile C# programlama dilinde geliştirilecektir. Büyük hesaplamalar gerektiren kod parçaları C++ dilinde geliştirilmektedir. MSVisualStudio 2010 şunları içerir: tam set tasarımdan dağıtıma kadar geliştirme sürecinin her adımını basitleştiren yeni ve geliştirilmiş özellikler.

MicrosoftVisualStudio 2010 Ultimate, genel uygulama geliştirme sürecini basitleştiren entegre bir araç ortamı ve sunucu altyapısıdır. İş uygulamaları verimli, öngörülebilir ve özelleştirilebilir süreçler kullanılarak oluşturulur. Ayrıntılı analizler her şeyin şeffaflığını ve izlenebilirliğini artırır yaşam döngüsü uygulamalar. Hem yeni çözümler oluştururken hem de mevcut çözümleri değiştirirken, geliştirmeyi kullanarak güçlü araçlar bulut bilişim ve paralel işleme gibi çeşitli platformlar ve teknolojiler için uygulamaların geliştirilmesine olanak tanıyan prototip oluşturma, mimari tasarım ve geliştirme. Gelişmiş koordinasyon yetenekleri ortak faaliyetler entegre, yenilikçi test ve hata ayıklama araçlarıyla birlikte ekip üretkenliğini artıracak ve yüksek kaliteli, düşük maliyetli çözümler sunacaktır.

MicrosoftVisualStudio2010 Ultimate'da C# dilinde .NETFramework4.0 çerçevesiyle uygulama geliştirme, nesne yönelimli programlama ve görsel programlama kullanılarak gerçekleştirilir.

Geri yayılımın hedefleri basittir: her ağırlığı, genel hataya ne kadar katkıda bulunduğuna göre ayarlayın. Her bir ağırlığın hatasını yinelemeli olarak azaltırsak, sonunda iyi tahminler yapan bir ağırlık setine sahip oluruz.

Zincir Kuralını Güncelleme

Uzun bir iç içe geçmiş denklemler dizisi olarak düşünülebilir. İleri yayılım hakkında böyle düşünüyorsanız, geri yayılım sadece bir uygulamadır zincir kuralları(karmaşık fonksiyon türevi) iç içe geçmiş bir denklemdeki herhangi bir değişkene göre kayıpların türevlerini bulmak için. İleri yayılım fonksiyonunu dikkate alarak:

F(x)=A(B(C(x))))

A, B ve C farklı katmanlardadır. Zincir kuralını kullanarak f(x)'in x'e göre türevini kolayca hesaplayabiliriz:

F'(x)=f'(A)⋅A'(B)⋅B'(C)⋅C'(x)

Türev ne olacak? B? göre türevini bulmak için B B(C(x))'in bir sabit olduğunu varsayarak onu yer tutucu bir değişkenle değiştirebilirsiniz. B ve göre türevi aramaya devam edin B standart.

F'(B)=f'(A)⋅A'(B)

Bu basit yöntem, bir fonksiyon içindeki herhangi bir değişkene uzanır ve bize şunu sağlar: etkiyi doğru bir şekilde belirlemek her değişken genel sonuca göre değişir.

Zincirleme kuralının uygulanması

Ağdaki herhangi bir ağırlığa göre kaybın türevini hesaplamak için zincir kuralını kullanalım. Zincirleme kuralı, her ağırlığın genel hatamıza ne kadar katkıda bulunduğunu ve hatayı azaltmak için her ağırlığın hangi yönde güncellenmesi gerektiğini belirlememize yardımcı olacaktır. Tahmin yapmak ve toplam hatayı veya kaybı hesaplamak için ihtiyacınız olan denklemler şunlardır:

Bir nörondan oluşan bir ağ verildiğinde, toplam kayıp sinir ağı şu şekilde hesaplanabilir:

Maliyet=C(R(Z(XW))))

Zincir kuralını kullanarak kaybın W ağırlığına göre türevini kolaylıkla bulabiliriz.

C′(W)=C′(R)⋅R′(Z)⋅Z′(W)=(y^−y)⋅R′(Z)⋅X

Artık kaybın herhangi bir ağırlığa göre türevini hesaplayacak denklemimiz olduğuna göre, sinir ağı örneğine bakalım:

göre zararın türevi nedir? Wo?

C′(WO)=C′(y^)⋅y^′(ZO)⋅Z′O(WO)=(y^−y)⋅R′(ZO)⋅H

Peki ya ne? Bunu bulmak için, bir elemanı olan bir fonksiyona ulaşana kadar zincirleme kuralını yinelemeli olarak uygulayarak fonksiyonumuza geri dönmeye devam ederiz. ne.

C′(Wh)=C′(y^)⋅O′(Zo)⋅Z′o(H)⋅H′(Zh)⋅Z′h(Wh)=(y^−y)⋅R′(Zo )⋅Wo⋅R′(Zh)⋅X

Ve sırf eğlence olsun diye, ağımızın 10 gizli katmanı olsaydı ne olurdu?İlk ağırlık w1 için kaybın türevi nedir?

C(w1)=(dC/dy^)⋅(dy^/dZ11)⋅(dZ11/dH10)⋅(dH10/dZ10)⋅(dZ10/dH9)⋅(dH9/dZ9)⋅(dZ9/dH8)⋅( dH8/dZ8)⋅(dZ8/dH7)⋅(dH7/dZ7)⋅(dZ7/dH6)⋅(dH6/dZ6)⋅(dZ6/dH5)⋅(dH5/dZ5)⋅(dZ5/dH4)⋅(dH4/ dZ4)⋅(dZ4/dH3)⋅(dH3/dZ3)⋅(dZ3/dH2)⋅(dH2/dZ2)⋅(dZ2/dH1)⋅(dH1/dZ1)⋅(dZ1/dW1)

Bir model fark ettiniz mi? Ağımız derinleştikçe türev kayıplarını hesaplamak için gereken hesaplama miktarı da artıyor. Ayrıca not edin türev hesaplamalarımızdaki fazlalık. Her katmanın kayıp türevi, üstündeki katmanlar tarafından önceden hesaplanmış olan öğelere iki yeni öğe ekler. Peki ya çalışmalarımızı kaydetmenin ve bu tekrarlanan hesaplamalardan kaçınmanın bir yolu olsaydı?

Notlandırmayla çalışmayı kaydetme

Notlandırma bilgisayar biliminde basit bir anlamı olan bir terimdir: aynı şeyleri tekrar tekrar sayma. Notlandırmada, aynı işlevin yeniden hesaplanmasını önlemek için önceden hesaplanan sonuçları saklarız. Bu, biri geri yayılım olan özyinelemeli işlevleri hızlandırmak için kullanışlıdır. Aşağıdaki türev denklemlerindeki örüntüye dikkat edin.

Bu katmanların her biri aynı türevleri yeniden hesaplıyor! Her ağırlık için uzun türev denklemleri yazmak yerine, hatayı ağ üzerinden döndürürken işimizi kaydetmek için not almayı kullanabiliriz. Bunu yapmak için, birlikte ifade eden 3 denklemi (aşağıda) tanımlıyoruz. kısa biçim geri yayılım için gerekli tüm hesaplamalar. Matematik aynıdır ancak denklemler, daha önce yaptığımız hesaplamaları takip etmek ve ağda geriye doğru giderken çalışmalarımızı kaydetmek için kullanabileceğimiz güzel bir kısayol sağlar.

İlk önce hesaplıyoruz çıktı katmanı hatası ve sonucu önündeki gizli katmana iletin. Gizli katmanın hatasını hesapladıktan sonra değerini bir önceki gizli katmana geri aktarıyoruz. Ve benzeri. Ağa geri dönersek, her katmana 3. formülü uygulayarak kaybın o katmanın ağırlıklarına göre türevini hesaplıyoruz. Bu türev bize şunu söylüyor: ağırlıklarımızı hangi yöne ayarlamamız gerekiyor genel kayıpları azaltmak için.

Not: terim katman hatası kayıpların türevini ifade eder giriş katman. Şu soruyu yanıtlıyor: Bu katmanın girişi değiştiğinde kayıp fonksiyonunun çıkışı nasıl değişir?

Çıkış Katmanı Hatası

Çıkış katmanının hatasını hesaplamak için, çıkış katmanının girişine göre kaybın türevini bulmak gerekir, Zo. Bu şu soruyu yanıtlıyor: Son katmanın ağırlıkları ağdaki genel hatayı nasıl etkiler? O halde türev:

C′(Zo)=(y^−y)⋅R′(Zo)

Kaydı kolaylaştırmak için uygulayıcılar MO genellikle diziyi değiştirir (y^−y)∗R"(Zo) terim Eo. Yani çıktı katmanı hatasına ilişkin formülümüz şu şekildedir:

Eo=(y^−y)⋅R'(Zo)

Gizli katman hatası

Gizli katmanın hatasını hesaplamak için, gizli katmanın girişine göre kaybın türevini bulmanız gerekir, Zh.

Eh=Eo⋅Wo⋅R'(Zh)

Bu formül geri yayılımın temelidir. Geçerli katmanın hatasını hesaplayıp ağırlıklı hatayı bir önceki katmana geri aktarıyoruz ve ilk gizli katmanımıza ulaşana kadar işleme devam ediyoruz. Yol boyunca, her ağırlığa göre kaybın türevini kullanarak ağırlıkları güncelliyoruz.

Herhangi bir ağırlığa göre kaybın türevi

Kayıpların çıktı katmanının ağırlığına göre türevi için formülümüze dönelim. Wo.

C′(WO)=(y^−y)⋅R′(ZO)⋅H

Çıkış katmanı hatası için ilk kısmı bir denklemle değiştirebileceğimizi biliyoruz. Ah. H gizli katmanın etkinleştirilmesini temsil eder.

C'(Wo)=Eo⋅H

Böylece, ağımızdaki herhangi bir ağırlığa göre kaybın türevini bulmak için, karşılık gelen katmanın hatasını girdisiyle (önceki katmanın çıktısı) çarpmamız yeterlidir.

C′(w)=CurrentLayerError⋅CurrentLayerInput

Not: giriş ağırlıklı girdi Z'yi değil, önceki katmandaki aktivasyonu ifade eder.

Özetlemek gerekirse

Geri yayılımın temelini oluşturan son 3 denklemi burada bulabilirsiniz.

Yukarıdaki sinir ağı örneğimizi kullanarak görselleştirilen süreç şöyledir:

Geri Yayılım: Örnek Kod

kesinlikle relu_prime(z): eğer z > 0: geri dönmek 1 geri dönmek 0 kesinlikle maliyet(yHat, y): geri dönmek 0,5 * (yHat - y)**2 kesinlikle cost_prime(yHat, y): geri dönmek yHat-y kesinlikle backprop(x, y, Wh, Wo, lr): yHat = feed_forward(x, Wh, Wo) # Katman Hatası Eo = (yHat - y) * relu_prime(Zo) Eh = Eo * Wo * relu_prime(Zh) # Ağırlıklar için maliyet türevi dWo = Eo * H dWh = Eh * x # Ağırlıkları güncelle Wh -= lr * dWh Wo -= lr * dWo

Prudnikov Ivan Alekseevich
MIREA(MTU)

Sinir ağları konusu birçok dergide zaten birden fazla kez ele alınmıştır, ancak bugün okuyuculara geri yayılım yöntemini kullanarak çok katmanlı bir sinir ağını eğitmek için kullanılan algoritmayı tanıtmak ve bu yöntemin bir uygulamasını sağlamak istiyorum.

Sinir ağları alanında uzman olmadığım için hemen rezervasyon yaptırmak istiyorum bu yüzden okuyuculardan bekliyorum. yapıcı eleştiri, yorumlar ve eklemeler.

Teorik kısım

Bu materyal, sinir ağlarının temellerine aşina olunduğunu varsaymaktadır, ancak sinir ağları teorisi üzerine gereksiz sınavlar olmadan okuyucuya konuyu tanıtmanın mümkün olduğuna inanıyorum. Bu nedenle, “sinir ağı” ifadesini ilk kez duyanlar için, bir sinir ağını, düğümleri (nöronlar) katmanlar halinde düzenlenmiş, ağırlıklı yönlendirilmiş bir grafik olarak algılamayı öneriyorum. Ayrıca bir katmandaki bir düğüm, bir önceki katmandaki tüm düğümlerle bağlantılara sahiptir. Bizim durumumuzda böyle bir grafik, düğümleri sırasıyla girdi ve çıktı görevi gören girdi ve çıktı katmanlarına sahip olacaktır. Her düğümün (nöron) bir aktivasyon işlevi vardır - düğümün (nöron) çıkışındaki sinyali hesaplamaktan sorumlu bir işlev. Ayrıca çıkışı her zaman bir olarak görünen bir düğüm olan yer değiştirme kavramı da vardır. Bu makalede, bir “öğretmenin” varlığını varsayan bir sinir ağının öğrenme sürecini, yani öğrenmenin, ağa doğru yanıtlarla bir dizi eğitim örneği sağlayarak gerçekleştiği bir öğrenme sürecini ele alacağız.
Çoğu sinir ağında olduğu gibi amacımız, ağın eğitim sırasında kullanılan girdilere doğru yanıtı üretme yeteneği (ezberleme) ile yanıt olarak doğru çıktıyı üretme yeteneği arasında bir denge sağlayacak şekilde ağı eğitmektir. girdilere benzerdir ancak eğitim sırasında kullanılanlarla aynı değildir (genelleme ilkesi). Geri yayılım yöntemini kullanan ağ eğitimi üç aşamadan oluşur: girişe veri beslemesi, ardından verinin çıkışlara doğru yayılması, karşılık gelen hatanın hesaplanması ve geri yayılımı ve ağırlıkların ayarlanması. Eğitimden sonra sadece ağın girişine veri sağlanması ve çıkışlara doğru dağıtılması gerekiyor. Üstelik eğer ağ eğitimi oldukça uzun bir süreç, O doğrudan hesaplama Eğitimli bir ağdan elde edilen sonuçlar çok hızlı bir şekilde ortaya çıkar. Ek olarak, öğrenme sürecinin hızını artırmak için tasarlanmış geri yayılım yönteminin çok sayıda çeşidi vardır.
Ayrıca, tek katmanlı bir sinir ağının öğrenebileceği giriş verisi kalıpları açısından önemli ölçüde sınırlı olduğunu, çok katmanlı bir ağın (bir veya daha fazla gizli katmana sahip) böyle bir dezavantajı olmadığını da belirtmekte fayda var. Daha sonra geri yayılımlı standart bir sinir ağının tanımı verilecektir.

Mimarlık

Şekil 1, bir katman gizli nöronlara (Z öğeleri) sahip çok katmanlı bir sinir ağını göstermektedir.

Ağın çıkışlarını temsil eden nöronlar (Y etiketli) ve gizli nöronlar bir önyargıya sahip olabilir (resimde gösterildiği gibi). Y k çıkışına karşılık gelen ofset, w ok olarak, gizli eleman Z j - V oj olarak adlandırılır. Bu uzaklıklar, çıktısı her zaman 1 olan nöronlardan çıkan bağlantılar üzerinde ağırlık görevi görür (bunlar Şekil 1'de gösterilmektedir, ancak genellikle dolaylı olarak açıkça gösterilmemektedir). Ek olarak, Şekil 1'de oklar, veri yayılım aşamasında bilginin girişlerden çıkışlara doğru hareketini göstermektedir. Öğrenme süreci sırasında sinyaller ters yönde yayılır.

Algoritmanın açıklaması

Aşağıda sunulan algoritma, çoğu uygulama için geçerli ve yeterli bir durum olan, tek gizli katmanlı bir sinir ağına uygulanabilir. Daha önce de belirtildiği gibi ağ eğitimi üç aşamadan oluşur: eğitim verilerinin ağ girişlerine beslenmesi, hatanın geriye yayılması ve ağırlıkların ayarlanması. İlk aşamada, her giriş nöronu Xi bir sinyal alır ve bunu gizli nöronların her birine Z 1,Z 2 ...,Z p yayınlar. Daha sonra her bir gizli nöron, aktivasyon fonksiyonunun (ağ fonksiyonu) sonucunu hesaplar ve kendi Zj sinyalini tüm çıkış nöronlarına gönderir. Her bir çıkış nöronu Yk, sırasıyla, ilgili giriş verileri için o nöronun çıkışından başka bir şey olmayan aktivasyon fonksiyonu Yk'nin sonucunu hesaplar. Eğitim süreci sırasında, ağın çıkışındaki her nöron, hesaplanan Yk değerini öğretmen tarafından sağlanan tk (hedef değer) ile karşılaştırarak belirli bir giriş modeli için karşılık gelen hata değerini belirler. Bu hataya dayanarak σ k (k = 1,2,...m) hesaplanır. σk, hatayı Yk'den önceki katmanın tüm ağ elemanlarına (Yk'ye bağlı gizli nöronlar) yayarken ve ayrıca daha sonra çıkış nöronları ile gizli olanlar arasındaki bağlantıların ağırlıklarını değiştirirken kullanılır. Benzer şekilde, her gizli Zj nöronu için σj (j = 1,2,...p) hesaplanır. Hatanın giriş katmanına yayılmasına gerek olmamasına rağmen σj, gizli katman nöronları ile giriş nöronları arasındaki bağlantıların ağırlıklarını değiştirmek için kullanılır. Tüm σ belirlendikten sonra tüm bağlantıların ağırlıkları aynı anda ayarlanır.

Tanımlar:

Ağ eğitim algoritması aşağıdaki gösterimi kullanır:

X Eğitim verilerinin giriş vektörü X = (X 1 , X 2 ,...,X i ,...,X n).
t Öğretmen tarafından sağlanan hedef çıktı değerlerinin vektörü t = (t 1 , t 2 ,...,t k ,...,t m)
σ k Bağlantı ağırlıklarının ayarlanmasının bileşeni wjk, çıkış nöronunun Yk hatasına karşılık gelir; ayrıca, Yk'ye bağlı gizli katmandaki nöronlara dağıtılan Yk nöronunun hatası hakkındaki bilgiler.
σ j Çıkış katmanından gizli nöron Z j'ye yayılan hata bilgisine karşılık gelen bağlantı ağırlıkları v ij'nin ayarlanmasının bileşeni.
Öğrenme oranı.
X i Girişteki i indeksli nöron. Giriş nöronları için giriş ve çıkış sinyalleri aynıdır - Xi .
v oj Gizli nöron j'nin yer değiştirmesi.
Z j Gizli nöron j; Gizli eleman Z j'nin girişine sağlanan toplam değer Z_in j ile gösterilir: Z_in j = v oj +∑x i *v ij
Çıkış sinyali Z j (aktivasyon fonksiyonunun Z_in j'ye uygulanmasının sonucu) Z j ile gösterilir: Z j = f (Z_in j)
w ok Çıkışta nöronun yer değiştirmesi.
Y k k indeksi altındaki çıkış nöronu; Çıkış elemanı Yk'nin girişine sağlanan toplam değer Y_in k ile gösterilir: Y_in k = w ok + ∑ Z j *w jk . Çıkış sinyali Yk (aktivasyon fonksiyonunun Y_ink'ye uygulanmasının sonucu) Yk olarak gösterilir:

Etkinleştirme işlevi

Geri yayılım algoritmasındaki aktivasyon fonksiyonunun birkaç tane olması gerekir. önemli özellikler: süreklilik, türevlenebilirlik ve monoton olarak azalmayan olma. Ayrıca hesaplama verimliliği açısından türevinin kolaylıkla bulunması arzu edilir. Çoğu zaman aktivasyon fonksiyonu aynı zamanda doymuş bir fonksiyondur. En yaygın kullanılan aktivasyon işlevlerinden biri, aralığı (0, 1) olan ve şu şekilde tanımlanan ikili sigmoid işlevidir:

Yaygın olarak kullanılan bir diğer aktivasyon fonksiyonu (-1, 1) aralığına sahip bipolar sigmoiddir ve şu şekilde tanımlanır:


Öğrenme algoritması

Öğrenme algoritması şuna benzer:

Ağırlıkların başlatılması (tüm bağlantıların ağırlıkları rastgele küçük değerlerle başlatılır).

Algoritmanın sonlandırma koşulu yanlış olduğu sürece 2'den 9'a kadar olan adımlar gerçekleştirilir.

Her çift için (veri, hedef değer), 3'ten 8'e kadar olan adımlar gerçekleştirilir.

Verilerin girdilerden çıktılara yayılması:

Adım 3.
Her giriş nöronu (X i, i = 1,2,...,n), alınan X i sinyalini bir sonraki katmandaki (gizli) tüm nöronlara gönderir.

Her gizli nöron (Z j , j = 1,2,...,p) ağırlıklı gelen sinyalleri toplar: z_in j = v oj + ∑ x i *v ij ve aktivasyon fonksiyonunu uygular: z j = f (z_in j) Sonra sonucu bir sonraki katmanın (çıktı) tüm öğelerine gönderir.

Her çıkış nöronu (Y k , k = 1,2,...m) ağırlıklı giriş sinyallerini toplar: Y_in k = w ok + ∑ Z j *w jk ve çıkış sinyalini hesaplayan bir aktivasyon fonksiyonu uygular: Y k = f (Y_k cinsinden).

Hatanın geriye yayılması:

Her çıkış nöronu (Y k, k = 1,2,...m) bir hedef değer alır - belirli bir giriş sinyali için doğru olan çıkış değeri ve hatayı hesaplar: σ k = (t k - y k)*f " ( y_in k), aynı zamanda w jk bağlantı ağırlığının ne kadar değişeceğini de hesaplar: Δw jk = a * σ k * z j . Ayrıca sapma ayarlama miktarını da hesaplar: Δw ok = a*σ k ve σ gönderir k önceki katmandaki nöronlara .

Her gizli nöron (z j, j = 1,2,...p), (sonraki katmandaki nöronlardan) gelen hataları toplar σ_in j = ∑ σ k * w jk ve elde edilen değeri Aktivasyon fonksiyonunun türevi: σ j = σ_in j * f " (z_in j), ayrıca vij bağlantısının ağırlığının değişeceği miktarı da hesaplar: Δv ij = a * σ j * x i. Ayrıca, ofset ayarının miktarı: v oj = a * σ j

Adım 8. Ağırlıkları değiştirin.

Her çıkış nöronu (y k, k = 1,2,...,m), öngerilim elemanı ve gizli nöronlarla olan bağlantılarının ağırlıklarını değiştirir: w jk (yeni) = w jk (eski) + Δw jk
Her bir gizli nöron (z j, j = 1,2,...p), öngerilim elemanı ve çıkış nöronları ile olan bağlantılarının ağırlıklarını değiştirir: v ij (yeni) = v ij (eski) + Δv ij

Algoritmayı durdurma koşulunun kontrol edilmesi.
Algoritmanın çalışmasını durdurmanın koşulu, öğrenme süreci sırasında ağ çıkışındaki sonucun toplam karesel hatasının önceden belirlenmiş bir minimuma ulaşması veya algoritmanın belirli sayıda yinelemesinin tamamlanması olabilir. Algoritma, gradyan iniş adı verilen bir yönteme dayanmaktadır. İşarete bağlı olarak fonksiyonun gradyanı (içinde bu durumda fonksiyon değeri hatadır ve parametreler ağdaki bağlantıların ağırlıklarıdır), fonksiyon değerlerinin en hızlı arttığı (veya azaldığı) yönü verir.

Ağ çıkışlarından girişlerine doğru, normal çalışmada sinyallerin ileri yayılımının tersi yönde hatalar. Bartsev ve Okhonin hemen, gecikmeli sistemler, dağıtılmış sistemler vb. dahil olmak üzere daha geniş bir sistem sınıfına uygulanabilen genel bir yöntem (“ikilik ilkesi”) önerdiler.

Geri yayılım yöntemini kullanabilmek için nöronların transfer fonksiyonunun türevlenebilir olması gerekir. Yöntem, klasik gradyan iniş yönteminin bir modifikasyonudur.

Sigmoid aktivasyon fonksiyonları

Aşağıdaki sigmoid türleri çoğunlukla aktivasyon fonksiyonları olarak kullanılır:

Fermi fonksiyonu (üstel sigmoid):

Rasyonel sigmoid:

Hiperbolik tanjant:

,

burada s, nöron toplayıcının çıktısıdır ve keyfi bir sabittir.

Rasyonel sigmoidin hesaplanması, diğer sigmoidlerle karşılaştırıldığında en az CPU zamanı gerektirir. Hesaplamak hiperbolik tanjant en fazla işlemci döngüsünü gerektirir. Eşik aktivasyon fonksiyonlarıyla karşılaştırıldığında sigmoidler çok yavaş hesaplanır. Eşik fonksiyonundaki toplamadan sonra hemen belirli bir değerle (eşik) karşılaştırmaya başlayabilirseniz, o zaman sigmoid aktivasyon fonksiyonu durumunda sigmoid'i (zamanı harcamak) hesaplamanız gerekir. en iyi senaryoüç işleme ayırın: modülü alma, ekleme ve bölme) ve ancak bundan sonra bunu bir eşik değeriyle (örneğin sıfır) karşılaştırın. En basit işlemlerin hepsinin işlemci tarafından yaklaşık olarak aynı sürede hesaplandığını varsayarsak, o zaman sigmoidal aktivasyon fonksiyonunun toplamadan sonraki çalışması (aynı süreyi alacaktır), eşik aktivasyon fonksiyonundan bir kat daha yavaş olacaktır. 1:4.

Ağ değerlendirme işlevi

Ağ performansının değerlendirilmesinin mümkün olduğu durumlarda sinir ağlarının eğitimi bir optimizasyon problemi olarak temsil edilebilir. Değerlendirmek, ağın kendisine verilen görevleri iyi veya kötü çözüp çözmediğini niceliksel olarak belirtmek anlamına gelir. Bu amaçla bir değerlendirme fonksiyonu oluşturulmuştur. Kural olarak, açıkça ağın çıkış sinyallerine ve örtülü olarak (işlem yoluyla) tüm parametrelerine bağlıdır. Değerlendirmenin en basit ve en yaygın örneği, ağ çıkış sinyallerinden gereken değerlere olan mesafelerin karelerinin toplamıdır:

,

çıkış sinyalinin gerekli değeri nerede.

Algoritmanın açıklaması

Çok Katmanlı Algılayıcı Mimarisi

Geri yayılım algoritması çok katmanlı bir algılayıcıya uygulanır. Bir ağın birçok girişi, birçok çıkışı ve birçok dahili düğümü vardır. Tüm düğümleri (girişler ve çıkışlar dahil) 1'den N'ye kadar (katmanların topolojisine bakılmaksızın sürekli numaralandırma) numaralarla yeniden numaralandıralım. i-th ve j-th düğümlerini bağlayan kenarda duran ağırlıkla ve i-th düğümünün çıktısıyla belirtelim. Eğitim örneğini (ağın doğru cevaplarını) biliyorsak, en küçük kareler yöntemini kullanarak elde edilen hata fonksiyonu şöyle görünür:

Ağırlıklar nasıl değiştirilir? Stokastik gradyan inişini uygulayacağız, yani her eğitim örneğinden sonra ağırlıkları ayarlayacağız ve böylece ağırlıkların çok boyutlu uzayında “hareket edeceğiz”. Minimum hatayı "elde etmek" için, eğimin tersi yönde "hareket etmemiz" gerekir, yani her doğru cevap grubuna dayanarak her ağırlığa eklememiz gerekir.

,

“hareketin” hızını belirten bir çarpan nerede.

Türev aşağıdaki gibi hesaplanır. Öncelikle ilgilendiğimiz ağırlığın nörona girmesine izin verin. son seviye. İlk olarak, toplamın j'inci düğümün girişleri üzerinden alındığı toplamın bir parçası olarak ağ çıkışını etkilediğini not ediyoruz. Bu yüzden

Benzer şekilde, yalnızca j'inci düğümün çıkışındaki genel hatayı etkiler (bunun tüm ağın çıkışı olduğunu unutmayın). Bu yüzden

Eğer j'inci düğüm- son seviyede değil, o zaman çıkışları vardır; onları Çocuklar(j) ile gösterelim. Bu durumda

, .

Peki - bu tam olarak benzer bir düzeltmedir, ancak bir sonraki seviyenin düğümü için hesaplandığında, bunu - çarpanın yokluğunda farklılık gösterdiğinden - belirteceğiz. Son seviyedeki düğümler için düzeltmeyi hesaplamayı ve bir düğüm için düzeltmeyi daha fazla ifade etmeyi öğrendiğimize göre düşük seviye daha yüksek düzeltmeler sayesinde zaten bir algoritma yazabilirsiniz. Düzeltmeleri hesaplamanın bu özelliğinden dolayı algoritmaya denir geri yayılım algoritması(geriye yayılım). Yapılan çalışmaların kısa özeti:

  • son seviye düğümü için
  • dahili ağ düğümü için
  • tüm düğümler için

Sonuçta ortaya çıkan algoritma aşağıda sunulmuştur. Algoritmaya girdi olarak belirlenen parametrelere ek olarak ağ yapısının da bir formatta sunulması gerekmektedir. Pratikte bu çok iyi sonuçlar iki düzeyde nörondan oluşan oldukça basit bir yapıya sahip ağları gösterir - gizli düzey (gizli birimler) ve çıkış nöronları (çıkış birimleri); Ağın her girişi tüm gizli nöronlara bağlanır ve her gizli nöronun çalışmasının sonucu, çıkış nöronlarının her birinin girişine beslenir. Bu durumda gizli seviye nöronlarının sayısını girdi olarak sağlamak yeterlidir.

Algoritma

Algoritma: Geri Yayılma

amaç fonksiyonunun yüzeyi boyunca hareket ederken keskin sıçramaları yumuşatmak için eylemsizlik katsayısı nerede

Sinir ağı eğitiminin matematiksel yorumu

Geri yayılım algoritmasının her yinelemesinde, sinir ağının ağırlıkları, bir örneğin çözümünü iyileştirmek için değiştirilir. Böylece öğrenme sürecinde tek kriterli optimizasyon problemleri döngüsel olarak çözülür.

Sinir ağı eğitimi, sinir ağı eğitimini aşağıdakilerden ayıran dört spesifik sınırlama ile karakterize edilir: ortak görevler optimizasyon: astronomik sayıda parametre, eğitim sırasında yüksek paralellik ihtiyacı, çözülen problemlerin çok kriterli doğası, küçültülmüş tüm fonksiyonların değerlerinin minimuma yakın olduğu oldukça geniş bir alan bulma ihtiyacı. Aksi takdirde öğrenme problemi genellikle puan minimizasyon problemi olarak formüle edilebilir. Önceki ifadedeki (“genellikle”) uyarı, aslında sinir ağları için olası tüm görevleri bilmediğimiz ve hiçbir zaman bilemeyeceğimiz ve belki de bilinmeyenin bir yerinde, tahminin en aza indirilmesine indirgenemeyen görevlerin mevcut olması gerçeğinden kaynaklanmaktadır. . Değerlendirmeyi en aza indirgemek - karmaşık sorun: astronomik olarak birçok parametre var (için standart örnekler PC'de uygulanan - 100'den 1.000.000'e kadar), uyarlanabilir rahatlama (ayarlanabilir parametrelerin bir fonksiyonu olarak tahmin grafiği) karmaşıktır ve birçok yerel minimum içerebilir.

Algoritmanın dezavantajları

Geri yayılımın sayısız başarılı uygulamasına rağmen, bu her derde deva değildir. En çok sıkıntıyı getiren şey, süresiz uzun öğrenme sürecidir. Karmaşık problemlerde ağın eğitilmesi günler hatta haftalar sürebilir veya hiç öğrenmeyebilir. Bunun nedeni aşağıda açıklananlardan biri olabilir.

Ağ felci

Ağ eğitim sürecinde düzeltme sonucunda ağırlık değerleri çok büyük değerlere çıkabilmektedir. Bu, kasılma fonksiyonunun türevinin çok küçük olduğu bir bölgede, nöronların tamamının veya çoğunun çok büyük OUT değerlerinde çalışmasına neden olabilir. Öğrenme sürecinde geri gönderilen hata bu türevle orantılı olduğundan öğrenme süreci pratik olarak donabilir. Teorik açıdan bakıldığında bu sorun yeterince anlaşılmamıştır. Bu genellikle adım boyutunun (η) azaltılmasıyla önlenir, ancak bu, eğitim süresini artırır. Felci önlemek veya felçten kurtulmak için çeşitli buluşsal yöntemler kullanıldı, ancak şimdilik bunlar yalnızca deneysel olarak kabul edilebilir.

Yerel minimum

Geri yayılım, bir tür gradyan inişini kullanır; yani, ağırlıkları sürekli olarak minimuma doğru ayarlayarak hata yüzeyinden aşağı iner. Karmaşık bir ağın hata yüzeyi oldukça sağlamdır ve yüksek boyutlu uzaydaki tepeler, vadiler, kıvrımlar ve vadilerden oluşur. Bir ağ, yakınlarda çok daha derin bir minimum olduğunda yerel minimuma (sığ vadi) düşebilir. Yerel minimum noktasında tüm yönler yukarıya bakar ve ağ bundan kaçamaz. Sinir ağlarını eğitmedeki temel zorluk, tam olarak yerel minimumlardan kaçma yöntemleridir: yerel minimumdan her ayrıldığında, bir sonraki yerel minimum, aynı hata geriye yayılım yöntemini kullanarak, artık bir çıkış yolu bulmak mümkün olmayana kadar tekrar aranır. BT.

Adım boyutu

Yakınsama kanıtının dikkatli bir incelemesi, ağırlık düzeltmelerinin sonsuz küçük olduğunun varsayıldığını gösterir. Bunun pratikte mümkün olmadığı açıktır, çünkü sonsuz bir öğrenme süresine yol açmaktadır. Adım büyüklüğü sonlu olarak alınmalıdır. Adım boyutu sabit ve çok küçükse yakınsama çok yavaş olur, ancak sabit ve çok büyükse felç veya sürekli istikrarsızlık meydana gelebilir. Antigradyan durakların belirli bir yönünde tahmindeki iyileşmeye kadar olan adımı artırmak ve böyle bir iyileşme oluşmazsa azaltmak etkilidir. P. D. Wasserman, öğrenme süreci sırasında adım boyutunu otomatik olarak ayarlayan uyarlanabilir bir adım seçim algoritmasını tanımladı. A. N. Gorban'ın kitabı öğrenmeyi optimize etmek için kapsamlı bir teknoloji öneriyor.

Ağın yeniden eğitilebileceği de unutulmamalıdır ki bu büyük olasılıkla topolojisinin hatalı tasarımının bir sonucudur. Çok fazla nöron olması durumunda ağın bilgiyi genelleştirme yeteneği kaybolur. Eğitim için sağlanan görsellerin tamamı ağ tarafından öğrenilecektir ancak diğer görseller, hatta çok benzer olanlar bile yanlış sınıflandırılabilir.

Ayrıca bakınız

  • Hız Gradyanı Algoritması

Edebiyat

  1. Wassermann F. Nörobilgisayar: Teori ve Uygulama. - M .: “Mir”, 1992.
  2. Khaikin S. Sinir ağları: Tam kurs. Başına. İngilizce'den N. N. Kussul, A. Yu. 2. baskı, rev. - M.: Yayınevi Williams, 2008, 1103 s.

Bağlantılar

  1. Koposov A.I., Shcherbakov I.B., Kislenko N.A., Kislenko O.P., Varivoda Yu.. - M .: VNIIGAZ, 1995.


Makaleyi beğendin mi? Arkadaşlarınızla paylaşın!