Capsule Neural Networks - Set di strati neurali annidati



Capsule Networks - Questo blog parla dei limiti delle reti neurali convoluzionali e di come Capsule Neural Networks risolve tali limitazioni.

Capsule Network:

Cos'è Capsule Networks? È fondamentalmente, una rete di un insieme di strati neurali annidati.

Ti consiglierei di consultare anche i seguenti blog:





Suppongo che voi ragazzi conosciate Convolutional Neural Networks (CNN). Qui, ti darò una piccola introduzione sullo stesso, in modo che io possa discutere i limiti delle CNN.

Puoi anche fare riferimento al video sottostante sulla rete neurale convoluzionale.



Convolutional Neural Networks (CNN)

Le reti neurali convoluzionali sono fondamentalmente una pila di vari strati di neuroni artificiali, che viene utilizzata per la visione artificiale. Di seguito, ho menzionato questi livelli:

Convolutional Neural Network - Capsule Neural Network - Edureka

Strato convoluzionale: Quando utilizziamo le reti neurali Feedforward (Multi Layer Perceptron) per la classificazione delle immagini, ci sono molte sfide con esso. La sfida più frustrante è che introduce molti parametri, considera il video tutorial sulla CNN.



Per vincere questa sfida Livello di convoluzione è stato presentato. si presume che i pixel che sono spazialmente più vicini “coopereranno” per formare una particolare caratteristica di interesse molto più di quelli agli angoli opposti dell'immagine. Inoltre, se una particolare caratteristica (più piccola) risulta essere di grande importanza quando si definisce l'etichetta di un'immagine, sarà altrettanto importante se questa caratteristica è stata trovata ovunque all'interno dell'immagine, indipendentemente dalla posizione.

Livello ReLU: La funzione di trasformazione Rectified Linear Unit (ReLU) attiva un nodo solo se l'ingresso è al di sopra di una certa quantità, mentre l'ingresso è sotto zero l'uscita è zero, ma quando l'ingresso sale sopra una certa soglia ha una relazione lineare con la variabile dipendente.

  • In questo livello rimuoviamo ogni valore negativo dalle immagini filtrate e lo sostituiamo con zero
  • Questo viene fatto per evitare che i valori si sommino a zero

Livello di raggruppamento: Viene utilizzato per eseguire il downsampling, che consuma porzioni piccole e (di solito) disgiunte dell'immagine e le aggrega in un unico valore. Esistono diversi schemi possibili per l'aggregazione: l'essere più popolare Max-Pooling , dove viene preso il valore massimo di pixel all'interno di ogni blocco. Rende la rete invariante a piccole trasformazioni, distorsioni e traslazioni nell'immagine in ingresso (una piccola distorsione in ingresso non cambierà l'output di Pooling - poiché prendiamo il valore massimo / medio in un vicinato locale).

Livello completamente connesso: Questo strato calcolerà i punteggi di classe, dove ciascuno dei numeri corrisponde a un punteggio di classe. Come con le reti neurali ordinarie e come suggerisce il nome, ogni neurone in questo strato sarà connesso a tutti i neuroni nel volume precedente. In poche parole, esegue la classifica finale.

In questo modo, ConvNets trasforma l'immagine originale strato per strato dai valori dei pixel originali ai punteggi finali della classe.

Questa era una brevissima introduzione alle reti neurali convoluzionali, ti consiglierei comunque di dare un'occhiata al video della CNN che ho incorporato in questo post.

In questo blog di Capsule Networks, parlerò ora di alcune limitazioni delle reti neurali convoluzionali

Limitazioni delle reti neurali convoluzionali:

Bene, lasciatemi spiegare questo con un'analogia.

Supponiamo che ci sia un essere umano, i cui occhi possono rilevare le caratteristiche di varie immagini. Consideriamo il volto di un essere umano come esempio. Quindi, questo sfortunato ragazzo può identificare varie caratteristiche come occhi, naso ecc. Ma non è in grado di identificare le relazioni spaziali tra le caratteristiche (prospettiva, dimensione, orientamento). Ad esempio, la seguente immagine potrebbe ingannare quel ragazzo classificandola come un buon schizzo di un volto umano.

Questo è il problema anche con le reti neurali convoluzionali. La CNN è brava a rilevare le caratteristiche, ma attiverà erroneamente il neurone per il rilevamento del viso. Questo perché è meno efficace nell'esplorare le relazioni spaziali tra le caratteristiche.

Un semplice modello CNN può estrarre correttamente le caratteristiche di naso, occhi e bocca ma attiverà erroneamente il neurone per il rilevamento del viso. Senza rendersi conto della mancata corrispondenza nell'orientamento spaziale e nelle dimensioni, l'attivazione per il rilevamento del volto sarà troppo alta.

Bene, questa limitazione è dovuta al livello Max Pooling.

Il pooling massimo in una CNN gestisce la varianza traslazionale. Anche una funzione è leggermente spostata, se è ancora all'interno della finestra di pooling, può comunque essere rilevata. Tuttavia, questo approccio mantiene solo la caratteristica massima (la più dominante) e butta via le altre.

ereditarietà multipla in java con esempio

Quindi, l'immagine del viso mostrata sopra sarà classificata come una faccia normale. Lo strato di raggruppamento aggiunge anche questo tipo di invarianza.

Questa non è mai stata l'intenzione del pooling layer. Ciò che il pooling avrebbe dovuto fare era introdurre invarianze posizionali, orientative e proporzionali.

In realtà, questo livello di raggruppamento aggiunge tutti i tipi di invarianza di posizione. Come puoi vedere anche nel diagramma sopra, porta al dilemma di rilevare correttamente il viso.

Vediamo qual è la soluzione proposta da Geoffrey Hinton .

Come risolvere questo problema?

Ora, immaginiamo che ogni neurone contenga la probabilità e le proprietà delle caratteristiche. Ad esempio, restituisce un vettore contenente [verosimiglianza, orientamento, dimensione]. Con queste informazioni spaziali, possiamo rilevare la coerenza nell'orientamento e nelle dimensioni tra le caratteristiche del naso, degli occhi e delle orecchie e quindi produrre un'attivazione molto inferiore per il rilevamento del viso.

Nel documento pubblicato da Geoffrey Hinton , questi tipi di neuroni sono chiamati capsule. Queste capsule emettono un vettore invece di un singolo valore scaler.

Vorrei mettere un po 'di luce su cosa sono i Capsule Network.

Cosa sono i Capsule Network?

Capsule è fondamentalmente un insieme di strati neurali annidati. Lo stato dei neuroni all'interno di una capsula cattura le varie proprietà come: posa (posizione, dimensione, orientamento), deformazione, velocità, struttura ecc. Di un'entità all'interno di un'immagine.

Invece di catturare una caratteristica con una variante specifica, una capsula viene addestrata per catturare la probabilità di una caratteristica e la sua variante. Quindi, lo scopo della capsula non è solo quello di rilevare una caratteristica, ma anche di addestrare il modello ad apprendere la variante.

In modo tale che la stessa capsula possa rilevare la stessa classe di oggetti con orientamenti diversi (ad esempio, ruotare in senso orario):

Possiamo dire che funziona sull'equivarianza e non sull'invarianza.

Invarianza: è il rilevamento delle caratteristiche indipendentemente dalle varianti. Ad esempio, un neurone di rilevamento del naso rileva un naso indipendentemente dall'orientamento.

Equivarianza: è il rilevamento di oggetti che possono trasformarsi tra loro (ad esempio, il rilevamento di volti con orientamenti diversi). Intuitivamente, la rete della capsula rileva che il viso è ruotato a destra di 31 ° (equivarianza) anziché realizzare il viso abbinato a una variante ruotata di 31 °. Forzando il modello ad apprendere la variante di funzionalità in una capsula, possiamo estrapolare possibili varianti in modo più efficace con meno dati di addestramento. Inoltre, possiamo respingere gli avversari in modo più efficace.

Una capsula emette un vettore per rappresentare l'esistenza dell'entità. L'orientamento del vettore rappresenta le proprietà dell'entità.

Il vettore viene inviato a tutti i possibili genitori nella rete neurale. Per ogni possibile genitore, una capsula può trovare un vettore di previsione. Il vettore di previsione viene calcolato in base alla moltiplicazione del proprio peso e di una matrice di peso. Qualunque genitore abbia il più grande prodotto vettoriale di previsione scalare, aumenta il legame capsula. Il resto dei genitori diminuisce il legame. Questo è chiamato come Instradamento per accordo .

Questo è sicuramente un approccio migliore del max pooling, in cui il routing è basato sulla caratteristica più forte rilevata nel livello inferiore.

Dopo questo c'è una funzione di schiacciamento che viene aggiunta. Questo viene fatto per introdurre la non linearità. Questa funzione di schiacciamento viene applicata all'output vettoriale di ciascuna capsula.

Lascia che ti dica ora come funzionano i Capsule Network.

Come funzionano i Capsule Network?

Facciamo un passo indietro. In una rete completamente connessa, l'output di ciascun neurone è la somma ponderata degli input.

Ora vediamo cosa succede in Capsule Networks.

Rete neurale a capsula:

Consideriamo una Capsule Neural Network in cui 'uio'È il vettore di attività della capsula'io'nello strato sottostante.

Passaggio - 1: applicare una matrice di trasformazioneINijall'uscita della capsula uio dello strato precedente. Ad esempio, con una matrice m × k, trasformiamo una k-Duio a un m-Du ^j | i. ((m × k) × (k × 1) = m × 1).

È la previsione ( votazione ) dalla capsula 'i' all'uscita della capsula 'j' sopra. 'Vj'È il vettore di attività della capsula'j ’nello strato sopra

Passaggio 2: calcolare una somma ponderata sjcon i pesicij.cijsono i coefficienti di accoppiamento. La somma di questi coefficienti è uguale a uno. È il parametro effettivo che funziona sulla relazione del gruppo di capsule di cui abbiamo parlato prima.

Passaggio 3: nelle reti neurali convoluzionali abbiamo utilizzato la funzione ReLU. Qui applicheremo una funzione di schiacciamento per scalare il vettore tra 0 e la lunghezza dell'unità. Riduce i vettori piccoli a zero e i vettori lunghi a vettori unitari. Pertanto la probabilità di ciascuna capsula è limitata tra zero e uno.

È la previsione ( votazione ) dalla capsula 'i' all'uscita della capsula 'j' sopra. Se il vettore di attività ha una stretta somiglianza con il vettore di previsione, concludiamo che la capsula 'io'è altamente correlato alla capsula 'j ’. (Ad esempio, la capsula nasale è altamente correlata alla capsula facciale). Tale somiglianza viene misurata utilizzando il prodotto scalare del vettore di previsione e attività. Pertanto, la somiglianza tiene conto sia della probabilità che delle proprietà delle caratteristiche. (invece della semplice probabilità nei neuroni).

Passaggio - 4: calcolo del punteggio di pertinenza 'bij'. Sarà il prodotto scalare del vettore di attività e del vettore di previsione. I coefficienti di accoppiamentociojè calcolato come il softmax dibioj:

Il coefficiente di accoppiamento cijè calcolato come il softmax di bij.

Questa Bijviene aggiornato iterativamente in più iterazioni.

Questo è chiamato come Instradamento per accordo .

Il diagramma sottostante è un esempio:

Dopo questo blog su Capsule Networks, creerò un blog sull'implementazione di Capsule Neural Network utilizzando TensorFlow.

Spero vi siate divertiti a leggere questo blog sui network delle capsule, date un'occhiata al da Edureka, una società di formazione online affidabile con una rete di oltre 250.000 studenti soddisfatti sparsi in tutto il mondo. Il corso di formazione sulla certificazione Edureka Deep Learning con TensorFlow aiuta gli studenti a diventare esperti nella formazione e nell'ottimizzazione delle reti neurali di base e convoluzionali utilizzando progetti e incarichi in tempo reale insieme a concetti come la funzione SoftMax, le reti neurali con codificatore automatico, la macchina Boltzmann ristretta (RBM).

Hai domande per noi? Per favore menzionalo nella sezione commenti e ti risponderemo.