¿Cuáles son los pros y los contras del aprendizaje en línea y fuera de línea? ¿En qué escenarios son útiles cada uno?

Mantendré esto bastante pragmático, en lugar de teórico. La visión de 10,000,000 pies es que el aprendizaje en línea, a diferencia de los algoritmos por lotes (y, específicamente, PAC), es:

  • Computacionalmente mucho más rápido y más eficiente en el espacio. Otra respuesta aquí dice que los métodos fuera de línea son más rápidos; eso es completamente incorrecto [1]. En el modelo en línea de vainilla, se le permite hacer exactamente un pase en sus datos, por lo que estos algoritmos suelen ser mucho más rápidos que sus equivalentes PAC, ya que la mayoría de los algoritmos PAC son de múltiples pasos. Además, dado que no puede reconsiderar sus ejemplos anteriores, generalmente no los almacena para acceder más adelante en el procedimiento de aprendizaje, lo que significa que tiende a usar una huella de memoria más pequeña.
  • Generalmente más fácil de implementar. Dado que el modelo en línea de Vanilla hace un pase sobre los datos, terminamos procesando un ejemplo a la vez, secuencialmente, a medida que ingresan de la transmisión. Esto generalmente ( generalmente ) simplifica el algoritmo dramáticamente, si lo hace desde cero. Si está utilizando una biblioteca, el código que administra los datos a menudo es más simple porque a menudo no tiene que mantener todos sus datos en la RAM: simplemente los coloca en una llamada API, termina con un resultado y tirarlo o registrarlo.
  • Un marco más general. En los algoritmos por lotes, está bien (e incluso se recomienda) mezclar su conjunto de datos antes de aprender. Esto se debe a que casi todos los algoritmos por lotes asumen que sus datos son intercambiables o iid. Sin embargo, en el caso más general, el orden de sus datos es importante, y cuando realmente no puede asumir que sus datos pueden reordenarse arbitrariamente, debe procesarlos secuencialmente. Ese es precisamente el objetivo de los algoritmos en línea: el aprendizaje en línea es un marco más general que, y un superconjunto estricto del aprendizaje por lotes.
  • Más difícil de mantener en producción. La implementación de algoritmos en línea en producción generalmente requiere que tenga algo que constantemente transfiera puntos de datos a su algoritmo. Si sus datos cambian y sus selectores de funciones ya no producen resultados útiles, o si hay una latencia de red importante entre los servidores de sus selectores de funciones, o uno de esos servidores se cae, o realmente, cualquier otra cantidad de cosas , sus estudiantes se concentran y tu salida es basura. Asegurarse de que todo esto funcione correctamente puede ser una prueba.
  • Más difícil de evaluar en línea. En el aprendizaje en línea de vanilla, no podemos ofrecer un conjunto de “prueba” para evaluación porque no estamos haciendo suposiciones de distribución; si seleccionamos un conjunto para evaluar, estaríamos asumiendo que el conjunto de prueba es representativo de los datos que ” re operando, y esa es una suposición distributiva. Dado que, en el caso más general, no hay forma de obtener un conjunto representativo que caracterice sus datos, su única opción (nuevamente, en el caso más general) es simplemente observar qué tan bien ha ido el algoritmo recientemente. Pero, ¿qué significa si te has equivocado? ¿Es solo mala suerte o significa que debes cambiar tu hipótesis un poco? En el aprendizaje por lotes, estas preguntas son bastante fáciles de responder, pero en los algoritmos en línea, generalmente tiene que pensar en ello.
  • Por lo general, es más difícil “acertar”. Como vimos en el último punto, la evaluación en línea del alumno es difícil. Por razones similares, puede ser muy difícil lograr que el algoritmo se comporte “correctamente” de forma automática. Puede ser difícil diagnosticar si su algoritmo o su infraestructura se están portando mal.
  • También es más difícil de evaluar en un entorno fuera de línea. Si le entrego una serie de puntos de datos y las predicciones de nuestro sistema, a menudo es útil tener un proceso fuera de línea que pase todo el tiempo necesario para descubrir cómo está funcionando realmente nuestro sistema. En la mayoría de los casos, es difícil encontrar un esquema de evaluación fuera de línea que funcione significativamente mejor que el esquema en línea.

Observaciones El aprendizaje en línea o un híbrido en línea es a veces la única opción viable para manejar grandes cantidades de datos. Específicamente, cuando ve tantos datos que solo tiene la oportunidad de ver cada punto de datos una vez, el aprendizaje en línea puede ser una buena opción. Otra opción es ejecutar métodos por lotes en los datos más recientes de forma continua, reemplazando modelos antiguos por modelos nuevos a medida que avanza en el tiempo. Es difícil saber cuándo uno será mejor que el otro (o, de hecho, dados los desafíos de evaluación, que es mejor).

Aunque el modelo en línea hace menos suposiciones sobre sus datos, en producción, esto a veces (¿generalmente?) No es necesario, y vale la pena relajarse si puede. Por ejemplo, la suposición de que sus datos son intercambiables o iid es una bendición, ya que le permite hacer cosas como mezclar los datos o crear y evaluar su hipótesis en conjuntos de pruebas. Incluso si sus datos no son iid, siempre y cuando esa suposición no demuestre lo que está tratando de aprender, puede suponer que sí.

No subestimes que los algoritmos puramente en línea pueden ser difíciles de implementar de una manera que sea realmente escalable. Cuando un algoritmo está puramente en línea, debe monitorear constantemente su estado y el estado del sistema que le envía datos. Es revelador que en la práctica, incluso la mayoría de las empresas que pueden hacer esto, no lo hacen. No, a menos que no tengan otra opción. Si no es realmente importante que todo suceda exactamente en tiempo real, a menudo es significativamente mejor entrenar constantemente los modelos por lotes y reemplazarlos continuamente a medida que avanza en el tiempo.

En general, la producción ML debe centrarse en el usuario. Lo que está haciendo debe diseñarse con la forma en que el usuario interactúa con su sistema. Su modelo debe ser tan complicado como debe ser para llevar a cabo estas tareas, y exactamente no más difícil.

[1] De Fundamentos del aprendizaje automático (Morhi et al , 2012), probablemente el mejor libro de ML orientado a la teoría del aprendizaje de posgrado disponible en este momento tiene esto que decir sobre el tema (Página 147):

[Algoritmos en línea] procesan una muestra a la vez y, por lo tanto, pueden ser significativamente más eficientes tanto en tiempo y espacio como en algoritmos por lotes más prácticos.

Desde una perspectiva teórica:
Modelo de aprendizaje en línea con errores:

  • En un modelo de aprendizaje en línea, un algoritmo de aprendizaje conservador cambiaría la hipótesis solo cuando no pueda predecir correctamente la etiqueta del ejemplo de entrada.
  • La eficiencia de un algoritmo de aprendizaje en línea se puede medir solo por el error ligado y no por el número de ejemplos pasados ​​al alumno.
  • Por lo tanto, es posible que el alumno se enfrente a un adversario cruel que puede proporcionar los ejemplos de tal manera que el alumno no se equivoque en absoluto para refinar la hipótesis cada vez.
  • Por ejemplo, no se puede confiar en la hipótesis del algoritmo de winnow en el tiempo t para predecir un ejemplo correctamente hasta que haya cometido un número logarítmico de errores.

Modelo de aprendizaje fuera de línea PAC:

  • En un modelo de aprendizaje fuera de línea como la configuración PAC, un oráculo selecciona puntos de ejemplo de entrenamiento con etiquetas basadas en una distribución de probabilidad subyacente de puntos de datos
  • El algoritmo PAC genera una hipótesis que puede hacer predicciones con un error ey una probabilidad p.
  • Por lo tanto, la eficiencia del algoritmo de aprendizaje PAC (un modelo de aprendizaje fuera de línea) se puede medir en términos de complejidad de la muestra (número de ejemplos de capacitación).

Por lo tanto, el modelo PAC es más conveniente que un modelo de error en línea en un entorno del mundo real que es más estable.

Los sistemas de clasificación de producción de Facebook utilizados en la clasificación de anuncios y clasificación de noticias utilizan una combinación de aprendizaje en línea y aprendizaje fuera de línea para proporcionar los mejores resultados.

  • Los modelos aprendidos sin conexión suelen ser más potentes. por ejemplo, podría aprender la no linealidad, etc.
  • El aprendizaje en línea podría adaptarse a los datos nuevos / no vistos. El modelo aprendido sin conexión (entrenado a partir de datos generados por modelos anteriores) tiende a calibrarse mal (generalmente sobrecalibrado) después del lanzamiento a la producción.

Para admitir la combinación de ambos, creamos una infraestructura distribuida para admitir eso, incluido un sistema de unión de características / etiquetas en línea, un sistema de experimentación fuera de línea y un sistema de seguimiento en línea para capacitación y publicación.

Respuesta simple:

El aprendizaje sin conexión es más rápido y más barato. Se usa cuando no se espera que la entrada se comporte de forma inusual. Por ejemplo, suponga que desea identificar piezas defectuosas de la máquina en una línea de ensamblaje utilizando sus imágenes adquiridas a través de la cámara montada sobre la cinta transportadora. Entrenaría al clasificador utilizando todo tipo de imágenes de piezas de máquina buenas y piezas de máquina mal mutiladas. No esperaría que el proceso de fabricación dañara demasiado las piezas. El aprendizaje sin conexión funcionaría razonablemente bien en este caso, ya que el clasificador no tiene que seguir aprendiendo constantemente. Se puede detener, desconectar, volver a entrenar y volver a implementar. Pero el entrenamiento puede realizarse de manera segura sin conexión.

El aprendizaje en línea mantiene el aprendizaje clasificador / regresor. Considere un sistema de recomendación en un sitio como IMDB que está constantemente aprendiendo de las calificaciones otorgadas por los usuarios a las películas y haciendo recomendaciones apropiadas a los usuarios. Este sistema no debe dejar de aprender, o se volverá obsoleto tan pronto como aparezca un número considerable de películas y críticas más recientes. La capacitación de un sistema de recomendación puede realizarse sin conexión, pero solo si puede permitirse desconectarla, como en el ejemplo anterior. Las desventajas son que el aprendizaje en línea puede ser más complejo y, por lo tanto, más lento y costoso que el aprendizaje fuera de línea.

Además de las respuestas anteriores, los algoritmos de aprendizaje en línea teóricamente intentan resolver un problema mucho más difícil en comparación con los algoritmos de aprendizaje por lotes, ya que los algoritmos en línea minimizan el error del peor de los casos, mientras que los algoritmos de aprendizaje por lotes generalmente minimizan la pérdida en la muestra de entrenamiento. En muchos problemas del mundo real, los algoritmos de aprendizaje en línea están tratando de resolver un problema demasiado difícil y, por lo tanto, es difícil diseñar algoritmos en línea que tengan un límite de error bajo. En realidad, esto fue una motivación para el modelo PAC en el que en realidad estamos resolviendo un problema más fácil, pero aún funcionan muy bien en la práctica.
Cualquier algoritmo en línea se puede convertir a un algoritmo PAC mientras que lo contrario no es cierto. Existe una serie de problemas que pueden resolverse de manera eficiente en el modelo PAC pero no pueden resolverse en el modelo de error en línea (el alumno nunca puede aprender el concepto objetivo). Por lo tanto, el mensaje corto es que el aprendizaje en línea es mucho más difícil que el aprendizaje PAC (por lotes) y existe una serie de problemas que solo se pueden resolver en el modelo PAC (por lotes).

Hay muchos pros y contras del aprendizaje en línea: al final del día, creo que todo se reduce a quién eres como persona. Mira esta publicación de blog: Tres desafíos del aprendizaje en línea (y cómo superarlos) – UoPeople

El aprendizaje en línea es uno de los modos de educación más eficaces y ampliamente utilizados. Le brinda al alumno la flexibilidad para completar su educación, mejorar sus conocimientos y actualizar sus habilidades junto con el cumplimiento de sus responsabilidades u otros compromisos. En el aprendizaje fuera de línea es difícil lograr esta flexibilidad.

El aprendizaje en línea puede ayudarnos a conectarnos con una amplia gama de personas y profesionales de todo el mundo. También es bastante rentable y asequible en comparación con el aprendizaje fuera de línea, especialmente porque las tasas de matrícula de la mayoría de las universidades aumentan continuamente.

Sin embargo, muchos todavía prefieren el aprendizaje fuera de línea, ya que consideran que la instrucción en el aula es mucho más efectiva que las instrucciones en línea. A menudo se debate que se da preferencia a la calificación fuera de línea que a las calificaciones obtenidas mediante el aprendizaje en línea.

Por lo tanto, depende de la elección de los alumnos si desean optar por el aprendizaje en línea o fuera de línea.

More Interesting

¿Debo usar un cursor o usar el paquete R directamente?

¿Podemos vender potencia informática a empresas de aprendizaje automático? ¿Cuál es la dificultad de hacer eso?

¿Es posible usar la red neuronal para predecir múltiples valores respetando ciertas condiciones?

¿Puedo controlar las señales neuronales desde un lugar?

¿Alguna vez ha utilizado el aprendizaje automático de alguna manera para ayudar en las pruebas de software y la automatización de pruebas?

¿Se utiliza el cálculo integral en Machine Learning o Deep Learning?

¿Cuáles son los beneficios de usar ReLU sobre softplus como funciones de activación?

¿Qué es la agrupación?

¿Qué papel juega la función logística en el algoritmo de regresión logística en el aprendizaje automático?

¿Hay alguna API basada en la nube para agrupar Tweets?

Si el aprendizaje automático está de moda en este momento, ¿qué crees que seguirá?

¿Qué papel juegan las redes neuronales y el aprendizaje automático en la atención médica?

Cómo comenzar a aprender y codificar Inteligencia Artificial

Cómo etiquetar objetivamente objetos con etiquetas que son subjetivas, en sistemas expertos

Cuál debería ser mi próximo paso, después de cubrir las estadísticas básicas de las estadísticas principales, un curso básico de análisis de datos (preparación de datos, exploración, clasificación, minería de reglas de asociación, agrupación, regresión) y un proyecto en un conjunto de datos SSLC (puede encontrarlo en mi único blog en Quora) usando R?