Vowpal Wabbit (también conocido como "VW") es un programa y una biblioteca de sistema de aprendizaje automático interactivo en línea rápido de código abierto desarrollado originalmente en Yahoo! Research y actualmente en Microsoft Research . Fue iniciado y está dirigido por John Langford . El apoyo al aprendizaje interactivo de Vowpal Wabbit es particularmente notable, incluidos los bandidos contextuales , el aprendizaje activo y las formas de aprendizaje por refuerzo guiado . Vowpal Wabbit proporciona una implementación fuera del núcleo escalable eficiente con soporte para una serie de reducciones de aprendizaje automático, ponderación de importancia y una selección de diferentes funciones de pérdida y algoritmos de optimización.
Desarrollador (es) | Yahoo! Investigación y posterior investigación de Microsoft |
---|---|
Lanzamiento estable | 8.10.0 / 1 de abril de 2021 |
Repositorio | github |
Escrito en | C ++ |
Sistema operativo | Linux , macOS , Microsoft Windows |
Plataforma | Multiplataforma |
Tipo | Aprendizaje automático |
Licencia | Licencia BSD |
Sitio web | votopalwabbit |
Características notables
El programa VW admite:
- Múltiples problemas de aprendizaje supervisados (y semi-supervisados):
- Clasificación (tanto binaria como multiclase)
- Regresión
- Aprendizaje activo (datos parcialmente etiquetados) tanto para regresión como para clasificación
- Múltiples algoritmos de aprendizaje (tipos de modelos / representaciones)
- Regresión OLS
- Factorización de matrices (SVD de matriz dispersa)
- Red neuronal de una sola capa (con recuento de nodos de capa oculta especificado por el usuario)
- Buscar (buscar y aprender)
- Asignación de Dirichlet latente (LDA)
- Aproximación polinomial por etapas
- Recomendar top-K de N
- Reducción de OAA uno contra todos (OAA) y sensible al costo para clases múltiples
- Ponderados todos los pares
- Bandido contextual (con múltiples estrategias de exploración / explotación)
- Múltiples funciones de pérdida :
- error al cuadrado
- cuantil
- bisagra
- logístico
- poisson
- Múltiples algoritmos de optimización
- Regularización ( norma L1 , norma L2 y regularización neta elástica )
- Entrada flexible: las características de entrada pueden ser:
- Binario
- Numérico
- Categórico (a través de nombres de funciones flexibles y el truco hash )
- Puede lidiar con valores perdidos / características dispersas
- Otras características
- Generación sobre la marcha de interacciones de características (cuadráticas y cúbicas)
- Generación sobre la marcha de N-gramas con saltos opcionales (útil para conjuntos de datos de palabras / idiomas)
- Retención automática del conjunto de prueba y terminación anticipada en varias pasadas
- bootstrapping
- Informe de progreso de aprendizaje en línea configurable por el usuario + auditoría del modelo
- Optimización de hiperparámetros
Escalabilidad
Vowpal wabbit se ha utilizado para aprender un conjunto de datos de tera-característica (10 12 ) en 1000 nodos en una hora. [1] Su escalabilidad se ve favorecida por varios factores:
- Aprendizaje en línea fuera del núcleo: no es necesario cargar todos los datos en la memoria
- El truco del hash : las identidades de las funciones se convierten en un índice de peso a través de un hash (utiliza MurmurHash 3 de 32 bits )
- Explotación de CPU de varios núcleos: el análisis de la entrada y el aprendizaje se realizan en subprocesos separados.
- Código C ++ compilado
Referencias
- ^ Agarwal, Alekh; Chapelle, Olivier; Dudik, Miroslav; Langford, John (2011). "Un sistema de aprendizaje lineal de Terascale eficaz confiable". arXiv : 1110,4198 [ cs.LG ].
enlaces externos
- Página web oficial
- Repositorio de github de Vowpal Wabbit
- Documentación y ejemplos (github wiki)
- Tutorial de Vowpal Wabbit en NIPS 2011
- Preguntas (y respuestas) etiquetadas como 'votepalwabbit' en StackOverflow