184 votos

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

Muchos clasificadores de aprendizaje automático (por ejemplo, las máquinas de vectores de apoyo) 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 pensado es la distinción entre núcleos lineales y no lineales. En términos sencillos, podría hablar de "funciones de decisión lineales" y "funciones de decisión no lineales". Sin embargo, no estoy seguro de que llamar a un núcleo "función de decisión" sea una buena idea.

¿Sugerencias?

213voto

Alexey Grigorev Puntos 1751

El núcleo es una forma de calcular el producto punto de dos vectores $\mathbf x$ y $\mathbf y$ en algún espacio de características (posiblemente de muy alta dimensión), razón por la cual las funciones del núcleo se denominan a veces "producto de puntos generalizado".

Supongamos que tenemos un mapeo $\varphi \, : \, \mathbb R^n \to \mathbb R^m$ que trae nuestros vectores en $\mathbb R^n$ a algún espacio de características $\mathbb R^m$ . Entonces el producto punto de $\mathbf x$ y $\mathbf y$ en este espacio es $\varphi(\mathbf x)^T \varphi(\mathbf y)$ . Un núcleo es una función $k$ que corresponde a este producto punto, es decir $k(\mathbf x, \mathbf y) = \varphi(\mathbf x)^T \varphi(\mathbf y)$ .

¿Por qué es útil? Los kernels ofrecen una forma de calcular productos de puntos en algún espacio de características sin ni siquiera saber qué es este espacio y qué es $\varphi$ .

Por ejemplo, consideremos un núcleo polinómico simple $k(\mathbf x, \mathbf y) = (1 + \mathbf x^T \mathbf y)^2$ con $\mathbf x, \mathbf y \in \mathbb R^2$ . Esto no parece corresponder a ninguna función de mapeo $\varphi$ es sólo una función que devuelve un número real. Suponiendo que $\mathbf x = (x_1, x_2)$ y $\mathbf y = (y_1, y_2)$ ampliemos esta expresión:

$\begin{align} k(\mathbf x, \mathbf y) & = (1 + \mathbf x^T \mathbf y)^2 = (1 + x_1 \, y_1 + x_2 \, y_2)^2 = \\ & = 1 + x_1^2 y_1^2 + x_2^2 y_2^2 + 2 x_1 y_1 + 2 x_2 y_2 + 2 x_1 x_2 y_1 y_2 \end{align}$

Obsérvese que esto no es más que un producto punto entre dos vectores $(1, x_1^2, x_2^2, \sqrt{2} x_1, \sqrt{2} x_2, \sqrt{2} x_1 x_2)$ y $(1, y_1^2, y_2^2, \sqrt{2} y_1, \sqrt{2} y_2, \sqrt{2} y_1 y_2)$ y $\varphi(\mathbf x) = \varphi(x_1, x_2) = (1, x_1^2, x_2^2, \sqrt{2} x_1, \sqrt{2} x_2, \sqrt{2} x_1 x_2)$ . Así que el núcleo $k(\mathbf x, \mathbf y) = (1 + \mathbf x^T \mathbf y)^2 = \varphi(\mathbf x)^T \varphi(\mathbf y)$ calcula un producto punto en un espacio de 6 dimensiones sin visitar explícitamente este espacio.

Otro ejemplo es el núcleo gaussiano $k(\mathbf x, \mathbf y) = \exp\big(- \gamma \, \|\mathbf x - \mathbf y\|^2 \big)$ . Si expandimos en Taylor esta función, veremos que corresponde a una función de dimensión infinita $\varphi$ .

Por último, recomendaría un curso en línea "Aprender de los datos" del profesor Yaser Abu-Mostafa como una buena introducción a los métodos basados en núcleos. En concreto, las conferencias "Máquinas de vectores de apoyo" , "Métodos del núcleo" y "Funciones de base radial" son sobre granos.

52voto

Valentin Kantor Puntos 176

Una forma muy sencilla e intuitiva de pensar en los núcleos (al menos para las SVM) es una función de similitud. Dados dos objetos, el kernel produce una puntuación de similitud. Los objetos pueden ser cualquier cosa, empezando por dos enteros, dos vectores de valor real, árboles, lo que sea, siempre que la función del núcleo sepa cómo compararlos.

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

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

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

Yo no llamaría a un núcleo una función de decisión, ya que el núcleo se utiliza 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 comparando ese punto de datos con una serie de vectores de soporte ponderados por los parámetros aprendidos $\alpha$ . Los vectores de soporte están en el dominio de ese punto de datos y a lo largo de los parámetros aprendidos $\alpha$ son encontrados por el algoritmo de aprendizaje.

6voto

akjoshi Puntos 6711

De forma muy sencilla (pero precisa) un el núcleo es un factor de peso entre dos secuencias de datos. Este factor de ponderación puede asignar más peso a una " punto de datos " en una " punto de tiempo " que el otro " punto de datos ", o asignar igual peso o asignar más peso al otro " punto de datos " y así sucesivamente.

De este modo, la correlación ( producto punto ) puede asignar más "importancia" a algunos puntos que a otros y así hacer frente a las no linealidades (por ejemplo espacios no planos ), información adicional, alisado de datos y así sucesivamente.

En otro sentido, un es una forma de cambiar las dimensiones relativas (o unidades de medida ) de dos secuencias de datos para hacer frente a lo mencionado anteriormente.

En una tercera vía (relacionada con las dos anteriores), un kernal es una forma de mapa o proyecto una secuencia de datos sobre la otra de manera 1 a 1 teniendo en cuenta la información o los criterios dados (por ejemplo, el espacio curvo, los datos que faltan, la reordenación de los datos, etc.). Así, por ejemplo, un núcleo determinado puede estiramiento o retractilar o cultivo o doblar una secuencia de datos para encajar o mapear 1 a 1 en la otra.

Un núcleo puede actuar como un Procrustes con el fin de " se adaptan mejor "

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X