top of page
Team I.A. Italia

Differenza tra Batch e Epoch nel deep learning


Il concetto di Batch e Epoch nell'apprendimento profondo è molto importante. In questo articolo esamineremo le definizioni e la differenza tra Batch e Epoch. Ricordiamo che sono argomenti legati alla discesa del gradiente stocastico che è un algoritmo di apprendimento che ha un definito numero di iperparametri.


Due iperparametri che spesso confondono i principianti sono la dimensione del batch e il numero di epoch. Sono entrambi valori interi e sembrano fare la stessa cosa.

In questo post scoprirai la differenza tra batch ed epoch nella discesa del gradiente stocastico.

Dopo aver letto questo post, saprai:

  • La discesa del gradiente stocastico è un algoritmo di apprendimento iterativo che utilizza un set di dati di addestramento per aggiornare un modello.

  • La dimensione del batch è un iperparametro di discesa del gradiente che controlla il numero di campioni di addestramento su cui elaborare prima che i parametri interni del modello vengano aggiornati.

  • Il numero di epoch è un iperparametro della discesa del gradiente che controlla il numero di passaggi completi attraverso il set di dati di addestramento.



Indice

Questo post è diviso in cinque parti; sono:

  1. Discesa a gradiente stocastico ,

  2. Che cos'è un campione?

  3. Che cos'è un batch (lotto)?

  4. Che cos'è un epoch?

  5. Qual è la differenza tra batch ed Epoch?


Discesa a gradiente stocastico

Stochastic Gradient Descent, o SGD in breve, è un algoritmo di ottimizzazione utilizzato per addestrare algoritmi di apprendimento automatico, in particolare le reti neurali artificiali utilizzate nel deep learning.


Il compito dell'algoritmo è trovare un insieme di parametri del modello interno che funzionino bene rispetto ad alcune misure di prestazioni come la perdita logaritmica o l'errore quadratico medio.


L'ottimizzazione è un tipo di processo di ricerca e puoi pensare a questa ricerca come a un apprendimento. L'algoritmo di ottimizzazione è chiamato " discesa del gradiente ", dove " gradiente " si riferisce al calcolo di un gradiente di errore o pendenza di errore e "discesa" si riferisce allo spostamento verso il basso lungo quel pendio verso un livello minimo di errore.


L'algoritmo è iterativo. Ciò significa che il processo di ricerca si svolge su più passaggi discreti, ogni passaggio si spera migliora leggermente i parametri del modello.

Ogni passaggio prevede l'utilizzo del modello con l'insieme corrente di parametri interni per effettuare previsioni su alcuni campioni, confrontare le previsioni con i risultati attesi reali, calcolare l'errore e utilizzare l'errore per aggiornare i parametri del modello interno.

Questa procedura di aggiornamento è spesso diversa da algoritmo a algoritmo, ma nel caso di reti neurali artificiali viene utilizzato l' algoritmo di aggiornamento della backpropagation .

Prima di approfondire i batch e le epoch, diamo un'occhiata a cosa intendiamo per campione.


Che cos'è un campione?

Un campione è una singola riga di dati. Contiene input che vengono inseriti nell'algoritmo e un output che viene utilizzato per confrontare la previsione e calcolare un errore.

Un set di dati di addestramento è composto da molte righe di dati, quindi da molti campioni. Un campione può anche essere chiamato istanza, osservazione, vettore di input o vettore di funzionalità. Ma rimane sempre un campione...


Ora che sappiamo cos'è un campione, definiamo un batch.


Che cos'è un batch?

La dimensione del batch è un iperparametro che definisce il numero di campioni da elaborare prima di aggiornare i parametri del modello interno.


Pensa a un batch come a un ciclo for che esegue un'iterazione su uno o più campioni e fa previsioni. Alla fine del batch, le previsioni vengono confrontate con le variabili di output previste e viene calcolato un errore. Da questo errore, l'algoritmo di aggiornamento viene utilizzato per migliorare il modello, ad esempio per spostarsi verso il basso lungo il gradiente di errore.


Un set di dati di addestramento può essere suddiviso in uno o più batch.

  1. Quando tutti i campioni di addestramento vengono utilizzati per creare un batch, l'algoritmo di apprendimento viene chiamato discesa gradiente batch.

  2. Quando il batch ha le dimensioni di un campione, l'algoritmo di apprendimento è chiamato discesa del gradiente stocastico.

  3. Quando la dimensione del batch è più di un campione e inferiore alla dimensione del set di dati di addestramento, l'algoritmo di apprendimento viene chiamato discesa del gradiente mini-batch.

  • Discesa gradiente batch . Dimensione del lotto = Dimensione del set di allenamento

  • Discesa a gradiente stocastico . Dimensione del lotto = 1

  • Discesa gradiente mini-batch . 1 < Dimensione lotto < Dimensione del set di allenamento

Nel caso della discesa del gradiente di mini-batch, le dimensioni dei lotti popolari includono 32, 64 e 128 campioni. Ti sembrano familiari questi numeri ? In quanti tutorial li hai visti ?



Cosa succede se il set di vdati non viene diviso in modo uniforme per la dimensione del batch?

Questo può e succede spesso quando si addestra un modello. Significa semplicemente che il batch finale ha meno campioni rispetto agli altri batch. In alternativa, è possibile rimuovere alcuni campioni dal set di dati o modificare la dimensione del batch in modo tale che il numero di campioni nel set di dati si divida in modo uniforme per la dimensione del batch.



Che cos'è un epoch?

Il numero di epoch è un iperparametro che definisce il numero di volte in cui l'algoritmo di apprendimento funzionerà attraverso l'intero set di dati di addestramento.


Un'epoch significa che ogni campione nel set di dati di addestramento ha avuto l'opportunità di aggiornare i parametri del modello interno.


Puoi pensare a un ciclo for sul numero di epoch in cui ogni ciclo procede sul set di dati di addestramento. All'interno di questo ciclo for è presente un altro ciclo for nidificato che scorre su ogni batch di campioni, in cui un batch ha il numero di campioni "dimensione batch" specificato.



per semplificarlo con lo pseudo codice puoi vederlo così

epoch = 10
batch = 1

per ( i=0 ; i<epoch ; i++ ) // scorro per 10 volte il set di dati
    // suddivido il dataset in batch
    per ogni batch 
        faccio previsione
        calcolo errore per migliorare
    




Il numero di epoch è tradizionalmente grande, spesso centinaia o migliaia, consentendo all'algoritmo di apprendimento di essere eseguito fino a quando l'errore del modello non è stato sufficientemente ridotto al minimo. Potresti vedere esempi del numero di epoch nella letteratura e nei tutorial impostati su 10, 100, 500, 1000 e oltre.


È comune creare grafici a linee che mostrano le epoch lungo l'asse x come tempo e l'errore del modello sull'asse y. Questi grafici sono talvolta chiamati curve di apprendimento.



Questi grafici possono aiutare a diagnosticare se il modello ha appreso in modo eccessivo, appreso in modo insufficiente o se si adatta adeguatamente al set di dati di addestramento.


Qual è la differenza tra batch ed Epoch?

La dimensione del batch è il numero di campioni elaborati prima dell'aggiornamento del modello mentre il numero di epoch è quante volte l'algoritmo deve usare il set di dati di addestramento.


La dimensione di un batch deve essere maggiore o uguale a uno e minore o uguale al numero di campioni nel set di dati di addestramento.


Il numero di epoch può essere impostato su un valore intero compreso tra uno e infinito. Puoi eseguire l'algoritmo per tutto il tempo che desideri e persino interromperlo utilizzando altri criteri oltre a un numero fisso di epoch, come una modifica (o mancanza di modifica) nell'errore del modello nel tempo.


Sono entrambi valori interi e sono entrambi iperparametri per l'algoritmo di apprendimento, ad esempio parametri per il processo di apprendimento, non parametri del modello interno trovati dal processo di apprendimento. È necessario specificare la dimensione del batch e il numero di epoche per un algoritmo di apprendimento.


Non ci sono regole magiche su come configurare questi parametri. Devi provare valori diversi e vedere cosa funziona meglio per il tuo problema.

Esempio pratico Batch e Epoch

Visualizziamo questo concreto con un piccolo esempio.

Supponiamo di avere un set di dati con 200 campioni (righe di dati) e di scegliere una dimensione batch di 5 e 1.000 epoch.


Dati:

SetDiDati = 200Campioni //200righe
batch = 5Campioni //5righe
epoch = 1000 //dobbiamo elaborare 1000 volte il SetDiDati 

Ciò significa che il set di dati sarà diviso in 40 batch , ciascuno con cinque campioni. I pesi del modello verranno aggiornati dopo ogni lotto di cinque campioni.


Ciò significa anche che un epoch comporterà 40 batch o 40 aggiornamenti del modello.

Con 1.000 epoch, il modello sarà esposto o passerà attraverso l'intero set di dati 1.000 volte. Questo è un totale di 40.000 batch durante l'intero processo di formazione.


Riepilogo Differenza tra Batch e Epoch

In questo post, hai scoperto la differenza tra batch ed epoch nella discesa del gradiente stocastico. Nello specifico hai imparato:

  • La discesa del gradiente stocastico è un algoritmo di apprendimento iterativo che utilizza un set di dati di addestramento per aggiornare un modello.

  • La dimensione del batch è un iperparametro di discesa del gradiente che controlla il numero di campioni di addestramento su cui elaborare prima che i parametri interni del modello vengano aggiornati.

  • Il numero di epoch è un iperparametro della discesa del gradiente che controlla il numero di passaggi completi attraverso il set di dati di addestramento.

Hai domande? Falle quì nei commenti, faremo del nostro meglio per rispondere.



Commentaires

Noté 0 étoile sur 5.
Pas encore de note

Ajouter une note
PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png

Ciao 

🤗 Articoli consigliati dalla nostra
Intelligenza Artificiale in base ai tuoi interessi

Correlazione Alta

Correlazione Media

Correlazione Bassa

Iscriviti

VUOI DIVENTARE UN MEMBRO DI INTELLIGENZA ARTIFICIALE ITALIA GRATUITAMENTE E TRARNE I SEGUENTI BENEFICI?

Corsi Gratis

più di 150 lezioni online

Dataset Gratis

più di 150o dataset

Ebook Gratis

più di 10 libri da leggere

Editor Gratis

un editor python online

Progetti Gratis

più di 25 progetti python

App Gratis

4 servizi web con I.A.

Unisciti Ora a oltre
1.000.000
di lettori e appassionanti d'I.A.

Tutto ciò che riguarda l'intelligenza Artificiale, in unico posto, in italiano e gratis.

MEGLIO DI COSI' NON SI PUO' FARE

Dopo l'iscrizione riceverai diversi Regali

VUOI SCRIVERE ARTICOLI INSIEME A NOI.

Grazie

bottom of page