¿Cuáles son las diferencias entre 'época', 'lote' y 'minibatch'?

38

Hasta donde sé, al adoptar el Descenso de gradiente estocástico como algoritmo de aprendizaje, alguien usa 'epoch' para el conjunto de datos completo y 'batch' para los datos utilizados en un solo paso de actualización, mientras que otro usa 'batch' y 'minibatch' respectivamente, y los otros usan 'epoch' y 'minibatch'. Esto trae mucha confusión al discutir.

Entonces, ¿cuál es el dicho correcto? ¿O son solo dialectos que son todos aceptables?

Tim
fuente

Respuestas:

25
  • Época significa una pasada sobre el conjunto de entrenamiento completo
  • Lote significa que usa todos sus datos para calcular el gradiente durante una iteración.
  • Mini-lote significa que solo toma un subconjunto de todos sus datos durante una iteración.
Esta
fuente
15

Una época generalmente significa que su algoritmo ve cada instancia de entrenamiento una vez. Ahora suponiendo que tienes norte instancias de entrenamiento:

n

bbnn/b

nn

usuario1036719
fuente
4

"Época" generalmente significa exponer un algoritmo de aprendizaje a todo el conjunto de datos de entrenamiento. Esto no siempre tiene sentido ya que a veces generamos datos.

"Batch" y "Minibatch" pueden ser confusos.

Los ejemplos de entrenamiento a veces necesitan ser "agrupados" porque no todos los datos necesariamente pueden exponerse al algoritmo a la vez (debido a restricciones de memoria por lo general).

En el contexto de SGD, "Minibatch" significa que el gradiente se calcula en todo el lote antes de actualizar los pesos. Si no está utilizando un "minibatch", cada ejemplo de entrenamiento en un "lote" actualiza los parámetros del algoritmo de aprendizaje de forma independiente.

rueda ferrosa
fuente
¿Estás seguro del último párrafo? Pensé que el SGD "por lotes" usa todos los datos en una época para calcular lentamente un gradiente muy preciso. Su última oración suena como un mini lote de tamaño 1.
Matt Krause
Además, bienvenido a Cross Validated!
Matt Krause
Sí, el SGD original tiene un mini lote de tamaño 1. Creo que, en última instancia, depende de la interpretación del autor del software. Muy a menudo lote == mini-lote, sin documentación alguna que mencione "mini-lote".
ferrouswheel
Err, supongo que quise decir que GD por lotes utiliza todos los datos. Usualmente uso lote y minibatch de manera intercambiable, pero "mini-lote" cuando quiero señalar que es realmente pequeño ...
Matt Krause