¿Regularización y escalado de funciones en el aprendizaje en línea?

15

Digamos que tengo un clasificador de regresión logística. En el aprendizaje por lotes normal, tendría un término regularizador para evitar el sobreajuste y mantener mis pesos pequeños. También normalizaría y escalaría mis características.

En un entorno de aprendizaje en línea, obtengo un flujo continuo de datos. Hago una actualización de descenso de gradiente con cada ejemplo y luego la descarto. ¿Se supone que debo usar el término de escala y regularización de funciones en el aprendizaje en línea? En caso afirmativo, ¿cómo puedo hacer eso? Por ejemplo, no tengo un conjunto de datos de entrenamiento para escalar. Tampoco tengo la validación configurada para ajustar mi parámetro de regularización. Si no, ¿por qué no?

En mi aprendizaje en línea, recibo una corriente de ejemplos continuamente. Para cada nuevo ejemplo, hago una predicción. Luego, en el siguiente paso, obtengo el objetivo real y hago la actualización de descenso de gradiente.

siamii
fuente

Respuestas:

9

El proyecto de código abierto Wongpal Wabbit incluye una implementación de SGD en línea que se mejora mediante el cálculo sobre la marcha (en línea) de 3 factores adicionales que afectan las actualizaciones de peso. Estos factores se pueden habilitar / deshabilitar mediante sus respectivas opciones de línea de comando (de forma predeterminada, los tres están activados, la --sgdopción los apaga a todos, es decir: recurre al SGD "clásico").

Las 3 opciones de mejora de SGD son:

  • --normalized actualizaciones ajustadas para la escala de cada característica
  • --adaptive utiliza gradiente adaptativo (AdaGrad) (Duchi, Hazan, Singer)
  • --invariant actualizaciones de importancia (Karampatziakis, Langford)

Juntos, se aseguran de que el proceso de aprendizaje en línea realice una compensación / ajuste automático de 3 vías para:

  • escala por función (valores grandes frente a pequeños)
  • disminución de la tasa de aprendizaje por función según la importancia de la función
  • por característica ajuste de la tasa de aprendizaje adaptativo para la prevalencia / rareza de la característica en ejemplos

El resultado es que no es necesario normalizar previamente o escalar diferentes características para que el alumno sea menos sesgado y más efectivo.

Además, votepal wabbit también implementa la regularización en línea a través del descenso de gradiente truncado con las opciones de regularización:

  • --l1 (Norma L1)
  • --l2 (Norma L2)

Mi experiencia con estas mejoras en múltiples conjuntos de datos fue que mejoraron significativamente la precisión del modelo y una convergencia más uniforme cuando cada uno de ellos se introdujo en el código.

Aquí hay algunos documentos académicos para obtener más detalles relacionados con estas mejoras:

arielf
fuente
Arielf: si desactiva las tres mejoras (a través de --sgd), el sgd que se está haciendo se muestra en la diapositiva 11 de github.com/JohnLangford/vowpal_wabbit/wiki/v6.1_tutorial.pdf para que luego power_t e initial_t se vuelvan relevantes ?
B_Miner
1
B_miner: por lo que entiendo --power_ty --initial_tson opciones independientes globales (no por función). --sgdsolo vuelve al SGD "clásico". IOW: --sgdsolo cancela --invariant, --normalizedy --adaptive(lo que implica tasas de aprendizaje separadas por función)
arielf
¿Sabes si hay una manera de hacer estas actualizaciones de forma asincrónica paralela (como se hace en SGD asincrónica)? Parece que VW con múltiples trabajadores promedia el modelo de cada trabajador al final de cada pase. ¿Algún documento / puntero sobre cómo hacer esto?
JC1
1

sí, ciertamente necesita regularización ... también ayuda a la pendiente del gradiente (e inicializa la tasa de aprendizaje a 1 / C)

ver, por ejemplo, el documento SGD-QN http://leon.bottou.org/papers papeles de bottou

usted realmente no ha explicado lo que quiere decir con aprendizaje en línea: por ejemplo, para cada punto, ¿obtiene el valor objetivo? No sé cómo incorporaría ... buscando C ... Supongo que tendría varios clasificadores con diferentes términos de regularización y rastrearía el error de predicción (antes de actualizar los pesos)

seanv507
fuente
Al aprender en línea, obtengo un ejemplo y hago una predicción. En el siguiente paso, obtengo el objetivo real para mi ejemplo y hago una actualización de descenso de gradiente.
siamii
bueno, entonces debería ser como sugerí: ejecuta un grupo de clasificadores con diferentes parámetros de regularización y realiza un seguimiento de los errores de predicción de cada clasificador.
seanv507
No estoy seguro de lo que quieres decir con inicializar la tasa de aprendizaje a 1 / C. ¿Qué es la C? ¿Estás hablando de máquinas de vectores de soporte? Estoy hablando de regresión logística donde el regularizador tiene coeficiente lambda. No sé qué tiene que ver eso con la tasa de aprendizaje.
siamii
sí, el parámetro de regularización l2, C, lambda o lo que sea. es algo que se menciona en un aparte en el artículo sgdqn de bottou, y supongo que se explica mejor en otro lugar. básicamente su tasa de aprendizaje debe ser la curvatura 1 (inversa de Hessian) de su superficie de error ... ahora si su superficie de error es
seanv507
1
¿También necesito hacer escala de características? ¿Cómo hacer eso en un entorno en línea?
siamii