En el aprendizaje automático , el perceptrón de núcleo es una variante del popular algoritmo de aprendizaje de perceptrón que puede aprender máquinas de núcleo , es decir, clasificadores no lineales que emplean una función de núcleo para calcular la similitud de muestras no vistas con muestras de entrenamiento. El algoritmo se inventó en 1964, [ 1 ] convirtiéndose así en el primer clasificador de núcleo. [ 2 ]
Preliminares
El algoritmo del perceptrón
El algoritmo perceptrón es un algoritmo de aprendizaje en línea que opera mediante un principio llamado "aprendizaje impulsado por errores". Mejora iterativamente un modelo ejecutándolo en muestras de entrenamiento y luego actualizando el modelo cada vez que encuentra que ha realizado una clasificación incorrecta con respecto a una señal supervisada . El modelo aprendido por el algoritmo perceptrón estándar es un clasificador binario lineal : un vector de pesos w (y opcionalmente un término de intersección b , omitido aquí por simplicidad) que se utiliza para clasificar un vector de muestra x como clase "uno" o clase "menos uno" según
donde un cero se asigna arbitrariamente a uno o menos uno. (El " sombrero " en ŷ denota un valor estimado).
En pseudocódigo , el algoritmo del perceptrón viene dado por:
- Inicializa w como un vector de ceros de longitud p , el número de predictores (características).
- Durante un número fijo de iteraciones, o hasta que se cumpla algún criterio de parada:
- Para cada ejemplo de entrenamiento x i con etiqueta de verdad fundamental y i ∈ {-1, 1 }:
- Sea ŷ = sgn( w T x i ) .
- Si ŷ ≠ y i , actualiza w ← w + y i x i .
- Para cada ejemplo de entrenamiento x i con etiqueta de verdad fundamental y i ∈ {-1, 1 }:
Métodos del núcleo
A diferencia de los modelos lineales aprendidos por el perceptrón, un método de kernel [ 3 ] es un clasificador que almacena un subconjunto de sus ejemplos de entrenamiento x i , asocia a cada uno un peso α i , y toma decisiones para nuevas muestras x' evaluando
- .
Aquí, K es una función kernel. Formalmente, una función kernel es un kernel semidefinido no negativo (véase la condición de Mercer ), que representa un producto interno entre muestras en un espacio de alta dimensión, como si las muestras se hubieran expandido para incluir características adicionales mediante una función Φ : K ( x , x' ) = Φ( x ) · Φ( x' ) . Intuitivamente, puede pensarse como una función de similitud entre muestras, por lo que la máquina kernel establece la clase de una nueva muestra mediante una comparación ponderada con el conjunto de entrenamiento. Cada función x' ↦ K ( x i , x' ) sirve como función base en la clasificación.
Algoritmo
Para derivar una versión kernelizada del algoritmo del perceptrón, primero debemos formularlo en forma dual , partiendo de la observación de que el vector de pesos w puede expresarse como una combinación lineal de las n muestras de entrenamiento. La ecuación para el vector de pesos es
donde α i es el número de veces que x i fue clasificado erróneamente, lo que obliga a una actualización w ← w + y i x i . Usando este resultado, podemos formular el algoritmo del perceptrón dual, que recorre las muestras como antes, haciendo predicciones, pero en lugar de almacenar y actualizar un vector de pesos w , actualiza un vector de "contador de errores" α . También debemos reescribir la fórmula de predicción para eliminar w :
Al introducir estas dos ecuaciones en el bucle de entrenamiento, se convierte en el algoritmo del perceptrón dual .
Finalmente, podemos reemplazar el producto escalar en el perceptrón dual por una función kernel arbitraria, para obtener el efecto de un mapa de características Φ sin calcular Φ( x ) explícitamente para ninguna muestra. Al hacer esto, obtenemos el algoritmo del perceptrón kernel: [ 4 ]
- Inicialice α con un vector de ceros de longitud n , el número de muestras de entrenamiento.
- Durante un número fijo de iteraciones, o hasta que se cumpla algún criterio de parada:
- Para cada ejemplo de entrenamiento x j , y j :
- Dejar
- Si ŷ ≠ y j , realice una actualización incrementando el contador de errores:
- α j ← α j + 1
- Para cada ejemplo de entrenamiento x j , y j :
Variantes y extensiones
Un problema del perceptrón de núcleo, tal como se presentó anteriormente, es que no aprende máquinas de núcleo dispersas . Inicialmente, todos los α i son cero, por lo que evaluar la función de decisión para obtener ŷ no requiere ninguna evaluación del núcleo; sin embargo, cada actualización incrementa un único α i , lo que hace que la evaluación sea cada vez más costosa. Además, cuando el perceptrón de núcleo se utiliza en un entorno en línea , el número de α i distintos de cero y, por lo tanto, el costo de evaluación, crecen linealmente con el número de ejemplos presentados al algoritmo.
Se propuso la variante forgettron del perceptrón kernel para abordar este problema. Mantiene un conjunto activo de ejemplos con α i distinto de cero , eliminando ("olvidando") ejemplos del conjunto activo cuando este excede un presupuesto predeterminado y "reduciendo" (disminuyendo el peso de) los ejemplos antiguos a medida que los nuevos se promueven a α i distinto de cero . [ 5 ]
Otro problema del perceptrón de núcleo es que no se regulariza , lo que lo hace vulnerable al sobreajuste . El algoritmo de aprendizaje de núcleo en línea NORMA puede considerarse una generalización del algoritmo de perceptrón de núcleo con regularización. [ 6 ] El algoritmo de optimización mínima secuencial (SMO), utilizado para aprender máquinas de vectores de soporte, también puede considerarse una generalización del perceptrón de núcleo. [ 6 ]
El algoritmo de perceptrón votado de Freund y Schapire también se extiende al caso kernelizado, [ 7 ] dando límites de generalización comparables a los de la SVM kernel. [ 2 ]
Referencias
- ↑ Aizerman, MA; Braverman, Emmanuel M.; Rozoner, LI (1964). "Fundamentos teóricos del método de la función potencial en el aprendizaje del reconocimiento de patrones". Automatización y control remoto . 25 : 821–837 .Citado en Guyon, Isabelle; Boser, B.; Vapnik, Vladimir (1993). Ajuste automático de capacidad de clasificadores de dimensión VC muy grande . Avances en sistemas de procesamiento de información neuronal. CiteSeerX 10.1.1.17.7215 .
- 1 2 Bordes, Antoine; Ertekin, Seyda; Weston, Jason; Bottou, Léon (2005). "Clasificadores de kernel rápidos con aprendizaje activo y en línea". JMLR . 6 : 1579– 1619.
- ↑ Schölkopf, Bernhard; y Smola, Alexander J.; Aprendizaje con núcleos , MIT Press, Cambridge, MA, 2002. ISBN 0-262-19475-9
- ↑ Shawe-Taylor, John; Cristianini, Nello (2004). Métodos de núcleo para el análisis de patrones . Cambridge University Press. págs. 241–242 .
- ↑ Dekel, Ofer; Shalev-Shwartz, Shai; Singer, Yoram (2008). "The forgetron: A kernel-based perceptron on a budget" (PDF) . SIAM Journal on Computing . 37 (5): 1342– 1372. CiteSeerX 10.1.1.115.568 . doi : 10.1137/060666998 .
- 1 2 Kivinen, Jyrki; Smola, Alexander J.; Williamson, Robert C. (2004). "Aprendizaje en línea con kernels". IEEE Transactions on Signal Processing . 52 (8): 2165– 2176. Bibcode : 2004ITSP...52.2165K . CiteSeerX 10.1.1.578.5680 . doi : 10.1109/TSP.2004.830991 .
- ↑ Freund, Y. ; Schapire, RE (1999). "Clasificación de margen amplio utilizando el algoritmo perceptrón" (PDF) . Machine Learning . 37 (3): 277– 296. doi : 10.1023/A:1007662407062 .
- Métodos de kernel para el aprendizaje automático
- Clasificación estadística