Depende del espacio del problema.
La misión Apollo tenía un ML en línea / en tiempo real funcionando: un filtro Kalman.
Creo que la mayoría de las personas en Quora están pensando en un problema como la publicidad computacional en línea, que implica miles de millones de clics en tiempo real y potencialmente millones de funciones. El prototipo de ML para esto es una regresión lineal regularizada por L1. Los métodos relacionados incluyen L1-Regresión logística, L1-SVM, Rango SVM, etc.
El regularizador L1 se desea para proporcionar un modelo disperso. La regresión lineal L1-reg también se llama detección comprimida.
- ¿Cómo ha sido su experiencia en Quora con Computer Vision y la comunidad relacionada?
- ¿Cuál es el beneficio de utilizar la agrupación promedio en lugar de la agrupación máxima?
- ¿Cuáles son los principales avances en el procesamiento del lenguaje natural en 2015?
- ¿Qué es la agrupación conceptual?
- ¿Cuál es la diferencia entre un conjunto de datos y una característica?
Noisy Time Series III: Fundamentos teóricos de la detección comprimida
La forma más fácil de resolver el problema de optimización L1 es con el descenso de coordenadas (CD) porque en el espacio de coordenadas
- La función objetivo del problema de optimización es diferenciable, y
- el tamaño del paso se puede dominar normalizando los vectores de datos / documentos
En consecuencia, uno puede aplicar métodos simples como CD que requieren muy pocos parámetros ajustables. Métodos como Liblinear y GraphLab hacen esto, y lo hacen muy, muy bien.
Pero en un entorno en línea, uno quiere formar los gradientes a medida que llega cada nueva muestra de capacitación, es decir, en ‘espacio de documentos, no’ coordenadas o espacio de características ‘.
La forma estándar de hacer esto es el Descenso de gradiente estocástico (SGD), también conocido como mínimos cuadrados medios (LMS)
El problema es que SGD no genera soluciones dispersas, como se desea con un regularizador L1. Para espacios de características muy grandes y diversos, este es un problema. Además, SGD requiere un parámetro ajustable, la velocidad de aprendizaje (o el tamaño del paso), que es difícil de predeterminar. En consecuencia, se ha realizado un gran esfuerzo para desarrollar algos SGD modificados que puedan generar un modelo disperso y determinar automáticamente el tamaño del paso
Durante mucho tiempo, los investigadores buscaron soluciones rápidas de svm / convexas. Boyd en Stanford fue pionero en los métodos de barrera de punto / registro interior y desarrolló una implementación de alto rendimiento para el L1-SVM. Y estos son buenos métodos. Pero son métodos especializados que requieren mucho trabajo para comprender e implementar. Además, el estudiante de Boyd (que implementó el solucionador SVM L1 de alto rendimiento), fue a trabajar a un gran fondo de cobertura y no trajo la técnica a la industria de Internet. También se logró un avance clave con ” Pegasos : Primal Estimado sub-GrAdient SOlver for SVM”, desarrollado en la Universidad de Chicago (mi escuela, debo mencionarlo):
Código fuente de Shai Shalev-Shwartz
Por supuesto, hubo otros avances importantes, como los métodos de resolución de paquetes / planos de corte desarrollados por Joachims para SvmLight. En este momento, 2013, se han desarrollado al menos 10 métodos diferentes para abordar estos problemas.
VW está bien, pero no es un gran ejemplo. VW requiere que el usuario ingrese la tasa de aprendizaje inicial y adopta un enfoque tradicional de 2 pasos, donde el solucionador cambia de SGD a LBGFS (un método aproximado de segundo orden). [al menos creo recordar que esto es lo que hace, podría estar equivocado aquí]. Este es un buen enfoque, pero no necesariamente adecuado para el aprendizaje en línea real.
Un buen ejemplo reciente de algo escaso y automatizado tipo SGD es el Follow the Leader – Proximal, discutido en este artículo por Google
Página en contenido de usuario de Google
Descargo de responsabilidad: no tengo ningún sesgo particular hacia ninguno de estos algos
Finalmente, mencionaré algunos otros problemas prácticos de ingeniería. El aprendizaje en línea, a la escala de Google o eBay (mi antiguo cliente), requiere almacenar grandes cantidades de datos en la memoria. En consecuencia, en muchas aplicaciones, es necesario implementar el solucionador numérico con representaciones comprimidas de flotadores, pero estos solucionadores están sujetos a errores de redondeo, y en realidad es difícil incluso implementar SGD simple si no controla los errores de redondeo correctamente. Este problema se discute en el documento de google
[si tengo algo mal o me he perdido algo, por favor comente y haré las correcciones]
Para obtener más datos divertidos y respuestas increíbles, consulte mi canal de YouTube https://www.youtube.com/channel/…
y sígueme en Twitter https://twitter.com/CalcCon