Sommario[Nascondere][Spettacolo]
Negli ultimi anni, le reti neurali sono cresciute in popolarità poiché hanno dimostrato di essere estremamente efficaci in un'ampia gamma di attività.
Hanno dimostrato di essere un'ottima scelta per il riconoscimento di immagini e audio, l'elaborazione del linguaggio naturale e persino per giocare a giochi complicati come Go e scacchi.
In questo post, ti guiderò attraverso l'intero processo di addestramento di una rete neurale. Citerò e spiegherò tutti i passaggi per addestrare una rete neurale.
Mentre esaminerò i passaggi, vorrei aggiungere un semplice esempio per assicurarmi che ci sia anche un esempio pratico.
Quindi, vieni e impariamo come elaborare le reti neurali
Iniziamo in modo semplice e chiediamo cosa sono reti neurali innanzitutto.
Cosa sono esattamente le reti neurali?
Le reti neurali sono software per computer che simulano il funzionamento del cervello umano. Possono imparare da enormi volumi di dati e individuare modelli che le persone potrebbero trovare difficili da rilevare.
Le reti neurali sono diventate popolari negli ultimi anni grazie alla loro versatilità in attività come il riconoscimento di immagini e audio, l'elaborazione del linguaggio naturale e la modellazione predittiva.
Nel complesso, le reti neurali sono uno strumento potente per un'ampia gamma di applicazioni e hanno la possibilità di trasformare il modo in cui affrontiamo un'ampia gamma di lavori.
Perché dovremmo conoscerli?
Comprendere le reti neurali è fondamentale perché hanno portato a scoperte in una varietà di campi, tra cui la visione artificiale, il riconoscimento vocale e l'elaborazione del linguaggio naturale.
Le reti neurali, ad esempio, sono al centro dei recenti sviluppi nelle auto a guida autonoma, nei servizi di traduzione automatica e persino nella diagnostica medica.
Capire come funzionano le reti neurali e come progettarle ci aiuta a creare applicazioni nuove e innovative. E, forse, potrebbe portare a scoperte ancora più grandi in futuro.
Una nota sul tutorial
Come ho detto sopra, vorrei spiegare i passaggi dell'addestramento di una rete neurale facendo un esempio. Per fare questo, dovremmo parlare del set di dati MNIST. È una scelta popolare per i principianti che vogliono iniziare con le reti neurali.
MNIST è un acronimo che sta per Modified National Institute of Standards and Technology. Si tratta di un set di dati di cifre scritte a mano comunemente utilizzato per l'addestramento e il test di modelli di apprendimento automatico, in particolare le reti neurali.
La collezione contiene 70,000 foto in scala di grigi di numeri scritti a mano che vanno da 0 a 9.
Il set di dati MNIST è un punto di riferimento popolare per classificazione dell'immagine compiti. Viene spesso utilizzato per l'insegnamento e l'apprendimento poiché è compatto e facile da gestire, pur ponendo una sfida difficile a cui rispondere per gli algoritmi di apprendimento automatico.
Il set di dati MNIST è supportato da diversi framework e librerie di machine learning, tra cui TensorFlow, Keras e PyTorch.
Ora che conosciamo il set di dati MNIST, iniziamo con i nostri passaggi di addestramento di una rete neurale.
Passaggi di base per addestrare una rete neurale
Importa le librerie necessarie
Quando si inizia ad addestrare una rete neurale per la prima volta, è fondamentale disporre degli strumenti necessari per progettare e addestrare il modello. Il passaggio iniziale nella creazione di una rete neurale consiste nell'importare le librerie richieste come TensorFlow, Keras e NumPy.
Queste librerie fungono da elementi costitutivi per lo sviluppo della rete neurale e forniscono funzionalità cruciali. La combinazione di queste librerie consente la creazione di sofisticati progetti di reti neurali e un rapido addestramento.
Per iniziare il nostro esempio; importeremo le librerie richieste, che includono TensorFlow, Keras e NumPy. TensorFlow è un framework di apprendimento automatico open source, Keras è un'API di rete neurale di alto livello e NumPy è una libreria Python per il calcolo numerico.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Carica il set di dati
Il set di dati deve ora essere caricato. Il set di dati è l'insieme di dati su cui verrà addestrata la rete neurale. Può trattarsi di qualsiasi tipo di dati, incluse foto, audio e testo.
È fondamentale dividere il set di dati in due parti: una per addestrare la rete neurale e un'altra per valutare la correttezza del modello addestrato. Diverse librerie, tra cui TensorFlow, Keras e PyTorch, possono essere utilizzate per importare il set di dati.
Per il nostro esempio, utilizziamo anche Keras per caricare il set di dati MNIST. Nel set di dati sono presenti 60,000 foto di allenamento e 10,000 immagini di test.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Preelaborare i dati
La preelaborazione dei dati è una fase importante nell'addestramento di una rete neurale. Implica la preparazione e la pulizia dei dati prima che vengano immessi nella rete neurale.
Il ridimensionamento dei valori dei pixel, la normalizzazione dei dati e la conversione delle etichette nella codifica one-hot sono esempi di procedure di pre-elaborazione. Questi processi aiutano la rete neurale ad apprendere in modo più efficace e preciso.
La pre-elaborazione dei dati può anche aiutare a ridurre al minimo l'overfitting e migliorare le prestazioni della rete neurale.
È necessario preelaborare i dati prima di addestrare la rete neurale. Ciò include la modifica delle etichette in codifica one-hot e il ridimensionamento dei valori dei pixel in modo che siano compresi tra 0 e 1.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
Definire il modello
Il processo di definizione del modello di rete neurale comporta la definizione della sua architettura, come il numero di livelli, il numero di neuroni per livello, le funzioni di attivazione e il tipo di rete (feedforward, ricorrente o convoluzionale).
Il design della rete neurale che utilizzi è determinato dal tipo di problema che stai tentando di risolvere. Un progetto di rete neurale ben definito può aiutare nell'apprendimento della rete neurale rendendolo più efficiente e accurato.
È giunto il momento di descrivere il modello di rete neurale a questo punto. Usa un modello semplice con due livelli nascosti, ciascuno con 128 neuroni, e un livello di output softmax, che ha 10 neuroni, per questo esempio.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
Compila il modello
La funzione di perdita, l'ottimizzatore e le metriche devono essere specificate durante la compilazione del modello di rete neurale. La capacità della rete neurale di prevedere correttamente l'output è misurata dalla funzione di perdita.
Per aumentare la precisione della rete neurale durante l'addestramento, l'ottimizzatore ne modifica i pesi. L'efficacia della rete neurale durante l'addestramento viene misurata mediante metriche. Il modello deve essere creato prima che la rete neurale possa essere addestrata.
Nel nostro esempio, ora dobbiamo costruire il modello.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Allena il modello
Il passaggio del set di dati preparato attraverso la rete neurale mentre si modificano i pesi della rete per ridurre al minimo la funzione di perdita è noto come addestramento della rete neurale.
Il set di dati di convalida viene usato per testare la rete neurale durante l'addestramento per monitorarne l'efficacia e prevenire l'overfitting. Il processo di addestramento può richiedere del tempo, quindi è importante assicurarsi che la rete neurale sia addestrata in modo appropriato per prevenire l'underfitting.
Utilizzando i dati di addestramento, ora possiamo addestrare il modello. Per fare ciò, dobbiamo definire la dimensione del batch (il numero di campioni elaborati prima che il modello venga aggiornato) e il numero di epoche (il numero di ripetizioni nell'intero set di dati).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Valutazione del modello
Testare le prestazioni della rete neurale sul set di dati di test è il processo di valutazione. In questa fase, la rete neurale addestrata viene utilizzata per elaborare il set di dati di test e viene valutata l'accuratezza.
L'efficacia con cui una rete neurale può prevedere il risultato corretto da dati nuovi di zecca e mai provati è una misura della sua accuratezza. L'analisi del modello può aiutare a determinare quanto bene funziona la rete neurale e anche suggerire modi per migliorarla ulteriormente.
Possiamo finalmente valutare le prestazioni del modello utilizzando i dati di test dopo l'addestramento.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
È tutto! Abbiamo addestrato una rete neurale per rilevare le cifre nel set di dati MNIST.
Dalla preparazione dei dati alla valutazione dell'efficacia del modello addestrato, l'addestramento di una rete neurale comporta diversi processi. Queste istruzioni aiutano i principianti a costruire e addestrare in modo efficiente le reti neurali.
I principianti che desiderano utilizzare le reti neurali per affrontare vari problemi possono farlo seguendo queste istruzioni.
Visualizzare l'esempio
Proviamo a visualizzare cosa abbiamo fatto con questo esempio per capire meglio.
Il pacchetto Matplotlib viene utilizzato in questo frammento di codice per tracciare una selezione casuale di foto dal set di dati di addestramento. Innanzitutto, importiamo il modulo "pyplot" di Matplotlib e lo alias come "plt". Quindi, con una dimensione totale di 10 x 10 pollici, creiamo una figura con 5 righe e 5 colonne di sottotrame.
Quindi, usiamo un ciclo for per scorrere le sottotrame, visualizzando un'immagine dal set di dati di addestramento su ciascuna di esse. Per visualizzare l'immagine viene utilizzata la funzione “imshow”, con l'opzione “cmap” impostata su 'gray' per visualizzare le foto in scala di grigi. Il titolo di ogni sottotrama è anche impostato sull'etichetta dell'immagine associata nella raccolta.
Infine, usiamo la funzione "mostra" per visualizzare le immagini tracciate nella figura. Questa funzione ci consente di valutare visivamente un campione di foto dal set di dati, che può aiutare nella nostra comprensione dei dati e nell'identificazione di eventuali problemi.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
Importanti modelli di rete neurale
- Reti neurali feedforward (FFNN): Un semplice tipo di rete neurale in cui le informazioni viaggiano solo in un modo, dal livello di input al livello di output attraverso uno o più livelli nascosti.
- Reti neurali convoluzionali (CNN): Una rete neurale comunemente utilizzata per il rilevamento e l'elaborazione delle immagini. Le CNN hanno lo scopo di riconoscere ed estrarre automaticamente le caratteristiche dalle immagini.
- Reti neurali ricorrenti (RNN): Una rete neurale comunemente utilizzata per il rilevamento e l'elaborazione delle immagini. Le CNN hanno lo scopo di riconoscere ed estrarre automaticamente le caratteristiche dalle immagini.
- Reti LSTM (Long Short-Term Memory): Una forma di RNN creata per superare il problema della scomparsa dei gradienti nelle RNN standard. Le dipendenze a lungo termine nei dati sequenziali possono essere catturate meglio con gli LSTM.
- Codificatori automatici: Rete neurale di apprendimento senza supervisione in cui alla rete viene insegnato a riprodurre i dati di input al suo livello di output. La compressione dei dati, il rilevamento delle anomalie e il denoising delle immagini possono essere tutti realizzati con gli autoencoder.
- Reti avversarie generative (GAN): Una rete neurale generativa è una forma di rete neurale a cui viene insegnato a produrre nuovi dati paragonabili a un set di dati di addestramento. I GAN sono costituiti da due reti: una rete di generazione che crea nuovi dati e una rete di discriminatori che valuta la qualità dei dati creati.
Riepilogo, quali dovrebbero essere i tuoi prossimi passi?
Esplora diverse risorse e corsi online per saperne di più sull'addestramento di una rete neurale. Lavorare su progetti o esempi è un metodo per acquisire una migliore comprensione delle reti neurali.
Inizia con esempi semplici come problemi di classificazione binaria o attività di classificazione delle immagini, quindi passa a compiti più difficili come l'elaborazione del linguaggio naturale o insegnamento rafforzativo.
Lavorare su progetti ti aiuta a ottenere esperienza reale e migliorare le tue capacità di allenamento della rete neurale.
Puoi anche unirti a gruppi e forum di machine learning e reti neurali online per interagire con altri studenti e professionisti, condividere il tuo lavoro e ricevere commenti e aiuto.
LSRS MONRAD-KROHN
⁶ĵMi sarebbe piaciuto vedere il programma Python per la minimizzazione degli errori. Nodi di selezione speciali per modifiche di peso al livello successivo