CNN Flashcards
Cos’è una CNN?
Una CNN, o rete neurale convoluzionale (Convolutional Neural Network), è un tipo di rete neurale artificiale progettata per l’elaborazione di dati strutturati in forma di griglia, come immagini, segnali audio o dati 3D. Le CNN sono ampiamente utilizzate nell’ambito della visione artificiale e del riconoscimento di pattern.
La caratteristica distintiva delle CNN è l’uso di strati di convoluzione, che applicano operazioni di convoluzione sugli input per estrarre automaticamente caratteristiche rilevanti. Questi strati convoluzionali sono composti da un insieme di filtri o kernel che scansionano l’input spazialmente, calcolando la somma ponderata dei valori degli elementi dell’input coperti da ciascun filtro. Ciò permette alla rete di individuare pattern locali o caratteristiche specifiche, come bordi, linee, texture e forme, in diverse regioni dell’input.
Oltre agli strati convoluzionali, le CNN possono includere anche strati di pooling per ridurre la dimensione spaziale dell’input e ridurre il numero di parametri. Gli strati di pooling combinano le informazioni di più regioni dell’input tramite operazioni di aggregazione, come la media o il massimo, fornendo una rappresentazione ridotta ma significativa delle caratteristiche estratte.
Le CNN possono essere composte anche da strati completamente connessi o densi, che fungono da classificatori finali utilizzati per l’output previsto. Questi strati prendono le caratteristiche estratte dagli strati convoluzionali e le trasformano in una forma adatta per la classificazione o la regressione.
Cos’è una convolutional Layer?
Uno strato convoluzionale (convolutional layer) è un componente chiave di una rete neurale convoluzionale (CNN). È responsabile dell’estrazione delle caratteristiche da un input mediante l’applicazione di operazioni di convoluzione.
L’obiettivo principale di uno strato convoluzionale è identificare pattern locali o caratteristiche significative all’interno dell’input, come bordi, linee, texture o forme. Ciò avviene attraverso l’applicazione di un insieme di filtri o kernel convoluzionali che scorrono sull’input spazialmente e calcolano la somma ponderata dei valori degli elementi dell’input coperti da ciascun filtro.
Durante l’applicazione della convoluzione, il filtro viene moltiplicato punto per punto con la porzione corrispondente dell’input e i risultati vengono sommati per produrre un singolo valore di output. Questo processo viene ripetuto per ogni posizione spaziale dell’input, consentendo di generare una mappa delle caratteristiche, nota anche come feature map o mappa di attivazione.
L’operazione di convoluzione permette alla rete di acquisire informazioni locali e costruire rappresentazioni gerarchiche delle caratteristiche all’interno dell’input. Gli strati convoluzionali successivi possono apprendere caratteristiche più complesse combinando le caratteristiche estratte dai filtri precedenti.
Inoltre, gli strati convoluzionali possono anche includere operazioni di padding e stride. Il padding consiste nell’aggiungere zeri intorno ai bordi dell’input per preservare la dimensione spaziale durante la convoluzione. Lo stride, invece, determina il passo con cui il filtro si sposta sull’input durante l’applicazione della convoluzione. Lo stride maggiore di uno riduce la dimensione spaziale dell’output, mentre uno stride di uno mantiene la stessa dimensione.
Gli strati convoluzionali sono fondamentali nelle CNN poiché consentono di acquisire e rappresentare in modo efficiente le caratteristiche salienti dell’input. Sono ampiamente utilizzati nell’elaborazione di immagini, ma possono essere applicati anche ad altri tipi di dati strutturati, come segnali audio o dati 3D, per estrarre informazioni rilevanti per compiti di classificazione, regressione o altre attività di apprendimento automatico.
Cos’è zero padding?
Lo zero padding è una tecnica utilizzata nelle reti neurali convoluzionali (CNN) per espandere la dimensione spaziale dell’input aggiungendo zeri lungo i bordi dell’input originale. L’obiettivo principale del zero padding è preservare la dimensione spaziale dell’input durante l’applicazione delle operazioni di convoluzione.
Durante la convoluzione, il filtro (o kernel) scorre sull’input spazialmente e calcola la somma ponderata dei valori degli elementi dell’input coperti dal filtro. Tuttavia, senza padding, l’applicazione del filtro ridurrebbe gradualmente la dimensione spaziale dell’output rispetto all’input. Questo può portare a una perdita progressiva di informazioni spaziali e alla riduzione della risoluzione dell’immagine.
Per evitare questo problema, viene applicato lo zero padding. Questo processo comporta l’aggiunta di zeri lungo i bordi dell’input, prima dell’applicazione della convoluzione. Il numero di zeri da aggiungere viene determinato dalla dimensione del filtro e dal tipo di padding desiderato.
L’aggiunta di zeri intorno all’input ha l’effetto di creare una “cornice” di zeri che circonda i dati originali. Quando il filtro si sposta sull’input durante la convoluzione, i valori zeri non influenzano la somma ponderata dei valori dell’input, ma consentono di mantenere la dimensione spaziale dell’output uguale a quella dell’input originale.
Cos’è il pooling layer?
no strato di pooling, noto anche come strato di riduzione, è un componente delle reti neurali convoluzionali (CNN) utilizzato per ridurre la dimensione spaziale delle feature map ottenute dagli strati convoluzionali precedenti. Lo strato di pooling raggruppa le informazioni locali in regioni più grandi, riducendo così la complessità computazionale estraendo le caratteristiche principali.
L’operazione di pooling viene eseguita suddividendo l’input in regioni sovrapposte o non sovrapposte e applicando una funzione di aggregazione su ciascuna regione per ottenere un singolo valore rappresentativo. Le funzioni di aggregazione più comuni sono il max pooling, che seleziona il valore massimo all’interno di ogni regione, e il average pooling, che calcola la media dei valori all’interno di ogni regione.
Lo strato di pooling riduce la dimensione spaziale delle feature map mantenendo le informazioni più rilevanti. Ciò aiuta a ridurre il numero di parametri della rete e a controllare il fenomeno dell’overfitting, in cui la rete memorizza i dettagli specifici del set di addestramento che potrebbero non generalizzarsi bene a nuovi dati.
Inoltre, lo strato di pooling conferisce alle CNN una certa invarianza rispetto alle piccole traslazioni e deformazioni dell’input. Ciò significa che anche se l’oggetto di interesse si sposta leggermente nell’immagine, la rete sarà in grado di rilevarlo grazie alla capacità di pooling di preservare le caratteristiche principali indipendentemente dalla loro posizione precisa.
Un altro vantaggio dello strato di pooling è che riduce la dimensionalità delle feature map, semplificando la computazione successiva e accelerando il processo di addestramento.
Tuttavia, va notato che l’uso eccessivo o improprio dello strato di pooling può portare a una perdita di informazioni dettagliate, specialmente se le dimensioni delle regioni di pooling sono troppo grandi. Pertanto, è importante trovare un giusto equilibrio nell’uso dello strato di pooling in una CNN, considerando la specificità del problema e le caratteristiche dell’input. In alcune architetture moderne di CNN, lo strato di pooling è stato parzialmente sostituito da altre operazioni, come lo stride della convoluzione o le operazioni di pooling gerarchico.
Quali sono delle architetture CNN?
Esistono diverse architetture di reti neurali convoluzionali (CNN) che sono state sviluppate nel corso degli anni e hanno dimostrato ottimi risultati in una serie di compiti di visione artificiale. Ecco alcune delle architetture CNN più popolari:
LeNet-5: È una delle prime architetture di CNN sviluppate da Yann LeCun negli anni '90 per il riconoscimento di caratteri scritti a mano. È composta da strati convoluzionali, strati di pooling e strati completamente connessi. AlexNet: È stata una delle prime architetture di CNN ad avere un impatto significativo nella comunità di ricerca. È stata sviluppata da Alex Krizhevsky, Ilya Sutskever e Geoffrey Hinton nel 2012. AlexNet ha vinto il concorso ImageNet Large Scale Visual Recognition Challenge (ILSVRC) nel 2012, migliorando notevolmente le prestazioni rispetto ai metodi precedenti. AlexNet utilizza strati convoluzionali profondi, seguiti da strati di pooling e strati completamente connessi. VGGNet: È un'architettura proposta da Karen Simonyan e Andrew Zisserman nel 2014. VGGNet è noto per la sua struttura profonda, composta da numerosi strati convoluzionali di dimensione 3x3 con pooling 2x2. Ha dimostrato risultati eccellenti su diversi dataset di immagini. GoogLeNet (Inception): È un'architettura sviluppata da Christian Szegedy et al. nel 2014. GoogLeNet ha introdotto il concetto di blocchi di convoluzione "Inception", che utilizzano diverse dimensioni di filtri paralleli per estrarre caratteristiche a diverse scale. Questo ha permesso di ridurre il numero di parametri dell'architettura, migliorando l'efficienza computazionale. ResNet (Residual Network): È un'architettura introdotta da Kaiming He et al. nel 2015. ResNet ha risolto il problema del degrado del gradiente nelle reti neurali molto profonde introducendo i blocchi di connessioni residue. Queste connessioni consentono alle informazioni di propagarsi direttamente attraverso gli strati senza subire una degradazione significativa. DenseNet: È un'architettura proposta da Gao Huang et al. nel 2016. DenseNet collega ogni strato a tutti gli strati successivi nella rete, favorendo un flusso di informazioni denso e un migliore sfruttamento delle caratteristiche estratte. MobileNet: È un'architettura ottimizzata per dispositivi mobili con risorse computazionali limitate. È stato introdotto da Andrew G. Howard et al. nel 2017. MobileNet utilizza convoluzioni di profondità separata per ridurre il costo computazionale, consentendo una maggiore efficienza su dispositivi con limiti di risorse.
Queste sono solo alcune delle architetture più note, ma l’evoluzione delle CNN continua e sono state proposte numerose varianti e architetture ibride per adattarsi a diversi compiti e requisiti