Aggiornamento dei pesi dei filtri in una CNN


13

Attualmente sto cercando di capire l'architettura di una CNN. Comprendo la convoluzione, il livello ReLU, il livello di pooling e il livello completamente connesso. Tuttavia, sono ancora confuso riguardo ai pesi.

In una normale rete neurale, ogni neurone ha il suo peso. Nello strato completamente connesso, ogni neurone avrebbe anche il suo peso. Ma ciò che non so è se ogni filtro ha il suo peso. Devo solo aggiornare i pesi nel livello completamente connesso durante la propagazione posteriore? O tutti i filtri hanno un peso separato che devo aggiornare?

Risposte:


12

In una normale rete neurale, ogni neurone ha il suo peso.

Questo non è corretto Ogni connessione tra i neuroni ha il suo peso. In una rete completamente connessa ogni neurone sarà associato a molti pesi diversi. Se ci sono n0input (cioè n0neuroni nel livello precedente) in un layer con n1neuroni in una rete completamente connessa, quel layer avrà n0*n1pesi, senza contare alcun termine di polarizzazione.

Dovresti essere in grado di vederlo chiaramente in questo diagramma di una rete completamente connessa da CS231n . Ogni bordo che vedi rappresenta un peso addestrabile diverso:

inserisci qui la descrizione dell'immagine

I livelli convoluzionali sono diversi in quanto hanno un numero fisso di pesi governati dalla scelta della dimensione del filtro e del numero di filtri, ma indipendentemente dalla dimensione dell'input.

Ogni filtro ha un peso separato in ciascuna posizione della sua forma. Quindi, se usi due filtri 3x3x3, avrai 54 pesi, anche in questo caso senza contare il bias. Questo è illustrato in un secondo diagramma di CS231n :

inserisci qui la descrizione dell'immagine

I pesi del filtro devono assolutamente essere aggiornati in backpropagation, poiché è così che imparano a riconoscere le caratteristiche dell'input. Se leggi la sezione intitolata "Visualizzazione delle reti neurali" qui vedrai come i livelli di una CNN apprendono caratteristiche sempre più complesse dell'immagine di input man mano che approfondisci la rete. Questi sono tutti appresi regolando i pesi del filtro attraverso la backpropagation.


mmm il numero di pesi in ogni strato dipende anche dal numero di passi che i filtri prendono ... giusto?
Arnav Das,

2

Durante la propagazione posteriore, vengono aggiornati sia i livelli densi sia i livelli di convoluzione, ma i livelli di pool massimo non hanno alcun peso da aggiornare. I layer densi vengono aggiornati per aiutare la rete a classificarsi. I livelli di convoluzione vengono aggiornati per consentire alla rete di apprendere le funzionalità stesse. Poiché non hai posto la domanda, aggiungo solo un link per te se vuoi saperne di più. C'è una buona spiegazione per la propagazione posteriore qui che può essere utile per te.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.