Home topics Cosa sono le reti neurali convoluzionali? Cosa sono le reti neurali convoluzionali?
Esplora la soluzione di reti neurali di IBM Abbonati per ricevere gli aggiornamenti sull'AI
Illustrazione con collage di pittogrammi di cloud, grafici a torta, pittogrammi grafici su quanto segue
Cosa sono le reti neurali convoluzionali?

Le reti neurali convolutive utilizzano dati tridimensionali per le attività di classificazione delle immagini e riconoscimento degli oggetti.

Le reti neurali sono un sottoinsieme del machine learning e hanno un ruolo fondamentale negli algoritmi di deep learning. Sono costituite da livelli di nodi che contengono un livello di input, uno o più livelli nascosti e un livello di output. Ogni nodo si connette a un altro e ha un peso e una soglia associati. Se l'output di qualsiasi singolo nodo è al di sopra del valore di soglia specificato, tale nodo viene attivato, inviando i dati al livello successivo della rete. In caso contrario, non viene passato alcun dato al livello successivo della rete.

Sebbene in quell'articolo ci eravamo principalmente occupati delle reti feedforward, vi sono vari tipi di reti neurali che vengono utilizzati per casi d'uso e tipi di dati differenti. Ad esempio, le reti neurali ricorrenti vengono comunemente utilizzate per l'elaborazione del linguaggio naturale e il riconoscimento vocale, mentre le reti neurali convoluzionali (ConvNets o CNN) sono più spesso utilizzate per le attività di classificazione e di computer vision. Prima delle CNN, per identificare gli oggetti nelle immagini era necessario impiegare metodi di estrazione delle funzioni manuali e impegnativi in termini di tempo. Tuttavia, ora le reti neurali convoluzionali offrono un approccio più scalabile alle attività di classificazione delle immagini e riconoscimento degli oggetti, sfruttando principi dell'algebra lineare, in particolare la moltiplicazione della matrice, per identificare i modelli all'interno di un'immagine. Ciò detto, possono risultare impegnative dal punto di vista dei calcoli e richiedono schede GPU (Graphical Processing Unit) per addestrare i modelli.

Il data store per l'AI

Scopri la potenza dell'integrazione di una strategia data lakehouse nella tua architettura dei dati, compresi i miglioramenti per scalare l'AI e le opportunità di ottimizzazione dei costi.

Contenuti correlati

Leggi la guida per i responsabili dei dati

Come funzionano le reti neurali convoluzionali?

Le reti neurali convoluzionali si distinguono dalle altri reti neurali per le loro prestazioni superiori con immagini, input vocali e segnali audio. Contengono tre tipi di livello principali, ovvero:

  • Livello convoluzionale
  • Livello di pooling
  • Livello completamente connesso (FC, Fully-connected)

Il livello convoluzionale è il primo livello di una rete convoluzionale. Mentre i livelli convoluzionali possono essere seguiti da altri livelli convoluzionali o di raggruppamento, il livello completamente connesso è il livello finale. A ogni livello, la complessità della CNN aumenta, così come la porzione dell'immagine che viene identificata. I primi livelli si concentrano su funzioni semplici, ad esempio i colori e i contorni. Mentre i dati dell'immagine avanzano attraverso i livelli della CNN, vengono riconosciuti elementi o forme più grandi fino a quando, infine, non viene identificato l'oggetto.

Livello convoluzionale

Il livello 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 funzioni. 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 funzioni, definito anche kernel o filtro, che si sposterà attraverso i campi recettivi dell'immagine, verificando la presenza della funzione. Questo processo è noto come convoluzione.

Il rilevatore di funzioni è 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 avrà attraversato l'intera immagine. L'output finale della serie di prodotti di punti dall'input e dal filtro è conosciuto come mappa delle funzioni, mappa di attivazione o funzione convoluta.

Tieni presente che i pesi nel rilevatore di feature 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'allenamento attraverso il processo di retropropagazione e discesa del gradiente. Tuttavia, esistono tre iperparametri che influiscono sulla dimensione del volume dell'output da impostare prima dell'inizio della formazione della rete neurale. Tra questi ci sono:

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.

Strato convoluzionale aggiuntivo

Come affermato in precedenza, il livello di convoluzione iniziale può essere seguito da un altro livello di convoluzione. Quando ciò si verifica, la struttura della CNN può diventare gerarchica perché i livelli successivi possono vedere i pixel all'interno dei campi ricettivi dei livelli precedenti.  Ad esempio, ipotizziamo di dover determinare se un'immagine contiene una bicicletta. Una bicicletta può essere immaginata come un insieme di parti. È composta da un telaio, un manubrio, due ruote, due pedali, eccetera. Ogni singola parte della bicicletta compone un modello di basso livello nella rete neurale e la combinazione delle parti rappresenta un modello di alto livello, creando una gerarchia di funzioni all'interno della CNN. In definitiva, il livello convoluzionale converte l'immagine in valori numerici, consentendo alla rete neurale di interpretare ed estrarre i modelli pertinenti.

Livello di pooling

I livelli di pooling, definiti anche sottocampionamento, eseguono la riduzione della dimensionalità, riducendo il numero di parametri nell'input. In modo simile al livello convoluzionale, l'operazione di pooling applica un filtro sull'intero input, ma la differenza è che a questo filtro non è associato alcun peso. Invece, il kernel applica una funzione di aggregazione ai valori all'interno del campo ricettivo, popolando l'array di output. Vi sono due principali tipologie di pooling:

  • Max pooling: mentre viene applicato sull'input, il filtro seleziona il pixel con il valore massimo da inviare all'array di output. Per inciso, questo approccio tende ad essere utilizzato più di frequente rispetto al pooling medio.
  • Pooling medio: quando il filtro si sposta sull'input, calcola il valore medio all'interno del campo ricettivo da inviare all'array di output.

Sebbene il livello di pooling comporti la perdita di molte informazioni, offre una serie di vantaggi alla CNN. Contribuisce alla riduzione della complessità, al miglioramento dell'efficienza e alla limitazione del rischio di sovradattamento. 

Livello completamente connesso

Il nome del livello completamente connesso ne descrive le caratteristiche. Come indicato in precedenza, i valori dei pixel dell'immagine di input non sono direttamente connessi al livello di output nei livelli parzialmente connessi. Tuttavia, nel livello completamente connesso, ogni nodo nel livello di output si connette direttamente a un nodo nel livello precedente.

Questo livello esegue l'attività di classificazione in base alle funzioni estratte tramite i livelli precedenti e i loro diversi filtri. Mentre i livelli convoluzionali e di pooling tendono a utilizzare le funzioni ReLu, i livelli completamente connessi (FC) solitamente fanno leva su una funzione di attivazione softmax per classificare gli input in modo appropriato, producendo una probabilità da 0 a 1.

Tipi di reti neurali convoluzionali

Kunihiko Fukushima e Yann LeCun hanno gettato le basi della ricerca sulle reti neurali convolutive nel loro lavoro rispettivamente nel 1980 (link al di fuori di Iberia) e nel 1989 ("Backpropagation Applied to Handwritten Zip Code Recognition"). In particolar modo, è rinomato il successo ottenuto da Yann LeCun nel tentativo di applicare la retropropagazione per addestrare le reti neurali a identificare e riconoscere i modelli all'interno di una serie di codici postali scritti a mano. Insieme al suo team, proseguì la sua ricerca nel corso degli anni '90, il cui culmine fu rappresentato da “LeNet-5”, che applicava i medesimi principi delle ricerche precedenti al riconoscimento di documenti. Da allora, è emersa una moltitudine di varianti dell'architettura CNN con l'introduzione di nuovi dataset, quali ad esempio MNIST e CIFAR-10 e competizioni quali ILSVRC (ImageNet Large Scale Visual Recognition Challenge). Tra queste architetture sono comprese:

Tuttavia, LeNet-5 è ritenuta l'architettura CNN classica.

Reti neurali convoluzionali e computer vision

Le reti neurali convoluzionali sono alla base delle attività di riconoscimento delle immagini e della computer vision. La Computer vision è un campo dell'AI (Intelligenza artificiale) che consente ai computer e ai sistemi di ricavare informazioni significative da immagini digitali, video o altri input visivi e, sulla base di questi input, intraprendere azioni. Questa capacità di fornire suggerimenti la distingue dalle attività di riconoscimento delle immagini. Ecco alcuni degli ambiti in cui è possibile riscontrare applicazioni della computer vision:

  • Marketing: le piattaforme dei social media forniscono suggerimenti su chi potrebbe essere presente in una foto pubblicata su un profilo, rendendo più semplice taggare gli amici negli album fotografici. 
  • Assistenza sanitaria: la computer vision è stata incorporata nella tecnologia della radiologia per consentire ai medici di identificare in modo più efficace i tumori nell'anatomia altrimenti sana.
  • Vendita al dettaglio: la ricerca visiva è stata incorporata ad alcune piattaforme di e-commerce, consentendo ai brand di consigliare articoli che potrebbero costituire aggiunte pertinenti a un guardaroba esistente.   
  • Settore dell'automotive: sebbene l'era delle auto a guida autonoma non sia ancora del tutto avviata, la tecnologia alla base ha iniziato a prendere posto nelle automobili, migliorando la sicurezza del conducente e dei passeggeri attraverso funzioni quali il rilevamento della corsia.
Soluzioni correlate
IBM SPSS Neural Networks

IBM SPSS Neural Networks può aiutarti a individuare relazioni complesse e a ricavare maggior valore dai tuoi dati.

Esplora IBM SPSS Neural Networks
IBM Watson Studio

Crea e scala un'IA attendibile su qualsiasi cloud. Automatizza il ciclo di vita dell'IA per ModelOps.

Scopri di più su IBM Watson Studio
Risorse Reti neurali convoluzionali con Python

Usa Python per implementare una rete semplice che classifica le cifre scritte a mano.

Introduzione alle reti neurali convoluzionali

Esplora le diverse fasi della creazione di una rete neurale convoluzionale.

Reti neurali doppiamente convoluzionali

In questo documento, IBM Research mostra come le reti neurali doppiamente convoluzionali (DCNN) siano in grado di migliorare significativamente le prestazioni delle CNN.

Apprendimento delle reti neurali convoluzionali con Deep Part Embeddings

I ricercatori IBM propongono un nuovo concetto di Deep Part Embeddings (DPEs), che può essere impiegato per apprendere nuove reti neurali convoluzionali (CNN) per diverse classi.

Addestra un modello di rilevamento degli oggetti YOLOv8 in Python

Ottimizza un modello di rilevamento degli oggetti pre-addestrato.

Fai il passo successivo

Addestra, convalida, adatta e implementa le funzionalità di AI generativa, foundation model e machine learning con IBM watsonx.ai, uno studio aziendale di nuova generazione per builder AI. Crea applicazioni AI in tempi ridotti e una minima quantità di dati.

Esplora watsonx.ai Prenota una demo live