Denetimli Öğrenme

Adından da anlaşılacağı gibi, supervised learningbir öğretmenin gözetiminde gerçekleşir. Bu öğrenme süreci bağımlıdır. YSA'nın denetimli öğrenme altındaki eğitimi sırasında, bir çıktı vektörü üretecek olan giriş vektörü ağa sunulur. Bu çıktı vektörü, istenen / hedef çıktı vektörü ile karşılaştırılır. Gerçek çıktı ile istenen / hedef çıktı vektörü arasında bir fark varsa bir hata sinyali üretilir. Bu hata sinyali temelinde, gerçek çıktı istenen çıktıyla eşleşene kadar ağırlıklar ayarlanacaktır.

Algılayıcı

Frank Rosenblatt tarafından McCulloch ve Pitts modeli kullanılarak geliştirilen perceptron, yapay sinir ağlarının temel operasyonel birimidir. Denetimli öğrenme kuralı kullanır ve verileri iki sınıfa ayırabilir.

Algılayıcının operasyonel özellikleri: İsteğe bağlı sayıda girişe sahip tek bir nöron ve ayarlanabilir ağırlıklardan oluşur, ancak nöronun çıkışı eşiğe bağlı olarak 1 veya 0'dır. Aynı zamanda ağırlığı her zaman 1 olan bir önyargıdan oluşur. Aşağıdaki şekil, algılayıcının şematik bir temsilini verir.

Perceptron bu nedenle aşağıdaki üç temel öğeye sahiptir:

  • Links - Her zaman 1 ağırlığa sahip bir önyargı içeren bir ağırlık taşıyan bir dizi bağlantı bağlantılarına sahip olacaktır.

  • Adder - İlgili ağırlıkları ile çarpıldıktan sonra girdiyi ekler.

  • Activation function- Nöron çıkışını sınırlar. En temel etkinleştirme işlevi, iki olası çıkışı olan bir Heaviside adım işlevidir. Bu işlev, giriş pozitifse 1 ve herhangi bir negatif giriş için 0 döndürür.

Eğitim Algoritması

Perceptron ağı, tek çıkış ünitesi ve çoklu çıkış üniteleri için eğitilebilir.

Tek Çıkışlı Ünite için Eğitim Algoritması

Step 1 - Eğitimi başlatmak için aşağıdakileri başlatın -

  • Weights
  • Bias
  • $ \ Alpha $ öğrenme oranı

Kolay hesaplama ve basitlik için, ağırlıklar ve önyargı 0'a ve öğrenme hızı 1'e eşit ayarlanmalıdır.

Step 2 - Durdurma koşulu doğru olmadığında 3-8 adımlarına devam edin.

Step 3 - Her eğitim vektörü için adım 4-6'ya devam edin x.

Step 4 - Her bir giriş birimini aşağıdaki şekilde etkinleştirin -

$$ x_ {i} \: = \: s_ {i} \ :( i \: = \: 1 \: - \: n) $$

Step 5 - Şimdi net girdiyi aşağıdaki ilişkiyle elde edin -

$$ y_ {in} \: = \: b \: + \: \ displaystyle \ sum \ limits_ {i} ^ n x_ {i}. \: w_ {i} $$

Buraya ‘b’ önyargı ve ‘n’ giriş nöronlarının toplam sayısıdır.

Step 6 - Nihai çıktıyı elde etmek için aşağıdaki aktivasyon işlevini uygulayın.

$$ f (y_ {in}) \: = \: \ begin {case} 1 & if \: y_ {in} \:> \: \ theta \\ 0 & if \: - \ theta \: \ leqslant \ : y_ {in} \: \ leqslant \: \ theta \\ - 1 & if \: y_ {in} \: <\: - \ theta \ end {case} $$

Step 7 - Ağırlığı ve eğilimi aşağıdaki şekilde ayarlayın -

Case 1 - eğer y ≠ t sonra,

$$ w_ {i} (yeni) \: = \: w_ {i} (eski) \: + \: \ alpha \: tx_ {i} $$

$$ b (yeni) \: = \: b (eski) \: + \: \ alpha t $$

Case 2 - eğer y = t sonra,

$$ w_ {i} (yeni) \: = \: w_ {i} (eski) $$

$$ b (yeni) \: = \: b (eski) $$

Buraya ‘y’ gerçek çıktı ve ‘t’ istenen / hedef çıktıdır.

Step 8 - Ağırlıkta herhangi bir değişiklik olmadığında meydana gelebilecek durma koşulunu test edin.

Çoklu Çıkış Üniteleri için Eğitim Algoritması

Aşağıdaki diyagram, çoklu çıktı sınıfları için perceptron mimarisidir.

Step 1 - Eğitimi başlatmak için aşağıdakileri başlatın -

  • Weights
  • Bias
  • $ \ Alpha $ öğrenme oranı

Kolay hesaplama ve basitlik için, ağırlıklar ve önyargı 0'a ve öğrenme hızı 1'e eşit ayarlanmalıdır.

Step 2 - Durdurma koşulu doğru olmadığında 3-8 adımlarına devam edin.

Step 3 - Her eğitim vektörü için adım 4-6'ya devam edin x.

Step 4 - Her bir giriş birimini aşağıdaki şekilde etkinleştirin -

$$ x_ {i} \: = \: s_ {i} \ :( i \: = \: 1 \: - \: n) $$

Step 5 - Aşağıdaki ilişkiyle net girdiyi elde edin -

$$ y_ {in} \: = \: b \: + \: \ displaystyle \ sum \ limits_ {i} ^ n x_ {i} \: w_ {ij} $$

Buraya ‘b’ önyargı ve ‘n’ giriş nöronlarının toplam sayısıdır.

Step 6 - Her bir çıktı birimi için son çıktıyı elde etmek için aşağıdaki etkinleştirme işlevini uygulayın j = 1 to m -

$$ f (y_ {in}) \: = \: \ begin {case} 1 & if \: y_ {inj} \:> \: \ theta \\ 0 & if \: - \ theta \: \ leqslant \ : y_ {inj} \: \ leqslant \: \ theta \\ - 1 & if \: y_ {inj} \: <\: - \ theta \ end {case} $$

Step 7 - Ağırlığı ve önyargıyı ayarlayın. x = 1 to n ve j = 1 to m aşağıdaki gibi -

Case 1 - eğer yj ≠ tj sonra,

$$ w_ {ij} (yeni) \: = \: w_ {ij} (eski) \: + \: \ alpha \: t_ {j} x_ {i} $$

$$ b_ {j} (yeni) \: = \: b_ {j} (eski) \: + \: \ alpha t_ {j} $$

Case 2 - eğer yj = tj sonra,

$$ w_ {ij} (yeni) \: = \: w_ {ij} (eski) $$

$$ b_ {j} (yeni) \: = \: b_ {j} (eski) $$

Buraya ‘y’ gerçek çıktı ve ‘t’ istenen / hedef çıktıdır.

Step 8 - Ağırlıkta bir değişiklik olmadığında gerçekleşecek olan durma koşulunu test edin.

Uyarlanabilir Doğrusal Nöron (Adaline)

Uyarlanabilir Doğrusal Nöron anlamına gelen Adaline, tek bir doğrusal birime sahip bir ağdır. Widrow ve Hoff tarafından 1960 yılında geliştirilmiştir. Adaline ile ilgili bazı önemli noktalar aşağıdaki gibidir -

  • Bipolar aktivasyon işlevini kullanır.

  • Gerçek çıktı ile istenen / hedef çıktı arasındaki Ortalama Kareli Hatayı (MSE) en aza indirmek için eğitim için delta kuralını kullanır.

  • Ağırlıklar ve önyargı ayarlanabilir.

Mimari

Adalin'in temel yapısı, gerçek çıktının istenen / hedef çıktıyla karşılaştırıldığı ekstra bir geri bildirim döngüsüne sahip olan algılayıcıya benzer. Eğitim algoritması bazında karşılaştırmanın ardından ağırlıklar ve önyargı güncellenecektir.

Eğitim Algoritması

Step 1 - Eğitimi başlatmak için aşağıdakileri başlatın -

  • Weights
  • Bias
  • $ \ Alpha $ öğrenme oranı

Kolay hesaplama ve basitlik için, ağırlıklar ve önyargı 0'a ve öğrenme hızı 1'e eşit ayarlanmalıdır.

Step 2 - Durdurma koşulu doğru olmadığında 3-8 adımlarına devam edin.

Step 3 - Her bipolar eğitim çifti için 4-6. Adıma devam edin s:t.

Step 4 - Her bir giriş birimini aşağıdaki şekilde etkinleştirin -

$$ x_ {i} \: = \: s_ {i} \ :( i \: = \: 1 \: - \: n) $$

Step 5 - Aşağıdaki ilişkiyle net girdiyi elde edin -

$$ y_ {in} \: = \: b \: + \: \ displaystyle \ sum \ limits_ {i} ^ n x_ {i} \: w_ {i} $$

Buraya ‘b’ önyargı ve ‘n’ giriş nöronlarının toplam sayısıdır.

Step 6 - Nihai çıktıyı elde etmek için aşağıdaki aktivasyon işlevini uygulayın -

$$ f (y_ {in}) \: = \: \ begin {case} 1 & if \: y_ {in} \: \ geqslant \: 0 \\ - 1 & if \: y_ {in} \: < \: 0 \ end {case} $$

Step 7 - Ağırlığı ve eğilimi aşağıdaki şekilde ayarlayın -

Case 1 - eğer y ≠ t sonra,

$$ w_ {i} (yeni) \: = \: w_ {i} (eski) \: + \: \ alpha (t \: - \: y_ {in}) x_ {i} $$

$$ b (yeni) \: = \: b (eski) \: + \: \ alpha (t \: - \: y_ {in}) $$

Case 2 - eğer y = t sonra,

$$ w_ {i} (yeni) \: = \: w_ {i} (eski) $$

$$ b (yeni) \: = \: b (eski) $$

Buraya ‘y’ gerçek çıktı ve ‘t’ istenen / hedef çıktıdır.

$ (t \: - \; y_ {in}) $ hesaplanan hatadır.

Step 8 - Ağırlıkta herhangi bir değişiklik olmadığında veya antrenman sırasında meydana gelen en yüksek ağırlık değişikliğinin belirtilen toleranstan daha küçük olduğunda meydana gelecek olan durma koşulunu test edin.

Çoklu Uyarlanabilir Doğrusal Nöron (Madaline)

Çoklu Uyarlanabilir Doğrusal Nöron anlamına gelen Madaline, paralel olarak birçok Adalin'den oluşan bir ağdır. Tek bir çıkış ünitesine sahip olacaktır. Madaline ile ilgili bazı önemli noktalar aşağıdaki gibidir -

  • Tıpkı Adalin'in giriş ile Madaline katmanı arasında gizli bir birim olarak hareket edeceği çok katmanlı bir algılayıcı gibidir.

  • Adaline mimarisinde gördüğümüz gibi, giriş ve Adaline katmanları arasındaki ağırlıklar ve önyargı ayarlanabilir.

  • Adaline ve Madaline katmanlarının sabit ağırlıkları ve 1 önyargıları vardır.

  • Delta kuralı yardımı ile eğitim yapılabilir.

Mimari

Madaline mimarisi şunlardan oluşur: “n” giriş katmanının nöronları, “m”Adaline katmanının nöronları ve Madaline katmanının 1 nöronu. Adaline katmanı, girdi katmanı ile çıktı katmanı, yani Madaline katmanı arasında olduğu için gizli katman olarak düşünülebilir.

Eğitim Algoritması

Şimdiye kadar, yalnızca giriş ve Adaline katmanı arasındaki ağırlıkların ve önyargının ayarlanacağını ve Adaline ile Madaline katmanı arasındaki ağırlıkların ve önyargının sabitlendiğini biliyoruz.

Step 1 - Eğitimi başlatmak için aşağıdakileri başlatın -

  • Weights
  • Bias
  • $ \ Alpha $ öğrenme oranı

Kolay hesaplama ve basitlik için, ağırlıklar ve önyargı 0'a ve öğrenme hızı 1'e eşit ayarlanmalıdır.

Step 2 - Durdurma koşulu doğru olmadığında 3-8 adımlarına devam edin.

Step 3 - Her bipolar eğitim çifti için 4-6. Adıma devam edin s:t.

Step 4 - Her bir giriş birimini aşağıdaki şekilde etkinleştirin -

$$ x_ {i} \: = \: s_ {i} \ :( i \: = \: 1 \: - \: n) $$

Step 5 - Her bir gizli katmanda, yani aşağıdaki ilişkiyle Adaline katmanında net girdiyi elde edin -

$$ Q_ {inj} \: = \: b_ {j} \: + \: \ displaystyle \ sum \ limits_ {i} ^ n x_ {i} \: w_ {ij} \: \: \: j \: = \: 1 \: - \: m $$

Buraya ‘b’ önyargı ve ‘n’ giriş nöronlarının toplam sayısıdır.

Step 6 - Adaline ve Madaline katmanında son çıktıyı elde etmek için aşağıdaki aktivasyon işlevini uygulayın -

$$ f (x) \: = \: \ start {case} 1 & if \: x \: \ geqslant \: 0 \\ - 1 & if \: x \: <\: 0 \ end {case} $ $

Gizli (Adaline) biriminde çıktı

$$ Q_ {j} \: = \: f (Q_ {inj}) $$

Ağın nihai çıkışı

$$ y \: = \: f (y_ {inç}) $$

i.e. $ \: \: y_ {inj} \: = \: b_ {0} \: + \: \ sum_ {j = 1} ^ m \: Q_ {j} \: v_ {j} $

Step 7 - Hatayı hesaplayın ve ağırlıkları aşağıdaki gibi ayarlayın -

Case 1 - eğer y ≠ t ve t = 1 sonra,

$$ w_ {ij} (yeni) \: = \: w_ {ij} (eski) \: + \: \ alpha (1 \: - \: Q_ {inj}) x_ {i} $$

$$ b_ {j} (yeni) \: = \: b_ {j} (eski) \: + \: \ alpha (1 \: - \: Q_ {inj}) $$

Bu durumda ağırlıklar şu tarihte güncellenecektir: Qj net girdinin 0'a yakın olduğu yer, çünkü t = 1.

Case 2 - eğer y ≠ t ve t = -1 sonra,

$$ w_ {ik} (yeni) \: = \: w_ {ik} (eski) \: + \: \ alpha (-1 \: - \: Q_ {mürekkep}) x_ {i} $$

$$ b_ {k} (yeni) \: = \: b_ {k} (eski) \: + \: \ alpha (-1 \: - \: Q_ {mürekkep}) $$

Bu durumda ağırlıklar şu tarihte güncellenecektir: Qk net girdinin pozitif olduğu yer, çünkü t = -1.

Buraya ‘y’ gerçek çıktı ve ‘t’ istenen / hedef çıktıdır.

Case 3 - eğer y = t sonra

Ağırlıklarda değişiklik olmaz.

Step 8 - Ağırlıkta herhangi bir değişiklik olmadığında veya antrenman sırasında meydana gelen en yüksek ağırlık değişikliğinin belirtilen toleranstan daha küçük olduğunda meydana gelecek olan durma koşulunu test edin.

Geri Yayılım Sinir Ağları

Back Propagation Neural (BPN), giriş katmanı, en az bir gizli katman ve çıkış katmanından oluşan çok katmanlı bir sinir ağıdır. Adından da anlaşılacağı gibi, bu ağda geri yayılma gerçekleşecek. Çıktı katmanında hedef çıktı ile gerçek çıktı karşılaştırılarak hesaplanan hata, girdi katmanına doğru geri yayılacaktır.

Mimari

Şemada gösterildiği gibi, BPN'nin mimarisi, üzerlerinde ağırlık bulunan birbirine bağlı üç katmana sahiptir. Gizli katmanın yanı sıra çıktı katmanı da üzerlerinde ağırlığı her zaman 1 olan önyargıya sahiptir. Diyagramdan da anlaşılacağı gibi, BPN'nin çalışması iki aşamalıdır. Bir faz sinyali giriş katmanından çıkış katmanına gönderir ve diğer faz geri hatayı çıkış katmanından giriş katmanına yayar.

Eğitim Algoritması

Eğitim için BPN, ikili sigmoid aktivasyon fonksiyonunu kullanacaktır. BPN'nin eğitimi aşağıdaki üç aşamadan oluşacaktır.

  • Phase 1 - İleri Besleme Aşaması

  • Phase 2 - Hatanın Geri Yayılması

  • Phase 3 - Ağırlıkların güncellenmesi

Tüm bu adımlar algoritmada aşağıdaki gibi sonuçlandırılacaktır.

Step 1 - Eğitimi başlatmak için aşağıdakileri başlatın -

  • Weights
  • $ \ Alpha $ öğrenme oranı

Kolay hesaplama ve basitlik için bazı küçük rastgele değerler alın.

Step 2 - Durdurma koşulu doğru olmadığında 3-11 adımlarına devam edin.

Step 3 - Her antrenman çifti için adım 4-10'a devam edin.

Faz 1

Step 4 - Her giriş birimi giriş sinyalini alır xi ve onu herkes için gizli birime gönderir i = 1 to n

Step 5 - Aşağıdaki ilişkiyi kullanarak gizli birimdeki net girdiyi hesaplayın -

$$ Q_ {inj} \: = \: b_ {0j} \: + \: \ sum_ {i = 1} ^ n x_ {i} v_ {ij} \: \: \: \: j \: = \ : 1 \: - \: p $$

Buraya b0j gizli birimdeki önyargı, vij ağırlık açık mı j gelen gizli katmanın birimi i giriş katmanının birimi.

Şimdi aşağıdaki aktivasyon fonksiyonunu uygulayarak net çıktıyı hesaplayın

$$ Q_ {j} \: = \: f (Q_ {inj}) $$

Gizli katman birimlerinin bu çıkış sinyallerini çıktı katmanı birimlerine gönderin.

Step 6 - Aşağıdaki ilişkiyi kullanarak çıktı katmanı birimindeki net girdiyi hesaplayın -

$$ y_ {mürekkep} \: = \: b_ {0k} \: + \: \ sum_ {j = 1} ^ p \: Q_ {j} \: w_ {jk} \: \: k \: = \ : 1 \: - \: m $$

Buraya b0k ⁡ çıktı birimindeki önyargıdır, wjk ağırlık açık mı k çıkış katmanının birimi j gizli katmanın birimi.

Aşağıdaki aktivasyon fonksiyonunu uygulayarak net çıktıyı hesaplayın

$$ y_ {k} \: = \: f (y_ {mürekkep}) $$

Faz 2

Step 7 - Hata düzeltme terimini, her bir çıktı biriminde alınan hedef modele uygun olarak aşağıdaki şekilde hesaplayın -

$$ \ delta_ {k} \: = \ :( t_ {k} \: - \: y_ {k}) f ^ {'} (y_ {mürekkep}) $$

Bu temelde, ağırlığı ve sapmayı aşağıdaki gibi güncelleyin -

$$ \ Delta v_ {jk} \: = \: \ alpha \ delta_ {k} \: Q_ {ij} $$

$$ \ Delta b_ {0k} \: = \: \ alpha \ delta_ {k} $$

Sonra $ \ delta_ {k} $ 'ı gizli katmana geri gönderin.

Step 8 - Artık her bir gizli birim, çıktı birimlerinden gelen delta girdilerinin toplamı olacaktır.

$$ \ delta_ {inj} \: = \: \ displaystyle \ sum \ limits_ {k = 1} ^ m \ delta_ {k} \: w_ {jk} $$

Hata terimi şu şekilde hesaplanabilir -

$$ \ delta_ {j} \: = \: \ delta_ {inj} f ^ {'} (Q_ {inj}) $$

Bu temelde, ağırlığı ve sapmayı aşağıdaki gibi güncelleyin -

$$ \ Delta w_ {ij} \: = \: \ alpha \ delta_ {j} x_ {i} $$

$$ \ Delta b_ {0j} \: = \: \ alpha \ delta_ {j} $$

3. Aşama

Step 9 - Her çıktı birimi (ykk = 1 to m) ağırlığı ve önyargıyı aşağıdaki gibi günceller -

$$ v_ {jk} (yeni) \: = \: v_ {jk} (eski) \: + \: \ Delta v_ {jk} $$

$$ b_ {0k} (yeni) \: = \: b_ {0k} (eski) \: + \: \ Delta b_ {0k} $$

Step 10 - Her çıktı birimi (zjj = 1 to p) ağırlığı ve önyargıyı aşağıdaki gibi günceller -

$$ w_ {ij} (yeni) \: = \: w_ {ij} (eski) \: + \: \ Delta w_ {ij} $$

$$ b_ {0j} (yeni) \: = \: b_ {0j} (eski) \: + \: \ Delta b_ {0j} $$

Step 11 - Ulaşılan epoch sayısı veya hedef çıkış gerçek çıkışla eşleşebilen durdurma koşulunu kontrol edin.

Genelleştirilmiş Delta Öğrenim Kuralı

Delta kuralı yalnızca çıktı katmanı için çalışır. Öte yandan, genelleştirilmiş delta kuralı olarak da adlandırılırback-propagation kural, gizli katmanın istenen değerlerini oluşturmanın bir yoludur.

Matematiksel Formülasyon

$ Y_ {k} \: = \: f (y_ {ink}) $ aktivasyon fonksiyonu için, hem gizli katmanda hem de çıktı katmanında net girdinin türetilmesi şu şekilde verilebilir:

$$ y_ {mürekkep} \: = \: \ displaystyle \ sum \ limits_i \: z_ {i} w_ {jk} $$

Ve $ \: \: y_ {inj} \: = \: \ sum_i x_ {i} v_ {ij} $

Şimdi en aza indirilmesi gereken hata

$$ E \: = \: \ frac {1} {2} \ displaystyle \ sum \ limits_ {k} \: [t_ {k} \: - \: y_ {k}] ^ 2 $$

Zincir kuralını kullanarak,

$$ \ frac {\ kısmi E} {\ kısmi w_ {jk}} \: = \: \ frac {\ kısmi} {\ kısmi w_ {jk}} (\ frac {1} {2} \ displaystyle \ toplamı \ limits_ {k} \: [t_ {k} \: - \: y_ {k}] ^ 2) $$

$$ = \: \ frac {\ kısmi} {\ kısmi w_ {jk}} \ lgroup \ frac {1} {2} [t_ {k} \: - \: t (y_ {mürekkep})] ^ 2 \ rgroup $$

$$ = \: - [t_ {k} \: - \: y_ {k}] \ frac {\ kısmi} {\ kısmi w_ {jk}} f (y_ {mürekkep}) $$

$$ = \: - [t_ {k} \: - \: y_ {k}] f (y_ {mürekkep}) \ frac {\ kısmi} {\ kısmi w_ {jk}} (y_ {mürekkep}) $$

$$ = \: - [t_ {k} \: - \: y_ {k}] f ^ {'} (y_ {mürekkep}) z_ {j} $$

Şimdi $ \ delta_ {k} \: = \: - [t_ {k} \: - \: y_ {k}] f ^ {'} (y_ {ink}) $ diyelim

Gizli birime bağlantılardaki ağırlıklar zj tarafından verilebilir -

$$ \ frac {\ kısmi E} {\ kısmi v_ {ij}} \: = \: - \ displaystyle \ sum \ limits_ {k} \ delta_ {k} \ frac {\ kısmi} {\ kısmi v_ {ij} } \ :( y_ {mürekkep}) $$

$ Y_ {ink} $ değerini koyarsak aşağıdakileri elde ederiz

$$ \ delta_ {j} \: = \: - \ displaystyle \ sum \ limits_ {k} \ delta_ {k} w_ {jk} f ^ {'} (z_ {inj}) $$

Ağırlık güncellemesi şu şekilde yapılabilir -

Çıkış ünitesi için -

$$ \ Delta w_ {jk} \: = \: - \ alpha \ frac {\ kısmi E} {\ kısmi w_ {jk}} $$

$$ = \: \ alpha \: \ delta_ {k} \: z_ {j} $$

Gizli birim için -

$$ \ Delta v_ {ij} \: = \: - \ alpha \ frac {\ kısmi E} {\ kısmi v_ {ij}} $$

$$ = \: \ alpha \: \ delta_ {j} \: x_ {i} $$