¿La mayoría de los algoritmos de aprendizaje automático se ejecutan en lotes, o se ejecutan cada vez que obtienen un nuevo bit de datos?

Necesitamos hacer dos distinciones aquí.

En primer lugar, debemos distinguir el tipo de aprendizaje. Hay dos formas de entrenar modelos de aprendizaje automático:

  • Aprendizaje sin conexión: el modelo se entrena una vez en datos históricos. Después de que el modelo se implementa en producción, permanece constante, aunque es posible volver a entrenar el modelo si se vuelve inestable, lo que a menudo sucederá.
  • Aprendizaje en línea: el modelo se actualiza constantemente a medida que llegan nuevos datos. Esto es especialmente útil para datos de series temporales, como datos de sensores o instrumentos financieros, porque un algoritmo de aprendizaje en línea puede detectar efectos temporales. También es útil para sitios web con grandes cantidades de datos, como Google o Quora.

En segundo lugar, debemos distinguir cómo el algoritmo hace predicciones :

  • Predicciones por lotes: el algoritmo genera una tabla de predicciones basada en sus datos de entrada. Esto a menudo es lo suficientemente bueno para los datos que no dependen del tiempo, o cuando no se requiere que la salida esté totalmente actualizada todo el tiempo.
  • Predicciones a pedido: las predicciones se realizan en tiempo real utilizando los datos de entrada disponibles en el momento de la solicitud, que generalmente se presenta en forma de una llamada REST.

Distinguiendo en estas dos dimensiones, podemos clasificar la producción de modelos de aprendizaje automático utilizando una matriz de 2 por 2:

Examinemos cada celda:

Pronóstico
La forma más común de practicar el aprendizaje automático son las predicciones por lotes fuera de línea. Así se ejecutan las competiciones de Kaggle, por ejemplo. Obtiene sus datos de entrada como un archivo, entrena un modelo y hace un pronóstico. Esto es más como un experimento que realmente poner algo en producción, aunque este paradigma también es común en la inteligencia empresarial.

servicio web
Una forma más común de integrar el aprendizaje automático en las aplicaciones es a través de un servicio web. Nuevamente, el modelo está entrenado en datos históricos, pero utiliza datos nuevos para hacer predicciones. Parece extraño llamar a un modelo de servicio web fuera de línea , pero solo la capacitación real se realiza fuera de línea. El servicio siempre utiliza los últimos datos disponibles para hacer predicciones, pero el modelo permanece constante.

Aprendizaje automático
Un tema muy candente en estos días es el aprendizaje automático. Eso incluye automatizar todo el proceso de capacitación, validación cruzada y selección de modelo. Al hacerlo, puede tener un algoritmo que se vuelva a capacitar y realice predicciones por lotes repetidas en intervalos, utilizando los últimos datos disponibles para entrenar el modelo y generar predicciones. Sin embargo, esta metodología no se puede usar en tiempo real, porque lleva tiempo entrenar los modelos. Es probablemente el método menos utilizado de los cuatro.

Aprender en línea
Esta es la forma más dinámica de productivizar el aprendizaje automático. El algoritmo de aprendizaje está conectado a un flujo de datos (grande) y se entrena continuamente a medida que ingresan nuevos datos. Un modelo constantemente actualizado es accesible de inmediato como un servicio web. Técnicamente, esta es la configuración más difícil de lograr, y hasta ahora ha sido utilizada principalmente por los grandes jugadores.

La mayoría de los trabajos en conferencias de aprendizaje automático hablan o usan algoritmos que se ejecutan en modo por lotes. Casi todos los algoritmos de ML que se enseñan en casi cualquier curso básico de ML funcionan en modo por lotes.

En el mundo real, supongo que los sistemas de aprendizaje automático más grandes en producción podrían ser los que impulsan el motor de búsqueda de Google y las noticias de Facebook. Supongo que esos se están ejecutando en línea.

La mayoría de los algoritmos se ejecutan en modo por lotes, pero hay casos en que son en tiempo real. Por ejemplo, el algoritmo EdgeRank puede ejecutarse en tiempo real, donde los algoritmos más complejos no pueden permitírselo debido al tiempo necesario para construir el modelo.