Sinir ağlarının patlaması: Sinir ağlarını kim yapar, neden ihtiyaç duyulur ve ne kadar para getirebilirler. Geri bildirim ağları. Önyargı nöronu nedir ve ne işe yarar?

  • 23.06.2019

Yapay zekada bir başka araştırma alanı da sinir ağlarıdır. İnsan sinir sisteminin doğal sinir ağlarına benzer şekilde tasarlandılar.

Yapay sinir ağları

İlk nörobilgisayarın mucidi Dr. Robert Hecht-Nielsen, aşağıdaki bir sinir ağı kavramını verdi: “Sinir ağı, dinamik tepkileriyle bilgiyi işleyen bir dizi basit, yüksek düzeyde bağlantılı işlem öğesinden oluşan bir bilgi işlem sistemidir. dış etkiler."

Yapay sinir ağlarının (YSA) temel yapısı

YSA fikri, silikon ve canlı nöronlar ve dendritler gibi teller kullanarak gerekli bağlantıları oluşturarak insan beyninin çalışmasını taklit etmenin mümkün olduğu inancına dayanmaktadır.

İnsan beyni, nöron adı verilen 100 milyar sinir hücresinden oluşur. Aksonlarla diğer binlerce hücreye bağlanırlar. Dış ortamdan gelen uyarılar veya duyu organlarından gelen sinyaller dendritler tarafından alınır. Bu girdiler, sinir ağı boyunca hızla hareket eden elektriksel darbeler yaratır. Nöron daha sonra diğer nöronlara mesaj gönderebilir, bu da bu mesajı daha fazla gönderebilir veya hiç göndermeyebilir.


Yapay sinir ağları, insan beyninin biyolojik nöronlarını taklit eden birkaç düğümden oluşur. Nöronlar birbirine bağlıdır ve birbirleriyle etkileşime girer. Düğümler girdi alabilir ve veriler üzerinde basit işlemler gerçekleştirebilir. Bu işlemler sonucunda veriler diğer nöronlara aktarılır. Her düğümün çıktısına aktivasyonu denir.

Her bağlantı bir ağırlıkla ilişkilendirilir. YSA'lar, ağırlık değerini değiştirerek gerçekleştirilen öğrenme yeteneğine sahiptir. Aşağıdaki şekil basit bir YSA'yı göstermektedir:

Yapay sinir ağlarının türleri

İki tür yapay sinir ağı topolojisi vardır - ileri beslemeli ve geri beslemeli.

Bilgi akışı tek yönlüdür. Blok, bilgi almadığı diğer birimlere bilgi iletir. Geri besleme döngüsü yok. Sabit giriş ve çıkışları vardır.


Burada geri besleme döngülerine izin verilir.

Yapay sinir ağları nasıl çalışır?

Topoloji devreleri gösterir, her ok iki nöron arasındaki bağlantıyı temsil eder ve bilgi akışının yolunu gösterir. Her bağlantının bir ağırlığı, iki nöron arasındaki sinyali kontrol eden bir tamsayı vardır.

Ağ "iyi" ve "istenen" bir çıktı üretiyorsa, ağırlığı ayarlamaya gerek yoktur. Ancak, ağ "kötü" veya "istenmeyen" bir çıktı veya hata üretirse, sistem sonraki sonuçları iyileştirmek için ağırlıklarını ayarlar.

Yapay sinir ağlarında makine öğrenimi

YSA'lar öğrenme yeteneğine sahiptir ve eğitilmeleri gerekir. Birkaç öğrenme stratejisi var

Eğitim - öğretmenin yanıtlarını bildiği bir eğitim örneğini ağa besleyen bir öğretmeni içerir. Ağ, sonuçlarını öğretmenin yanıtlarıyla karşılaştırır ve ağırlıklarını ayarlar.

Yanıtları bilinen bir eğitim örneği olmadığında denetimsiz öğrenme gereklidir. Örneğin, kümeleme problemlerinde, yani. bir dizi öğeyi bazı kriterlere göre gruplara ayırmak.

Takviyeli öğrenme, gözleme dayalı bir stratejidir. Ağ çevresini gözlemleyerek kararlar verir. Gözlem negatifse, ağ, farklı gerekli kararları alabilmek için ağırlıklarını ayarlar.

Geri Yayılım Algoritması

Bayes ağları (BN)

Bunlar, bir dizi rastgele değişken arasındaki olasılıksal ilişkileri temsil eden grafik yapılardır.

Bu ağlarda, her düğüm belirli teklifleri olan rastgele bir değişkendir. Örneğin tıbbi tanıda Kanser düğümü hastanın kanser olduğuna dair bir öneridir.

Düğümleri birbirine bağlayan kenarlar, bu rastgele değişkenler arasındaki olasılıksal bağımlılıklardır. İki düğümden biri diğer düğümü etkiliyorsa, bunlar doğrudan bağlanmalıdır. Değişkenler arasındaki ilişkinin gücü, her bir düğümle ilişkilendirilen olasılık ile ölçülür.

BN'de sadece yaylarda bir sınırlama vardır, sadece yayın yönünü takip ederek bir düğüme geri dönemezsiniz. Bu nedenle, BNS'ye asiklik grafik denir.

BN yapısı, bilgi ve gözlemlenen verileri birleştirmek için idealdir. BN nedensel ilişkileri öğrenmek, çeşitli sorunları anlamak ve veri yokluğunda bile geleceği tahmin etmek için kullanılabilir.

sinir ağları nerelerde kullanılır

    İnsanlar için kolay, ancak makineler için zor olan görevleri gerçekleştirebilirler:

    Havacılık - uçak otopilot;

    Otomotiv - otomotiv yönlendirme sistemleri;

    Askeri - hedef takibi, otopilot, sinyal / görüntü tanıma;

    Elektronik - tahmin, hata analizi, yapay görme, ses sentezi;

    Finansal – gayrimenkul değerlemesi, kredi danışmanları, ipotekler, ticaret şirketi portföyü vb.

    Sinyal İşleme - Sinir ağları, bir ses sinyalini işlemek için eğitilebilir.

Yapay zeka ve sinir ağları konuları artık her zamankinden daha popüler hale geliyor. Pek çok kullanıcı, sinir ağlarının nasıl çalıştığı, ne oldukları ve faaliyetlerinin ilkesinin neye dayandığı hakkında giderek artan bir şekilde sorular soruyor.

Bu sorular, popülerlikleriyle birlikte oldukça karmaşıktır, çünkü süreçler, değişiklikleri analiz etmekten belirli eylemlerle ilişkili riskleri modellemeye kadar çeşitli amaçlar için tasarlanmış karmaşık makine öğrenimi algoritmalarıdır.

Sinir ağları nelerdir ve çeşitleri nelerdir?

İlgilenenler arasında ortaya çıkan ilk soru, sinir ağı nedir? Klasik tanımda, bu, sinapslarla birbirine bağlanan belirli bir nöron dizisidir. Sinir ağları, biyolojik analogların basitleştirilmiş bir modelidir.

Sinir ağı yapısına sahip olan program, makinenin giriş verilerini analiz etmesine ve belirli kaynaklardan elde edilen sonucu hatırlamasına olanak tanır. Daha sonra, bu yaklaşım, ağ döngüleri deneyiminde zaten mevcutsa, mevcut veri kümesine karşılık gelen sonucu bellekten almanızı sağlar.

Birçoğu sinir ağını insan beyninin bir analogu olarak algılar. Bir yandan, bu yargı gerçeğe yakın olarak kabul edilebilir, ancak diğer yandan insan beyni, bir makine kullanarak yüzde bir kesir bile olsa onu yeniden oluşturamayacak kadar karmaşık bir mekanizmadır. Bir sinir ağı, öncelikle beynin prensibine dayanan bir programdır, ancak analogu değildir.

Bir sinir ağı, her biri bilgiyi alan, işleyen ve başka bir nörona ileten bir grup nörondur. Her nöron sinyali tamamen aynı şekilde işler.

O zaman sonuç nasıl farklı? Her şey nöronları birbirine bağlayan sinapslarla ilgili. Bir nöron, sinyali güçlendiren veya zayıflatan çok sayıda sinapsa sahip olabilirken, zamanla özelliklerini değiştirme yeteneğine de sahiptir.

Çıktıdaki girdi veri dönüşümünün doğru sonucunu elde etmeyi mümkün kılan tam olarak doğru seçilmiş sinaps parametreleridir.

Bir sinir ağının ne olduğunu genel olarak tanımladıktan sonra, sınıflandırmalarının ana türlerini ayırt edebiliriz. Sınıflandırmaya geçmeden önce bir açıklama yapılmalıdır. Her ağ, girdi olarak adlandırılan ilk nöron katmanına sahiptir.

Herhangi bir hesaplama ve dönüşüm yapmaz, görevi yalnızca bir tanesidir: giriş sinyallerini diğer nöronlara kabul etmek ve dağıtmak. Bu, tüm sinir ağları türlerinde ortak olan tek katmandır ve bunların ileri yapıları, ana bölümün kriteridir.

  • Tek katmanlı sinir ağı. Bu, girdi verilerinin ilk girdi katmanına girdikten sonra hemen nihai sonucun çıktı katmanına aktarıldığı nöronlar arasındaki bir etkileşim yapısıdır. Bu durumda birinci girdi katmanı, alma ve dağıtma dışında herhangi bir işlem yapmadığı için dikkate alınmaz, bu daha önce yukarıda belirtilmiştir. İkinci katman ise gerekli tüm hesaplamaları ve işlemleri yapar ve anında nihai sonucu verir. Giriş nöronları, bağlantıların kalitesini sağlayan farklı ağırlık katsayılarına sahip sinapslarla ana katmana bağlanır.
  • Çok katmanlı sinir ağı. Tanımdan da anlaşılacağı gibi, bu tür sinir ağlarında giriş ve çıkış katmanlarına ek olarak ara katmanlar da bulunur. Sayıları, ağın kendisinin karmaşıklık derecesine bağlıdır. Daha çok biyolojik bir sinir ağının yapısı gibidir. Bu tür ağlar oldukça yakın zamanda geliştirildi, bundan önce tüm işlemler tek katmanlı ağlar kullanılarak uygulandı. Buna göre, böyle bir çözüm, atasından çok daha fazla olasılığa sahiptir. Bilgi işleme sürecinde, her ara katman, bilginin işlenmesi ve dağıtılmasında bir ara aşamayı temsil eder.

Bilginin sinapslar arasında bir nörondan diğerine dağıtım yönüne bağlı olarak, ağlar da iki kategoriye ayrılabilir.

  • Doğrudan yayılma ağları veya tek yönlü, yani sinyalin kesinlikle giriş katmanından çıkış katmanına hareket ettiği bir yapı. Ters yönde sinyal hareketi mümkün değildir. Bu tür gelişmeler oldukça yaygındır ve şu anda tanıma, tahmin veya kümeleme gibi sorunları başarıyla çözmektedir.
  • Geri bildirimli veya tekrarlayan ağlar. Bu tür ağlar, sinyalin yalnızca ileri değil, aynı zamanda ters yönde de hareket etmesine izin verir. Ne veriyor? Bu tür ağlarda, çıkış sonucu buna göre girişe döndürülebilir, nöronun çıkışı ağırlıklar ve giriş sinyalleri tarafından belirlenir ve tekrar girişe dönen önceki çıkışlarla tamamlanır. Bu tür ağlar, işleme sırasında sinyallerin geri yüklendiği ve tamamlandığı temelinde kısa süreli belleğin işlevi ile karakterize edilir.

Ağları sınıflandırmak için tek seçenek bunlar değildir.

Ağı oluşturan nöron türlerine göre homojen ve hibrit olarak ayrılabilirler. Ve ayrıca, öğretmenli veya öğretmensiz, ağ eğitimi yöntemine bağlı olarak heteroassociative veya autoassociative üzerinde. Ağları amaçlarına göre de sınıflandırabilirsiniz.

Sinir ağları nerelerde kullanılır?

Yapay sinir ağları çeşitli problemleri çözmek için kullanılır. Görevleri karmaşıklık derecesine göre düşünürsek, sıradan bir bilgisayar programı en basit görevleri çözmek için uygundur, daha fazlası
basit tahmin veya denklemlerin yaklaşık çözümünü gerektiren karmaşık görevler, istatistiksel yöntemleri kullanan programlar kullanılır.

Ancak daha da karmaşık bir düzeydeki görevler, tamamen farklı bir yaklaşım gerektirir. Bu özellikle örüntü tanıma, konuşma veya karmaşık tahmin için geçerlidir. Bir kişinin kafasında bu tür süreçler bilinçsizce gerçekleşir, yani bir kişi görüntüleri tanırken ve hatırlarken, bu sürecin nasıl gerçekleştiğini fark etmez ve bu nedenle onu kontrol edemez.

Sinir ağlarının çözmeye yardımcı olduğu bu görevlerdir, yani algoritmaları bilinmeyen işlemleri gerçekleştirmek için tasarlanmıştır.

Bu nedenle, sinir ağları aşağıdaki alanlarda yaygın olarak kullanılmaktadır:

  • tanıma ve bu yön şu anda en geniş olanıdır;
  • bir sonraki adımın tahmini, bu özellik ticaret ve borsalarda geçerlidir;
  • Girdi verilerinin parametrelere göre sınıflandırılması, bu işlev, bir kişiye bir krediyi onaylamada farklı parametrelerden oluşan bir girdi setine dayanarak karar verebilen kredi robotları tarafından gerçekleştirilir.

Sinir ağlarının yetenekleri onları çok popüler hale getiriyor. Onlara oyun oynamak, belirli bir sesi tanımak gibi pek çok şey öğretilebilir. Yapay ağların biyolojik ağlar ilkesi üzerine kurulu olduğu gerçeğinden hareketle, bir kişinin bilinçsizce gerçekleştirdiği tüm süreçlerde eğitilebilirler.

Nöron ve sinaps nedir?

Peki yapay sinir ağları bağlamında bir nöron nedir? Bu kavram, hesaplamalar yapan bir birimi ifade eder. Ağın giriş katmanından bilgi alır, onunla basit hesaplamalar yapar ve bir sonraki nörona yer.

Ağda üç tip nöron vardır: giriş, gizli ve çıkış. Ayrıca ağ tek katmanlı ise gizli nöronlar içermez. Ayrıca, yanlılık nöronu ve bağlam nöronu olarak adlandırılan çeşitli birimler vardır.

Her nöronun iki tür verisi vardır: girdi ve çıktı. Bu durumda, birinci katmanın girdi verileri, çıktı verilerine eşittir. Diğer durumlarda, nöronun girişi önceki katmanların toplam bilgisini alır, ardından normalizasyon sürecinden geçer, yani istenen aralığın dışına düşen tüm değerler aktivasyon fonksiyonu tarafından dönüştürülür.

Yukarıda bahsedildiği gibi, bir sinaps, her biri kendi ağırlık derecesine sahip olan nöronlar arasındaki bir bağlantıdır. Bu özellik nedeniyle, giriş bilgisi iletim işlemi sırasında değiştirilir. İşlem sırasında, büyük bir ağırlık göstergesi ile sinaps tarafından iletilen bilgiler baskın olacaktır.

Sonucun nöronlardan değil, belirli bir girdi veri ağırlıkları seti veren sinapslardan etkilendiği ortaya çıktı, çünkü nöronlar her seferinde tam olarak aynı hesaplamaları yapıyorlar.

Ağırlıklar rastgele ayarlanır.

Sinir ağının şeması

Bir sinir ağının çalışma prensibini sunmak özel beceriler gerektirmez. Belirli bilgiler nöronların giriş katmanına girer. Sinapslar aracılığıyla bir sonraki katmana iletilir, her sinaps kendi ağırlık katsayısına sahiptir ve sonraki her nöron birkaç gelen sinapsa sahip olabilir.

Sonuç olarak, bir sonraki nöron tarafından alınan bilgi, her biri kendi ağırlık katsayısı ile çarpılan tüm verilerin toplamıdır. Ortaya çıkan değer, aktivasyon fonksiyonuna ikame edilir ve nihai çıktıya ulaşana kadar daha fazla iletilecek olan çıktı bilgisi elde edilir. Ağ henüz eğitilmediği için ağın ilk çalıştırması doğru sonuçları vermiyor.

Aktivasyon işlevi, giriş verilerini normalleştirmek için kullanılır. Bu tür birçok işlev vardır, ancak en yaygın olarak kullanılan birkaç ana işlev vardır. Ana farkları, çalıştıkları değer aralığıdır.

  • Mümkün olanın en basiti olan f(x) = x doğrusal fonksiyonu, yalnızca oluşturulan sinir ağını test etmek veya verileri orijinal biçiminde iletmek için kullanılır.
  • Sigmoid en yaygın aktivasyon fonksiyonu olarak kabul edilir ve f(x) = 1 / 1+e-×; değerlerinin aralığı 0 ile 1 arasındadır. Buna lojistik fonksiyon da denir.
  • Hiperbolik tanjant, negatif değerleri de kapsayacak şekilde kullanılır. F(x) = e²× - 1 / e²× + 1 - bu fonksiyon böyle bir forma sahiptir ve sahip olduğu aralık -1 ile 1 arasındadır. Sinir ağı negatif değerlerin kullanımını sağlamıyorsa, o zaman siz kullanmamalıdır.

Ağın çalışacağı verileri ayarlamak için eğitim setlerine ihtiyaç vardır.

Entegrasyon, her eğitim seti ile artan bir sayaçtır.

Bir çağ, bir sinir ağının ne kadar iyi eğitildiğinin bir ölçüsüdür ve ağın tam bir eğitim setinden geçtiği her seferinde artar.

Buna göre, ağı doğru bir şekilde eğitmek için, dönem göstergesini sürekli olarak artırarak setler yapmanız gerekir.

Eğitim sırasında hatalar tespit edilecektir. Bu, elde edilen sonuç ile istenen sonuç arasındaki yüzde farkıdır. Bu gösterge, dönem göstergesini artırma sürecinde azalmalıdır, aksi takdirde bir yerde bir geliştirici hatası vardır.

Önyargı nöronu nedir ve ne işe yarar?

Sinir ağlarında, başka bir tür nöron vardır - yanlılık nöronu. Ana nöron tipinden farkı, girdi ve çıktısının her durumda bire eşit olmasıdır. Aynı zamanda, bu tür nöronların giriş sinapsları yoktur.

Bu tür nöronların düzenlenmesi, katman başına bir tane olur ve daha fazla olmaz ve sinapslarla birbirlerine bağlanamazlar. Bu tür nöronların çıktı katmanına yerleştirilmesi tavsiye edilmez.

Ne için ihtiyaç duyuyorlar? İstenilen noktaya ulaşılamayacak olması nedeniyle sinir ağının doğru çözümü bulamadığı durumlar vardır. Tanım alanını değiştirebilmek için bu tür nöronlara ihtiyaç duyulmaktadır.

Yani, sinapsın ağırlığı, fonksiyon grafiğinin eğrisini değiştirirken, yer değiştirme nöronu, X koordinat ekseni boyunca kaymanıza izin verir, böylece sinir ağı, erişilemeyen alanı bir kayma olmadan yakalayabilir. Bu durumda, kaydırma hem sağa hem de sola yapılabilir. Şematik olarak, kaydırma nöronları genellikle işaretlenmez, giriş değeri hesaplanırken ağırlıkları varsayılan olarak dikkate alınır.

Ayrıca, yanlılık nöronları, diğer tüm nöronların çıkış parametresi olarak 0 vermesi durumunda bir sonuç almanıza izin verecektir. Bu durumda, sinapsın ağırlığı ne olursa olsun, bu değer sonraki her katmana iletilecektir.

Bir önyargı nöronunun varlığı durumu düzeltecek ve farklı bir sonuç alacaktır. Önyargı nöronlarını kullanmanın fizibilitesi, ağı onlarla ve onlarsız test ederek ve sonuçları karşılaştırarak belirlenir.

Ancak, sonuçlara ulaşmak için bir sinir ağı oluşturmanın yeterli olmadığını hatırlamak önemlidir. Ayrıca özel yaklaşımlar gerektiren ve kendi algoritmaları olan eğitimli olması gerekir. Uygulanması belirli bilgi ve çaba gerektirdiğinden, bu süreç pek basit olarak adlandırılamaz.

Bugün sitemizde çok ilginç bir konu üzerinde çalışmaya başlıyoruz, yani nöral ağlar. Nedir, neden ihtiyaç duyulur, onlarla nasıl çalışılır - hala tüm bunları çözmemiz gerekiyor) Teori, anlamayı basitleştirmek ve sinir ağlarının nasıl çalıştığını açıkça görebilmeniz için pratik görevler ve örneklerle iç içe olacaktır. İlk makale geleneksel olarak biraz giriş niteliğinde olacaktır, ancak bugün gelecekte bizim için yararlı olacak bazı önemli noktaları tartışacağız. Genel olarak, başlayalım!

Yapay sinir ağlarının incelenmesi ve kullanılması, prensip olarak, oldukça uzun zaman önce - 20. yüzyılın başında başladı, ancak biraz sonra gerçekten geniş bir popülerlik kazandılar. Bu, her şeyden önce, gücü yapay sinir ağlarıyla çalışacak kadar büyük olan gelişmiş (o zaman için) bilgi işlem cihazlarının ortaya çıkmaya başlamasından kaynaklanmaktadır. Aslında, şu anda herhangi bir kişisel bilgisayarda orta karmaşıklıkta bir sinir ağını kolayca simüle edebilirsiniz. Ve mutlaka yapacağız 😉

Neyi temsil ediyor sinir ağı? Ve bu, adından da anlaşılacağı gibi - ağ, belirli bir şekilde birbirine bağlı bir nöronlar topluluğudur. Bir nöron düşünün:

Bir dizi giriş sinyalinden (belirli bir kurala göre) bir çıkış sinyali hesaplayan bir öğeyi temsil eder. Yani, bir nöronun ana eylem dizisi aşağıdaki gibidir:

  • Önceki ağ öğelerinden sinyal alma
  • Çıktı Hesaplama
  • Çıkış sinyalini sinir ağının sonraki öğelerine geçirmek

Nöronlar birbirine tamamen farklı şekillerde bağlanabilir, bu belirli bir ağın yapısı tarafından belirlenir. Ancak sinir ağının çalışmasının özü her zaman aynı kalır. Ağ girişine giren sinyallerin toplamına bağlı olarak, çıkışta bir çıkış sinyali (veya birkaç çıkış sinyali) oluşturulur. Yani bir sinir ağı, girdileri ve çıktıları olan bir kara kutu olarak basitleştirilebilir. Ve bu kutunun içinde çok sayıda nöron bulunur 😉

Ağın ana aşamalarını listeledik, şimdi her biri üzerinde ayrı ayrı duralım.

Giriş sinyallerinin kombinasyonu

Her nörona birkaç giriş sinyali gelebileceğinden, bir sinir ağı modellenirken tüm bu sinyallerin birleştirilmesi için belirli bir kural koymak gerekir. Ve oldukça sık olarak, bağlantıların ağırlıklı değerlerinin toplamı kuralı kullanılır. ağırlıklı ne demek? Şimdi çözelim...

Bir nöron ağındaki her bağlantı, üç faktörle tam olarak karakterize edilebilir:

  • ilki, bağlantının kaynaklandığı öğedir
  • ikincisi, bağlantının yönlendirildiği öğedir
  • üçüncüsü bağlantının ağırlığıdır.

Şimdi üçüncü faktörle daha çok ilgileniyoruz. Bağlantı ağırlığı, bu bağlantı üzerinden iletilen sinyalin artırılıp azaltılmayacağını belirler. Basitçe açıklamak gerekirse, “parmaklarda”, o zaman şu örneğe bakalım:

Nöron 1'in çıkış sinyali 5'tir. Nöronlar arasındaki bağlantının ağırlığı 2'dir. Bu nedenle, nöron 1'den gelen nöron 2'nin giriş sinyalini belirlemek için, bu sinyalin değerini bağlantının ağırlığı ile çarpmak gerekir. (5 * 2). Gördüğünüz gibi, her şey çok basit)

Ya birçok sinyal varsa? Sağ! Hepsi toplanır. Sonuç olarak, nöronun girişinde aşağıdakileri elde ederiz:

Bu formülde, nörona gelen tüm girdilerin (kombine nöron girdisi) birleştirilmesinin sonucudur. çıkış sinyallerini sinyal girişine ileten elemanların sayısıdır. A, nöronu nörona bağlayan bağlantının ağırlığıdır. Tüm ağırlıklı girdileri toplayarak ağ elemanının birleşik girdisini elde ederiz.

Çoğu zaman, nöronlar arasındaki bağlantıların yapısı, ağırlık matrisi adı verilen bir matris olarak temsil edilir. Matris elemanı formülde olduğu gibi elemandan elemana giden bağlantının ağırlığını belirler. Ağırlık matrislerinin nasıl oluşturulduğunu anlamak için basit bir sinir ağını düşünelim:

Böyle bir sinir ağı şöyle görünür:

Örneğin, ikinci elemandan üçüncüye, ağırlığı 3 olan bir bağlantı var, matrise bakıyoruz, ikinci satır, üçüncü sütun 3 numara, her şey doğru 😉

Ağırlık katsayılarını ve birleşik girdiyi bulduk, devam ettik.

Öğenin etkinlik işlevi.

Giriş sinyallerini çözdük, hafta sonu zamanı geldi. Ağın her bir elemanı için, elemanın birleşik girişinin değerinden çıkış değerinin hesaplandığı belirli bir kural vardır. Bu kurala aktivite fonksiyonu denir. Ve çıktı değerinin kendisine nöronun aktivitesi denir. Kesinlikle herhangi bir matematiksel işlev, etkinlik işlevi olarak işlev görebilir, burada örnek olarak en sık kullanılanlardan birkaçı:

  • eşik işlevi - birleşik girdinin değeri belirli bir değerin (eşik) altındaysa, etkinlik sıfıra, daha yüksekse bire eşittir.
  • lojistik fonksiyon.

Sinir ağlarının nasıl çalıştığının özünü açıklamak için literatürde çok sık kullanılan başka bir küçük örneğe bakalım. Örneğin görevi, XOR oranını hesaplamak için sinir ağını kullanmaktır. Yani girişe farklı sinyal çeşitleri vereceğiz ve çıkışta giriş değerleri için XOR işleminin sonucunu almalıyız:

Öğe 1 ve 2 girdidir ve öğe 7 çıktıdır. Nöronlar 5 ve 6, dış ortama bağlı olmadıkları için gizli olarak adlandırılır. Böylece girdi, gizli ve çıktı olmak üzere üç katmanımız oldu. Eleman 3 ve 4, yer değiştirme elemanları olarak adlandırılır. Onların çıkış sinyali (aktivite) her zaman 1'e eşittir. Bu ağdaki birleşik girişi hesaplamak için ağırlıklı bağlantıların toplama kuralını kullanacağız ve eşik fonksiyonu aktivite fonksiyonu olarak hareket edecektir. Birleşik eleman girişi 0'dan küçükse aktivite 0, giriş 0'dan büyükse aktivite 1'dir.

1 - 1 numaralı nöronun girişini, 2 numaralı nöronun girişini de sıfır ile besleyelim. Bu durumda çıkış 1 olmalıdır (0 XOR 1 = 1). Ağ performansını göstermek için çıktı değerini manuel olarak hesaplayın.

Öğe 5'in birleşik girişi: = 1 * (-1) + 0 * (-1) + 1 * 1.5 = 0.5.

Öğe 5 etkinliği: 1 (0,5 > 0).

Öğe 6'nın birleşik girişi: = 1 * (-1) + 0 * (-1) + 1 * 0,5 = -0.5.

6. madde etkinliği: 0.

Öğe 7'nin birleşik girişi: = 1 * (1) + 0 * (-1) + 1 * (-0,5) = 0,5.

Öğe 7'nin etkinliği ve aynı zamanda ağın çıkış değeri 1'dir. Hangisinin kanıtlanması gerekiyordu =)

Olası tüm değerleri giriş sinyalleri olarak kullanmayı deneyebilirsiniz (0 ve 0, 1 ve 0, 0 ve 1, 1 ve 1), çıkışta her zaman XOR doğruluk tablosuna karşılık gelen değeri göreceğiz. operasyon. Gördüğünüz gibi, ağ çalışıyor!

Bu durumda, ağırlık katsayılarının tüm değerleri bize önceden biliniyordu, ancak sinir ağlarının ana özelliği, ağ eğitimi sürecinde tüm bağlantıların ağırlık değerlerini kendileri düzeltebilmeleridir. Ancak bir sonraki makalede sinir ağlarının eğitimi hakkında konuşacağız ve elbette materyali pekiştirmek için pratik bir örnek ele alacağız. O zaman sonra görüşürüz!

Buna göre, sinir ağı girdi olarak iki sayı alır ve çıktıda başka bir sayı vermelidir - cevap. Şimdi sinir ağlarının kendileri hakkında.

Sinir ağı nedir?


Bir sinir ağı, sinapslarla birbirine bağlanan bir dizi nörondur. Sinir ağının yapısı, programlama dünyasına doğrudan biyolojiden geldi. Bu yapı sayesinde makine, çeşitli bilgileri analiz etme ve hatta ezberleme yeteneği kazanır. Sinir ağları, yalnızca gelen bilgiyi analiz etmekle kalmaz, aynı zamanda onu hafızalarından yeniden üretebilir. İlgilenenler kesinlikle TED Talks'tan 2 video izlemeli: 1. video , 2. video). Başka bir deyişle, bir sinir ağı, bilgiyi elektriksel darbeler şeklinde ileten milyonlarca nöron içeren insan beyninin bir makine yorumudur.

Sinir ağları nedir?

Şimdilik, en temel sinir ağları tipine ilişkin örnekleri ele alacağız - bu bir ileri beslemeli ağdır (bundan böyle FDN olarak anılacaktır). Ayrıca sonraki makalelerde daha fazla kavram tanıtacağım ve size tekrarlayan sinir ağları hakkında bilgi vereceğim. SRL, adından da anlaşılacağı gibi, bilginin her zaman sadece bir yönde aktığı, sinir katmanlarının seri bağlantısına sahip bir ağdır.

Sinir ağları ne için?

Yapay sinir ağları, insan beyninin yaptığına benzer analitik hesaplamalar gerektiren karmaşık problemleri çözmek için kullanılır. Sinir ağlarının en yaygın uygulamaları şunlardır:

sınıflandırma- verilerin parametrelere göre dağılımı. Örneğin, girdi olarak bir grup insan verilir ve hangisine kredi verip kimin vermeyeceğine karar vermeniz gerekir. Bu çalışma, yaş, ödeme gücü, kredi geçmişi vb. gibi bilgileri analiz eden bir sinir ağı tarafından yapılabilir.

Tahmin- bir sonraki adımı tahmin etme yeteneği. Örneğin, borsadaki duruma göre hisse senetlerinin yükselmesi veya düşmesi.

Tanıma- şu anda, sinir ağlarının en geniş uygulaması. Google'da bir fotoğraf aradığınızda veya telefon kameralarında yüzünüzün konumunu algılayıp vurguladığında ve daha fazlasında kullanılır.

Şimdi sinir ağlarının nasıl çalıştığını anlamak için bileşenlerine ve parametrelerine bir göz atalım.

nöron nedir?


Bir nöron, bilgiyi alan, üzerinde basit hesaplamalar yapan ve ileten bir hesaplama birimidir. Üç ana türe ayrılırlar: giriş (mavi), gizli (kırmızı) ve çıkış (yeşil). Ayrıca bir yanlılık nöronu ve bir sonraki makalede bahsedeceğimiz bir bağlam nöronu var. Sinir ağının çok sayıda nörondan oluşması durumunda, katman terimi ortaya çıkar. Buna göre, bilgiyi alan bir girdi katmanı, onu işleyen n adet gizli katman (genellikle 3'ten fazla olmayan) ve sonucu gösteren bir çıktı katmanı vardır. Nöronların her birinin 2 ana parametresi vardır: giriş verileri (giriş verileri) ve çıkış verileri (çıkış verileri). Bir girdi nöronu durumunda: girdi=çıktı. Geri kalanında, önceki katmandaki tüm nöronların toplam bilgisi giriş alanına girer, ardından aktivasyon işlevi kullanılarak normalleştirilir (şimdilik sadece f (x)) olarak hayal edin ve çıkış alanına girer.


Hatırlamak önemli nöronların veya [-1,1] aralığındaki sayılarla çalıştığını gösterir. Ama o zaman bu aralığın dışındaki sayıları nasıl ele alacağınızı soruyorsunuz? Bu noktada en kolay cevap, 1'i o sayıya bölmektir. Bu işleme normalizasyon denir ve sinir ağlarında çok yaygın olarak kullanılır. Bu konuda biraz sonra.

Sinaps nedir?


Sinaps, iki nöron arasındaki bağlantıdır. Sinapsların 1 parametresi vardır - ağırlık. Onun sayesinde girdi bilgileri bir nörondan diğerine iletilirken değişir. Diyelim ki bilgiyi bir sonrakine ileten 3 nöron var. Sonra bu nöronların her birine karşılık gelen 3 ağırlığımız var. Daha fazla ağırlığa sahip nöron için, bu bilgi bir sonraki nöronda baskın olacaktır (bir örnek renk karışımıdır). Aslında, sinir ağı ağırlıkları kümesi veya ağırlık matrisi, tüm sistemin bir tür beynidir. Bu ağırlıklar sayesinde girdi bilgileri işlenir ve sonuca dönüştürülür.

Hatırlamak önemli sinir ağının başlatılması sırasında ağırlıkların rastgele olduğunu.

Bir sinir ağı nasıl çalışır?


Bu örnekte, I harflerinin giriş nöronlarını, H harfinin gizli nöronu ve w harfinin ağırlıkları ifade ettiği bir sinir ağının bir kısmı gösterilmektedir. Girdi bilgisinin, ilgili ağırlıklarla çarpılan tüm girdi verilerinin toplamı olduğu formülden görülebilir. Daha sonra giriş 1 ve 0'ı vereceğiz. w1=0.4 ve w2 = 0.7 olsun. H1 nöronunun giriş verileri şu şekilde olacaktır: 1*0.4+0*0.7=0.4. Artık girdiye sahip olduğumuza göre, girdiyi etkinleştirme işlevine takarak çıktıyı alabiliriz (daha fazlası için). Artık çıktıyı aldığımıza göre aktarıyoruz. Ve böylece çıktı nöronuna ulaşana kadar tüm katmanlar için tekrar ediyoruz. Böyle bir ağı ilk kez çalıştırırken, ağ eğitilmediği için cevabın doğru olmaktan uzak olduğunu göreceğiz. Sonuçları iyileştirmek için onu eğiteceğiz. Ancak bunu nasıl yapacağımızı öğrenmeden önce, bir sinir ağının birkaç terimini ve özelliğini tanıtalım.

aktivasyon fonksiyonu

Aktivasyon işlevi, girdiyi normalleştirmenin bir yoludur (bundan daha önce bahsetmiştik). Yani girişte büyük bir sayı varsa onu aktivasyon fonksiyonundan geçirerek ihtiyacınız olan aralıkta bir çıktı alırsınız. Pek çok aktivasyon fonksiyonu vardır, bu yüzden en temel olanları ele alacağız: Doğrusal, Sigmoid (Lojistik) ve Hiperbolik tanjant. Temel farkları, değer aralığıdır.

Doğrusal fonksiyon


Bu işlev, bir sinir ağını test etmeniz veya dönüşümler olmadan bir değer iletmeniz gerektiği durumlar dışında neredeyse hiç kullanılmaz.

sigmoid


Bu en yaygın aktivasyon işlevidir, değer aralığı . Web'deki örneklerin çoğunu gösterir ve bazen lojistik işlev olarak da adlandırılır. Buna göre, sizin durumunuzda negatif değerler varsa (örneğin, hisse senetleri sadece yukarı değil, aynı zamanda aşağı da gidebilir), o zaman negatif değerleri de yakalayan bir fonksiyona ihtiyacınız vardır.

hiperbolik tanjant


İşlev aralığı [-1,1] olduğundan, yalnızca değerleriniz hem negatif hem de pozitif olabildiğinde hiperbolik tanjantı kullanmak mantıklıdır. Sinir ağınızın sonuçlarını önemli ölçüde kötüleştireceğinden, bu işlevi yalnızca pozitif değerlerle kullanmanız önerilmez.

Eğitim Seti

Eğitim seti, bir sinir ağının üzerinde çalıştığı bir veri dizisidir. Özel veya (xor) durumunda sadece 4 farklı sonucumuz var, yani 4 eğitim setimiz olacak: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.

yineleme

Bu, sinir ağı bir eğitim setinden her geçtiğinde artan bir tür sayaçtır. Başka bir deyişle, sinir ağı tarafından geçirilen toplam eğitim seti sayısıdır.

çağ

Sinir ağını başlatırken, bu değer 0'a ayarlanır ve manuel bir tavana sahiptir. Çağ ne kadar uzun olursa, ağ o kadar iyi eğitilir ve buna göre sonucu. Bizim durumumuzda, 4 set veya 4 yineleme olmak üzere, tüm eğitim setlerinden her geçtiğimizde çağ artar.


Önemli yinelemeyi çağ ile karıştırmayın ve artışlarının sırasını anlayın. İlk n
yineleme arttığında ve ardından dönem ve bunun tersi değil. Başka bir deyişle, bir sinir ağını önce yalnızca bir kümede, sonra başka bir kümede vb. eğitemezsiniz. Her seti dönem başına bir kez eğitmeniz gerekir. Böylece hesaplamalardaki hataları önleyebilirsiniz.

Hata

Hata, beklenen ve alınan yanıtlar arasındaki tutarsızlığı yansıtan bir yüzdedir. Hata her çağda oluşur ve azalmalıdır. Olmazsa, o zaman yanlış bir şey yapıyorsun. Hata farklı şekillerde hesaplanabilir, ancak yalnızca üç ana yöntemi ele alacağız: Ortalama Kare Hatası (bundan böyle MSE olarak anılacaktır), Kök MSE ve Arctan. Aktivasyon fonksiyonunda olduğu gibi kullanımda herhangi bir kısıtlama yoktur ve size en iyi sonucu veren yöntemi seçmekte özgürsünüz. Yalnızca, her yöntemin hataları farklı şekilde saydığını hesaba katmak gerekir. Arctan ile hata neredeyse her zaman daha büyük olacaktır, çünkü fark ne kadar büyükse hata o kadar büyük prensibiyle çalışır. Kök MSE en küçük hataya sahip olacaktır, bu nedenle en sık kullanılan MSE, hata hesaplamasında dengeyi koruyandır.

Sınıflandırma probleminin çözümü, sinir ağlarının en önemli uygulamalarından biridir.

Sınıflandırma problemi, birkaç ikili ayrık kümeden birine bir örnek atama problemidir. Bu tür görevlere bir örnek, örneğin, bir banka müşterisinin kredibilitesini belirleme görevi, örneğin bir hastalığın sonucunu belirlemenin gerekli olduğu tıbbi görevler, bir menkul kıymet portföyünü yönetme problemlerini çözme olabilir ( piyasa durumuna bağlı olarak hisseleri satmak, satın almak veya "tutmak"), yaşayabilir ve iflasa meyilli firmaların görev tespiti.

sınıflandırmanın amacı

Sınıflandırma problemlerini çözerken, mevcut olanı atfetmek gerekir. statik örnekler(piyasa durumunun özellikleri, tıbbi muayene verileri, müşteriye ilişkin bilgiler) belirli sınıflar. Verileri temsil etmenin birkaç yolu vardır. En yaygın olanı, örneğin bir vektör tarafından temsil edilme şeklidir. Bu vektörün bileşenleri, örneğin hangi sınıfa ait olduğuna dair kararı etkileyen örneğin çeşitli özelliklerini temsil eder. Örneğin, tıbbi amaçlar için bu vektörün bileşenleri, hastanın tıbbi kaydından alınan veriler olabilir. Bu nedenle, örnekle ilgili bazı bilgilere dayanarak, hangi sınıfa atanabileceğini belirlemek gerekir. Sınıflandırıcı böylece nesneyi N-boyutlu uzayın belirli bir bölümüne göre sınıflardan biriyle ilişkilendirir. giriş alanı, ve bu uzayın boyutu vektör bileşenlerinin sayısıdır.

Her şeyden önce, sistemin karmaşıklık seviyesini belirlemeniz gerekir. Gerçek problemlerde, genellikle örnek sayısının sınırlı olduğu bir durum ortaya çıkar ve bu da problemin karmaşıklığını belirlemeyi zorlaştırır. Üç ana zorluk seviyesi vardır. İlki (en basit olanı), sınıfların düz çizgilerle (veya giriş alanı ikiden büyük boyutlara sahipse hiper düzlemlerle) ayrılabilmesidir - sözde doğrusal ayrılabilirlik. İkinci durumda, sınıflar çizgilerle (düzlemler) ayrılamaz, ancak daha karmaşık bir bölme kullanılarak ayrılabilirler - doğrusal olmayan ayrılabilirlik. Üçüncü durumda, sınıflar kesişir ve sadece hakkında konuşabiliriz. olasılıksal ayrılabilirlik.

İdeal olarak, ön işlemeden sonra doğrusal olarak ayrılabilir bir problem elde etmeliyiz, çünkü bundan sonra sınıflandırıcının yapısı büyük ölçüde basitleştirilmiştir. Ne yazık ki, gerçek problemleri çözerken, sınıflandırıcının temel aldığı sınırlı sayıda örneğe sahibiz. Aynı zamanda, verileri, örneklerin doğrusal ayrılabilirliği sağlanacak şekilde önceden işleyemiyoruz.

Sınıflandırıcı olarak sinir ağlarını kullanma

İleri beslemeli ağlar, fonksiyonların sınıflandırma problemlerinin çözümünde kullanılmasına izin veren evrensel bir yaklaşım aracıdır. Kural olarak, sinir ağları en etkili sınıflandırma yöntemi olarak ortaya çıkıyor, çünkü aslında çok sayıda regresyon modeli üretiyorlar (bunlar istatistiksel yöntemlerle sınıflandırma problemlerinin çözümünde kullanılıyor).

Ne yazık ki, sinir ağlarının pratik problemlerde uygulanmasında bir takım problemler ortaya çıkmaktadır. İlk olarak, eşlemenin yeterince doğru bir şekilde uygulanması için ağın ne kadar karmaşıklık (boyut) gerektirebileceği önceden bilinmemektedir. Bu karmaşıklık, aşırı derecede yüksek olabilir ve karmaşık ağ mimarileri gerektirebilir. Böylece Minsky, "Perceptrons" adlı çalışmasında, en basit tek katmanlı sinir ağlarının yalnızca doğrusal olarak ayrılabilir problemleri çözebildiğini kanıtladı. Çok katmanlı sinir ağları kullanıldığında bu sınırlamanın üstesinden gelinebilir. Genel olarak, bir gizli katmana sahip bir ağda, girdi örneğine karşılık gelen vektörün, gizli katman tarafından farklı bir boyuta sahip olabilecek bazı yeni uzaylara dönüştürüldüğünü ve daha sonra nöronlara karşılık gelen hiper düzlemlerin olduğunu söyleyebiliriz. çıktı katmanı onu sınıflara böler. Böylece ağ, yalnızca orijinal verinin özelliklerini değil, aynı zamanda gizli katmanın oluşturduğu "karakteristiklerin özelliklerini" de tanır.

İlk veri hazırlığı

Bir sınıflandırıcı oluşturmak için, örneğin hangi sınıfa ait olduğuna dair kararı hangi parametrelerin etkilediğini belirlemek gerekir. Bunu yaparken, iki sorun ortaya çıkabilir. İlk olarak, eğer parametre sayısı küçükse, o zaman aynı başlangıç ​​veri setinin farklı sınıflarda bulunan örneklere karşılık geldiği bir durum ortaya çıkabilir. O zaman sinir ağını eğitmek imkansızdır ve sistem düzgün çalışmayacaktır (böyle bir başlangıç ​​verisine karşılık gelen bir minimum bulmak imkansızdır). Kaynak veriler tutarlı olmalıdır. Bu sorunu çözmek için, öznitelik uzayının boyutunu (örneğe karşılık gelen girdi vektörünün bileşenlerinin sayısı) artırmak gerekir. Ancak öznitelik uzayının boyutunun artmasıyla, örnek sayısının ağı eğitmek için yetersiz kalabileceği ve genelleme yapmak yerine eğitim kümesindeki örnekleri basitçe hatırlayacağı ve eğitim setinden yararlanamayacağı bir durum ortaya çıkabilir. düzgün çalışır. Bu nedenle, özellikleri tanımlarken, sayılarıyla bir uzlaşma bulmak gerekir.

Ardından, sinir ağı için giriş verilerinin nasıl temsil edileceğini belirlemeniz gerekir, yani. normalizasyon yöntemini belirler. Normalleştirme gereklidir, çünkü sinir ağları 0..1 aralığında sayılarla temsil edilen verilerle çalışır ve orijinal veriler rastgele bir aralığa sahip olabilir veya hatta sayısal olmayan veriler olabilir. Bu durumda, basit bir doğrusal dönüşümden gerekli aralığa kadar değişen ve parametrelerin çok değişkenli analizi ve parametrelerin birbirleri üzerindeki etkisine bağlı olarak doğrusal olmayan normalleştirme ile biten çeşitli yöntemler mümkündür.

Çıkış kodlaması

İki sınıfın varlığında sınıflandırma problemi, örneğin hangi sınıfa ait olduğuna bağlı olarak 0 veya 1 iki değerinden birini alabilen çıkış katmanında bir nöron bulunan bir ağ üzerinde çözülebilir. Birden çok sınıf olduğunda, ağ çıkışı için bu verileri temsil etmede bir sorun vardır. Bu durumda çıktıyı göstermenin en basit yolu, bileşenleri farklı sınıf numaralarına karşılık gelen bir vektördür. Bu durumda, vektörün i-inci bileşeni i-inci sınıfa karşılık gelir. Diğer tüm bileşenler 0'a ayarlanır. Ardından, örneğin, ikinci sınıf, 2. ağ çıkışında 1'e ve geri kalanında 0'a karşılık gelir. Sonucu yorumlarken, genellikle sınıf numarasının, maksimum değerin göründüğü ağ çıkış numarası tarafından belirlendiği varsayılır. Örneğin, üç çıktılı bir ağda bir çıktı değerleri vektörümüz varsa (0.2,0.6,0.4), o zaman vektörün ikinci bileşeninin maksimum değere sahip olduğunu görürüz, yani bu örneğin ait olduğu sınıf 2'dir. Bu kodlama yöntemi ile bazen kavramı da tanıtır. kendinden eminörneğin bu sınıfa ait olduğu ağlar. Güveni belirlemenin en basit yolu, bir çıktının maksimum değeri ile maksimuma en yakın olan başka bir çıktının değeri arasındaki farkı belirlemektir. Örneğin, yukarıda ele alınan örnek için, örneğin ikinci sınıfa ait olduğuna dair ağın güveni, vektörün ikinci ve üçüncü bileşenleri arasındaki fark olarak belirlenecek ve 0.6-0.4=0.2'ye eşittir. Buna göre, güven ne kadar yüksek olursa, ağın doğru cevabı verme olasılığı da o kadar yüksek olur. Bu kodlama yöntemi, verileri temsil etmenin en basit yoludur, ancak her zaman en iyi yol değildir.

Diğer yöntemler de bilinmektedir. Örneğin, çıktı vektörü ikili olarak yazılmış küme numarasıdır. Ardından, 8 sınıfın varlığında 3 elemanlı bir vektöre ihtiyacımız var ve diyelim ki 3. sınıf 011 vektörüne karşılık gelecek. Ama aynı zamanda, çıktılardan birinde yanlış bir değer alırsak, yanlış bir sınıflandırma (yanlış küme numarası) alabilir, bu nedenle sınıflandırmanın güvenilirliğini artıracak olan Hamming çıktı kodlamasını kullanarak iki küme arasındaki mesafeyi artırmak mantıklıdır.

Diğer bir yaklaşım, k sınıflı görevi, her biri iki sınıflı (2'ye 2 kodlama) k*(k-1)/2 alt görevlere bölmektir. Bu durumda, alt görev, ağın vektör bileşenlerinden birinin varlığını belirlediği anlamına gelir. Şunlar. girdi vektörü, her biri çıktı vektörünün bileşenlerinin tüm olası kombinasyonlarını içerecek şekilde iki bileşenden oluşan gruplara bölünür. Bu grupların sayısı, orijinal bileşenlerden ikisinin sırasız örneklerinin sayısı olarak tanımlanabilir. Kombinatoriklerden

$A_k^n = \frac(k{n!\,(k\,-\,n)!} = \frac{k!}{2!\,(k\,-\,2)!} = \frac{k\,(k\,-\,1)}{2}$!}

Ardından, örneğin, dört sınıflı bir görev için aşağıdaki gibi dağıtılmış 6 çıktımız (alt görev) var:

N alt görev(çıktı) Çıkış Bileşenleri
1 1-2
2 1-3
3 1-4
4 2-3
5 2-4
6 3-4

Çıktıdaki 1, bileşenlerden birinin varlığını gösterir. Ardından ağ tarafından yapılan hesaplamanın sonucuna göre sınıf numarasına şu şekilde gidebiliriz: Hangi kombinasyonların tek (daha doğrusu bire yakın) çıktı değeri aldığını (yani bizim için hangi alt görevlerin etkinleştirildiğini) belirleriz ve sınıf numarasının, en fazla etkinleştirilmiş alt görev sayısını giren sayı olacağını düşünüyoruz (tabloya bakın).

Birçok görevde bu kodlama klasik kodlama yöntemine göre daha iyi sonuç vermektedir.

Ağ hacmi seçimi

Doğru ağ hacmi seçimi büyük önem taşımaktadır. Küçük ve yüksek kaliteli bir model oluşturmak genellikle imkansızdır ve büyük bir model, eğitim setindeki örnekleri basitçe ezberler ve bir yaklaşım gerçekleştirmez, bu da, doğal olarak, sınıflandırıcının yanlış çalışmasına yol açacaktır. Bir ağ oluşturmak için iki ana yaklaşım vardır - yapıcı ve yıkıcı. Bunlardan ilkinde, önce minimum boyuttaki ağ alınır ve gerekli doğruluğa ulaşılana kadar kademeli olarak artırılır. Aynı zamanda, her adımda yeniden eğitilir. Ayrıca, çağın bitiminden sonra hatayı en aza indirmek için ağ mimarisinin ayarlandığı kademeli korelasyon yöntemi de vardır. Yıkıcı yaklaşımda, önce büyük boyutlu bir ağ alınır ve daha sonra çözüm üzerinde çok az etkisi olan düğümler ve bağlantılar ondan çıkarılır. Aşağıdaki kuralı hatırlamakta fayda var: eğitim setindeki örneklerin sayısı özel ağırlıkların sayısından fazla olmalıdır. Aksi takdirde, genelleme yapmak yerine, ağ verileri basitçe hatırlayacak ve sınıflandırma yeteneğini kaybedecektir - eğitim örneğine dahil edilmeyen örnekler için sonuç tanımsız olacaktır.

Ağ mimarisi seçimi

Bir ağ mimarisi seçerken, farklı sayıda elemana sahip birkaç konfigürasyon denemek yaygındır. Bu durumda ana gösterge, eğitim setinin hacmi ve ağın genelleme yeteneğidir. Yaygın olarak kullanılan bir öğrenme algoritması, bir onay kümesiyle Geri Yayılımdır (geri yayılım).

Sinir ağlarına dayalı bir sınıflandırıcı oluşturmak için algoritma

  1. verilerle çalışma
    • Belirli bir göreve özgü örneklerden oluşan bir veritabanı oluşturun
    • Tüm veri setini iki sete bölün: eğitim ve test (3 sete ayırmak mümkündür: eğitim, test ve doğrulama).
  2. ön işleme
    • Verilen göreve özgü bir özellikler sistemi seçin ve verileri buna göre ağ girişine beslenecek şekilde dönüştürün (normalleştirme, standardizasyon, vb.). Sonuç olarak, çok sayıda numunenin lineer olarak ayrılabilir bir uzayının elde edilmesi arzu edilir.
    • Çıktı değerleri için bir kodlama sistemi seçin (klasik kodlama, 2'ye 2 kodlama vb.)
  3. Ağın kalitesini tasarlayın, eğitin ve değerlendirin
    • Ağ topolojisini seçin: katman sayısı, katmanlardaki nöron sayısı vb.
    • Nöronların aktivasyon fonksiyonunu seçin (örneğin, "sigmoid")
    • Ağ öğrenme algoritmasını seçin
    • Ağın kalitesini onay kümesine veya başka bir kritere göre değerlendirin, mimariyi optimize edin (ağırlık azaltma, özellik alanı kırımı)
    • Test setindeki çalışmanın kalitesini genelleştirme ve değerlendirme konusunda en iyi yeteneği sağlayan ağ varyantı üzerinde duracaktır.
  4. Kullanım ve teşhis
    • Alınan karar üzerindeki çeşitli faktörlerin etkisinin derecesini öğrenin (sezgisel yaklaşım).
    • Ağın gerekli sınıflandırma doğruluğunu sağladığından emin olun (yanlış tanınan örneklerin sayısı azdır)
    • Gerekirse, örneklerin sunulma şeklini değiştirerek veya veritabanını değiştirerek 2. adıma dönün.
    • Sorunu çözmek için pratik olarak ağı kullanın.

Yüksek kaliteli bir sınıflandırıcı oluşturmak için yüksek kaliteli verilere sahip olmak gerekir. Yapay sinir ağlarına veya istatistiklere dayalı sınıflandırıcılar oluşturmak için kullanılan yöntemlerin hiçbiri, mevcut örnekler kümesi tam değilse ve sistemin çalışmak zorunda olacağı görev için yeterince temsil edici değilse, asla gerekli kalitede bir sınıflandırıcı vermeyecektir.