Vai al contenuto principale

Perceptroni Multistrato nel Machine Learning: guida completa

Scopri come funzionano i perceptroni multistrato nel deep learning. Comprendi layer, funzioni di attivazione, backpropagation e SGD con indicazioni pratiche.
Aggiornato 3 giu 2026  · 15 min leggi

Le reti neurali sono al centro del machine learning e dell’intelligenza artificiale moderni. Tra i molti tipi, i perceptroni multistrato (MLP) rappresentano un mattone fondamentale per i sistemi di deep learning. Questo tutorial introduce il concetto di reti neurali artificiali, esplora come funzionano gli MLP e passa in rassegna componenti chiave come la backpropagation e lo stochastic gradient descent.

Una rete neurale artificiale (ANN) è un modello di machine learning ispirato alla struttura e al funzionamento della rete interconnessa di neuroni del cervello umano. È composta da nodi interconnessi chiamati neuroni artificiali, organizzati in layer. Le informazioni scorrono attraverso la rete: ogni neurone elabora segnali in ingresso e produce un segnale in uscita che influenza altri neuroni nella rete.

Un multi-layer perceptron (MLP) è un tipo di rete neurale artificiale costituita da più layer di neuroni. I neuroni nell’MLP utilizzano tipicamente funzioni di attivazione non lineari, consentendo alla rete di apprendere pattern complessi nei dati. Gli MLP sono importanti nel machine learning perché possono apprendere relazioni non lineari nei dati, risultando modelli potenti per compiti come classificazione, regressione e riconoscimento di pattern. In questo tutorial approfondiremo le basi dell’MLP e ne comprenderemo il funzionamento interno.

TL;DR

  • Un multilayer perceptron (MLP) è una rete neurale feedforward con uno o più layer nascosti che può apprendere pattern non lineari nei dati.
  • Gli MLP sono composti da un layer di input, layer nascosti con funzioni di attivazione non lineari e un layer di output.
  • Il training utilizza la backpropagation per calcolare i gradienti e lo stochastic gradient descent (SGD) per aggiornare iterativamente i pesi.
  • La preparazione dei dati è cruciale: pulisci, scala e suddividi i dati prima di addestrare un MLP.
  • Parti da un’architettura piccola e aumenta gradualmente la complessità, usando tecniche di regolarizzazione per prevenire l’overfitting.

Basi delle reti neurali

Le reti neurali o reti neurali artificiali sono strumenti fondamentali nel machine learning, alla base di molti algoritmi e applicazioni allo stato dell’arte in vari ambiti, tra cui computer vision, elaborazione del linguaggio naturale, robotica e altro.

Una rete neurale è composta da nodi interconnessi, chiamati neuroni, organizzati in layer. Ogni neurone riceve segnali in ingresso, esegue un calcolo su di essi usando una funzione di attivazione e produce un segnale in uscita che può essere passato ad altri neuroni nella rete. Una funzione di attivazione determina l’output di un neurone dato il suo input. Queste funzioni introducono non linearità nella rete, permettendole di apprendere pattern complessi nei dati.

La rete è tipicamente organizzata in layer, a partire dal layer di input, dove vengono introdotti i dati. Seguono i layer nascosti, dove si effettuano i calcoli, e infine il layer di output, dove si formulano previsioni o decisioni.

I neuroni in layer adiacenti sono collegati da connessioni pesate, che trasmettono segnali da un layer al successivo. L’intensità di queste connessioni, rappresentata dai pesi, determina quanto l’output di un neurone influenzi l’input di un altro. Durante il processo di training, la rete impara ad adattare i pesi in base agli esempi forniti in un dataset di addestramento. Inoltre, ogni neurone ha tipicamente un bias associato, che consente di regolare la soglia di attivazione del neurone.

Le reti neurali vengono addestrate usando tecniche chiamate propagazione feedforward e backpropagation. Durante la propagazione feedforward, i dati in input vengono passati attraverso la rete layer per layer, con ogni layer che esegue un calcolo basato sugli input ricevuti e passa il risultato al successivo.

La backpropagation è un algoritmo usato per addestrare le reti neurali regolando iterativamente i pesi e i bias della rete per minimizzare la funzione di perdita. Una funzione di perdita (nota anche come funzione di costo o obiettivo) misura quanto bene le previsioni del modello corrispondono ai veri valori target nei dati di training. La funzione di perdita quantifica la differenza tra l’output previsto del modello e l’output reale, fornendo un segnale che guida il processo di ottimizzazione durante il training.

L’obiettivo dell’addestramento di una rete neurale è minimizzare questa funzione di perdita adattando pesi e bias. Gli aggiustamenti sono guidati da un algoritmo di ottimizzazione, come il gradient descent. Torneremo su alcuni di questi argomenti più avanti nel tutorial.

Tipi di reti neurali

Picture credit: Keras Tutorial: Deep Learning in Python

Neurone biologico vs. rete neurale artificiale (Fonte: ResearchGate)

L’ANN raffigurata a destra dell’immagine è una semplice rete neurale chiamata “perceptron”. È composta da un singolo layer, quello di input, con più neuroni dotati di propri pesi; non ci sono layer nascosti. L’algoritmo del perceptron apprende i pesi dei segnali in ingresso per tracciare un confine decisionale lineare.

Tuttavia, per risolvere problemi più complessi e non lineari legati a elaborazione delle immagini, computer vision e NLP, si utilizzano reti neurali profonde.

Dai un’occhiata al nostro tutorial Introduzione alle reti neurali profonde per saperne di più sulle deep neural network e su come costruirne una da zero con TensorFlow e Keras in Python. Se preferisci usare il linguaggio R, la nostra guida Costruire modelli di reti neurali (NN) in R fa al caso tuo.

Esistono diversi tipi di ANN, ciascuno progettato per compiti specifici e requisiti architetturali. Prima di approfondire gli MLP, vediamo brevemente alcuni dei tipi più comuni.

Reti neurali feedforward (FNN)

Sono la forma più semplice di ANN, dove l’informazione scorre in un’unica direzione, dall’input all’output. Non ci sono cicli o loop nell’architettura. I perceptroni multistrato (MLP) sono un tipo di rete neurale feedforward.

Reti neurali ricorrenti (RNN)

Nelle RNN, le connessioni tra nodi formano cicli direzionati, consentendo alle informazioni di persistere nel tempo. Questo le rende adatte a compiti che coinvolgono dati sequenziali, come previsione di serie temporali, NLP e riconoscimento vocale.

Reti neurali convoluzionali (CNN)

Le CNN sono progettate per elaborare efficacemente dati a griglia, come le immagini. Sono composte da layer di filtri convoluzionali che apprendono rappresentazioni gerarchiche delle caratteristiche nei dati di input. Le CNN sono ampiamente usate in compiti come classificazione di immagini, rilevamento di oggetti e segmentazione.

Long Short-Term Memory (LSTM) e Gated Recurrent Units (GRU)

Sono tipi specializzati di reti neurali ricorrenti progettati per affrontare il problema del gradiente che svanisce nelle RNN tradizionali. LSTM e GRU incorporano meccanismi a porte per catturare meglio dipendenze di lungo raggio nei dati sequenziali, risultando particolarmente efficaci in compiti come riconoscimento vocale, traduzione automatica e analisi del sentiment.

Autoencoder

È progettato per l’apprendimento non supervisionato e consiste in una rete encoder che comprime i dati di input in uno spazio latente a bassa dimensionalità e in una rete decoder che ricostruisce l’input originale dalla rappresentazione latente. Gli autoencoder sono spesso usati per riduzione della dimensionalità, denoising dei dati e modellazione generativa.

Generative Adversarial Networks (GAN)

Le GAN sono composte da due reti neurali, un generatore e un discriminatore, addestrate simultaneamente in un contesto competitivo. Il generatore impara a creare campioni sintetici indistinguibili dai dati reali, mentre il discriminatore impara a distinguere tra campioni reali e falsi. Le GAN sono state ampiamente utilizzate per generare immagini, video e altri tipi di dati realistici.

Cos’è un multilayer perceptron (MLP)?

Un perceptron multistrato è un tipo di rete neurale feedforward composto da neuroni completamente connessi con una funzione di attivazione di tipo non lineare. È ampiamente usato per distinguere dati che non sono linearmente separabili.

Componenti di un MLP

Gli MLP sono stati ampiamente utilizzati in vari campi, tra cui riconoscimento di immagini, elaborazione del linguaggio naturale e riconoscimento vocale, tra gli altri. La loro flessibilità architetturale e la capacità di approssimare qualsiasi funzione in determinate condizioni li rendono un blocco fondamentale nel deep learning e nella ricerca sulle reti neurali. Approfondiamo alcuni concetti chiave.

Layer di input

Il layer di input è composto da nodi o neuroni che ricevono i dati iniziali in ingresso. Ogni neurone rappresenta una caratteristica o dimensione dei dati di input. Il numero di neuroni nel layer di input è determinato dalla dimensionalità dei dati di ingresso.

Layer nascosti

Tra i layer di input e di output possono esserci uno o più layer di neuroni. Ogni neurone in un layer nascosto riceve input da tutti i neuroni del layer precedente (sia esso il layer di input o un altro layer nascosto) e produce un output che viene passato al layer successivo. Il numero di layer nascosti e il numero di neuroni in ciascun layer nascosto sono iperparametri da definire in fase di progettazione del modello.

Layer di output

Questo layer è composto da neuroni che producono l’output finale della rete. Il numero di neuroni nel layer di output dipende dalla natura del compito. Nella classificazione binaria, possono esserci uno o due neuroni a seconda della funzione di attivazione e rappresentano la probabilità di appartenenza a una classe; mentre nei compiti di classificazione multiclasse, nel layer di output possono esserci più neuroni.

Pesi

I neuroni in layer adiacenti sono completamente connessi tra loro. Ogni connessione ha un peso associato, che determina la forza della connessione. Questi pesi vengono appresi durante il training.

Neuroni di bias

Oltre ai neuroni di input e nascosti, ogni layer (tranne quello di input) include di solito un neurone di bias che fornisce un input costante ai neuroni del layer successivo. I neuroni di bias hanno un proprio peso associato a ciascuna connessione, che viene anch’esso appreso durante il training.

Il neurone di bias di fatto trasla la funzione di attivazione dei neuroni nel layer successivo, consentendo alla rete di apprendere un offset o bias nel confine decisionale. Regolando i pesi collegati al neurone di bias, l’MLP può controllare la soglia di attivazione e adattarsi meglio ai dati di training.

Nota: È importante notare che nel contesto degli MLP, il termine bias può riferirsi a due concetti correlati ma distinti: bias come termine generale nel machine learning e neurone di bias (definito sopra). Nel machine learning in generale, il bias si riferisce all’errore introdotto dall’approssimare un problema reale con un modello semplificato. Il bias misura quanto bene il modello riesca a catturare i pattern sottostanti nei dati. Un alto bias indica che il modello è troppo semplice e può sottostimare i dati, mentre un basso bias suggerisce che il modello sta catturando bene i pattern sottostanti.

Funzione di attivazione

In genere, ogni neurone nei layer nascosti e nel layer di output applica una funzione di attivazione alla somma pesata degli input. Tra le funzioni di attivazione comuni troviamo sigmoid, tanh, ReLU (Rectified Linear Unit) e softmax. Queste funzioni introducono non linearità nella rete, consentendole di apprendere pattern complessi nei dati.

Feedforward e backpropagation

Gli MLP vengono addestrati utilizzando l’algoritmo di backpropagation, che calcola i gradienti di una funzione di perdita rispetto ai parametri del modello e aggiorna i parametri in modo iterativo per minimizzare la perdita.

Come funziona un perceptron multistrato: layer per layer

Example of a MLP having two hidden layers

Esempio di MLP con due layer nascosti. Immagine dell’autore

In un perceptron multistrato, i neuroni elaborano le informazioni in modo graduale, eseguendo calcoli che coinvolgono somme pesate e trasformazioni non lineari. Vediamo layer per layer cosa succede “dietro le quinte”.

Layer di input

  • Il layer di input di un MLP riceve i dati in ingresso, che possono essere feature estratte dai campioni di un dataset. Ogni neurone nel layer di input rappresenta una feature.
  • I neuroni nel layer di input non eseguono calcoli; si limitano a passare i valori di input ai neuroni del primo layer nascosto.

Layer nascosti

  • I layer nascosti di un MLP sono composti da neuroni interconnessi che eseguono calcoli sui dati di input.
  • Ogni neurone in un layer nascosto riceve input da tutti i neuroni del layer precedente. Gli input sono moltiplicati per i pesi corrispondenti, indicati con w. I pesi determinano quanto l’input di un neurone influenzi l’output di un altro.
  • Oltre ai pesi, ogni neurone nel layer nascosto ha un bias associato, indicato con b. Il bias fornisce un input aggiuntivo al neurone, consentendogli di regolare la soglia di output. Come i pesi, anche i bias vengono appresi durante il training.
  • Per ciascun neurone in un layer nascosto o nel layer di output si calcola la somma pesata degli input. Ciò implica moltiplicare ogni input per il peso corrispondente, sommare questi prodotti e aggiungere il bias:

Screenshot 2024-02-07 at 19.11.15.png

Dove n è il numero totale di connessioni in ingresso, wi è il peso per il i-esimo input e xi è il valore del i-esimo input.

  • La somma pesata viene quindi passata attraverso una funzione di attivazione, indicata con f. La funzione di attivazione introduce non linearità nella rete, consentendole di apprendere e rappresentare relazioni complesse nei dati. La funzione di attivazione determina l’intervallo di output del neurone e il suo comportamento in risposta a diversi valori di input. La scelta della funzione di attivazione dipende dalla natura del compito e dalle proprietà desiderate della rete.

Layer di output

  • Il layer di output di un MLP produce le previsioni o gli output finali della rete. Il numero di neuroni nel layer di output dipende dal compito svolto (ad es., classificazione binaria, multiclasse, regressione).
  • Ogni neurone nel layer di output riceve input dai neuroni dell’ultimo layer nascosto e applica una funzione di attivazione. Questa funzione di attivazione è di solito diversa da quelle usate nei layer nascosti e produce il valore di output o la previsione finale.

Durante il training, la rete impara ad adattare i pesi associati agli input di ciascun neurone per minimizzare la discrepanza tra gli output previsti e i veri valori target nei dati di addestramento. Regolando i pesi e imparando le funzioni di attivazione appropriate, la rete apprende ad approssimare pattern e relazioni complesse nei dati, consentendole di fare previsioni accurate su nuovi campioni mai visti.

Questo adattamento è guidato da un algoritmo di ottimizzazione, come lo stochastic gradient descent (SGD), che calcola i gradienti di una funzione di perdita rispetto ai pesi e aggiorna i pesi in modo iterativo.

Vediamo più da vicino come funziona l’SGD.

Stochastic Gradient Descent (SGD)

  1. Inizializzazione: SGD parte da un insieme iniziale di parametri del modello (pesi e bias) scelti casualmente o con qualche metodo predefinito.
  2. Ottimizzazione iterativa: L’obiettivo è trovare il minimo di una funzione di perdita muovendosi iterativamente nella direzione della massima diminuzione del suo valore. Per ogni iterazione (o epoca) di training:
    • Mescola i dati di training per evitare che il modello apprenda sempre gli stessi pattern nello stesso ordine.
    • Suddividi i dati di training in mini-batch (sottoinsiemi di piccole dimensioni).
    • Per ogni mini-batch:
      • Calcola il gradiente della funzione di perdita rispetto ai parametri del modello usando solo i punti del mini-batch. Questa stima del gradiente è un’approssimazione stocastica del gradiente reale.
      • Aggiorna i parametri del modello facendo un passo nella direzione opposta al gradiente, scalato dal learning rate:
θₜ₊₁ = θₜ − η ∇J(θₜ)

Dove:

  • θₜ rappresenta i parametri del modello (ad es., pesi e bias) all’iterazione t

  • ∇J(θₜ) è il gradiente della funzione di perdita J rispetto ai parametri all’iterazione t

  • η (eta) è il learning rate, che controlla l’ampiezza del passo durante l’ottimizzazione

  1. Direzione di discesa: Il gradiente della funzione di perdita indica la direzione della massima salita. Per minimizzare la funzione di perdita, il gradient descent si muove nella direzione opposta, verso la massima discesa.
  2. Learning rate: L’ampiezza del passo in ogni iterazione del gradient descent è determinata da un parametro chiamato learning rate, indicato sopra con n. Questo parametro controlla la dimensione dei passi verso il minimo. Se è troppo piccolo, la convergenza può essere lenta; se è troppo grande, l’algoritmo può oscillare o divergere.
  3. Convergenza: Ripeti il processo per un numero fisso di iterazioni o finché non viene soddisfatto un criterio di convergenza (ad es., la variazione della funzione di perdita scende sotto una certa soglia).

Lo stochastic gradient descent aggiorna i parametri del modello più frequentemente usando sottoinsiemi di dati più piccoli, rendendolo computazionalmente efficiente, specialmente con dataset di grandi dimensioni. La casualità introdotta dall’SGD può avere un effetto di regolarizzazione, impedendo al modello di overfittare i dati di training. È anche adatto a scenari di apprendimento online in cui nuovi dati sono disponibili in modo incrementale, poiché può aggiornare rapidamente il modello con ogni nuovo dato o mini-batch.

Tuttavia, l’SGD presenta anche alcune sfide, come un aumento del rumore dovuto alla natura stocastica della stima del gradiente e la necessità di mettere a punto iperparametri come il learning rate. Sono state sviluppate varie estensioni e adattamenti dell’SGD, come mini-batch stochastic gradient descent, momentum e metodi a learning rate adattivo come AdaGrad, RMSProp e Adam, per affrontare queste sfide e migliorare convergenza e prestazioni.

Hai visto il funzionamento dei layer del perceptron multistrato e hai imparato lo stochastic gradient descent; per completare il quadro, manca un ultimo argomento da approfondire: la backpropagation.

Backpropagation

Backpropagation è l’abbreviazione di “propagazione all’indietro degli errori”. Nel contesto della backpropagation, l’SGD comporta l’aggiornamento iterativo dei parametri della rete in base ai gradienti calcolati in ciascun batch di dati di training. Invece di calcolare i gradienti usando l’intero dataset di training (operazione che può essere costosa per dataset di grandi dimensioni), l’SGD calcola i gradienti usando piccoli sottoinsiemi casuali dei dati chiamati mini-batch. Ecco una panoramica di come funziona l’algoritmo di backpropagation:

  1. Passaggio forward: Durante il passaggio forward, i dati in input vengono inseriti nella rete neurale e l’output della rete viene calcolato layer per layer. Ogni neurone calcola una somma pesata dei propri input, applica una funzione di attivazione al risultato e passa l’output ai neuroni del layer successivo.
  2. Calcolo della perdita: Dopo il passaggio forward, l’output della rete viene confrontato con i veri valori target e si calcola una funzione di perdita per misurare la discrepanza tra l’output previsto e quello reale.
  3. Passaggio backward (calcolo del gradiente): Nel passaggio backward, i gradienti della funzione di perdita rispetto ai parametri della rete (pesi e bias) vengono calcolati usando la regola della catena del calcolo differenziale. I gradienti rappresentano il tasso di variazione della funzione di perdita rispetto a ciascun parametro e forniscono informazioni su come regolare i parametri per ridurre la perdita.
  4. Aggiornamento dei parametri: Una volta calcolati i gradienti, i parametri della rete vengono aggiornati nella direzione opposta ai gradienti per minimizzare la funzione di perdita. Questo aggiornamento è tipicamente eseguito con un algoritmo di ottimizzazione come lo stochastic gradient descent (SGD), di cui abbiamo parlato prima.
  5. Processo iterativo: I passaggi 1-4 vengono ripetuti iterativamente per un numero fisso di epoche o finché non si soddisfano i criteri di convergenza. A ogni iterazione, i parametri della rete vengono regolati in base ai gradienti calcolati nel passaggio backward, riducendo gradualmente la perdita e migliorando le prestazioni del modello.

Preparazione dei dati per gli MLP

Preparare i dati per addestrare un MLP comporta pulizia, pre-elaborazione, scaling, suddivisione, formattazione e talvolta anche aumento dei dati. In base alle funzioni di attivazione utilizzate e alla scala delle feature di input, i dati potrebbero dover essere standardizzati o normalizzati. Sperimentare diverse tecniche di preprocessing e valutarne l’impatto sulle prestazioni del modello è spesso necessario per determinare l’approccio più adatto a un dato dataset e compito.

  • Pulizia e preprocessing dei dati
    • Gestisci i valori mancanti: rimuovi o imputa i valori mancanti nel dataset.
    • Codifica le variabili categoriche: converti le variabili categoriche in rappresentazioni numeriche, ad esempio con one-hot encoding.
  • Feature scaling
    • Standardizzazione o normalizzazione: riscalare le feature su scale simili per garantire un’ottimizzazione efficiente.
      • Standardizzazione (Z-score): sottrarre la media e dividere per la deviazione standard di ogni feature. Centra i dati attorno a zero e li scala a varianza unitaria.
      • Normalizzazione (Min-Max): scalare le feature in un intervallo fisso, tipicamente tra 0 e 1, sottraendo il valore minimo e dividendo per l’intervallo (max-min).

Per saperne di più sul feature scaling, dai un’occhiata al corso di Datacamp Feature Engineering for Machine Learning in Python.

  • Suddivisione train-validation-test
    • Suddividi il dataset in set di training, validazione e test. Il set di training viene usato per addestrare il modello, quello di validazione per ottimizzare gli iperparametri e monitorare le prestazioni, e quello di test per valutare le prestazioni finali su dati mai visti.
  • Formattazione dei dati
    • Assicurati che i dati siano nel formato appropriato per il training. Questo può comportare il reshape dei dati o la conversione al tipo richiesto (ad es., convertire variabili categoriche in numeriche).
  • Data augmentation opzionale
    • Per compiti come la classificazione di immagini, si possono applicare tecniche di data augmentation come rotazione, ribaltamento e scaling per aumentare la diversità dei dati di training e migliorare la generalizzazione del modello.
  • Normalizzazione e funzioni di attivazione
    • La scelta tra standardizzazione e normalizzazione può dipendere dalle funzioni di attivazione usate nell’MLP. Funzioni come sigmoid e tanh sono sensibili alla scala dei dati di input e possono beneficiare della standardizzazione. Le funzioni come ReLU sono meno sensibili alla scala e possono non richiedere standardizzazione.

Consigli di implementazione e best practice

Implementare un MLP comporta diversi passaggi, dal preprocessing dei dati al training e alla valutazione del modello. La scelta del numero di layer e neuroni per un MLP richiede di bilanciare complessità del modello, tempi di training e capacità di generalizzazione. Non esiste una soluzione valida per tutti: l’architettura ottimale dipende dalla complessità del compito, dalla quantità di dati disponibili e dalle risorse computazionali. Ecco comunque alcune linee guida generali da considerare quando implementi un MLP:

1. Architettura del modello

  • Inizia con un’architettura semplice e aumenta gradualmente la complessità se necessario. Parti con un singolo layer nascosto e un numero ridotto di neuroni, quindi sperimenta aggiungendo più layer e neuroni se serve.

2. Complessità del compito

  • Per compiti semplici con bassa complessità, come la classificazione binaria o la regressione su piccoli dataset, può bastare un’architettura poco profonda con pochi layer e neuroni.
  • Per compiti più complessi, come la classificazione multiclasse o la regressione su dati ad alta dimensionalità, possono essere necessarie architetture più profonde, con più layer e neuroni, per catturare pattern articolati nei dati.

3. Preprocessing dei dati

  • Pulisci e pre-elabora i dati, gestendo i valori mancanti, codificando le variabili categoriche e scalando le feature numeriche.
  • Suddividi i dati in set di training, validazione e test per valutare le prestazioni del modello.

4. Inizializzazione

  • Inizializza correttamente pesi e bias dell’MLP. Tecniche comuni includono inizializzazione casuale con pesi piccoli o metodi come Xavier o He.

5. Sperimentazione

  • In definitiva, l’approccio migliore è sperimentare con diverse architetture, variando numero di layer e neuroni, e valutarne empiricamente le prestazioni.
  • Usa tecniche come cross-validation e hyperparameter tuning per esplorare sistematicamente diverse architetture e trovare quella che funziona meglio per il compito.

6. Training

  • Addestra il tuo MLP usando i dati di training e monitora le prestazioni sul set di validazione.
  • Sperimenta con diverse dimensioni di batch, numero di epoche e altri iperparametri per trovare le impostazioni ottimali.
  • Visualizza l’andamento del training usando metriche come perdita e accuratezza per diagnosticare problemi e seguire la convergenza.

7. Algoritmo di ottimizzazione

  • Sperimenta con diversi learning rate e valuta tecniche come scheduler del learning rate o metodi adattivi.

8. Evita l’overfitting

  • Fai attenzione a non overfittare il modello ai dati di training introducendo complessità non necessaria.
  • Usa tecniche come regolarizzazione (ad es., L1, L2), dropout ed early stopping per prevenire l’overfitting e migliorare la generalizzazione.
  • Regola l’intensità della regolarizzazione in base alle prestazioni del modello sul set di validazione.

9. Valutazione del modello

  • Monitora le prestazioni su un set di validazione separato durante il training per valutare come i cambiamenti architetturali influenzano le performance.
  • Valuta il modello addestrato sul set di test per misurarne la generalizzazione.
  • Utilizza metriche come accuratezza, perdita ed errore di validazione per valutare le prestazioni e guidare le decisioni architetturali.

10. Itera e sperimenta

  • Sperimenta con architetture, iperparametri e strategie di ottimizzazione diverse per migliorare le prestazioni.
  • Itera sull’implementazione in base agli insight ricavati dai risultati di training e valutazione.

Vantaggi e limiti degli MLP

Prima di scegliere un MLP per il tuo progetto, è utile capire dove eccellono e dove altre architetture potrebbero essere più adatte.

Vantaggi

  • Approssimazione universale: gli MLP possono approssimare qualsiasi funzione continua dato un numero sufficiente di neuroni e layer, risultando estremamente flessibili per un’ampia gamma di compiti.
  • Modellazione non lineare: a differenza dei perceptron a singolo layer, gli MLP gestiscono dati non linearmente separabili grazie ai layer nascosti e alle funzioni di attivazione non lineari.
  • Versatilità: gli MLP funzionano bene per classificazione, regressione e riconoscimento di pattern in domini come finanza, sanità ed elaborazione del linguaggio naturale.
  • Implementazione semplice: librerie come Keras, PyTorch e scikit-learn offrono implementazioni pronte all’uso degli MLP con setup minimo.

Limiti

  • Non ideali per dati spaziali o sequenziali: per le immagini, le CNN superano gli MLP sfruttando la struttura spaziale. Per le sequenze, le RNN e le LSTM catturano meglio le dipendenze temporali.
  • Propensi all’overfitting: con molti parametri, gli MLP possono memorizzare i dati di training. Tecniche come regolarizzazione, dropout ed early stopping aiutano a mitigare il problema.
  • Costosi computazionalmente: i layer completamente connessi scalano male all’aumentare della dimensionalità dell’input, richiedendo più parametri e tempo di training rispetto ad architetture come le CNN.
  • Sensibili allo scaling delle feature: gli MLP richiedono feature di input scalate correttamente per una convergenza efficiente durante il training.
  • Natura “black box”: interpretare ciò che un MLP ha appreso è più difficile rispetto a modelli basati su alberi o metodi lineari.

Conclusione

I perceptroni multistrato rappresentano una classe fondamentale e versatile di reti neurali artificiali che ha contribuito in modo significativo all’avanzamento del machine learning e dell’intelligenza artificiale. Grazie ai loro layer interconnessi di neuroni e alle funzioni di attivazione non lineari, gli MLP sono in grado di apprendere pattern e relazioni complesse nei dati, rendendoli adatti a un’ampia gamma di compiti. La storia degli MLP riflette un percorso di esplorazione, scoperta e innovazione, dai primi modelli di perceptron alle moderne architetture di deep learning che alimentano molti sistemi allo stato dell’arte di oggi.

In questo articolo hai appreso le basi delle reti neurali artificiali, ti sei concentrato sui perceptroni multistrato e hai imparato lo stochastic gradient descent e la backpropagation. Se vuoi fare pratica e usare tecniche di deep learning per affrontare sfide reali, come prevedere i prezzi delle case o costruire reti neurali per modellare immagini e testi, ti consigliamo vivamente il percorso Keras toolbox di Datacamp.

Lavorando con Keras, imparerai le reti neurali, i workflow dei modelli di deep learning e come ottimizzare i tuoi modelli. Datacamp ha anche una cheat sheet di Keras molto utile!


Sejal Jaiswal's photo
Author
Sejal Jaiswal
LinkedIn

Ho lavorato in diversi settori e ho ricoperto vari ruoli: sviluppatore software, ricercatore di machine learning, data scientist, product manager. Ma, soprattutto, sono un programmatore a cui piace imparare e condividere conoscenza!

Frequently Asked Questions

Che cos'è un perceptron a singolo layer?

Un perceptron a singolo layer è la forma più semplice di rete neurale, composta solo da un layer di input e uno di output senza layer nascosti. È usato principalmente per compiti di classificazione lineare, in cui impara a separare i punti dati con un confine decisionale lineare regolando i pesi dei segnali in ingresso.

Qual è la differenza tra un perceptron e un perceptron multistrato?

Un perceptron è una semplice rete neurale con un singolo layer di neuroni, tipicamente usata per compiti di classificazione lineare. È composto da un layer di input e uno di output senza layer nascosti. Un perceptron multistrato (MLP) ha più layer, inclusi uno o più layer nascosti, permettendogli di apprendere e rappresentare relazioni non lineari più complesse nei dati.

Che cos'è l'algoritmo di apprendimento del perceptron?

L'algoritmo di apprendimento del perceptron è un algoritmo supervisionato usato per addestrare perceptron a singolo layer. Regola i pesi dei segnali in ingresso in base all'errore tra l'output previsto e quello reale, raffinando iterativamente il confine decisionale finché classifica correttamente i dati di training o raggiunge un numero predefinito di iterazioni.

Perché la funzione di attivazione ReLU è spesso usata?

ReLU (Rectified Linear Unit) è popolare perché è semplice e aiuta i modelli ad addestrarsi più velocemente riducendo il problema del gradiente che svanisce, comune con sigmoid o tanh.

Come scelgo il numero di layer nascosti e di neuroni?

Inizia in piccolo e aumenta la complessità in base alla difficoltà del compito e alle prestazioni. Usa i dati di validazione e la sperimentazione per trovare il giusto equilibrio.

Gli MLP possono essere usati per compiti su immagini o testo?

Sì, anche se per dati ad alta dimensionalità come immagini o sequenze, le CNN e le RNN possono funzionare meglio. Gli MLP possono comunque andare bene per compiti più semplici o input più piccoli.

Qual è la differenza tra backpropagation e SGD?

La backpropagation calcola i gradienti per tutti i parametri del modello. L'SGD è la tecnica di ottimizzazione che aggiorna i parametri in base a quei gradienti.

Argomenti

Inizia oggi il tuo percorso nel Machine Learning!

Corso

Machine Learning per il business

2 h
46.1K
Scopri le basi del Machine Learning e come si usa nel mondo del business.
Vedi dettagliRight Arrow
Inizia il corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

Mostra altroMostra altro