• Sinir ağlarının eğitimi. Geri Yayılım Algoritması

    Bölümde yapay zeka, makine öğrenimi ve yapay sinir ağları gibi kavramlarla tanıştık.

    Bu bölümde yapay nöron modelini ayrıntılı olarak anlatacağım, ağ eğitimine yönelik yaklaşımlardan bahsedeceğim ve ayrıca sonraki bölümlerde inceleyeceğimiz bazı iyi bilinen yapay sinir ağları türlerini açıklayacağım.

    sadeleştirme

    Son bölümde sürekli olarak bazı ciddi basitleştirmelerden bahsettim. Sadeleştirmelerin nedeni, hiçbir modern bilgisayarlar yapamamak hızlı böyle model karmaşık sistemler beynimiz gibi. Ayrıca dediğim gibi beynimiz bilgi işleme ile ilgili olmayan çeşitli biyolojik mekanizmalarla doludur.

    Giriş sinyalini ihtiyacımız olan çıkışa dönüştürmek için bir modele ihtiyacımız var. Geri kalan her şey bizi ilgilendirmez. Basitleştirmeye başlayalım.

    Biyolojik yapı → şema

    Önceki bölümde, biyolojik sinir ağlarının ve biyolojik nöronların ne kadar karmaşık olduğunu fark ettiniz. Nöronları dokunaçlı canavarlar olarak tasvir etmek yerine, sadece diyagramlar çizelim.

    Genel olarak konuşursak, birkaç yol vardır grafik görüntü sinir ağları ve nöronlar. Burada yapay nöronları daireler olarak göstereceğiz.

    Giriş ve çıkışların karmaşık bir şekilde iç içe geçmesi yerine, sinyal hareketinin yönünü gösteren oklar kullanacağız.

    Böylece, bir yapay sinir ağı, oklarla birbirine bağlanan bir dizi daire (yapay nöronlar) olarak temsil edilebilir.

    Elektrik sinyalleri → sayılar

    Gerçek biyolojik olarak sinir ağı ağ girişlerinden çıkışlara bir elektrik sinyali iletilir. Sinir ağından geçme sürecinde değişebilir.

    Bir elektrik sinyali her zaman bir elektrik sinyali olacaktır. Kavramsal olarak hiçbir şey değişmez. Ama sonra değişen ne? Bu elektrik sinyalinin büyüklüğü değişir (güçlü/zayıf). Ve herhangi bir değer her zaman bir sayı (daha büyük/daha küçük) olarak ifade edilebilir.

    Yapay sinir ağı modelimizde elektrik sinyalinin davranışını kesinlikle uygulamamız gerekmiyor çünkü zaten hiçbir şey onun uygulanmasına bağlı olmayacak.

    Varsa, elektrik sinyalinin büyüklüğünü simgeleyen bazı sayıları ağ girişlerine uygulayacağız. Bu numaralar ağ üzerinden hareket edecek ve bir şekilde değişecektir. Ağın çıkışında, ağın yanıtı olan bazı sonuç sayıları alacağız.

    Kolaylık sağlamak için, yine de ağ sinyallerinde dolaşan numaralarımızı arayacağız.

    Sinapslar → bağlantı ağırlıkları

    Nöronlar - sinapslar - arasındaki bağlantıların renkli olarak gösterildiği ilk bölümdeki resmi hatırlayalım. Sinapslar, içlerinden geçen elektrik sinyalini yükseltebilir veya zayıflatabilir.

    Bu tür her bağlantıyı, bu bağlantının ağırlığı olarak adlandırılan belirli bir sayı ile karakterize edelim. Sinyal geçti bu bağlantı, karşılık gelen bağlantının ağırlığı ile çarpılır.

    Bu yapay sinir ağları kavramında kilit bir noktadır, onu daha detaylı anlatacağım. Aşağıdaki resme bakın. Şimdi bu resimdeki her bir siyah ok (bağ), bir ​\(w_i \)​ (bağ ağırlığı) sayısına karşılık gelir. Ve bu bağlantıdan bir sinyal geçtiğinde, büyüklüğü bu bağlantının ağırlığı ile çarpılır.

    Yukarıdaki şekilde, etiketler için yer olmadığı için her bağlantının bir ağırlığı yoktur. Gerçekte, her ​\(i \) ​th bağlantının kendi ​\(w_i \) ​th ağırlığı vardır.

    yapay nöron

    Şimdi yapay bir nöronun iç yapısını ve girişlerine gelen sinyali nasıl dönüştürdüğünü ele alalım.

    Aşağıdaki şekil gösterir komple model yapay nöron.

    Korkma, burada karmaşık bir şey yok. Soldan sağa her şeyi ayrıntılı olarak inceleyelim.

    Girişler, ağırlıklar ve toplayıcı

    Yapay olan da dahil olmak üzere her nöron, bir sinyal aldığı bazı girdilere sahip olmalıdır. Bağlantıdan geçen sinyallerin çarpıldığı ağırlık kavramını zaten tanıttık. Yukarıdaki resimde ağırlıklar dairelerle gösterilmiştir.

    Girişlerde alınan sinyaller ağırlıkları ile çarpılır. İlk girişin sinyali ​\(x_1 \) ​, karşılık gelen ağırlık ​\(w_1 \) ​ ile çarpılır. Sonuç olarak, ​\(x_1w_1 \) elde ederiz. Ve böylece ​\(n \) ​th girişine kadar. Sonuç olarak, üzerinde son giriş elde ederiz ​\(x_nw_n \) .

    Artık tüm ürünler toplayıcıya aktarılır. Zaten adından da ne işe yaradığını anlayabilirsiniz. Tüm girdileri ilgili ağırlıklarıyla çarparak toplar:

    \[ x_1w_1+x_2w_2+\cdots+x_nw_n = \sum\limits^n_(i=1)x_iw_i \]

    Matematik Yardımı

    Sigma - Vikipedi.

    Aynı tip üyelerin / tekrarlarının toplamından oluşan büyük bir ifadeyi kısaca yazmak gerektiğinde sigma işareti kullanılır.

    Dikkate almak en basit seçenek kayıtlar:

    \[ \sum\limits^5_(i=1)i=1+2+3+4+5 \]

    Böylece sigmanın altından sayaç değişkenine ​\(i \)​ bir başlangıç ​​değeri atarız, bu değer üst sınıra ulaşana kadar artar (yukarıdaki örnekte bu 5'tir).

    Üst limit de değişken olabilir. Böyle bir duruma bir örnek vereceğim.

    Diyelim ki ​\(n\) mağazamız var. Her mağazanın kendi numarası vardır: 1'den ​\(n\)​. Her mağaza kar eder. Biraz (hangisi olduğu önemli değil) ​\(i \) ​th mağazasını ele alalım. Bundan elde edilen kâr ​\(p_i \) ​'dir.

    \[ P = p_1+p_2+\cdots+p_i+\cdots+p_n \]

    Gördüğünüz gibi, bu toplamın tüm terimleri aynı türdendir. Daha sonra kısaca aşağıdaki gibi yazılabilirler:

    \[ P=\toplam\limits^n_(i=1)p_i \]

    Sözlerle: "İlk mağazadan başlayıp ​\(n \) ​th ile biten tüm mağazaların karlarını toplayın." Formül şeklinde çok daha basit, daha kullanışlı ve daha güzel.

    Toplayıcının sonucu, ağırlıklı toplam adı verilen bir sayıdır.

    Ağırlıklı toplam(ağırlıklı toplam) (​\(net \) ​), girdilerin toplamının ilgili ağırlıklarla çarpımıdır.

    \[ net=\sum\limits^n_(i=1)x_iw_i \]

    Toplayıcının rolü açıktır - tüm giriş sinyallerini (birçok olabilir) tek bir sayı halinde toplar - bir bütün olarak nöron tarafından alınan sinyali karakterize eden ağırlıklı bir toplam. Başka bir ağırlıklı toplam, nöronun genel uyarılma derecesi olarak temsil edilebilir.

    Örnek

    Yapay bir nöronun son bileşeninin - aktivasyon fonksiyonunun - rolünü anlamak için bir benzetme yapacağım.

    Bir yapay nöron düşünelim. Görevi, denizde dinlenmeye gidip gitmeyeceğine karar vermektir. Bunu yapmak için girdilerine çeşitli veriler besleriz. Nöronumuzun 4 girişi olsun:

    1. seyahat maliyeti
    2. denizde hava nasıl
    3. Mevcut çalışma durumu
    4. Sahilde snack bar olacak mı?

    Tüm bu parametreler 0 veya 1 ile karakterize edilecektir. Buna göre, denizde hava iyiyse, bu girdiye 1 uygularız ve diğer tüm parametreler için de geçerlidir.

    Bir nöronun dört girişi varsa, o zaman dört ağırlık olmalıdır. Örneğimizde, ağırlıklandırma faktörleri, etkileyen her bir girdinin öneminin göstergeleri olarak düşünülebilir. ortak karar nöron. Girdilerin ağırlıklarını aşağıdaki gibi dağıtırız:

    Maliyet faktörlerinin ve denizdeki hava durumunun (ilk iki girdi) çok önemli bir rol oynadığını görmek kolaydır. Ayrıca nöron tarafından karar vermede belirleyici bir rol oynayacaklardır.

    Nöronumuzun girişlerine aşağıdaki sinyalleri gönderelim:

    Girişlerin ağırlıklarını karşılık gelen girişlerin sinyalleri ile çarpıyoruz:

    Bu girdi grubu için ağırlıklı toplam 6'dır:

    \[ net=\sum\limits^4_(i=1)x_iw_i = 5 + 0 + 0 + 1 =6 \]

    Aktivasyon işlevi burada devreye giriyor.

    Aktivasyon işlevi

    Sadece çıkışa ağırlıklı bir miktar vermek oldukça anlamsız. Nöron bir şekilde onu işlemeli ve yeterli bir çıkış sinyali oluşturmalıdır. Bu amaçla aktivasyon fonksiyonu kullanılır.

    Ağırlıklı toplamı, nöronun çıktısı olan bir sayıya dönüştürür (nöronun çıktısını ​\(out \) değişkeniyle gösteririz).

    İçin farklı şekiller Yapay nöronların en çok kullandığı farklı işlevler aktivasyon. Genelde ​\(\phi(net) \) sembolü ile gösterilirler. Ağırlıklı bir sinyalin parantez içinde belirtilmesi, aktivasyon fonksiyonunun ağırlıklı toplamı bir parametre olarak alması anlamına gelir.

    Aktivasyon işlevi (aktivasyon fonksiyonu)(​\(\phi(net) \) ​), bağımsız değişken olarak ağırlıklı bir toplam alan bir işlevdir. Bu fonksiyonun değeri nöronun çıktısıdır (\(out \) ).

    Tek sekme işlevi

    En basit aktivasyon fonksiyonu türü. Bir nöronun çıkışı yalnızca 0 veya 1 olabilir. Ağırlıklı toplam belirli bir eşikten büyükse ​\(b \) , o zaman nöronun çıkışı 1'dir. Daha düşükse, o zaman 0'dır.

    Bu nasıl kullanılabilir? Sadece ağırlıklı toplam 5'ten büyük veya eşit olduğunda denize çıktığımızı varsayalım. Yani eşiğimiz 5:

    Örneğimizde ağırlıklı toplam 6 idi, bu da nöronumuzun çıktısının 1 olduğu anlamına geliyor. Yani denize gidiyoruz.

    Ancak, denizde hava kötüyse ve yolculuk çok pahalıysa, ancak bir snack bar ve normal bir çalışma ortamı varsa (girişler: 0011), o zaman ağırlıklı toplam 2 olur, yani nöronun çıkışı 0 olur. Yani hiçbir yere gitmiyoruz.

    Genel olarak, nöron ağırlıklı toplama bakar ve eşiğinden büyükse, nöron 1'e eşit bir çıktı üretir.

    Grafiksel olarak, bu aktivasyon fonksiyonu aşağıdaki gibi gösterilebilir.

    Ağırlıklı toplam değerleri yatay eksende yer almaktadır. Dikey eksende çıkış sinyalinin değerleri bulunur. Görülebileceği gibi, çıkış sinyalinin yalnızca iki değeri mümkündür: 0 veya 1. Ayrıca, 0 her zaman eksi sonsuzdan ve ağırlıklı toplamın eşik adı verilen bir değerine kadar verilecektir. Ağırlıklı toplam eşiğe eşit veya eşikten büyükse işlev 1 döndürür. Her şey son derece basit.

    Şimdi bu aktivasyon fonksiyonunu matematiksel olarak yazalım. Bileşik fonksiyon kavramıyla neredeyse kesinlikle karşılaşmışsınızdır. Bu, değerinin hesaplandığı tek bir işlev altında birkaç kuralı birleştirdiğimiz zamandır. Bileşik bir işlev biçiminde, birim sekme işlevi şöyle görünür:

    \[out(net) = \start(durumlar) 0, net< b \\ 1, net \geq b \end{cases} \]

    Bu girişte karmaşık bir şey yok. Bir nöronun çıktısı (​\(out \) ​) ağırlıklı toplama (​\(net \) ​) şu şekilde bağlıdır: eğer ​\(net \) ​ (ağırlıklı toplam) bir eşikten (​\(b \) ​) küçükse, o zaman ​\(out \) ​ (nöronun çıkışı) 0'dır.

    sigmoid işlevi

    Aslında, bazıları yapay nöronlarda bir aktivasyon fonksiyonu olarak kullanılan bütün bir sigmoidal fonksiyon ailesi vardır.

    Tüm bu özelliklerin bazı çok faydalı özellikler bunun için sinir ağlarında kullanılırlar. Bu fonksiyonların grafiklerini gördükten sonra bu özellikler belirginleşecektir.

    Yani ... sinir ağlarında en yaygın kullanılan sigmoid lojistik fonksiyon.

    Bu fonksiyonun grafiği oldukça basit görünüyor. Yakından bakarsanız, bazı benzerlikler görebilirsiniz. İngilizce mektup​\(S \) ​, bu fonksiyonların ailesinin adının geldiği yer.

    Analitik olarak şöyle yazılır:

    \[ out(net)=\frac(1)(1+\exp(-a \cdot net)) \]

    \(a \) parametresi nedir? Bu, fonksiyonun diklik derecesini karakterize eden bir sayıdır. Aşağıda, farklı parametreli lojistik fonksiyonlar ​\(a \) ​ bulunmaktadır.

    Denize açılıp açılmayacağını belirleyen yapay nöronumuzu hatırlayın. Birim atlama işlevi durumunda, her şey açıktı. Denize ya gideriz (1) ya da gitmeyiz (0).

    Burada durum gerçeğe daha yakın. Tam olarak emin değiliz (özellikle paranoyaksanız) - gitmeye değer mi? Daha sonra lojistik fonksiyonu bir aktivasyon fonksiyonu olarak kullanmak, 0 ile 1 arasında bir sayı elde etmenize neden olacaktır. Ve ağırlıklı toplam ne kadar büyükse, çıktı 1'e o kadar yakın olacaktır (ancak asla tam olarak ona eşit değildir). Tersine, ağırlıklı toplam ne kadar küçükse, nöronun çıkışı 0'a o kadar yakın olacaktır.

    Örneğin, nöronumuzun çıktısı 0,8'dir. Bu, hala denize gitmeye değer olduğuna inandığı anlamına gelir. Çıktısı 0,2 olsaydı, bu neredeyse kesinlikle denize gitmeye karşı olacağı anlamına gelirdi.

    Lojistik fonksiyonun dikkat çekici özellikleri nelerdir?

    • bu bir "sıkma" işlevidir, yani bağımsız değişkenden (ağırlıklı toplam) bağımsız olarak, çıkış sinyali her zaman 0 ile 1 arasında olacaktır.
    • birim atlama işlevinden daha esnektir - sonucu yalnızca 0 ve 1 değil, aradaki herhangi bir sayı olabilir
    • her noktada bir türevi vardır ve bu türev aynı fonksiyon ile ifade edilebilir.

    Lojistik fonksiyonun yapay nöronlarda en sık bir aktivasyon fonksiyonu olarak kullanılmasının nedeni bu özelliklerdir.

    hiperbolik teğet

    Bununla birlikte, başka bir sigmoid var - hiperbolik tanjant. Sinir hücresinin daha gerçekçi bir modeli için biyologlar tarafından bir aktivasyon fonksiyonu olarak kullanılır.

    Böyle bir işlev, çıktıda (örneğin, -1'den 1'e) farklı işaretlerin değerlerini almanıza olanak tanır ve bu, bir dizi ağ için yararlı olabilir.

    Fonksiyon aşağıdaki gibi yazılır:

    \[ çıkış(net) = \tanh\left(\frac(net)(a)\sağ) \]

    Yukarıdaki formülde ​\(a \) ​parametresi de bu fonksiyonun grafiğinin ne kadar dik olduğunu belirler.

    Ve işte bu fonksiyonun grafiği.

    Gördüğünüz gibi, lojistik fonksiyonun bir grafiği gibi görünüyor. Hiperbolik tanjant, lojistik fonksiyonun sahip olduğu tüm yararlı özelliklere sahiptir.

    Ne öğrendik?

    Artık yapay bir nöronun iç yapısını tam olarak anladınız. tekrar getireceğim Kısa Açıklama onun işleri.

    Bir nöronun girdileri vardır. Sayı şeklinde sinyaller verilir. Her girdinin kendi ağırlığı (aynı zamanda bir sayı) vardır. Giriş sinyalleri karşılık gelen ağırlıklarla çarpılır. Bir dizi "ağırlıklı" giriş sinyali alıyoruz.

    Ağırlıklı toplam daha sonra dönüştürülür aktivasyon fonksiyonu ve biz alırız nöron çıkışı.

    Şimdi bir nöronun çalışmasının en kısa tanımını formüle edelim - onun matematiksel model:

    Yapay bir nöronun matematiksel modeli​\(n\)​ girişlerle:

    Nerede
    ​\(\phi \) ​ – aktivasyon işlevi
    \(\sum\limits^n_(i=1)x_iw_i \)​, giriş sinyallerinin ve karşılık gelen ağırlıkların çarpımının ​\(n\)​ toplamı olarak ağırlıklı toplamdır.

    INS türleri

    Yapay bir nöronun yapısını çözdük. Yapay sinir ağları, yapay nöronların bir koleksiyonundan oluşur. Mantıklı bir soru ortaya çıkıyor - bu çok yapay nöronları birbirleriyle nasıl düzenleyeceğiz / bağlayacağız?

    Kural olarak, çoğu sinir ağında sözde giriş katmanı, yalnızca bir görevi yerine getirir - giriş sinyallerinin diğer nöronlara dağıtımı. Bu katmanın nöronları herhangi bir hesaplama yapmaz.

    Tek katmanlı sinir ağları

    Tek katmanlı sinir ağlarında, giriş katmanından gelen sinyaller hemen çıkış katmanına beslenir. Sonuçları anında çıktılara beslenen gerekli hesaplamaları yapar.

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

    Bu resimde, giriş katmanı dairelerle işaretlenmiştir (sinir ağı katmanı olarak kabul edilmez) ve sağda sıradan nöronlardan oluşan bir katman vardır.

    Nöronlar birbirine oklarla bağlıdır. Okların üzerinde karşılık gelen bağlantıların ağırlıkları (ağırlık katsayıları) vardır.

    Tek katmanlı sinir ağı (tek katmanlı sinir ağı) - giriş katmanından gelen sinyallerin hemen çıkış katmanına beslendiği, sinyali dönüştüren ve hemen bir yanıt veren bir ağ.

    Çok katmanlı sinir ağları

    Bu tür ağlar, nöronların giriş ve çıkış katmanlarına ek olarak gizli katman(lar) ile de karakterize edilir. Konumlarını anlamak kolaydır - bu katmanlar giriş ve çıkış katmanları arasındadır.

    Sinir ağlarının bu yapısı, beynin belirli bölümlerinin çok katmanlı yapısını kopyalar.

    Gizli katmanın adı tesadüfi değildi. Gerçek şu ki, gizli katmandaki nöronları eğitmek için nispeten yakın zamanda yöntemler geliştirildi. Bundan önce, yalnızca tek katmanlı sinir ağları ile yönetiyorlardı.

    Çok katmanlı sinir ağları, tek katmanlı olanlardan çok daha güçlüdür.

    Nöronların gizli katmanlarının işi, büyük bir fabrikanın işine benzetilebilir. Tesisteki ürün (çıkış sinyali) aşamalı olarak monte edilir. Her makineden sonra bazı ara sonuçlar elde edilir. Gizli katmanlar ayrıca giriş sinyallerini bazı ara sonuçlara dönüştürür.

    Çok katmanlı sinir ağı (çok katmanlı sinir ağı) - girdi, çıktı ve aralarında bulunan bir (birkaç) gizli nöron katmanından oluşan bir sinir ağı.

    Doğrudan yayılma ağları

    Yukarıdaki örneklerdeki sinir ağlarının resimlerinde çok ilginç bir ayrıntıyı fark edebilirsiniz.

    Tüm örneklerde, oklar kesinlikle soldan sağa gider, yani bu tür ağlardaki sinyal kesinlikle giriş katmanından çıkış katmanına gider.

    Doğrudan yayılma ağları (İleri beslemeli sinir ağı) (ileri beslemeli ağlar) - sinyalin kesinlikle giriş katmanından çıkış katmanına yayıldığı yapay sinir ağları. Sinyal ters yönde yayılmaz.

    Bu tür ağlar yaygın olarak kullanılır ve belirli bir sınıftaki sorunları oldukça başarılı bir şekilde çözer: tahmin, kümeleme ve tanıma.

    Ancak, hiç kimse sinyalin gitmesini yasaklamaz. ters taraf.

    Geri bildirim ağları

    Bu tür ağlarda sinyal ters yönde gidebilir. avantajı nedir?

    Gerçek şu ki, doğrudan yayılma ağlarında, ağın çıktısı, giriş sinyali ve yapay nöronlar için ağırlıklandırma katsayıları tarafından belirlenir.

    Ve ağlarda geri bildirim nöron çıktıları girdilere geri beslenebilir. Bu, bir nöronun çıktısının yalnızca ağırlıkları ve giriş sinyali tarafından değil, aynı zamanda önceki çıktılar tarafından da belirlendiği anlamına gelir (çünkü tekrar girişlere döndüler).

    Sinyallerin bir ağda dolaşabilme yeteneği, sinir ağları için yeni, şaşırtıcı olasılıkların kapılarını açar. Bu tür ağları kullanarak, sinyalleri geri yükleyen veya tamamlayan sinir ağları oluşturabilirsiniz. Başka bir deyişle, bu tür sinir ağlarının özellikleri vardır. kısa süreli hafıza(bir insan gibi).

    Geri bildirim ağları (Tekrarlayan sinir ağı) - bir nöronun çıktısının girdisine geri beslenebildiği yapay sinir ağları. Daha genel bir durumda bu, çıkışlardan girişlere sinyal yayılımı olasılığı anlamına gelir.

    sinir ağı eğitimi

    Şimdi bir sinir ağını eğitme konusuna daha yakından bakalım. Ne olduğunu? Ve bu nasıl oluyor?

    Ağ öğrenimi nedir?

    Bir yapay sinir ağı, yapay nöronların bir koleksiyonudur. Şimdi örneğin 100 nöron alıp bunları birbirine bağlayalım. Girişe bir sinyal uygulandığında çıkışta anlamsız bir şey elde edeceğimiz açıktır.

    Bu yüzden bazı ağ parametrelerini şu ana kadar değiştirmemiz gerekiyor: Giriş sinyali ihtiyacımız olan çıktıya dönüştürülmeyecek.

    Bir sinir ağında neyi değiştirebiliriz?

    Toplam yapay nöron sayısını değiştirmek iki nedenden dolayı anlamsızdır. İlk olarak, bir bütün olarak bilgi işlem öğelerinin sayısındaki artış, yalnızca sistemi daha ağır ve gereksiz hale getirir. İkincisi, 100 yerine 1000 aptal toplarsanız, yine de soruyu doğru cevaplayamazlar.

    Eklemek için sabit kodlanmış bir işlevi yerine getirdiği için toplayıcı değiştirilemez. Onu bir şeyle değiştirirsek veya tamamen kaldırırsak, artık yapay bir nöron olmayacak.

    Her nöron için aktivasyon fonksiyonunu değiştirirsek, çok karışık ve kontrolsüz bir sinir ağı elde ederiz. Ayrıca çoğu durumda sinir ağlarındaki nöronlar aynı tiptedir. Yani, hepsi aynı aktivasyon işlevine sahiptir.

    Geriye tek bir seçenek kaldı - bağlantı ağırlıklarını değiştir.

    sinir ağı eğitimi (eğitim)- ağdan geçtikten sonra giriş sinyalinin ihtiyacımız olan çıktıya dönüştürüldüğü böyle bir ağırlık katsayıları kümesi arayın.

    “Nöral ağ eğitimi” terimine yönelik bu yaklaşım aynı zamanda biyolojik sinir ağlarına da karşılık gelmektedir. Beynimiz, birbirine bağlı çok sayıda sinir ağından oluşur. Her biri ayrı ayrı aynı tipteki nöronlardan oluşur (aktivasyon işlevi aynıdır). Giriş sinyalini yükselten/azaltan öğeler olan sinapsları değiştirerek öğreniriz.

    Ancak bir tane daha var önemli nokta. Ağı yalnızca bir giriş sinyali kullanarak eğitirseniz, ağ basitçe "doğru yanıtı hatırlayacaktır". Dışarıdan, çok çabuk "öğrenmiş" gibi görünecek. Ve doğru cevabı görmeyi umarak biraz değiştirilmiş bir sinyal verir vermez, ağ saçma sapan kusacaktır.

    Gerçekten de, neden sadece bir fotoğrafta yüz algılayan bir ağa ihtiyacımız var? Ağdan yetenek bekliyoruz genellemek bazı işaretler ve diğer fotoğraflardaki yüzleri de tanır.

    Bu amaçla yaratılmışlardır eğitim örnekleri.

    Eğitim Seti (Eğitim Seti), ağın üzerinde eğitildiği sonlu bir giriş sinyalleri kümesidir (bazen doğru çıkış sinyalleriyle birlikte).

    Ağ eğitildikten sonra yani ağ, eğitim örneğinden tüm giriş sinyalleri için doğru sonuçlar ürettiğinde pratikte kullanılabilir.

    Bununla birlikte, yeni pişmiş bir sinir ağını savaşa sokmadan önce, genellikle sözde ağ üzerindeki çalışmalarının kalitesini değerlendirirler. örnek test.

    Deneme seti (test seti) - ağın kalitesini değerlendirmek için kullanılan sınırlı bir dizi giriş sinyali (bazen doğru çıkış sinyalleriyle birlikte).

    "Ağ öğrenmenin" ne olduğunu anladık - doğru ağırlık setini seçmek. Şimdi soru ortaya çıkıyor - ağ nasıl eğitilebilir? En genel durumda, farklı sonuçlara yol açan iki yaklaşım vardır: denetimli öğrenme ve denetimsiz öğrenme.

    Bir öğretmenle öğrenme

    Bu yaklaşımın özü, girdiye bir sinyal vermeniz, ağın yanıtına bakmanız ve ardından bunu önceden hazırlanmış, doğru yanıtla karşılaştırmanızdır.

    Önemli bir nokta. Doğru cevaplar ile bilinen çözüm algoritmasını karıştırmayın! Parmağınızla bir fotoğrafta bir yüzün izini sürebilirsiniz (doğru cevap), ancak bunun nasıl yapıldığını söyleyemezsiniz (bilinen algoritma). İşte aynı durum.

    Daha sonra özel algoritmalar yardımıyla sinir ağının bağlantılarının ağırlıklarını değiştirir ve ona tekrar bir giriş sinyali verirsiniz. Cevabını doğru cevapla karşılaştırın ve ağ kabul edilebilir bir doğrulukla yanıt vermeye başlayana kadar bu işlemi tekrarlayın (Bölüm 1'de söylediğim gibi, ağ kesin olarak doğru yanıtlar veremez).

    Bir öğretmenle öğrenme (denetimli öğrenme), ağın cevaplarının önceden hazırlanmış doğru cevaplardan minimum düzeyde farklı olması için ağırlıklarının değiştiği bir ağ eğitimi türüdür.

    Doğru cevapları nereden alabilirim?

    Ağın yüzleri tanımasını istiyorsak, 1000 fotoğraftan (girişler) oluşan bir eğitim örneği oluşturabilir ve ondan bağımsız olarak yüzleri çıkarabiliriz (doğru cevaplar).

    Ağın fiyatlardaki yükselişi/düşüşü tahmin etmesini istiyorsak, eğitim örneğinin geçmiş verilere dayalı olarak yapılması gerekir. Giriş sinyalleri olarak belirli günleri, piyasanın genel durumunu ve diğer parametreleri alabilirsiniz. Ve doğru cevaplar olarak - o günlerde fiyatın yükselişi ve düşüşü.

    Elbette öğretmenin mutlaka bir kişi olmadığını belirtmekte fayda var. Gerçek şu ki, bazen ağın binlerce ve on binlerce girişimde bulunarak saatlerce ve günlerce eğitilmesi gerekir. Vakaların% 99'unda bu rol bir bilgisayar veya daha doğrusu özel bir bilgisayar programı tarafından gerçekleştirilir.

    öğretmensiz öğrenmek

    Gözetimsiz öğrenme, giriş sinyallerine doğru cevaplarımız olmadığında kullanılır. Bu durumda, eğitim örneğinin tamamı bir dizi giriş sinyalinden oluşur.

    Ağın böyle bir eğitimi sırasında ne olur? Böyle bir "eğitim" ile ağın girişe sağlanan sinyal sınıflarını ayırt etmeye başladığı ortaya çıktı. Kısacası, ağ kümelenmeye başlar.

    Örneğin şekerleme, pasta ve kek zincirlerini sergiliyorsunuz. Ağı hiçbir şekilde düzenlemezsiniz. Verileri girdilerine basitçe beslersiniz. verilen nesne. Zamanla ağ, giriş nesnelerinden sorumlu olan üç farklı türde sinyal üretmeye başlayacaktır.

    öğretmensiz öğrenmek (denetimsiz öğrenme), ağın giriş sinyallerini bağımsız olarak sınıflandırdığı bir ağ öğrenme türüdür. Doğru (referans) çıkış sinyalleri görüntülenmiyor.

    sonuçlar

    Bu bölümde, yapay bir nöronun yapısı hakkında her şeyi öğrendiniz ve nasıl çalıştığını (ve matematiksel modelini) tam olarak anladınız.

    Ayrıca, artık bildiğiniz çeşitli tipler yapay sinir ağları: tek katmanlı, çok katmanlı, ileri beslemeli ağlar ve geri bildirimli ağlar.

    Ayrıca denetimli ve denetimsiz ağ öğrenimi hakkında da bilgi edindiniz.

    Gerekli teoriyi zaten biliyorsunuz. Aşağıdaki bölümler, belirli sinir ağları türleri, eğitimleri ve programlama uygulamaları için özel algoritmalar hakkında bir tartışmadır.

    Sorular ve görevler

    Bu bölümün materyali, yapay sinir ağları hakkında temel teorik bilgileri içerdiğinden çok iyi bilinmelidir. Aşağıdaki tüm soru ve görevlere kendinizden emin ve doğru yanıtlar verdiğinizden emin olun.

    YSA'ların biyolojik sinir ağlarına kıyasla basitleştirmelerini açıklayın.

    1. Biyolojik sinir ağlarının karmaşık ve girift yapısı basitleştirilmiş ve diyagramlar şeklinde sunulmuştur. Yalnızca sinyal işleme modelini bırakın.

    2. Sinir ağlarındaki elektrik sinyallerinin doğası aynıdır. Fark sadece boyutlarındadır. kaldırıyoruz elektrik sinyalleri ve onların yerine geçen sinyalin büyüklüğünü gösteren sayılar kullanırız.

    Etkinleştirme işlevi genellikle \(\phi(net) \) ile gösterilir.

    Yapay bir nöronun matematiksel modelini yazınız.

    ​\(n \) ​ girişli bir yapay nöron, giriş sinyalini (sayı) aşağıdaki gibi çıkış sinyaline (sayı) dönüştürür:

    \[ out=\phi\left(\sum\limits^n_(i=1)x_iw_i\right) \]

    Tek katmanlı ve çok katmanlı sinir ağları arasındaki fark nedir?

    Tek katmanlı sinir ağları, bir hesaplamalı nöron katmanından oluşur. Girdi katmanı, sinyalleri doğrudan, sinyali dönüştüren ve hemen sonucu veren çıktı katmanına gönderir.

    Çok katmanlı sinir ağları, girdi ve çıktı katmanlarına ek olarak gizli katmanlara da sahiptir. Bu gizli katmanlar, bir fabrikada ürünlerin üretim aşamaları gibi bir takım içsel ara dönüşümler gerçekleştirir.

    İleri beslemeli ağlar ile geri beslemeli ağlar arasındaki fark nedir?

    İleri beslemeli ağlar, sinyalin girişlerden çıkışlara yalnızca bir yönde akmasına izin verir. Geribeslemeli ağlarda bu kısıtlamalar yoktur ve nöronların çıktıları girdilere geri beslenebilir.

    Eğitim örneği nedir? anlamı nedir?

    Ağı pratikte kullanmadan önce (örneğin, yanıtlarınızın olmadığı mevcut sorunları çözmek için), ağı eğitmek için hazır yanıtlarla bir dizi sorun toplamanız gerekir. Bu koleksiyona eğitim seti denir.

    Çok küçük bir dizi giriş ve çıkış sinyali toplarsanız, ağ yanıtları basitçe hatırlar ve öğrenme hedefine ulaşılamaz.

    Ağ öğrenimi ile kastedilen nedir?

    Ağ öğrenimi, giriş sinyalini doğru çıkışa dönüştüren böyle bir kombinasyonunu seçmek için ağdaki yapay nöronların ağırlık katsayılarını değiştirme süreci olarak anlaşılmaktadır.

    Denetimli ve denetimsiz öğrenme nedir?

    Bir ağı bir öğretmenle eğitirken, girdilerine sinyaller verilir ve ardından çıktısı, önceden bilinen doğru bir çıktıyla karşılaştırılır. Bu işlem, cevapların gerekli doğruluğu sağlanana kadar tekrarlanır.

    Ağlar, hazır çıktılarla karşılaştırmadan yalnızca giriş sinyalleri sağlıyorsa, ağ bu giriş sinyallerini bağımsız olarak sınıflandırmaya başlar. Diğer bir deyişle, giriş sinyallerinin kümelenmesini gerçekleştirir. Bu tür öğrenmeye denetimsiz öğrenme denir.

    Artık tam olarak ne inşa etmek istediğimiz netleştiğine göre, "böyle bir sinir ağı nasıl kurulur" sorusuna geçebiliriz. Bu sorun iki aşamada çözülür: 1. Sinir ağının türünün (mimarisinin) seçilmesi. 2. Sinir ağının ağırlıklarının (eğitim) seçimi. İlk adım aşağıdakileri seçmektir: * hangi nöronları kullanmak istiyoruz (giriş sayısı, transfer fonksiyonları); * nasıl birbirine bağlanır; * sinir ağının girdileri ve çıktıları olarak nelerin alınacağı. İlk bakışta, bu görev çok zor görünüyor, ancak neyse ki sıfırdan bir sinir ağı icat etmemiz gerekmiyor - birkaç düzine farklı sinir ağı mimarisi var ve bunların çoğunun etkinliği matematiksel olarak kanıtlanmıştır. En popüler ve incelenen mimariler, çok katmanlı algılayıcı, genel regresyon sinir ağı, Kohonen sinir ağları ve diğerleridir. Tüm bu mimariler yakında bu eğitimin özel bir bölümünde okunacaktır.

    İkinci aşamada, seçilen sinir ağını "eğitmeliyiz", yani ağırlıklarının bu tür değerlerini gerektiği gibi çalışacak şekilde seçmeliyiz. Eğitimsiz bir sinir ağı bir çocuk gibidir - ona her şey öğretilebilir. Pratikte kullanılan sinir ağlarında, ağırlık sayısı birkaç on bin olabilir, bu nedenle eğitim gerçekten karmaşık bir süreçtir. Birçok mimari için, sinir ağının ağırlıklarını belirli bir şekilde ayarlamanıza izin veren özel öğrenme algoritmaları geliştirilmiştir. Bu algoritmalardan en popüler olanı yöntem geri yayılımörneğin algılayıcıyı eğitmek için kullanılan hatalar (Error Back Propagation).

    Sinir ağlarının eğitimi

    Bir sinir ağını eğitmek, ona ondan ne elde etmeye çalıştığımızı söylemek anlamına gelir. Bu süreç, bir çocuğa alfabeyi öğretmeye çok benzer. Çocuğa "A" harfinin bir resmini göstererek ona soruyoruz: "Bu hangi harf?" Cevap yanlışsa çocuğa ondan almak istediğimiz cevabı söyleriz: "Bu A harfidir." Çocuk bu örneği doğru cevapla birlikte hatırlıyor, yani hafızasında doğru yönde bazı değişiklikler oluyor. 33 harfin tamamı kesin olarak hatırlanana kadar mektup sunum sürecini tekrar tekrar yapacağız. Bu sürece "denetimli öğrenme" denir.

    Bir sinir ağını eğitirken tamamen aynı şekilde hareket ederiz. Örnekler içeren bir veri tabanımız var (bir dizi el yazısıyla yazılmış harf görüntüsü). "A" harfinin görüntüsünü sinir ağının girişine sunarak, ondan doğru olması gerekmeyen bazı cevaplar alıyoruz. Doğru (istenen) yanıtı da biliyoruz - içinde bu durum"A" etiketli sinir ağının çıkışında sinyal seviyesinin maksimum olmasını istiyoruz. Genellikle, (1, 0, 0, ...) kümesi, sınıflandırma probleminde istenen çıktı olarak alınır; burada 1, "A" etiketli çıktıda ve 0, diğer tüm çıktılardadır. İstenen yanıt ile ağın gerçek yanıtı arasındaki farkı hesaplayarak 33 sayı elde ederiz - hata vektörü. Hata geri yayılım algoritması, sinir ağı ağırlıkları için gerekli düzeltmeleri hata vektöründen hesaplamanıza izin veren bir dizi formüldür. Aynı harfi (ayrıca aynı harfin farklı görüntülerini) birçok kez sinir ağına sunabiliriz. Bu anlamda, eğitim daha çok spor - eğitimde egzersizleri tekrarlamak gibidir.

    Örneklerin tekrar tekrar sunulmasından sonra, sinir ağının ağırlıklarının dengelendiği ve sinir ağının veritabanındaki tüm (veya hemen hemen tüm) örneklere doğru yanıtlar verdiği ortaya çıktı. Bu durumda "sinir ağı tüm örnekleri öğrendi", "sinir ağı eğitildi" veya "sinir ağı eğitildi" deriz. İÇİNDE yazılım uygulamalarıöğrenme sürecinde hata değerinin (tüm çıktılar için hataların karelerinin toplamı) giderek azaldığı görülmektedir. Hata değeri sıfıra veya kabul edilebilir bir düşük seviyeye ulaştığında, eğitim durdurulur ve ortaya çıkan sinir ağı eğitilmiş ve yeni veriler üzerinde kullanıma hazır kabul edilir. Sinir ağının görevle ilgili sahip olduğu tüm bilgilerin örnekler kümesinde yer aldığına dikkat etmek önemlidir. Bu nedenle, sinir ağı eğitiminin kalitesi doğrudan eğitim setindeki örneklerin sayısına ve ayrıca bu örneklerin verilen görevi ne kadar tam olarak tanımladığına bağlıdır.

    Bu nedenle, örneğin, eğitim örneğinde kriz yoksa, bir finansal krizi tahmin etmek için bir sinir ağı kullanmanın bir anlamı yoktur. Tam teşekküllü bir sinir ağı eğitimi için en az birkaç düzine (ve yüzlercesinden daha iyi) örnekler. Sinir ağlarının eğitiminin karmaşık ve bilim yoğun bir süreç olduğunu bir kez daha tekrarlıyoruz. Sinir ağı eğitim algoritmaları, kontrol etkilerinin anlaşılmasını gerektiren çeşitli parametrelere ve ayarlara sahiptir.


    Sinir ağı eğitildikten sonra, onu yararlı sorunları çözmek için uygulayabiliriz. İnsan beyninin en önemli özelliği belli bir süreci öğrendikten sonra öğrenme sürecinde olmadığı durumlarda doğru hareket edebilmesidir. Örneğin, hayatımızda ilk kez görsek bile hemen hemen her el yazısını okuyabiliriz. Benzer şekilde, uygun şekilde eğitilmiş bir sinir ağı, kendisine daha önce sunulmamış yeni verilere büyük olasılıkla doğru şekilde yanıt verebilir. Örneğin "A" harfini farklı bir el yazısıyla çizebilir ve ardından sinir ağımızdan yeni görüntüyü sınıflandırmasını isteyebiliriz. Eğitilmiş sinir ağının ağırlıkları, harflerin benzerlikleri ve farklılıkları hakkında pek çok bilgi depolar, böylece görüntünün yeni versiyonu için doğru cevaba güvenebilirsiniz. Hazır sinir ağlarına örnekler

    Yukarıda açıklanan sinir ağlarının eğitim ve uygulama süreçleri şu anda eylem halinde görülebilir. Ward Systems Group birkaç tane hazırladı basit programlar, NeuroWindows kitaplığına dayalı olarak yazılmıştır. Programların her biri, kullanıcının bağımsız olarak bir dizi örnek oluşturmasına ve bu set üzerinde belirli bir sinir ağını eğitmesine olanak tanır. Daha sonra bu sinir ağına yeni örnekler sunabilir ve çalışmasını gözlemleyebilirsiniz.

    MODERN BİLGİ TEKNOLOJİLERİ/2. Hesaplama ve programlama

    Zolotukhina Irina Andreevna, lisans öğrencisi

    A. Baitursynov'un adını taşıyan Kostanay Devlet Üniversitesi, Kazakistan.

    Sinir ağlarını eğitmek için yöntemler ve algoritmalar.

    Dipnot:bu makale sinir ağlarını, neden bu kadar alakalı olduklarını analiz ediyor, sinir ağı algoritmalarının çeşitlerini ve ağların kapsamını ele alıyor.

    anahtar kelimeler:nöron, algılayıcı, Rosenblatt yöntemi, Hebb yöntemi, genelleme hatası, öğrenme hatası, öğrenme algoritması.

    Nöral ağlar(veya yapay sinir ağları) alanındaki en ilginç araştırma alanlarından biridir. yapay zeka simülasyon ve yeniden üretime dayalı gergin sistem kişi. Bilim adamları özellikle şu süreçlerle ilgileniyorlar: sinir sisteminin insan beyninin çalışmasını simüle etmesine izin vermesi gereken öğrenme, hataları düzeltme, karar verme yeteneği.

    Yapay sinir ağları, olumlu ve olumsuz etkileri analiz edilerek eğitilmektedir. Biyolojik prototipe benzer şekilde adlandırılan nöronlardan oluşurlar.

    Yapay bir nöron modeli ilk olarak 1943'te Amerikalı bilim adamları Warren McCulloch ve öğrencisi Walter Pitt tarafından önerildi.

    Ağdaki nöronlar tarafından gerçekleştirilen işlevlere bağlı olarak, üç tür ayırt edilebilir:

    · bir giriş eylemini kodlayan bir vektörün veya dış ortamın bir görüntüsünün sağlandığı giriş nöronları; genellikle hesaplama prosedürlerini yürütmezler;

    · (1) ve (1.1) ifadelerine göre dönüşümlerin gerçekleştirildiği sinir ağlarının temelini oluşturan ara nöronlar;

    · çıktı değerleri sinir ağının çıktılarını temsil eden çıktı nöronları; içlerindeki dönüşümler de (1) ve (1.1) ifadelerine göre gerçekleştirilir.

    Şekil 1. Resmi bir sinir ağının yapısı

    (1)

    y = f(ler)(1.1)

    Nerede

    · ben, sinapsın ağırlığıdır, Ben = 1...n;

    · B- Ofset değeri;

    · Stoplama sonucudur;

    · X, – giriş vektörü bileşeni (giriş sinyali),

    · x ben = 1...n;

    · denöronun çıkış sinyalidir;

    · Nnöron girdilerinin sayısıdır;

    · F– doğrusal olmayan dönüşüm (aktivasyon fonksiyonu).

    giriş sinyali başına (S) doğrusal olmayan dönüştürücü bir çıkış sinyali ile yanıt verir f(ler), nöronun çıkışını temsil eder.

    Sinir ağı yaklaşımının problem çözmedeki avantajları Bilişim Teknolojileri diğerlerinden farklı olarak (örneğin, von Neumann mimarisi):

    · bilgi işlemenin paralelliği;

    · tek ve etkili bir öğrenme ilkesi;

    · işleyişin güvenilirliği;

    · resmi olmayan sorunları çözme yeteneği.

    Yapay sinir ağları ile çözülen uygulamalar ve problemler

    Yapay sinir ağları, teknolojinin çeşitli alanlarında uygulama alanı bulmuştur. Bilgisayarların performansındaki bir başka artış, bu ağların, özellikle de yapay bir sinir ağına dayanan nörobilgisayarların gelişmesiyle giderek daha fazla ilişkilendirilmektedir.

    Sinir ağları tarafından çözülen görevler aralığı:

    · desen tanıma;

    · konuşma tanıma ve sentezi;

    · havacılık görüntülerinin tanınması;

    · büyük gürültü varlığında sinyal işleme;

    · tahmin;

    optimizasyon;

    · menkul kıymet kotasyonlarının ve döviz kurlarının tahmin edilmesi;

    · kredi kartı dolandırıcılığının önlenmesi;

    borsa oyunu

    · spam filtreleme;

    · gayrimenkul değerlemesi;

    · işletmelerin mali durumunun ve kredilerin geri ödenmeme riskinin değerlendirilmesi;

    · radar sinyallerinin işlenmesi;

    · güvenlik ve video gözetim sistemleri;

    · karayolları ve demiryollarında trafik kontrolü;

    · tıpta teşhis;

    · karmaşık nesnelerin yönetimi;

    · iş, finans ve bilimsel araştırmalarda büyük verilerden bilgi madenciliği;

    · gerçek zamanlı kontrol ve hepsi bu değil.

    Eğitim

    Öğrenme, girdi verilerini analiz ederek sistem performansını iyileştirmek olarak anlaşılmaktadır. Ayrıca eğitim belirli kurallara göre gerçekleşir.

    Öğrenmeye yönelik iki ana yaklaşım vardır: “öğretmenle” ve “öğretmensiz” (kendi kendine öğrenme). -de bir öğretmenle öğrenme sinir ağı, her girdi örneği için doğru yanıtlara (ağ çıkışları) sahiptir. Birlikte eğitim çifti olarak adlandırılırlar. Ağırlıklar, ağın hataları en aza indirirken bilinen doğru yanıtlara mümkün olduğunca yakın yanıtlar üretmesi için ayarlanır. Eğitim setinin vektörleri sırayla sunulur, hatalar hesaplanır ve tüm eğitim dizisindeki hata kabul edilebilir bir düzeye ulaşana kadar her vektör için ağırlıklar ayarlanır. öğretmensiz öğrenmek eğitim örneğinin her örneğine doğru cevapların bilgisini gerektirmez. Bu durumda, iç veri yapısı veya veri sistemindeki örnekler arasındaki ilişki ortaya çıkar, bu da örnekleri kategorize etmenize olanak tanır.

    Bir öğretmenle öğrenme

    Yapay sinir ağının girişine bir dizi giriş nöronu beslenir.X- eğitimli sinir ağı için giriş vektörü.

    Hata fonksiyonunu tanımlıyoruz E. Bu genellikle kök ortalama kare hatasıdır,

    ,

    Nerede

    · P- sinir ağı tarafından işlenen örneklerin sayısı;

    · sen ben-çıkış;

    · d ben- sinir ağının istenen (ideal) çıktısı.

    Bir sinir ağını eğitme prosedürü, bağlantıların ağırlıklarını düzeltme prosedürüne indirgenmiştir. Ağırlık düzeltme prosedürünün amacı, hata fonksiyonunu en aza indirmektir. E.

    Bir öğretmenle genel eğitim şeması:

    1 Antrenman başlamadan önce, ağırlıklar bir şekilde, örneğin rastgele olarak ayarlanır.

    2 İlk aşamada eğitim örnekleri belirli bir sıra ile girdiye sunulur. Her yinelemede, eğitim örneğinin hatası hesaplanır EL(öğrenme hatası) ve belirli bir algoritmaya göre ağırlıklar düzeltilir. Ağırlık düzeltme prosedürünün amacı, hatayı en aza indirmektir. EL.

    3 Eğitimin ikinci aşamasında çalışmanın doğruluğu kontrol edilir. Test senaryoları belirli bir sıra ile girdi olarak verilir. Her yinelemede, test durumu için hata hesaplanır ÖRNEĞİN(genelleme hatası - eğitilen modelin öğrenme sürecine katılmayan örneklerde gösterdiği hata). Sonuç tatmin edici değilse, eğitim örnekleri seti değiştirilir ve eğitim döngüsü tekrarlanır.

    Öğrenme algoritmasının birkaç yinelemesinden sonra, öğrenme hatası EL genelleme hatası neredeyse sıfıra düşerken ÖRNEĞİN başlangıçta azalır ve sonra büyümeye başlar, o zaman bu aşırı uyum etkisinin bir işaretidir. Bu durumda eğitim durdurulmalıdır.

    Şekil 2. Fazla takmanın etkisi

    Bu algoritmaya dayanarak sinir ağı Rosenblatt yöntemi ile eğitilir.

    Rosenblatt yöntemi

    Bu yöntem 60'larda F. Rosenblatt tarafından önerildi. XX yüzyıl Perceptron (perceptron) adı verilen bir sinir ağı için. Perceptron bir eşik aktivasyon fonksiyonuna sahiptir, şeması Şekil 1'de gösterilmiştir.

    Şekil 3. Tek katmanlı algılayıcı

    Rosenblatt'ın tek katmanlı bir algılayıcı için eğitim prosedürü aşağıdaki gibi gösterilebilir:

    ,

    Nerede

    · x ben- Ben sinir ağının -inci girişi;

    · dj- istenen (ideal) J sinir ağının -inci çıktısı;

    · A - katsayı (öğrenme oranı) 0< A≤1

    Ağırlıklandırma faktörleri, yalnızca gerçek çıkış değeri ideal çıkış değeriyle eşleşmediğinde değişir. Aşağıda, algılayıcı öğrenme algoritmasının bir açıklaması bulunmaktadır.

    1. Tüm ağırlıkları sıfıra eşitliyoruz.

    2. Bir örnek sunma döngüsü yürütürüz. Her örnek için aşağıdaki prosedür gerçekleştirilir.

    2.1. Ağ doğru yanıtı verdiyse adım 2.4'e gidin.

    2.2. Algılayıcının çıkışında bir birim beklenirken sıfır alınmışsa, tek bir sinyalin geçtiği bağlantıların ağırlıkları bir azaltılır.

    2.3. Algılayıcının çıkışında sıfır bekleniyorsa ve bir birim alınmışsa, birim sinyalinin geçtiği bağlantıların ağırlıkları bir artırılır.

    2.4. Bir sonraki örneğe geçelim. Eğitim setinin sonuna ulaşıldıysa 3. adıma gidin, aksi takdirde 2.1. adıma dönün.

    3. Algoritmanın ikinci adımının yürütülmesi sırasında adım 2.2 veya 2.3 en az bir kez gerçekleştirildiyse ve döngü oluşmazsa, adım 2'ye gidin. Aksi takdirde eğitim tamamlanır.

    Bu algoritma, öğrenme döngülerini izlemek için bir mekanizma sağlamaz. Bu mekanizma farklı şekillerde uygulanabilir. Ek bellek kullanımı açısından en ekonomik olanı aşağıdaki şekle sahiptir.

    4. k=1; M= 0. Bağlantı ağırlıklarını unutmayın.

    5. Görüntü sunum döngüsünden sonra, bağlantıların ağırlıklarını ezberlediğimiz ağırlıklarla karşılaştırıyoruz. Mevcut ağırlıklar kayıtlı olanlarla eşleşirse, bir döngü oluşmuştur. Aksi takdirde, 3. adıma gidin.

    6. M=M+1. Eğer M<k, ardından ikinci adıma geçiyoruz.

    7. k=2k; M= 0. Bağlantı ağırlıklarını hatırlayın ve 2. adıma geçin.

    Döngünün uzunluğu sonlu olduğundan, yeterince büyük k döngü tespit edilecektir.

    Öğretmensiz öğrenmek.

    Öğretmensiz öğrenmeyi çekici kılan temel özelliği “bağımsızlığı”dır. Denetimli öğrenme durumunda olduğu gibi öğrenme süreci, sinapsların ağırlıklarının ayarlanmasından oluşur. Bununla birlikte, bazı algoritmalar ağın yapısını, yani nöronların sayısını ve ara bağlantılarını da değiştirir, ancak bu tür dönüşümlere daha doğru bir şekilde daha geniş bir terim - kendi kendine organizasyon denir ve bunlar bu makale çerçevesinde ele alınmayacaktır. Sinapsların ayarlanmasının yalnızca nöronda mevcut olan bilgilere, yani durumuna ve halihazırda var olan ağırlık katsayılarına dayanarak gerçekleştirilebileceği açıktır. Hebb'in öğrenme algoritmaları, bu düşünceye dayanarak ve daha da önemlisi, sinir hücrelerinin kendi kendine örgütlenmesine ilişkin bilinen ilkelerle analoji yoluyla oluşturulur.

    Özünde, Habb, iki nöronun sinaptik bağlantısının, bu nöronların her ikisinin de uyarılması durumunda güçlendiğini öne sürdü. Bu, bu sinapsın bağlı olduğu uyarılmış nöronların seviyelerinin korelasyonuna göre sinapsın güçlendirilmesi olarak düşünülebilir. Bu nedenle, Hebb öğrenme algoritmasına bazen korelasyon algoritması denir.

    Algoritma fikri aşağıdaki eşitlikle ifade edilir:

    ,

    Nerede

    · ben (n-1)nöronun çıkış değeridir Ben katman (n-1),

    · y j (n)nöronun çıkış değeridir J katman N;

    · w ij (t)ve w ben(t-1) yinelemelerde bu nöronları birbirine bağlayan sinapsın ağırlık katsayısıdır T Ve t-1 sırasıyla;

    · Aöğrenme oranı katsayısıdır.

    Formülle temsil edilen Hebb'in diferansiyel öğrenme yöntemi de vardır.

    ,(2)

    Burada y ben (n-1) (t) Ve ben (n-1) (t-1)– t ve t-1 yinelemelerinde sırasıyla n-1 katmanındaki nöron i'nin çıktı değeri;

    j (n) (t)Ve y j (n) (t-1)- nöron için aynı J katman N.

    Formül (2)'den görülebileceği gibi, sinapslar en çok eğitilirler ve çıktıları artış yönünde en dinamik şekilde değişen nöronları birbirine bağlarlar.

    Yukarıdaki formülleri kullanan tam öğrenme algoritması şöyle görünecektir:

    1. Başlatma aşamasında, tüm ağırlıklara küçük rasgele değerler atanır.

    2. Giriş görüntüsü ağ girişlerine beslenir ve uyarma sinyalleri, klasik ileri beslemeli ağların ilkelerine göre tüm katmanlara dağıtılır, yani her nöron için girdilerinin ağırlıklı toplamı hesaplanır, buna nöronun aktivasyon (aktarma) işlevi daha sonra uygulanır ve çıkış değeri elde edilir y ben (n), Ben=0...M ben-1, nerede M ben katmandaki nöronların sayısıdır Ben; N=0...N-1 ve N ağdaki katman sayısıdır.

    3. Formül (1) veya (2)'ye göre nöronların elde edilen çıktı değerlerine göre ağırlık katsayıları değiştirilir.

    4. Adım 2'den ağ çıkış değerleri belirtilen doğrulukta sabitlenene kadar döngü yapın. Geri yayılım ağı için kullanılandan farklı olarak, eğitimin tamamlandığını belirlemenin bu yeni yolunun kullanılması, ayarlanan sinaps değerlerinin neredeyse sınırsız olmasından kaynaklanmaktadır.

    Döngünün ikinci adımında, giriş setindeki tüm görüntüler dönüşümlü olarak sunulur.

    Her bir giriş görüntüsü sınıfına verilen yanıt tipinin önceden bilinmediği ve başlatma aşamasında ağırlıkların rastgele dağılımı nedeniyle çıkış katmanı nöron durumlarının keyfi bir kombinasyonu olacağı belirtilmelidir. Aynı zamanda ağ, benzer görüntüleri aynı sınıfa atıfta bulunarak genelleştirebilir. Eğitilmiş ağı test etmek, çıktı katmanında sınıf topolojisini belirlemenizi sağlar. Eğitilmiş ağın yanıtlarını uygun bir temsile indirgemek için ağa, örneğin tek katmanlı bir algılayıcının öğrenme algoritmasına göre ağın çıkış yanıtlarını gerekli görüntülere eşlemek için yapılması gereken bir katman eklenebilir.

    Gözetimsiz öğrenmenin, denetimli öğrenmeye göre optimal parametrelerin seçimine çok daha duyarlı olduğuna dikkat edilmelidir. Birincisi, kalitesi büyük ölçüde sinapsların başlangıç ​​​​değerlerine bağlıdır. İkinci olarak, öğrenme, öğrenme yarıçapının seçimi ve değişim hızı açısından kritik öneme sahiptir. Ve son olarak, elbette, öğrenme katsayısındaki değişimin doğası çok önemlidir. Bu bağlamda, kullanıcının büyük olasılıkla optimum ağ eğitim parametrelerinin seçimi üzerinde ön çalışma yapması gerekecektir.

    Bazı uygulama zorluklarına rağmen, denetimsiz öğrenme algoritmaları kapsamlı ve başarılı uygulamalar bulmaktadır. Aslında bugün bilinen en karmaşık yapay sinir ağları olan cognitron ve neocognitron da denetimsiz öğrenme algoritmasına göre çalışmaktadır. Konum, gürültü ve şekil bozulmasındaki kaymalara maruz kalan görüntüleri tanıma göreviyle çok iyi başa çıktılar. Bununla birlikte, görüntü bir açıyla döndürüldüğünde neocognitron başarısız oldu.

    Sonuç olarak, bilim adamlarının şu anda yapay sinir ağları, belirli konfigürasyonların kararlılığı üzerinde çalıştıklarını ancak tüm görevlerin sinir ağları tarafından çözülemeyeceğini söyleyebiliriz. Yapay bir nöron, biyolojik bir nöronun modeli olmasına rağmen, mükemmel olmaktan uzaktır ve yapay zeka alanında önemli çalışmalar, yeni keşifler gerektirir. Sinir ağları insan gibi öğrenemez.Bununla birlikte, yukarıdaki materyal temelinde, örüntü tanıma, bilgi sıkıştırma, otomatik kontrol, uzman değerlendirmeleri ve çok daha fazlası için gerçek yaşam sistemleri oluşturmak mümkündür.

    Edebiyat:

    1. V.V. Kruglov, V.V. Borisov "Yapay sinir ağları", 2002.

    2. Rumelhart D. E., Hinton G. E., Williams R. D. Paralel dağıtılmış işlemede hata yayılımıyla dahili temsilin öğrenilmesi. - Cambrige: MA: MIT Press, 1986. - 91 s.

    Yapay sinir ağlarının en önemli özelliği, çevresel verilerden öğrenebilmeleri ve öğrenme sonucunda performanslarını iyileştirebilmeleridir. Performans iyileştirmeleri belirli kurallara göre zaman içinde gerçekleşir. Sinir ağı eğitimi, sinaptik ağırlıkları ve eşikleri ayarlamak için etkileşimli bir süreç aracılığıyla gerçekleşir. İdeal olarak, sinir ağı, öğrenme sürecinin her yinelemesinde çevre hakkında bilgi edinir.

    Öğrenme kavramıyla ilgili pek çok etkinlik vardır, bu nedenle bu sürece kesin bir tanım vermek zordur. Dahası, öğrenme süreci ona bakış açısına bağlıdır. Bu, bu kavramın herhangi bir kesin tanımının ortaya çıkmasını neredeyse imkansız kılan şeydir. Örneğin, bir psikoloğun bakış açısından öğrenme süreci, bir okul öğretmeninin bakış açısından öğrenmekten temelde farklıdır. Bir sinir ağı açısından bakıldığında, muhtemelen aşağıdaki tanım kullanılabilir:

    Öğrenme, bir sinir ağının serbest parametrelerinin, ağın gömülü olduğu ortamı simüle ederek ayarlandığı bir süreçtir. Öğrenme türü, bu parametrelerin nasıl ayarlandığına göre belirlenir.

    Bir sinir ağı öğrenme sürecinin bu tanımı, aşağıdaki olay sırasını varsayar:

    1. Sinir ağı, dış ortamdan uyaranları alır.
    2. Birinci paragrafın bir sonucu olarak, sinir ağının serbest parametreleri değiştirilir.
    3. İç yapıyı değiştirdikten sonra, sinir ağı uyarılmalara farklı bir şekilde yanıt verir.

    Bir sinir ağı öğrenme problemini çözmek için yukarıdaki açık kurallar listesine öğrenme algoritması denir. Tüm sinir ağları mimarilerine uygun evrensel bir öğrenme algoritmasının olmadığını tahmin etmek kolaydır. Yalnızca, her birinin kendine has avantajları olan çeşitli öğrenme algoritmalarıyla temsil edilen bir dizi araç vardır. Öğrenme algoritmaları, nöronların sinaptik ağırlıklarını ayarlama biçimleri bakımından birbirinden farklıdır. Diğer bir ayırt edici özellik, eğitilmiş sinir ağının dış dünya ile iletişim kurma şeklidir. Bu bağlamda, belirli bir sinir ağının faaliyet gösterdiği bir çevre modeliyle ilişkili bir öğrenme paradigmasından söz edilir.

    Sinir ağlarını eğitmek için iki kavramsal yaklaşım vardır: denetimli öğrenme ve denetimsiz öğrenme.

    Bir sinir ağının denetimli eğitimi, eğitim setindeki her giriş vektörü için, hedef olarak adlandırılan, çıkış vektörünün gerekli bir değerinin olduğunu varsayar. Bu vektörler bir eğitim çifti oluşturur. Ağ ağırlıkları, her giriş vektörü için çıkış vektörünün hedef vektörden kabul edilebilir bir sapma düzeyi elde edilene kadar değiştirilir.

    Denetimsiz sinir ağı eğitimi, yapay sinir ağlarının biyolojik kökleri açısından çok daha makul bir öğrenme modelidir. Eğitim seti sadece giriş vektörlerinden oluşur. Sinir ağı eğitim algoritması, ağ ağırlıklarını ayarlar, böylece tutarlı çıktı vektörleri elde edilir, örn. böylece yeterince yakın girdi vektörlerinin sunumu aynı çıktıları verir.

    Geri bildirimsiz sinir ağı - algılayıcı

    Sinir ağları için görevler

    Yapay sinir ağlarının kullanıldığı görevlerin çoğu, aşağıdaki ana problemlerin özel durumları olarak kabul edilebilir.

    Yaklaşım - sonlu bir değerler kümesi üzerinde bir işlev oluşturmak (örneğin, zaman serisi tahmini)

    · Bir dizi nesne üzerinde ilişkilerin kurulması (örneğin, görüntülerin ve ses sinyallerinin tanınması sorunları).

    · Dağıtılmış bilgi alma ve ilişkisel bellek (örneğin, büyük veri dizilerinde örtük bağımlılıklar bulma sorunu).

    · Filtreleme (örneğin, “çıplak gözle görülebilen”, ancak analitik olarak tarif edilmesi zor olan sinyallerdeki değişikliklerin tespiti).

    · Bilgilerin sıkıştırılması (örneğin, sesleri, statik ve dinamik görüntüleri sıkıştırmak için algoritmaların sinir ağı uygulamaları).

    · Dinamik sistemlerin tanımlanması ve kontrolü.


    Aşağıdaki şekilde gösterilen çoklu çıktılara sahip çok katmanlı sinir ağı bir algılayıcıdır.

    Devre, gerekirse nöronların çıkış sinyallerini tek bir ortak çıkışta birleştiren bir toplayıcı ile desteklenebilir.

    Algılayıcıdaki katman sayısı, problemin karmaşıklığına bağlı olarak farklı olabilir. Matematiksel olarak kanıtlanmıştır (Kolmogorov'un teoremi), tam teşekküllü üç nöral katmanın herhangi bir matematiksel fonksiyona yaklaşmak için yeterli olduğu (gizli katmandaki nöron sayısını süresiz olarak artırmanın mümkün olması şartıyla).

    Algılayıcı ayrık bir zaman modunda çalışır: girişe statik bir sinyal seti (giriş vektörü) uygulanır, çıkışların toplam durumu (çıkış vektörü) değerlendirilir, ardından bir sonraki vektör giriştir, vb. Algılayıcıdaki sinyalin girişten çıkışa anında yayıldığı varsayılır, yani nörondan nörona, katmandan katmana sinyal iletiminde zaman gecikmesi yoktur ve ilişkili dinamik geçici süreçler yoktur. Algılayıcının geri bildirimi olmadığından (ne pozitif ne de negatif), o zaman her an herhangi bir değer giriş vektörü, sinir ağının girişleri değişmeden kaldığı sürece değişmeyecek olan belirli bir çıkış vektörüne benzersiz bir şekilde karşılık gelir.

    Algılayıcı teorisi, diğer birçok yapay sinir ağı türünün temelidir ve algılayıcıların kendileri, yapay sinir ağlarının incelenmesi için mantıklı bir başlangıç ​​noktasıdır.

    Bir sinir ağını eğitmek, ona ondan ne elde etmeye çalıştığımızı söylemek anlamına gelir. Bu süreç, bir çocuğa alfabeyi öğretmeye çok benzer. Çocuğa "A" harfinin bir resmini göstererek ona soruyoruz: "Bu hangi harf?" Cevap yanlışsa çocuğa ondan almak istediğimiz cevabı söyleriz: "Bu A harfidir." Çocuk bu örneği doğru cevapla birlikte hatırlıyor, yani hafızasında doğru yönde bazı değişiklikler oluyor. 33 harfin tamamı kesin olarak hatırlanana kadar mektup sunum sürecini tekrar tekrar yapacağız. Böyle bir süreç denir "bir öğretmenle eğitim" .

    Bir sinir ağını eğitirken tamamen aynı şekilde hareket ederiz. Diyelim ki bir tablomuz var - örnekleri içeren bir veritabanı (kodlanmış bir harf görüntüleri kümesi). Sinir ağının girişine "A" harfinin görüntüsünü sunarak, (ideal olarak) sinyal seviyesinin OUT1 çıkışında maksimum (=1) (A, 33 harfli alfabedeki 1 numaralı harftir) ve minimum (=0) olmasını bekleriz.

    Böylece masa denir öğrenme seti , şöyle görünecektir (örnek olarak, yalnızca ilk satır doldurulur):

    Mektup giriş vektörü İstenen çıkış vektörü
    X1 x2 x12 HEDEF 1 HEDEF2 HEDEF33
    A
    B
    BEN

    vektör kümesi eğitim kümesinin her örneği için (tablonun satırları) denir öğrenme çift .

    Uygulamada, eğitimsiz bir sinir ağı ideal olarak beklediğimiz gibi çalışmaz, yani tüm veya çoğu örnek için hata vektörleri, sıfırdan önemli ölçüde farklı olan öğeler içerir.

    Sinir ağı eğitim algoritması sinir ağı ağırlıkları için bu tür düzeltmeleri hesaplamak için hata vektörünün kullanılmasına izin veren bir dizi matematiksel işlemdir, böylece toplam hata (tüm çıktılar için kareleri alınmış hataların toplamı genellikle öğrenme sürecini kontrol etmek için kullanılır) azalır. Bu eylemleri tekrar tekrar uygulayarak, eğitim setinin her örneğinde (A, B, C, vb.) hatada kademeli bir azalma elde edilir.

    Ağırlıkların böyle bir döngüsel çoklu ayarlamasından sonra, sinir ağı veritabanındaki tüm (veya hemen hemen tüm) örneklere doğru (veya neredeyse doğru) cevaplar verecektir, yani toplam hata sıfıra veya her eğitim çifti için kabul edilebilir bir düşük seviyeye ulaşacaktır. Bu durumda "sinir ağı eğitildi" yani yeni üzerinde kullanıma hazır diyorlar, önceden bilinmiyor , veri.

    Genel olarak, denetimli öğrenme algoritması şöyle görünecektir:

    1. Sinaptik ağırlıkları küçük rasgele değerlerle başlatın.

    2. Eğitim setinden bir sonraki eğitim çiftini seçin; giriş vektörünü ağın girişine besleyin.

    3. Ağın çıkışını hesaplayın.

    4. Ağ çıkışı ile gerekli çıkış (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.

    6. Tüm setteki hata kabul edilebilir bir düzeye ulaşana kadar her eğitim seti çifti için 2'den 5'e kadar olan adımları tekrarlayın.

    5. adımda gerçekleştirilen belirli matematiksel işlem türleri, öğrenme algoritmasının türünü belirler. Örneğin, tek katmanlı algılayıcılar için, sözde temel alınarak en basit algoritma kullanılır. delta kuralı , herhangi bir sayıda katmana sahip algılayıcılar için yaygın olarak kullanılır geri yayılım prosedürü adı verilen ilginç özelliklere sahip bir grup algoritma bilinmektedir. stokastik öğrenme algoritmaları vb. Sinir ağları için bilinen tüm öğrenme algoritmaları, esas olarak birçok değişkenin doğrusal olmayan bir fonksiyonunu optimize etmeye yönelik gradyan yöntemlerinin çeşitleridir. Pratik uygulamalarında ortaya çıkan temel sorun, sonuçta ortaya çıkan sinaptik ağırlık kombinasyonunun, tüm eğitim setindeki toplam hatayı en aza indirme açısından gerçekten de en etkili kombinasyon olduğunun asla kesin olarak bilinememesidir. Bu belirsizliğe "hedef fonksiyonun yerel minimum sorunu" adı verilmiştir.

    Bu durumda, hedef fonksiyonu seçilen integral skaler gösterge olarak anlaşılmaktadır. eğitim setinin tüm örneklerinin sinir ağı tarafından işleme kalitesini karakterize eden - örneğin, standart sapmaların toplamı DIŞARI itibaren HEDEF her eğitim çifti için Hedef fonksiyonunun elde edilen değeri ne kadar küçük olursa, belirli bir eğitim setindeki sinir ağının kalitesi o kadar yüksek olur. İdeal olarak (pratikte, yalnızca en basit problemler için ulaşılabilir), öyle bir sinaptik ağırlık seti bulmak mümkündür ki, .

    Karmaşık ağın hedef fonksiyon yüzeyi oldukça girintilidir ve yüksek boyutlu bir uzayda tepeler, vadiler, kıvrımlar ve dağ geçitlerinden oluşur. Gradyan eğitimli bir ağ, yakınlarda çok daha derin bir minimum olduğunda yerel bir minimuma (sığ vadi) düşebilir. Yerel bir minimum noktasında, tüm yönler yukarı çıkar ve algoritma bunun dışına çıkamaz.

    Bu nedenle, sinir ağını eğitme girişimi sonucunda gerekli doğruluk sağlanamazsa, araştırmacının iki alternatifi vardır:

    1. Sürecin yerel bir minimuma hapsolduğunu varsayın ve aynı ağ yapılandırması için başka türde bir öğrenme algoritması uygulamaya çalışın.

    2. Bu belirli ağ konfigürasyonu için hedef fonksiyonunun global minimumunun bulunduğunu varsayın ve ağı karmaşıklaştırmaya çalışın - nöron sayısını artırın, bir veya daha fazla katman ekleyin, tamamen bağlı bir ağdan tamamen bağlı olmayan bir ağa geçin ve eğitim setinin yapısında önceden bilinen bağımlılıkları hesaba katın, vb.

    Örüntü tanıma ve sınıflandırma problemlerinde, algoritmalar yaygın olarak kullanılmaktadır. öğretmensiz öğrenmek . Bu durumda, ağa, sunulan örnekler setinde "birbirine benzer" girdi vektör gruplarını bağımsız olarak bulmak ve çıktılardan birinde yüksek bir seviye oluşturmak (hangisi olduğunu önceden belirlemeden) görevi verilir. Ancak sorunun böyle bir formülasyonunda bile, yerel minimum sorunu, örtük bir biçimde de olsa, hedef işlevinin katı bir matematiksel tanımı olmadan da gerçekleşir (çünkü hedef işlevi kavramının kendisi, belirli bir referans ağ yanıtının varlığını ima eder, yani "öğretmen") - "sinir ağı, girdi vektörlerinin kümelerini, belirli bir belirli yapılandırması için mümkün olan en iyi şekilde tahsis etmeyi gerçekten öğrendi mi?".