Tengo un conjunto de datos de transmisión, los ejemplos están disponibles uno a la vez. Tendría que hacer una clasificación de clases múltiples en ellos. Tan pronto como introduje un ejemplo de capacitación en el proceso de aprendizaje, tengo que descartar el ejemplo. Al mismo tiempo, también estoy usando el último modelo para realizar predicciones sobre datos no etiquetados.
Hasta donde yo sé, una red neuronal es capaz de hacer un flujo de aprendizaje al alimentar ejemplos uno a la vez y realizar propagación hacia adelante y propagación hacia atrás en el ejemplo.
¿Puede un SVM realizar la transmisión de aprendizaje de un ejemplo a la vez y descartar el ejemplo inmediatamente?
machine-learning
svm
neural-networks
siamii
fuente
fuente
Respuestas:
La configuración de transmisión en el aprendizaje automático se denomina "aprendizaje en línea". No existe una máquina de vectores de soporte exactos en la configuración en línea (ya que la definición de la función objetivo es inherentemente para la configuración por lotes). Probablemente la generalización más directa de la SVM a la configuración en línea son los algoritmos pasivo-agresivos. El código está aquí http://webee.technion.ac.il/people/koby/code-index.html y un documento asociado está aquí http://eprints.pascal-network.org/archive/00002147/01/CrammerDeKeShSi06. pdf
La idea básica es que uno recibe datos como pares con puntos de consulta x ∈ R donde k es el número de etiquetas. El algoritmo mantiene una matriz de ponderación W t ∈ R k × d en la iteración t Obra los algoritmos recieves un punto de datos x t y anota da entonces predichos y t = W x t( x , y) ∈ Rre× [ k ] x ∈ R k Wt∈ Rk × d t Xt y^t= WXt para cada una de las etiquetas y predice la etiqueta con la puntuación más alta como la etiqueta verdadera. Si la predicción es incorrecta, entonces el algoritmo realiza el cambio más pequeño a modo que evitará ese error en el futuro. El cambio más pequeño se define aquí en términos de la norma Frobenius.Wt
fuente
Siempre he encontrado que el marco de actualizaciones implícitas (que incluye los algoritmos pasivo-agresivos mencionados en otra respuesta aquí) es innecesariamente más complejo que el marco de actualizaciones explícitas (sin mencionar que las actualizaciones implícitas pueden ser mucho más lentas que las explícitas a menos que La solución de forma cerrada para la actualización implícita está disponible).
Las actualizaciones en línea de importancia de peso son un ejemplo de un algoritmo de actualización explícito de vanguardia que es más simple, más rápido y más flexible (soporta múltiples funciones de pérdida, multas múltiples, aprendizaje sensible al costo, etc.) que sus contrapartes implícitas. Sin embargo, el documento trata con modelos lineales (svm lineal corresponde al caso de la función de pérdida de bisagra con penalización cuadrática)
Dado que necesita una clasificación de varias clases, un enfoque es utilizar la funcionalidad de "reducciones" de votepal wabbit (construida en la parte superior del enfoque del documento) que desafortunadamente no está bien documentada.
fuente
LASVM es una de las variantes de aprendizaje en línea más populares de SVM.
Los SVM lineales también se pueden entrenar utilizando el descenso de gradiente estocástico, al igual que cualquier modelo lineal.
fuente
Consulte el documento SVM Incremental Learning, Adaptation, and Optimization , que propuso un SVM en línea para la clasificación binaria.
El código del documento anterior se puede encontrar aquí . En el código, se presentan dos formas de capacitación en línea:
svmtrain()
, ysvmtrain2()
.Volviendo a su pregunta, la respuesta es obviamente SÍ para el aprendizaje continuo de un ejemplo a la vez. Y el código también puede manejar desaprender (descartar) un ejemplo, es decir, una estimación de error de omisión exacta y aproximada (LOO): la estimación exacta del error de LOO se puede calcular eficientemente desaprendiendo exactamente un ejemplo a la vez y probando el clasificador en el ejemplo.
fuente
Aprendizaje en línea con Kernels analiza el aprendizaje en línea en la configuración general del kernel.
Extracto del resumen:
"Los algoritmos basados en el núcleo, como las máquinas de vectores de soporte, han logrado un éxito considerable en varios problemas en la configuración de lotes, donde todos los datos de entrenamiento están disponibles de antemano. Las máquinas de vectores de soporte combinan el llamado truco del núcleo con la idea de gran margen. Ha habido poco uso de estos métodos en un entorno en línea adecuado para aplicaciones en tiempo real. En este artículo consideramos el aprendizaje en línea en un espacio de reproducción del núcleo de Hilbert. Al considerar el descenso de gradiente estocástico clásico dentro de un espacio de características, y el uso de algunos trucos directos , desarrollamos algoritmos simples y computacionalmente eficientes para una amplia gama de problemas, como la clasificación, la regresión y la detección de novedades " .
fuente