Lo strato convoluzionale è l'elemento costitutivo principale di una CNN ed è il punto in cui si verifica la maggior parte dei calcoli. Richiede pochi componenti, ovvero dati di input, un filtro e una mappa delle caratteristiche. Supponiamo che l'input sia un'immagine a colori, costituita da una matrice di pixel in 3D. Ciò significa che l'input avrà tre dimensioni: un'altezza, una larghezza e una profondità, che corrispondono all'RGB in un'immagine. Inoltre, è presente un rilevatore di caratteristiche, definito anche kernel o filtro, che si sposterà attraverso i campi recettivi dell'immagine, verificando se la caratteristica è presente. Questo processo è noto come convoluzione.
Il rilevatore di caratteristiche è un array bidimensionale (2-D) di pesi, che rappresenta parti dell'immagine. Sebbene possano variare, normalmente le sue dimensioni sono una matrice 3x3; ciò determina anche la dimensione del campo ricettivo. Quindi, il filtro viene applicato a un'area dell'immagine e viene calcolato un prodotto di punti tra i pixel di input e il filtro. Questo prodotto di punti viene quindi inserito in un array di output. Successivamente, il filtro si sposta di un passo, ripetendo il processo fino a quando il kernel non ha attraversato l'intera immagine. L'output finale della serie di prodotti di punti dall'input e dal filtro è conosciuto come mappa delle caratteristiche, mappa di attivazione o caratteristica convoluta.
Tieni presente che i pesi nel rilevatore di caratteristiche rimangono fissi mentre si sposta attraverso l'immagine, operazione nota anche come condivisione dei parametri. Alcuni parametri, come i valori di peso, si regolano durante l'addestramento attraverso il processo di retropropagazione e discesa del gradiente. Tuttavia, esistono tre iperparametri che influiscono sulle dimensioni del volume dell'output da impostare prima dell'inizio dell'addestramento della rete neurale. Questi includono:
1. Il numero di filtri influisce sulla profondità dell'output. Ad esempio, tre filtri distinti producono tre diverse mappe di feature, creando una profondità di tre.
2. Stride è la distanza, o numero di pixel, che il kernel sposta sulla matrice di input. Sebbene valori di stride pari o superiori a due siano rari, uno stride maggiore produce un output minore.
3. Zero-padding viene solitamente utilizzato quando i filtri non si adattano all'immagine di input. Ciò imposta a zero tutti gli elementi che ricadono al di fuori della matrice di input, producendo un output più grande o di dimensioni uguali. Esistono tre tipi di padding:
- Padding valido: è noto anche come assenza di padding. In questo caso, l'ultima convoluzione viene interrotta se le dimensioni non sono allineate.
- Stesso padding: Questo padding assicura che il livello di output abbia le stesse dimensioni del livello di input.
- Padding completo: questo tipo di padding aumenta le dimensioni dell'output aggiungendo zero al bordo dell'input.
Dopo ogni operazione di convoluzione, una CNN applica una trasformazione ReLU (Rectified Linear Unit) alla mappa delle funzioni, introducendo la non linearità nel modello.