Respuestas:
En la terminología de la red neuronal:
Ejemplo: si tiene 1000 ejemplos de entrenamiento y el tamaño de su lote es de 500, se necesitarán 2 iteraciones para completar 1 época.
FYI: intercambio de tamaño de lote frente a número de iteraciones para entrenar una red neuronal
El término "lote" es ambiguo: algunas personas lo usan para designar todo el conjunto de entrenamiento, y algunas personas lo usan para referirse al número de ejemplos de entrenamiento en un pase hacia adelante / hacia atrás (como hice en esta respuesta). Para evitar esa ambigüedad y dejar en claro que el lote corresponde al número de ejemplos de entrenamiento en un pase hacia adelante / hacia atrás, se puede usar el término mini-lote .
La época y la iteración describen cosas diferentes.
Una época describe la cantidad de veces que el algoritmo ve el conjunto de datos completo . Entonces, cada vez que el algoritmo ha visto todas las muestras en el conjunto de datos, se completa una época.
Una iteración describe la cantidad de veces que un lote de datos pasó a través del algoritmo. En el caso de las redes neuronales, eso significa el pase directo hacia y hacia atrás . Entonces, cada vez que pasa un lote de datos a través del NN, completa una iteración .
Un ejemplo podría hacerlo más claro.
Supongamos que tiene un conjunto de datos de 10 ejemplos (o muestras). Tiene un tamaño de lote de 2 y ha especificado que desea que el algoritmo se ejecute durante 3 épocas.
Por lo tanto, en cada época, tienes 5 lotes (10/2 = 5). Cada lote se pasa a través del algoritmo, por lo tanto, tiene 5 iteraciones por época. Como ha especificado 3 épocas, tiene un total de 15 iteraciones (5 * 3 = 15) para el entrenamiento.
Muchos algoritmos de entrenamiento de redes neuronales implican hacer múltiples presentaciones de todo el conjunto de datos a la red neuronal. A menudo, una sola presentación de todo el conjunto de datos se conoce como "época". Por el contrario, algunos algoritmos presentan datos a la red neuronal de un solo caso a la vez.
"Iteración" es un término mucho más general, pero dado que lo preguntaste junto con "época", supongo que tu fuente se refiere a la presentación de un solo caso a una red neuronal.
Para comprender la diferencia entre estos debe comprender el Algoritmo de Descenso de Gradiente y sus Variantes .
Antes de comenzar con la respuesta real, me gustaría construir algunos antecedentes.
Un lote es el conjunto de datos completo. Su tamaño es el número total de ejemplos de entrenamiento en el conjunto de datos disponible.
El tamaño de mini lote es el número de ejemplos que procesa el algoritmo de aprendizaje en una sola pasada (hacia adelante y hacia atrás).
Un mini lote es una pequeña parte del conjunto de datos de un tamaño de mini lote dado .
Las iteraciones son la cantidad de lotes de datos que el algoritmo ha visto (o simplemente la cantidad de pases que el algoritmo ha realizado en el conjunto de datos).
Epochs es la cantidad de veces que un algoritmo de aprendizaje ve el conjunto de datos completo. Ahora, esto puede no ser igual al número de iteraciones , ya que el conjunto de datos también se puede procesar en mini lotes, en esencia, una sola pasada puede procesar solo una parte del conjunto de datos. En tales casos, el número de iteraciones no es igual al número de épocas. .
En el caso del descenso de gradiente de lote, el lote completo se procesa en cada pase de entrenamiento. Por lo tanto, el optimizador de descenso de gradiente da como resultado una convergencia más suave que el descenso de gradiente Mini-lote, pero lleva más tiempo. El descenso del gradiente de lote está garantizado para encontrar un óptimo si existe.
El descenso de gradiente estocástico es un caso especial de descenso de gradiente de mini lotes en el que el tamaño del mini lote es 1 .
Tienes una información de entrenamiento que barajas y seleccionas mini lotes de ella. Cuando ajusta sus pesos y sesgos utilizando un mini lote, ha completado una iteración. Una vez que te quedas sin tus mini lotes, has completado una época. Luego barajas nuevamente tus datos de entrenamiento, vuelves a elegir tus mini lotes y los repites de nuevo. Esa sería tu segunda época.
Por lo general, dividirá su conjunto de pruebas en pequeños lotes para que la red aprenda, y haga que el entrenamiento avance paso a paso a través de su número de capas, aplicando el descenso de gradiente hasta el final. Todos estos pequeños pasos pueden llamarse iteraciones .
Una época corresponde al conjunto completo de entrenamiento que pasa por toda la red una vez. Puede ser útil limitar esto, por ejemplo, para combatir el sobreajuste.
Una época contiene algunas iteraciones. Eso es en realidad lo que es esta "época". Definamos 'época' como el número de iteraciones sobre el conjunto de datos para entrenar la red neuronal.
Según tengo entendido, cuando necesita entrenar un NN, necesita un gran conjunto de datos que involucra muchos elementos de datos. cuando NN está siendo entrenado, los elementos de datos van a NN uno por uno, eso se llama iteración; Cuando todo el conjunto de datos pasa, se llama una época.
Creo que la iteración es equivalente a un solo lote hacia adelante + backprop en el lote SGD. Epoch está revisando todo el conjunto de datos una vez (como alguien más mencionó).
Supongo que en el contexto de la terminología de la red neuronal:
Para definir la iteración (también conocida como pasos ), primero debe saber sobre el tamaño del lote :
Tamaño de lote: probablemente no le gustaría procesar todas las instancias de entrenamiento en un solo paso hacia adelante, ya que es ineficiente y necesita una gran cantidad de memoria. Entonces, lo que comúnmente se hace es dividir las instancias de entrenamiento en subconjuntos (es decir, lotes), realizar una pasada sobre el subconjunto seleccionado (es decir, lote) y luego optimizar la red a través de la retropropagación. El número de instancias de entrenamiento dentro de un subconjunto (es decir, lote) se llama lote_tamaño .
Iteración: (también conocido como pasos de entrenamiento) Usted sabe que su red tiene que revisar todas las instancias de entrenamiento en un solo paso para completar una época. ¡Pero espera! cuando está dividiendo sus instancias de entrenamiento en lotes, eso significa que solo puede procesar un lote (un subconjunto de instancias de entrenamiento) en un solo paso hacia adelante, entonces, ¿qué pasa con los otros lotes? Aquí es donde entra en juego el término iteración :
Por ejemplo, cuando tiene 1000 instancias de entrenamiento y desea hacer lotes con un tamaño de 10; tienes que hacer 10000/10 = 1000 iteraciones para completar una época.
¡Espero que esto pueda responder a tu pregunta!
epoch es una iteración del subconjunto de las muestras para entrenamiento, por ejemplo, el algoritmo de descenso de gradiente en una red neutral. Una buena referencia es: http://neuralnetworksanddeeplearning.com/chap1.html
Tenga en cuenta que la página tiene un código para el algoritmo de descenso de gradiente que usa epoch
def SGD(self, training_data, epochs, mini_batch_size, eta,
test_data=None):
"""Train the neural network using mini-batch stochastic
gradient descent. The "training_data" is a list of tuples
"(x, y)" representing the training inputs and the desired
outputs. The other non-optional parameters are
self-explanatory. If "test_data" is provided then the
network will be evaluated against the test data after each
epoch, and partial progress printed out. This is useful for
tracking progress, but slows things down substantially."""
if test_data: n_test = len(test_data)
n = len(training_data)
for j in xrange(epochs):
random.shuffle(training_data)
mini_batches = [
training_data[k:k+mini_batch_size]
for k in xrange(0, n, mini_batch_size)]
for mini_batch in mini_batches:
self.update_mini_batch(mini_batch, eta)
if test_data:
print "Epoch {0}: {1} / {2}".format(
j, self.evaluate(test_data), n_test)
else:
print "Epoch {0} complete".format(j)
Mira el código Para cada época, generamos aleatoriamente un subconjunto de las entradas para el algoritmo de descenso de gradiente. Por qué la época es efectiva también se explica en la página. Por favor echa un vistazo.
Un pase de entrenamiento completo sobre todo el conjunto de datos de manera que cada ejemplo se haya visto una vez. Por lo tanto, una época representa N / iteraciones de entrenamiento de tamaño de lote , donde N es el número total de ejemplos.
Una única actualización de los pesos de un modelo durante el entrenamiento. Una iteración consiste en calcular los gradientes de los parámetros con respecto a la pérdida en un solo lote de datos.
como bonificación:
El conjunto de ejemplos utilizados en una iteración (es decir, una actualización de gradiente ) del entrenamiento del modelo .
Ver también el tamaño del lote .
fuente: https://developers.google.com/machine-learning/glossary/
1.Epoch es 1 ciclo completo donde la red neuronal ha visto todos los datos.
2. Uno podría decir 100,000 imágenes para entrenar el modelo, sin embargo, el espacio en la memoria podría no ser suficiente para procesar todas las imágenes a la vez, por lo tanto, dividimos el entrenamiento del modelo en fragmentos más pequeños de datos llamados lotes. por ejemplo, el tamaño del lote es 100.
3. Necesitamos cubrir todas las imágenes usando múltiples lotes. Por lo tanto, necesitaremos 1000 iteraciones para cubrir todas las 100,000 imágenes. (100 lotes de tamaño * 1000 iteraciones)
4. Una vez que la Red neuronal mira los datos completos, se llama 1 Época (Punto 1). Uno podría necesitar varias épocas para entrenar al modelo. (Digamos 10 épocas).