Nell'apprendimento automatico, una rete neurale convoluzionale (CNN o ConvNet dall'inglese convolutional neural network) è un tipo di rete neurale artificiale feed-forward in cui il pattern di connettività tra i neuroni è ispirato dall'organizzazione della corteccia visiva animale, i cui neuroni individuali sono disposti in maniera tale da rispondere alle regioni di sovrapposizione che tassellano il campo visivo[1].
Le reti convoluzionali sono ispirate da processi biologici[2] e sono variazioni di percettroni multistrato progettate per usare al minimo la pre-elaborazione.
Hanno diverse applicazioni nel riconoscimento di immagini e video, nei sistemi di raccomandazione[3], nell'elaborazione del linguaggio naturale[4] e, recentemente, in bioinformatica.
Il lavoro di Hubel e Wiesel negli anni '50 e '60, mostrò come la corteccia visiva di gatti e scimmie contenesse neuroni che individualmente rispondono a piccole regioni del campo visivo. Supposto che gli occhi non si muovano, la regione del campo visivo entro cui lo stimolo influenzi l'innesco di un singolo neurone è noto come il suo campo recettivo[senza fonte]. Cellule adiacenti hanno campi recettivi simili e sovrapposti [senza fonte]. La dimensione del campo recettivo e la localizzazione variano sistematicamente attraverso la corteccia per formare una mappa completa del campo visivo[senza fonte]. La corteccia in ogni emisfero rappresenta il campo visivo del lato opposto[senza fonte].
Il loro paper del 1968[5] identificò due tipi di cellule visive nel cervello:
cellule semplici, il cui output è massimizzato dal fatto di avere i bordi rettilinei orientati in un modo particolare entro il loro campo ricettivo
cellule complesse, che hanno campi ricettivi più ampi, il cui output è insensibile all'esatta posizione dei bordi nel campo.
Neocognitron
Il neocognitron[6] fu introdotto nel 1980.[7][8] Il neocognitron non richiede unità localizzate in posizioni multiple di avere gli stessi pesi addestrabili. Questa idea apparve nel 1986 nella versione libraria dell'originale paper sulla backpropagation[9] (Figure 14). Neocognitrons furono sviluppati nel 1988 per i segnali temporali.[10] Il loro design fu migliorato nel 1998,[11] generalizzato nel 2003[12] e semplificato nello stesso anno.[13]
LeNet-5
LeNet-5, una pionieristica rete convoluzionale a 7 livelli progettata da LeCun e altri nel 1998[11] che classifica cifre, fu applicata da svariate banche per riconoscere dei numeri scritti a mano sugli assegni, digitalizzati in immagini di 32×32 pixel. L'abilità di processare immagini di risoluzione più alta richiede livelli convoluzionali più grandi e un maggior numero di essi, così questa tecnica è limitata dalla disponibilità di risorse computazionali.
Shift-invariant neural network
Similarmente, una shift invariant neural network (rete invariante alla traslazione) fu proposta per il riconoscimento dei caratteri nel 1988.[14][15] L'architettura e l'algoritmo di addestramento furono modificati nel 1991[16] , applicandoli nell'elaborazione delle immagini mediche[17] e nel rilevamento automatico del cancro al seno nelle mammografie[18].
Un differente design basato sulla convoluzione fu proposto nel 1988[19] per l'applicazione alla decomposizione di segnali provenienti da elettromiografie, monodimensionali e convoluti tramite de-convoluzione. Questo design fu modificato nel 1989 in altri design sempre basati sulla convoluzione.[20][21]
Neural abstraction pyramid
L'architettura feed-forward delle reti neurali convoluzionali fu esteso nella piramide di astrazione neurale[22] da connessioni laterali di feedback. La risultante rete neurale convoluzionale ricorrente permette l'incorporazione flessibile di informazioni contestuali per risolvere iterativamente ambiguità locali. In contrasto con i modelli precedenti, output sono generali in formato immagine alla risoluzione massima.
Implementazioni in GPU
A seguito dell'articolo del 2005 che stabilì il lavoro della GPGPU per l'apprendimento automatico[23], svariate pubblicazioni descrissero modi più efficienti per addestrare delle reti neurali convoluzionali usando la GPU[24][25][26][27]. Nel 2011, esse vennero rifinite e implementate su una GPU, con impressionanti risultati[28]. Nel 2012, Ciresan e altri incrementarono significativamente le migliori prestazioni in letteratura riguardo a multiple basi di dati d'immagini, compresi il MNIST, il NORB, l'HWDB1.0 (caratteri cinesi), il CIFAR10 (insieme di 60 000 32×32 immagini RGB etichettate) [7] e l'ImageNet[29].
Costruzione dei blocchi
Strato Convoluzionale
Strato di Pooling
Strato ReLu
Strato completamente connesso
Strato di Loss (Perdita)
Applicazioni
Le CNN sono uno strumento fondamentale nel campo del deep learning. In particolare sono adatte per il riconoscimento di immagini. Si può usare l'architettura ConvNet, per addestrare una rete, e usarla successivamente per ottenere una label categorica o numerica. È possibile inoltre estrarre features da una rete addestrata precedentemente, e usare le stesse per addestrare un classificatore lineare. Inoltre, è possibile effettuare il transfer learning, che consiste nell'effettuare il retrain dell'ultimo strato collegato di una ConvNet già esistente su nuovi dati.
Riguardo all'addestramento dei modelli partendo da video, le CNN possono essere utilizzate anche per identificare l'emozione umana a partire dai movimenti. In questo caso, si tratta di elaborare sequenze di frame video anziché singole immagini. Le CNN possono essere adattate per lavorare con dati di tipo sequenziale, come sequenze di immagini, applicando l'operazione di convoluzione e pooling su ciascun frame e utilizzando le informazioni spaziali e temporali per identificare l'emozione.
Si può effettuare il train di una CNN sia su CPU, singola GPU, GPU multiple in parallelo.
^ Aaron van den Oord, Sander Dieleman e Benjamin Schrauwen, Deep content-based music recommendation (PDF), a cura di C. J. C. Burges, L. Bottou, M. Welling, Z. Ghahramani e K. Q. Weinberger, Curran Associates, Inc., 1º gennaio 2013, pp. 2643–2651.
^S. Behnke. Hierarchical Neural Networks for Image Interpretation, volume 2766 of Lecture Notes in Computer Science. Springer, 2003.
^Simard, Patrice, David Steinkraus, and John C. Platt. "Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis." In ICDAR, vol. 3, pp. 958–962. 2003.
^Daniel Graupe, Ruey Wen Liu, George S Moschytz."Applications of neural networks to medical signal processing". In Proc. 27th IEEE Decision and Control Conf., pp. 343–347, 1988.
^Daniel Graupe, Boris Vern, G. Gruener, Aaron Field, and Qiu Huang. "Decomposition of surface EMG signals into single fiber action potentials by means of neural network". Proc. IEEE International Symp. on Circuits and Systems, pp. 1008–1011, 1989.
^Qiu Huang, Daniel Graupe, Yi Fang Huang, Ruey Wen Liu."Identification of firing patterns of neuronal signals." In Proc. 28th IEEE Decision and Control Conf., pp. 266–271, 1989.
^ Dave Steinkraus, Patrice Simard e Ian Buck, Using GPUs for Machine Learning Algorithms, in 12th International Conference on Document Analysis and Recognition (ICDAR 2005), 2005, pp. 1115–1119.
^ Yoshua Bengio, Pascal Lamblin, Dan Popovici e Hugo Larochelle, Greedy Layer-Wise Training of Deep Networks, in Advances in Neural Information Processing Systems, 2007, pp. 153–160.
^ Dan Ciresan, Ueli Meier, Jonathan Masci, Luca M. Gambardella e Jurgen Schmidhuber, Flexible, High Performance Convolutional Neural Networks for Image Classification (PDF), in Proceedings of the Twenty-Second international joint conference on Artificial Intelligence-Volume Volume Two, vol. 2, 2011, pp. 1237–1242. URL consultato il 17 novembre 2013.
^10. Deng, Jia, et al. "Imagenet: A large-scale hierarchical image database."Computer Vision and Pattern Recognition, 2009. CVPR 2009. IEEE Conference on. IEEE, 2009.