Rețele neuronale capsulare - Set de straturi neuronale imbricate



Rețele capsulare - Acest blog vorbește despre limitările rețelelor neuronale convoluționale și despre modul în care rețelele neuronale capsule rezolvă aceste limitări.

Rețele capsule:

Ce este Capsule Networks? Este practic o rețea de seturi de straturi neuronale imbricate.

V-aș recomanda să parcurgeți și blogurile de mai jos:





Presupun că, voi cunoașteți rețelele neuronale convoluționale (CNN). Aici, vă voi oferi o mică introducere, pentru a putea discuta despre limitările CNN-urilor.

De asemenea, puteți consulta videoclipul de mai jos pe Rețeaua neuronală convoluțională.



Rețele neuronale convoluționale (CNN)

Rețelele neuronale convoluționale, sunt practic o grămadă de diferite straturi de neuroni artificiali, care este utilizată pentru viziunea computerizată. Mai jos, am menționat aceste straturi:

Rețea neuronală convoluțională - Rețea neuronală a capsulei - Edureka

Stratul convoluțional: Atunci când folosim rețelele neuronale Feedforward (Multi Layer Perceptron) pentru clasificarea imaginilor, există multe provocări. Cea mai frustrantă provocare este că, introduce o mulțime de parametri, ia în considerare tutorialul video de pe CNN.



Pentru a depăși această provocare Stratul de convoluție a fost introdus. se presupune că pixelii care sunt spațial mai apropiați vor „coopera” pentru a forma o trăsătură particulară de interes mult mai mult decât cei de pe colțurile opuse ale imaginii. De asemenea, dacă se constată că o anumită caracteristică (mai mică) are o mare importanță la definirea etichetei unei imagini, va fi la fel de importantă, dacă această caracteristică a fost găsită oriunde în interiorul imaginii, indiferent de locație.

ReLU Layer: Funcția de transformare a unității liniare rectificate (ReLU) activează un nod numai dacă intrarea este peste o anumită cantitate, în timp ce intrarea este sub zero, ieșirea este zero, dar când intrarea crește peste un anumit prag, are o relație liniară cu variabilă dependentă.

  • În acest strat, eliminăm fiecare valoare negativă din imaginile filtrate și o înlocuim cu zero
  • Acest lucru se face pentru a evita valorile de la adunarea la zero

Stratul comun: Aceasta este utilizată pentru efectuarea eșantionării, care consumă fragmente mici și (de obicei) disjuncte ale imaginii și le agregă într-o singură valoare. Există mai multe scheme posibile pentru agregare - cea mai populară fiind Max-Pooling , unde se ia valoarea maximă a pixelilor din fiecare bucată. Face rețeaua invariantă la mici transformări, distorsiuni și traduceri în imaginea de intrare (o mică distorsiune la intrare nu va schimba ieșirea Pooling - deoarece luăm valoarea maximă / medie într-un cartier local).

Strat complet conectat: Acest strat va calcula scorurile clasei, unde fiecare dintre numere corespunde unui scor de clasă. La fel ca în rețelele neuronale obișnuite și după cum sugerează și numele, fiecare neuron din acest strat va fi conectat la toți neuronii din volumul anterior. Pe scurt, efectuează clasificarea finală.

În acest fel, ConvNets transformă imaginea originală strat cu strat de la valorile originale ale pixelilor la scorurile finale ale clasei.

Aceasta a fost o scurtă introducere la Rețelele neuronale convoluționale, aș recomanda totuși să aruncați o privire la videoclipul CNN pe care l-am încorporat în această postare.

În acest blog Capsule Networks, voi discuta acum câteva limitări ale rețelelor neuronale convoluționale

Limitările rețelelor neuronale convoluționale:

Ei bine, permiteți-mi să explic acest lucru cu o analogie.

Să presupunem că există un om, ai cărui ochi pot detecta trăsăturile diferitelor imagini. Să considerăm chipul unui om ca exemplu. Deci, acest tip nefericit poate identifica diverse trăsături, cum ar fi, ochi, nas etc., dar nu poate identifica relațiile spațiale dintre trăsături (perspectivă, dimensiune, orientare). De exemplu, imaginea următoare îl poate păcăli pe tipul respectiv în clasificarea ei ca o schiță bună a chipului uman.

Aceasta este și problema cu rețelele neuronale convoluționale. CNN este bun la detectarea caracteristicilor, dar va activa greșit neuronul pentru detectarea feței. Acest lucru se datorează faptului că este mai puțin eficient în explorarea relațiilor spațiale dintre caracteristici.

Un model simplu CNN poate extrage corect caracteristicile pentru nas, ochi și gură, dar va activa greșit neuronul pentru detectarea feței. Fără să realizăm potrivirea greșită în orientarea și dimensiunea spațială, activarea pentru detectarea feței va fi prea mare.

Ei bine, această limitare se datorează stratului Max Pooling.

substring în server SQL cu exemplu

Ponderea maximă într-un CNN gestionează varianța de traducere. Chiar și o caracteristică este ușor mutată, dacă se află încă în fereastra de pooling, ea poate fi totuși detectată. Cu toate acestea, această abordare păstrează doar caracteristica maximă (cea mai dominantă) și le aruncă pe celelalte.

Deci, imaginea feței prezentată mai sus va fi clasificată ca o față normală. Stratul de pooling adaugă, de asemenea, acest tip de invarianță.

Aceasta nu a fost niciodată intenția stratului de punere în comun. Ceea ce trebuia să facă pooling-ul este să introducă invarianțe poziționale, orientative, proporționale.

În realitate, acest strat de adunare adaugă tot felul de invarianță pozițională. După cum puteți vedea și în diagrama de mai sus, aceasta duce la dilema detectării corecte a feței.

Să vedem care este soluția propusă de Geoffrey Hinton .

Cum se rezolvă această problemă?

Acum, ne imaginăm că fiecare neuron conține probabilitatea, precum și proprietățile caracteristicilor. De exemplu, generează un vector care conține [probabilitate, orientare, dimensiune]. Cu aceste informații spațiale, putem detecta neconcordanța în orientare și dimensiune între caracteristicile nasului, ochilor și urechii și, prin urmare, producem o activare mult mai mică pentru detectarea feței.

În ziarul lansat de Geoffrey Hinton , aceste tipuri de neuroni se numesc capsule. Aceste capsule produc un vector în loc de o singură valoare scaler.

Permiteți-mi să pun câteva lumini pe ceea ce sunt Capsule Networks.

Ce sunt rețelele Capsule?

Capsula este practic un set de straturi neuronale imbricate. Starea neuronilor din interiorul unei capsule surprinde diferitele proprietăți precum - poziția (poziția, dimensiunea, orientarea), deformarea, viteza, textura etc., ale unei entități din interiorul unei imagini.

În loc să surprindă o caracteristică cu o variantă specifică, o capsulă este antrenată pentru a surprinde asemănarea unei caracteristici și a variantei acesteia. Deci, scopul capsulei nu este doar detectarea unei caracteristici, ci și instruirea modelului pentru a învăța varianta.

Astfel, aceeași capsulă poate detecta aceeași clasă de obiecte cu orientări diferite (de exemplu, se rotește în sensul acelor de ceasornic):

Putem spune că funcționează pe echivarianță, nu pe invarianță.

Invarianță: este detectarea caracteristicilor indiferent de variante. De exemplu, un neuron de detectare a nasului detectează un nas indiferent de orientare.

Echivalență: este detectarea obiectelor care se pot transforma între ele (de exemplu, detectarea fețelor cu orientări diferite). Intuitiv, rețeaua capsulelor detectează că fața este rotită la dreapta cu 31 ° (echivarianță), mai degrabă decât realizează că fața se potrivește cu o variantă care este rotită cu 31 °. Forțând modelul să învețe varianta caracteristică într-o capsulă, putem extrapola posibilele variante mai eficient cu mai puține date de antrenament. În plus, putem respinge adversarii mai eficient.

O capsulă produce un vector pentru a reprezenta existența entității. Orientarea vectorului reprezintă proprietățile entității.

Vectorul este trimis tuturor părinților posibili din rețeaua neuronală. Pentru fiecare posibil părinte, o capsulă poate găsi un vector de predicție. Vectorul de predicție se calculează pe baza multiplicării greutății proprii și a unei matrice de greutate. Orice părinte are cel mai mare produs vector de predicție scalară, crește legătura capsulei. Restul părinților își scad legătura. Aceasta se numește ca Rutare prin acord .

Aceasta este cu siguranță o abordare mai bună decât pool-ul maxim, în care rutare se bazează pe cea mai puternică caracteristică detectată în stratul inferior.

După aceasta se adaugă o funcție de zdrobire. Acest lucru se face pentru a introduce neliniaritatea. Această funcție de zdrobire se aplică ieșirii vectoriale a fiecărei capsule.

Permiteți-mi să vă spun acum, cum funcționează Capsule Networks.

Cum funcționează rețelele capsule?

Să facem un pas înapoi. Într-o rețea complet conectată, ieșirea fiecărui neuron este suma ponderată a intrărilor.

Acum, să vedem ce se întâmplă în Capsule Networks.

Rețea neuronală capsulă:

Să luăm în considerare o rețea neuronală capsulă unde „ueu„Este vectorul de activitate pentru capsulă”eu 'în stratul de mai jos.

Pasul 1: Aplicați o matrice de transformareÎNijla ieșirea capsulei ueu a stratului anterior. De exemplu, cu o matrice m × k, transformăm un k-Dtueu la un m-Du ^j | i. ((m × k) × (k × 1) = m × 1).

Este predicția ( vot ) din capsula ‘i’ de pe ieșirea capsulei ‘j’ de mai sus. ‘Vj„Este vectorul de activitate pentru capsulă”j ’în stratul de mai sus

Pasul 2: Calculați o sumă ponderată sjcu greutățicij.cijsunt coeficienții de cuplare. Suma acestor coeficienți este egală cu unu. Este parametrul real care funcționează pe relația grupului de capsule despre care am vorbit mai devreme.

Pasul 3: în rețelele neuronale convoluționale am folosit funcția ReLU. Aici, vom aplica o funcție de zdrobire pentru a scala vectorul între 0 și lungimea unității. Reduce vectorii mici la zero și vectorii lungi la vectorii unitari. Prin urmare, probabilitatea fiecărei capsule este limitată între zero și unu.

Este predicția ( vot ) din capsula ‘i’ de pe ieșirea capsulei ‘j’ de mai sus. Dacă vectorul de activitate are o asemănare strânsă cu vectorul de predicție, concluzionăm că capsula „eu 'este foarte legat de capsula „j ’. (De exemplu, capsula nasului este strâns legată de capsula feței.) O astfel de similitudine se măsoară folosind produsul scalar al vectorului de predicție și activitate. Prin urmare, similaritatea ia în considerare atât similitudinea, cât și proprietățile caracteristicii. (în loc de doar similitudinea în neuroni).

Pasul 4: calculați scorul de relevanță „bij‘. Va fi produsul punct al vectorului de activitate și al vectorului de predicție. Coeficienții de cuplareceujeste calculat ca softmax albeuj:

Coeficientul de cuplare cijeste calculat ca softmax al lui bij.

Acest Bijeste actualizat iterativ în mai multe iterații.

Aceasta se numește ca Rutare prin acord .

Diagrama de mai jos este un exemplu:

După acest blog despre Capsule Networks, voi veni cu un blog despre implementarea Capsule Neural Network folosind TensorFlow.

Sper că v-a plăcut să citiți acest blog pe rețelele capsule, consultați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul. Cursul de învățare profundă Edureka cu certificare TensorFlow îi ajută pe cursanți să devină experți în formarea și optimizarea rețelelor neuronale de bază și convoluționale utilizând proiecte și atribuiri în timp real, împreună cu concepte precum funcția SoftMax, rețelele neuronale de auto-codificare, mașina restricționată Boltzmann (RBM).

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii și vă vom răspunde.