Reti Neurali: una guida introduttiva
Il modo più semplice per iniziare a comprendere il ruolo e l’impatto delle reti neurali è dare loro un contesto. Le reti neurali fanno parte del mondo dell’intelligenza artificiale, machine learning e deep learning.
L’intelligenza artificiale è il sistema generale; il machine learning un sottoinsieme dell’IA, il deep learning un sottoinsieme del machine learning. Le reti neurali sono la colonna portante degli algoritmi di deep learning e permettono di elaborare dati in maniera sempre più complessa ed efficace.
L’architettura delle reti neurali, definita dalla disposizione e dalla profondità dei layer di nodi, determina la complessità e l’efficacia di un algoritmo. In altre parole, il numero di strati di nodi in una rete neurale è ciò che contraddistingue un semplice modello neurale da un sofisticato algoritmo di deep learning, in grado di affrontare problemi di grande complessità e dimensioni.
Com’è fatta una rete neurale
Le reti neurali, anche conosciute con i nomi di reti neurali artificiali (ANN) o reti neurali simulate (SNN) sono modelli di machine learning progettati per simulare la struttura e le funzioni del cervello umano.
Ogni rete neurale è costituita da nodi interconnessi che operano in modo analogo ai neuroni biologici, trasmettendo informazioni attraverso connessioni simili alle sinapsi.
Questi nodi sono organizzati in strati distinti: uno strato di input, uno o più strati nascosti e uno strato di output. Le reti neurali possono variare notevolmente in complessità, con reti semplici che presentano da zero a tre strati nascosti e un layer di output, mentre le reti neurali profonde possono contenere decine o addirittura centinaia di strati nascosti.
Ogni nodo all’interno della rete è un “neurone artificiale”, caratterizzato da un peso e da una soglia di attivazione. Quando l’output di un nodo è superiore al valore soglia, il nodo viene attivato e trasmette i dati allo strato successivo della rete.
Nella maggior parte delle applicazioni, il flusso delle informazioni all’interno di una rete neurale avviene in modo unidirezionale, con ciascun layer che utilizza l’output del layer precedente come input. Questo tipo di reti è comunemente conosciuto come “feed-forward”.
Al contrario, nelle reti neurali ricorrenti, le informazioni possono essere trasmesse tra nodi all’interno dello stesso strato o tra strati adiacenti, consentendo così una maggiore complessità e flessibilità nell’elaborazione dei dati.
L’adattabilità e l’addestramento delle reti neurali
Le reti neurali artificiali sono al centro della ricerca grazie alla loro capacità di apprendere e adattarsi continuamente. Questa flessibilità consente loro di modificare i propri parametri durante il processo di apprendimento iniziale e in risposta alle iterazioni successive.
Il modello di apprendimento più basilare si basa sulla ponderazione dei flussi di input, che è il modo in cui ogni nodo determina l’importanza attribuita ai dati provenienti da ciascun nodo precedente. Ai dati di input che contribuiscono a ottenere le risposte corrette vengono attribuiti pesi maggiori. Durante l’addestramento, la rete neurale aggiorna i suoi pesi in modo da migliorare progressivamente la sua capacità di produrre output accurati. Questo processo, noto come retropropagazione dell’errore (o backpropagation), consente alla rete di adattarsi in base ai dati di addestramento e migliorare progressivamente le sue capacità predittive.
L’adattabilità delle reti neurali si traduce in una migliore capacità di riflettere le complesse relazioni presenti nei dati. Con il passare del tempo e l’accumularsi di nuovi dati, i pesi delle connessioni vengono ottimizzati per offrire previsioni sempre più accurate su nuovi dati di input.
Gli algoritmi di apprendimento che generalmente vengono utilizzati per addestrare le reti neurali si dividono in tre macro categorie:
- Supervisionato. Questo approccio utilizza dati etichettati, in cui ogni esempio di input è associato a un output desiderato. La rete neurale impara a predire gli output corretti sulla base degli esempi forniti durante l’addestramento.
- Non supervisionato. In questo caso, vengono impiegati dati non etichettati, senza informazioni esplicite sugli output desiderati. L’obiettivo è scoprire modelli o strutture intrinseche nei dati senza la guida di etichette esterne.
- Con rinforzo. Questo tipo di apprendimento si basa sul feedback dell’ambiente, in cui un agente apprende a compiere azioni per massimizzare una ricompensa data. Ad esempio, immagina un agente che impara a giocare a un videogioco. Ogni volta che l’agente compie un’azione, riceve una ricompensa positiva se vince o una ricompensa negativa se perde. L’agente utilizza queste ricompense per imparare quali azioni compiere in diverse situazioni, in modo da massimizzare il punteggio complessivo nel gioco.
Le reti neurali convoluzionali
Le reti neurali convoluzionali (CNN) hanno rapidamente assunto un ruolo predominante come framework standard per una vasta gamma di applicazioni che coinvolgono la classificazione e il riconoscimento delle immagini. Ad esempio, l’impiego della visione artificiale basata sulle CNN ha rivoluzionato settori cruciali come il riconoscimento facciale, la guida autonoma e la diagnosi medica, contribuendo a significative innovazioni nella precisione e nell’efficienza delle operazioni.
> Leggi anche: Computer Vision: che cos’è e quali sono le applicazioni
Ogni CNN è caratterizzata da 3 categorie di livelli fondamentali che lavorano tra loro per portare a termine il task.
- Strati convoluzionali (Convolutional layers): svolgono il ruolo principale nell’estrazione delle caratteristiche dalle immagini di input. Funzionano applicando filtri (o kernel) alle immagini di input tramite l’operazione di convoluzione. Ogni filtro è responsabile dell’individuazione di un particolare pattern, come bordi, texture o forme. Durante l’addestramento, i pesi dei filtri vengono adattati in modo che la rete possa imparare a riconoscere le caratteristiche più rilevanti per il task specifico.
- Strati di pooling (Pooling layers). Dopo l’applicazione dei filtri, vengono spesso inseriti strati di pooling che riducono il numero di parametri da prendere in considerazione e rendono la rete più efficiente a livello di calcolo. Questi strati contribuiscono a semplificare la rappresentazione delle caratteristiche estratte, mantenendo nel contempo l’informazione più rilevante.
- Strati completamente connessi (Fully connected layers). Situati alla fine della rete convoluzionale, questi strati consolidano le caratteristiche estratte dalle fasi precedenti per generare una previsione finale. Analogamente ai layer presenti nelle reti neurali tradizionali, i fully connected layers classificano o regrediscono le caratteristiche estratte in categorie o valori specifici.
Insieme, questi componenti permettono alle CNN di apprendere gerarchie di features sempre più complesse dalle immagini, emulando il modo in cui il cervello umano riconosce
pattern e caratteristiche.
Le applicazioni popolari delle reti neurali convoluzionali vanno dai veicoli a guida autonoma, ai software di riconoscimento vocale, alla rilevazione di anomalie in campo medico. Negli ultimi anni, le reti neurali hanno migliorato le proprie performance nell’esecuzione di compiti complessi e il progresso di queste reti è in costante evoluzione, soprattutto grazie agli avanzamenti negli algoritmi, nelle architetture e nelle tecniche di ottimizzazione.
Nel prossimo futuro, ci aspettiamo di vedere l’adozione di architetture ibride che combinano diverse reti neurali e tecniche di deep learning, risolvendo alcune delle limitazioni esistenti e migliorando le prestazioni complessive.
Fonti:
Choi, R. Y., Coyner, A. S., Kalpathy-Cramer, J., Chiang, M. F., & Campbell, J. P. (2020, January 28). Introduction to machine learning, Neural Networks, and Deep Learning. Translational Vision Science & Technology. https://tvst.arvojournals.org/article.aspx?articleid=2762344
Cos’è una rete neurale? Cos’è una rete neurale? – MATLAB & Simulink. (n.d.). https://it.mathworks.com/discovery/neural-network.html
Li, Z., Liu, F., Yang, W., Peng, S., & Zhou, J. (2021). A survey of convolutional neural networks: analysis, applications, and prospects. IEEE transactions on neural networks and learning systems, 33(12), 6999-7019.
Samarth, V. (2024, January 19). A detailed guide on the meaning, importance, and future of Neural Networks. Emeritus India. https://emeritus.org/in/learn/ai-ml-neural-networks/#:~:text=In%20the%20future%2C%20we%20can,neural%20and%20improve%20overall%20performance.
Sharkawy, A. N. (2020). Principle of neural network and its main types. Journal of Advances in Applied & Computational Mathematics, 7, 8-19.
Team, I. D. and A. (2023, July 11). AI vs. Machine Learning vs. Deep Learning vs. neural networks: What’s the difference? IBM Blog. https://www.ibm.com/blog/ai-vs-machine-learning-vs-deep-learning-vs-neural-networks/