Di tutto un pò sul mondo della tecnologia e non solo!
Di tutto un pò sul mondo della tecnologia e non solo!

Il modello sequenziale di Keras: un esempio di utilizzo.


ADDESTRAMENTO DEL MODELLO KERAS E CONCETTO DI BATCH SIZE

E’ giunto il momento di addestrare il modello sui dati di input. Per fare ciò utilizziamo il seguente codice:

32 model.fit(XScaler, Y, epochs=150, batch_size=10)

Come al solito, cerchiamo di commentare il codice. In particolare, la riga trentadue, utilizza il metodo fit della classe Sequential che permette di addestrare la rete neurale che abbiamo appena creato. Il metodo fit richiede come primo argomento, il dataset XScaler e come secondo argomento il dataset Y (Ouput), di cui abbiamo già ampiamente parlato. Il terzo argomento indica il numero delle epochs, mentre il quarto il numero di Batch Size. Di quest’ultimi ne parliamo successivamente.

L’algoritmo di addestramento della rete neurale utilizzerà un numero di iterazioni definito dall’argomento Epochs per minimizzare la funzione di costo della nostra ipotesi. Durante un’epoch tutto il training set di dati (tutte le righe del dataset) viene elaborato interamente. Nel nostro caso è stato inserito il valore 150 come valore di Epochs, ossia il numero di elaborazioni che il nostro algoritmo di apprendimento (gradient descent) farà per minimizzare la funzione di costo. Con l’argomento Batch Size si comunica alla rete neurale di utilizzare all’interno di ogni epoch degli ulteriori cicli (iterazioni) a gruppi di 10 righe, nel caso in esempio, per i quali viene eseguito l’addestramento o training.

Per chiarire meglio il concetto di Batch Size, diciamo, che un set di dati di training (le nostre righe/campioni del dataset) può essere suddiviso in uno o più batch. Normalmente, si applica il Batch Size in sistemi in cui è limitato il quantitativo di memoria o la potenza di calcolo disponibili, o quando non è possibile elaborare l’intero set di dati di training in un colpo solo!

Quando tutti i campioni di addestramento vengono utilizzati per creare un batch (Batch Size = Size of Training Set), l’algoritmo di apprendimento viene chiamato discesa del gradiente batch ossia “Batch Gradient Descent”.
Invece, quando il batch ha le dimensioni di un campione (Batch Size = 1 campione del nostro set di dati di addestramento), l’algoritmo di apprendimento è chiamato discesa del gradiente stocastico ossia “Stochastic Gradient Descent”.
Infine, quando la dimensione del batch è più di un campione e inferiore alla dimensione del set di dati di addestramento (1 < Batch Size < Size of Training Set), l’algoritmo di apprendimento viene chiamato “Mini-Batch Gradient Descent”.

L’adozione del Batch Size determina il problema evidenziato nell’immagine seguente: più piccolo è il batch size, meno accurata sarà la stima del gradiente. Come si vede, la direzione del gradiente mini-batch ,linea di colore verde, fluttua molto di più della direzione del batch completo (senza batch size).

Gradient directions for different batch setups
Fig. 18
(L’algoritmo di apprendimento ossia Gradient Descent)

Pagina Precedente / Pagina Successiva

No votes yet.
Please wait...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

11 − dieci =

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Un commento su “Il modello sequenziale di Keras: un esempio di utilizzo.”