A questo punto, tutto è pronto per procedere all’addestramento del tuo Perceptron.
Non ti resta che utilizzare il dataset di training e lanciare l’algoritmo di addestramento.
Come hai appena visto, la tua Rete Neurale è stata in grado di apprendere attraverso l’elaborazione del campione di dati noti ed ha generalizzato la sua conoscenza classificando correttamente nuovi dati senza avere al suo interno alcuna codifica esplicita della regola.
Prima di terminare la Missione, è bene richiamare l’attenzione su alcuni punti che abbiamo introdotto nel nostro software, che sono elementi tipici dei modelli di reti neurali utilizzati nella pratica.
Il programma presentato nel video definisce e utilizza un perceptron per classificare input in due categorie (“verde” e “rosso”) basandosi su un processo di apprendimento. Questo processo si avvale di tecniche chiave come il bias, la funzione di attivazione, il training con back-propagation, e l’operazione di shuffle dei dati di training. Analizziamo il ruolo del bias e dello shuffle:
Nel contesto dei perceptroni e delle reti neurali in generale, il bias è un termine aggiuntivo nei calcoli dell’input che permette al modello di adattarsi meglio ai dati quando la relazione tra input e output non origina dall’origine (0,0) nello spazio delle caratteristiche. Il bias può essere visto come un peso aggiuntivo associato a un input costante (tipicamente 1), che consente alla funzione di attivazione di spostarsi a sinistra o a destra, facilitando la corretta classificazione degli input.
Nel nostro programma, il bias è implicitamente incluso negli input quando si chiama la feed_forward o la back_propagation fornendo [x[0][0], x[0][1], 1] come input, dove 1 rappresenta il valore del bias. Questo permette al perceptron di adattarsi a una varietà di dati che non sarebbero linearmente separabili se il modello assumesse che i dati passino per l’origine.
Puoi provare a modificare il codice eliminando il bias. Puoi provare a definire il Perceptron con soli due input ed eliminare il terzo input costante in tutte le chiamate a feed_forward. Noterai che il processo di apprendimento in questo caso non converge più.
Lo shuffle (mescolamento) dei dati di training prima di ogni epoca di apprendimento è una pratica comune nell’addestramento delle reti neurali e altri modelli di machine learning. Questo processo ha diversi benefici:
Nel nostro codice, lo shuffle viene eseguito all’inizio di ogni epoca di training con random.shuffle(trainSet), assicurando che l’ordine di presentazione dei punti di dati al perceptron vari da un’epoca all’altra.
Se provi a rimuovere l’istruzione di shuffle dal programma, noterai che l’apprendimento converge ma in modo leggermente più lento. Anche le prestazioni della rete saranno leggermente minori.
In conclusione, il bias è fondamentale per permettere al perceptron di adattarsi in modo flessibile ai dati, mentre lo shuffle dei dati di training aiuta a migliorare la robustezza e l’efficacia dell’apprendimento, contribuendo a prevenire l’overfitting e favorire una convergenza stabile e rapida del modello.