¿Cómo explicar intuitivamente qué es un núcleo?

97

Muchos clasificadores de aprendizaje automático (por ejemplo, máquinas de vectores de soporte) permiten especificar un núcleo. ¿Cuál sería una forma intuitiva de explicar qué es un núcleo?

Un aspecto en el que he estado pensando es la distinción entre núcleos lineales y no lineales. En términos simples, podría hablar de 'funciones de decisión lineal' y 'funciones de decisión no lineales'. Sin embargo, no estoy seguro si llamar a un núcleo una 'función de decisión' es una buena idea.

Sugerencias?

clave hash
fuente

Respuestas:

113

El núcleo es una forma de calcular el producto escalar de dos vectores e y en algún espacio de características (posiblemente de muy alta dimensión), por lo que las funciones del núcleo a veces se denominan "producto escalar generalizado".xy

Supongamos que tenemos un mapeo que trae nuestros vectores en R n a algún espacio de características. Entonces, el producto escalar deyen este espacio es. Un núcleo es una funciónque corresponde a este producto escalar, es decir,.φ:RnRmRnx y φ( x ) T φ( y )kk( x , y )=φ( x ) T φ( y )Rmxyφ(x)Tφ(y)kk(x,y)=φ(x)Tφ(y)

¿Por qué es útil esto? Los núcleos dan una manera de calcular productos de puntos en algún espacio de características sin siquiera saber qué es este espacio y qué es .φ

Por ejemplo, considere un núcleo polinomial simple con . Esto no parece corresponder a ninguna función de mapeo , es solo una función que devuelve un número real. Suponiendo que y , esta expresión:x , yR 2 φ x = ( x 1 , x 2 ) y = ( y 1 , y 2 )k(x,y)=(1+xTy)2x,yR2φx=(x1,x2)y=(y1,y2)

k(x,y)=(1+xTy)2=(1+x1y1+x2y2)2==1+x12y12+x22y22+2x1y1+2x2y2+2x1x2y1y2

Tenga en cuenta que esto no es más que un producto de punto entre dos vectores y y . Entonces el kernel calcula un producto de puntos en Espacio de 6 dimensiones sin visitar explícitamente este espacio.(1,y 2 1 ,y 2 2 ,(1,x12,x22,2x1,2x2,2x1x2)φ(x)=φ(x1,x2)=(1,x(1,y12,y22,2y1,2y2,2y1y2)k(x,y)=(1+ x Tφ(x)=φ(x1,x2)=(1,x12,x22,2x1,2x2,2x1x2)k(x,y)=(1+xTy)2=φ(x)Tφ(y)

Otro ejemplo es el kernel gaussiano . Si expandimos Taylor esta función, veremos que corresponde a un codominio de dimensiones infinitas de .k(x,y)=exp(γxy2)φ

Finalmente, recomendaría un curso en línea "Aprendiendo de los datos" del profesor Yaser Abu-Mostafa como una buena introducción a los métodos basados ​​en el núcleo. Específicamente, las conferencias "Máquinas de vectores de soporte" , "Métodos del núcleo" y "Funciones de base radial" tratan sobre los núcleos.

Alexey Grigorev
fuente
2
Definición de etiqueta actual: "Intuitivo: preguntas que buscan una comprensión conceptual o no matemática de la estadística". No hay una indicación clara de si conceptual se trata como sinónimo de no matemático.
rolando2
40

Una forma muy simple e intuitiva de pensar en los núcleos (al menos para SVM) es una función de similitud. Dados dos objetos, el núcleo genera una puntuación de similitud. Los objetos pueden ser cualquier cosa a partir de dos enteros, dos vectores con valores reales, árboles, lo que sea, siempre que la función del núcleo sepa cómo compararlos.

El ejemplo posiblemente más simple es el núcleo lineal, también llamado producto de puntos. Dados dos vectores, la similitud es la longitud de la proyección de un vector sobre otro.

Otro ejemplo interesante de kernel es el kernel gaussiano. Dados dos vectores, la similitud disminuirá con el radio de . La distancia entre dos objetos es "ponderada" por este parámetro de radio.σ

El éxito del aprendizaje con núcleos (de nuevo, al menos para SVM), depende en gran medida de la elección del núcleo. Puede ver un núcleo como una representación compacta del conocimiento sobre su problema de clasificación. Muy a menudo es un problema específico.

No llamaría a un núcleo una función de decisión ya que el núcleo se usa dentro de la función de decisión. Dado un punto de datos para clasificar, la función de decisión hace uso del núcleo al comparar ese punto de datos con una serie de vectores de soporte ponderados por los parámetros aprendidos . Los vectores de soporte están en el dominio de ese punto de datos y el algoritmo de aprendizaje encuentra los parámetros aprendidos .ααα

Vladislavs Dovgalecs
fuente
El producto puntual y la proyección no son idénticos.
ttnphns
En el caso de SVM, creo que los núcleos son medidas de distancia en diferentes espacios. Esto está de acuerdo con la idea de que un SVM generaliza un clasificador de vectores de soporte. En general, los granos pueden ser más complicados.
aginensky
29

Un ejemplo visual para ayudar a la intuición.

Considere el siguiente conjunto de datos donde los puntos amarillo y azul claramente no son linealmente separables en dos dimensiones.

ingrese la descripción de la imagen aquí

Si pudiéramos encontrar un espacio dimensional superior en el que estos puntos fueran linealmente separables , entonces podríamos hacer lo siguiente:

  • Asigne las características originales al espacio superior del transformador (asignación de características)
  • Realizar SVM lineal en este espacio superior
  • Obtenga un conjunto de pesos correspondientes al hiperplano del límite de decisión
  • Mapee este hiperplano nuevamente en el espacio 2D original para obtener un límite de decisión no lineal

Hay muchos espacios dimensionales superiores en los que estos puntos son linealmente separables. Aquí hay un ejemplo

x1,x2:→z1,z2,z3
z1=2x1x2  z2=x12  z3=x22

Aquí es donde entra en juego el truco Kernel. Citando las grandes respuestas anteriores

Supongamos que tenemos un mapeo que trae nuestros vectores en a algún espacio de características . Entonces, el producto escalar de y en este espacio es . Un núcleo es una función que corresponde a este producto escalar, es decir,φ:RnRmRnRmxyφ(x)Tφ(y)kk(x,y)=φ(x)Tφ(y)

Si pudiéramos encontrar una función del núcleo que fuera equivalente al mapa de características anterior, entonces podríamos conectar la función del núcleo en el SVM lineal y realizar los cálculos de manera muy eficiente.

Núcleo polinomial

Resulta que el mapa de características anterior corresponde al núcleo polinomial bien conocido : . Deje y obtenemosK(x,x)=(xTx)dd=2x=(x1,x2)T

k((x1x2),(x1x2))=(x1x2+x2x2)2=2x1x1x2x2+(x1x1)2+(x2x2)2=(2x1x2 x12 x22) (2x1x2x12x22)

k((x1x2),(x1x2))=ϕ(x)Tϕ(x)

ϕ((x1x2))=(2x1x2x12x22)

Visualizar el mapa de características y la línea límite resultante

  • El diagrama del lado izquierdo muestra los puntos trazados en el espacio transformado junto con el hiperplano de límite lineal SVM
  • La gráfica del lado derecho muestra el resultado en el espacio 2-D original

ingrese la descripción de la imagen aquí


Fuente

Xavier Bourret Sicotte
fuente
4

Muy simple (pero con precisión) un núcleo es un factor de peso entre dos secuencias de datos. Este factor de pesaje puede asignar más peso a un " punto de datos " en un " punto de tiempo " que al otro " punto de datos ", o asignar un peso igual o asignar más peso al otro " punto de datos " y así sucesivamente.

De esta forma, la correlación ( producto de puntos ) puede asignar más "importancia" en algunos puntos que en otros y, por lo tanto, hacer frente a las no linealidades (por ejemplo , espacios no planos ), información adicional, suavizado de datos , etc.

Todavía de otra manera, un núcleo es una forma de cambiar las dimensiones relativas (o unidades de dimensión ) de dos secuencias de datos para hacer frente a las cosas mencionadas anteriormente.

En una tercera forma (relacionada con las dos anteriores), un núcleo es una forma de mapear o proyectar una secuencia de datos en la otra de manera 1 a 1 teniendo en cuenta la información o criterios dados (por ejemplo, espacio curvo, datos faltantes, datos reordenando y así sucesivamente). Así, por ejemplo un núcleo dado puede estirar o encoger o de cultivos o doblar secuencia de uno de datos con el fin de encajar o mapa 1-a-1 sobre la otra.

Un núcleo puede actuar como un Procrustes para " encajar mejor "

Nikos M.
fuente
Creo que puede estar hablando de los núcleos en el sentido de la estimación de la densidad del núcleo, no de los núcleos Mercer positivos semidefinidos utilizados en SVM y métodos relacionados.
Dougal
@Dougal, en el sentido de esta respuesta, el núcleo es una función o medida de pesaje utilizada para correlacionar datos de una manera específica o para explotar ciertas características de datos, por lo que los métodos del núcleo SVM también están cubiertos
Nikos M.