¿Cuáles son los beneficios de usar el Descenso de gradiente de mini lotes?

Tengo que decir que depende. La optimización de hiperparámetros es un verdadero dolor, y una tonelada de investigadores de ML han dedicado mucho estudio a tales cosas. Por lo general, existe una compensación entre el uso del descenso por lotes completo y el descenso estocástico. Con el descenso por lotes completo, hay menos oscilación en los componentes de su gradiente y se garantiza que irá en la dirección de descenso más empinada (pero no necesariamente la ruta general más empinada al mínimo local); sin embargo, con los conjuntos de datos que contienen mucha redundancia, puede ser innecesario tomar sumas masivas cuando las muestras más pequeñas se aproximan bien al gradiente general. Con el descenso estocástico, tiene que hacer mucho menos cómputo (es decir, no necesita tomar sumas masivas), pero como resultado puede tener mucha más oscilación en los componentes individuales de su gradiente, especialmente cuando su conjunto de datos tiene una gran varianza.

Claramente, la optimización de minibatch se encuentra entre estos dos ejemplos extremos, por lo que realmente es necesario ejecutar análisis empíricos y tratar de clasificar el conjunto de datos (estadísticamente, como usted dijo) para poder determinar mejor qué técnica de optimización es la más adecuada. Pido disculpas por no incluir ninguna garantía matemática o teoría estadística en mi respuesta, y si ya conocía la mayor parte de esta información; Solo estoy exponiendo cualquier intuición que tenga.

Como dije anteriormente, existe una tonelada de documentos que cubren bien este tema (tanto empírica como teóricamente), y el problema aún está abierto. Ve a verlos, ¡muchos de ellos son bastante legibles! 😉

Beneficios:

  1. Alto rendimiento: con mini-lote, uno puede procesar una gran cantidad de ejemplos de entrada por segundo. El estilo de mini lotes de descenso de gradiente es quizás la única forma de usar la gran cantidad de núcleos a la vez en una GPU.
  2. (A veces) convergencia más rápida: el alto rendimiento también puede traducirse en una convergencia más rápida dependiendo de la varianza en el conjunto de datos y la tasa de aprendizaje utilizada.
  3. Gradiente de alta calidad: el mini lote permite un gradiente de alta calidad y esto será realmente útil, ya que permite utilizar altas tasas de aprendizaje.

Contras:

  1. Precisión final baja: muchas veces, el mini lote puede dar como resultado una precisión final baja ya que el ruido en el gradiente es realmente útil hacia el final para extraer ese último 0.5%.

EDITAR: (Un tipo diferente de respuesta)

Puede pensar que el gradiente calculado a partir del SGD de mini lotes es una aproximación del gradiente verdadero. Puede hacer experimentos usted mismo con bastante facilidad, y lo que creo que encontrará es que la dirección del gradiente para SGD de mini lotes con 1024 ejemplos será aproximadamente la misma que para más de un millón de ejemplos.

El SGD de mini lotes se basa en la idea de que puede usar una muestra representativa para aproximarse. Entonces puede ser que si el tamaño de su mini lote es demasiado pequeño, no convergerá. Lo que constituye una “muestra representativa” es quizás una pregunta difícil. Pero sé que para entrenar a AlexNet en estos días, se usa un tamaño de minibatch de 1024. Básicamente, incluso si obtiene el gradiente VERDADERO, la diferencia no es muy grande.

Quizás podría ser útil hacer lotes completos cuando la pérdida de validación deja de disminuir para obtener el último entrenamiento realizado con mayor precisión. Pero creo que la disminución de la tasa de aprendizaje funcionará igual de bien aquí. Quizás mejor.

EDITAR: se ha señalado que puede acumular los gradientes con la adición a medida que avanza por los ejemplos sin actualizar los pesos, aumentando efectivamente el tamaño del lote al tamaño que desee. Así que fui incorrecto al afirmar que es una necesidad. No estaba pensando lo suficiente.

Esto fue lo que dije originalmente:

================================================== =====

Mini-batch SGD es la única forma de adaptar un modelo a la memoria. Cuando su conjunto de datos tiene varios cientos de gigabytes en el disco, en forma comprimida, simplemente no puede guardarlos todos en la memoria a la vez. No es tanto una cuestión de “ventajas y desventajas”, es una cuestión de necesidad en la mayoría de las tareas (sería prohibitivo escribir constantemente en el disco). Cuando crea un modelo CNN y ya tiene el hardware, no tiene ninguna decisión de qué tan grande es su mini lote. Simplemente elija el mini lote más grande que se ajuste a la memoria.

================================================== =====

More Interesting

Cómo obtener una pasantía de investigación del profesor en la NYU en proyectos que necesitan experiencia en minería de datos o aprendizaje automático

¿El aprendizaje profundo hará que otros algoritmos de aprendizaje automático sean obsoletos?

¿A qué laboratorio puedo unirme en Caltech para hacer investigación de aprendizaje automático?

En la clasificación automática de documentos, ¿cómo trato con categorías en conflicto?

Las entidades biológicas inconscientes que simplemente reaccionan automáticamente a su entorno han evolucionado y se han vuelto autoconscientes. ¿Qué impide que AI lo haga?

¿Cómo se puede utilizar el aprendizaje automático para mejorar el software de gestión de proyectos?

Después de dominar el aprendizaje profundo, ¿es posible conseguir un trabajo en aprendizaje automático?

¿Existe un programa de tipo PageRank para organizar mis canales RSS diarios?

¿Hay tutoriales o trabajos de investigación sobre la presentación de problemas matemáticos como pseudolenguaje al algoritmo de PNL?

¿Es posible asegurar trabajos solo en base a la experiencia en aprendizaje automático sin ser un ingeniero de software adecuado?

¿Se usa el álgebra abstracta en el aprendizaje automático?

¿Cuál es mejor para la manipulación de datos en python: Pandas o SFrame?

¿Qué es una máquina de vectores de soporte?

¿Las computadoras son ahora jugadores de póker más fuertes que los humanos?

¿Qué es la inteligencia artificial? ¿Cuáles son los sujetos si queremos estudiar inteligencia artificial?