Aggiungere al Perceptron la capacità di apprendere

È finalmente giunto il momento di comprendere l’essenza del machine learning nelle reti neurali.

In questo tutorial imparerai cos’è la funzione di back-propagation che permette al neurone artificiale di modificare i propri parametri, cioè i pesi collegati agli input, in modo da raggiungere la capacità di fornire il giusto output a seguito di un processo di addestramento.



Come hai visto nel video, il metodo back_propagation, che abbiamo aggiunto alla classe Perceptron, modifica in modo ponderato il valore dei pesi in modo proporzionale all’errore misurato rispetto all’output atteso, al valore numerico dell’input e al valore di un parametro di tuning della velocità di apprendimento.

La formula utilizzata per la modifica dei pesi in un algoritmo di apprendimento come il back-propagation per un perceptron segue il principio dell’apprendimento supervisionato, dove l’obiettivo è minimizzare l’errore tra l’output prodotto dalla rete e l’output desiderato. Questa formula si basa su tre componenti principali:

  1. Errore: La differenza tra l’output desiderato e l’output attuale (calcolato dalla rete). Questo errore indica quanto la rete sia distante dall’ottenere il risultato corretto e dirige l’aggiustamento dei pesi: se l’errore è positivo, significa che l’output della rete è inferiore all’output desiderato, e viceversa.
  2. Input: Il valore di input associato al peso che si sta aggiornando. Questo termine garantisce che l’aggiustamento del peso sia proporzionale non solo all’errore ma anche al contributo dell’input corrispondente. Se l’input è grande, il peso viene aggiustato di più, riflettendo la sua influenza maggiore sull’output della rete.
  3. Speed (tasso di apprendimento): Un parametro scalare che controlla l’entità dell’aggiustamento dei pesi. Non è direttamente correlato all’errore o all’input, ma è un fattore che lo sviluppatore può regolare per influenzare la velocità e la stabilità dell’apprendimento.

Il Ruolo del Parametro Speed

Il parametro speed, o tasso di apprendimento, svolge un ruolo critico nell’apprendimento della rete neurale:

  • Alto valore di Speed: Se il tasso di apprendimento è alto, i pesi vengono aggiornati in maniera significativa ad ogni iterazione. Questo può accelerare il processo di apprendimento, permettendo alla rete di adattarsi rapidamente ai dati. Tuttavia, un valore troppo alto può causare instabilità, facendo “sbalzare” l’apprendimento oltre i minimi dell’errore, impedendo alla rete di convergere verso una soluzione ottimale.
  • Basso valore di Speed: Un tasso di apprendimento basso rende gli aggiustamenti dei pesi più cauti, migliorando la stabilità dell’apprendimento e aumentando la probabilità che la rete converga verso una soluzione ottimale. Tuttavia, questo può anche rendere l’apprendimento molto lento, richiedendo un numero maggiore di iterazioni (epoche) per raggiungere un livello accettabile di precisione.

La scelta del valore di speed rappresenta un compromesso tra velocità di convergenza e precisione dell’apprendimento. Un valore ottimale dipende dalla natura specifica del problema, dalla distribuzione dei dati e dalla struttura della rete neurale. Trovare il giusto tasso di apprendimento è spesso un processo sperimentale nell’ambito della ricerca e dello sviluppo di reti neurali.