En el aprendizaje automático , el perceptrón de núcleo es una variante del popular algoritmo de aprendizaje del 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] lo que lo convierte en el primer aprendiz de clasificación de núcleo. [2]
El algoritmo del perceptrón es un algoritmo de aprendizaje en línea que funciona según un principio llamado "aprendizaje basado en errores". Mejora iterativamente un modelo ejecutándolo en muestras de entrenamiento y luego actualizando el modelo cada vez que descubre que ha realizado una clasificación incorrecta con respecto a una señal supervisada . El modelo aprendido por el algoritmo del 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í para simplificar) 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:
A diferencia de los modelos lineales aprendidos por el perceptrón, un método 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 (ver 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 por una función Φ : K ( x , x' ) = Φ( x ) · Φ( x' ) . Intuitivamente, se puede pensar como una función de similitud entre muestras, por lo que la máquina kernel establece la clase de una nueva muestra por comparación ponderada con el conjunto de entrenamiento. Cada función x' ↦ K ( x i , x' ) sirve como una función base en la clasificación.
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 peso w puede expresarse como una combinación lineal de las n muestras de entrenamiento. La ecuación para el vector de peso es
donde α i es el número de veces que x i se clasificó incorrectamente, forzando una actualización w ← w + y i x i . Usando este resultado, podemos formular el algoritmo de perceptrón dual, que recorre las muestras como antes, haciendo predicciones, pero en lugar de almacenar y actualizar un vector de peso w , actualiza un vector de "contador de errores" α . También debemos reescribir la fórmula de predicción para deshacernos de w :
Al conectar estas dos ecuaciones al ciclo de entrenamiento, se convierte en el algoritmo de 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]
Un problema con el perceptrón de núcleo, como se presentó anteriormente, es que no aprende máquinas de núcleo dispersas . Inicialmente, todos los α i son cero, de modo que evaluar la función de decisión para obtener ŷ no requiere ninguna evaluación de núcleo, pero cada actualización incrementa un solo α 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 , la cantidad de α i no cero y, por lo tanto, el costo de evaluación crecen linealmente en la cantidad de ejemplos presentados al algoritmo.
Para solucionar este problema se sugirió la variante forgetron del perceptrón de núcleo. Mantiene un conjunto activo de ejemplos con α i distinto de cero , eliminando ("olvidando") ejemplos del conjunto activo cuando excede un presupuesto predeterminado y "reduciendo" (reduciendo el peso de) los ejemplos antiguos a medida que los nuevos son promovidos a α i distinto de cero . [5]
Otro problema con el perceptrón kernel es que no se regulariza , lo que lo hace vulnerable al sobreajuste . El algoritmo de aprendizaje kernel en línea NORMA puede considerarse como una generalización del algoritmo del perceptrón kernel 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 como una generalización del perceptrón kernel. [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 del SVM kernel. [2]