¿Alguien puede decirme cómo se supone que debo construir una red neuronal utilizando el método por lotes?
He leído que, en el modo por lotes, para todas las muestras en el conjunto de entrenamiento, calculamos el error, los delta y, por lo tanto, los pesos delta para cada neurona en la red y luego, en lugar de actualizar inmediatamente los pesos, los acumulamos y luego, antes de comenzar En la próxima época, actualizamos los pesos.
También leí en alguna parte que, el método por lotes es como el método en línea, pero con la diferencia de que uno solo necesita sumar los errores para todas las muestras en el conjunto de entrenamiento y luego tomar el promedio y luego usarlo para actualizar los pesos como uno lo hace en el método en línea (la diferencia es solo ese promedio) así:
for epoch=1 to numberOfEpochs
for all i samples in training set
calculate the errors in output layer
SumOfErrors += (d[i] - y[i])
end
errorAvg = SumOfErrors / number of Samples in training set
now update the output layer with this error
update all other previous layers
go to the next epoch
end
- ¿Cuál de estos es realmente la forma correcta del método por lotes?
- En el caso del primero, ¿no se acumulan todos los pesos delta en un número enorme?
Respuestas:
Usar el promedio o la suma son equivalentes, en el sentido de que existen pares de tasas de aprendizaje para las cuales producen la misma actualización.
Para confirmar esto, primero recuerde la regla de actualización:
fuente
Las dos respuestas son equivalentes. Yo personalmente lo consideraría como un error promedio en lugar de la suma. Pero recuerde que el descenso de gradiente tiene un parámetro llamado tasa de aprendizaje, y que solo se resta una parte del gradiente del error. Entonces, si el error se define como el total del promedio, se puede compensar cambiando la tasa de aprendizaje.
fuente