¿Por qué el núcleo RBF (función de base radial) se asigna al espacio dimensional infinito, mencionado muchas veces en las conferencias de aprendizaje automático?

Así que aquí está el trato:

  • el truco del núcleo no le proporciona una asignación de puntos en una dimensión inferior a los puntos correspondientes en una dimensión superior per se (podría ser, como efecto secundario, pero este no es el “caso de uso” primario, por así decirlo)
  • lo que hace es que te proporciona una forma de calcular el producto punto entre puntos que verías si realmente hubieras encontrado el mapeo de puntos correspondiente en la dimensión superior

Por lo tanto, es un truco para calcular las similitudes en un espacio de alta dimensión sin calcular explícitamente dónde se encuentran los puntos en este espacio. Entonces, la función del núcleo esencialmente le dice: “¿Desea proyectar sus puntos en una dimensión superior? Bien. Pero entonces necesitaría los productos de punto entre los puntos en esta dimensión superior (porque su algoritmo de aprendizaje lo necesita), ¿verdad? , Tengo una pequeña expresión ordenada aquí que te da exactamente eso “.

Si [math] \ psi [/ math] es su función de mapeo, es decir, se le da un vector [math] \ vec {X} [/ math], y [math] \ psi (\ vec {X}) [/ math] le da el vector correspondiente en la dimensión superior, así es como caracterizaría la función del núcleo:
[matemáticas] K (\ vec {X_i}, \ vec {X_j}) = \ psi (\ vec {X_i}) \ cdot \ psi (\ vec {X_j}) [/ matemáticas],
donde [math] \ cdot [/ math] es el producto punto.

El RHS en la ecuación anterior es cómo normalmente calcularía el producto de puntos, pero el LHS dice que le dará un valor equivalente, y podría llegar allí “haciendo otra cosa” internamente.

¿Por qué una función de núcleo?

Ahora, la pregunta es ¿por qué hacer “otra cosa” internamente? Un par de razones:

  1. [math] \ psi (\ vec {X_i}) \ cdot \ psi (\ vec {X_j}) [/ math] podría tener una alta complejidad computacional
  2. [math] \ psi (\ vec {X_i}) \ cdot \ psi (\ vec {X_j}) [/ math] podría ser imposible de calcular – [math] \ psi (\ vec {X}) [/ math] may proyectar un vector a dimensiones infinitas. Puede (sorprendentemente) tener una expresión de forma cerrada para calcular el producto punto en este espacio, pero no hay forma de representar el vector directamente (¿cómo se escribe algo con dimensiones infinitas?). Este es el caso del núcleo gaussiano.

Un simple ejemplo

Permíteme convencerte, a modo de ejemplo, de que puede existir una función que pueda darte el producto escalar entre dos vectores en una dimensión superior sin calcular los vectores en la nueva dimensión.

Digamos que tenemos una función de mapeo tal que dado un vector [matemático] [/ matemático], nos da el vector

. Nuestra función de mapeo asigna un vector tridimensional a un espacio de 9 dimensiones. Para calcular [matemáticas] \ psi (\ vec {X_i}) \ cdot \ psi (\ vec {X_j}) [/ matemáticas], estas son las operaciones que necesitaríamos:

  1. 9 multiplicaciones para calcular el vector en el nuevo espacio. Esto es 18 multiplicaciones en total, para los dos vectores.
  2. El producto punto necesitaría 9 multiplicaciones y 8 adiciones.

El total de operaciones requeridas es de 35.

Ahora considere la función del núcleo [matemática] K (\ vec {X_i}, \ vec {X_j}) = (\ vec {X_i} \ cdot \ vec {X_j}) ^ 2 [/ matemática] (este es un ejemplo de un núcleo polinomial de grado 2 ). Convénzase escribiendo la expansión de que esto calcula lo que necesitamos. ¿Cuántas operaciones esta vez?

  1. 3 multiplicaciones y 2 adiciones para calcular el producto escalar en el espacio original
  2. cuadratura – esto es 1 multiplicación

El total de operaciones no requeridas es 6. ¡ Pudimos reducir el número de operaciones en alrededor del 83%! Tampoco tuvimos que calcular las proyecciones.

Deje que eso se hunda. Eso es lo que una buena función del núcleo puede hacer por usted.

El núcleo gaussiano (e infinito)

Así es como se define el núcleo gaussiano:
[matemáticas] K (\ vec {X_i}, \ vec {X_j}) = e ^ {- \ frac {|| \ vec {X_i} – \ vec {X_j} || ^ 2} {2 \ sigma ^ 2} }[/mates].

Aunque no lo explicaré aquí (pero confía en mí :)) el núcleo gaussiano es una simple modificación de este:
[matemáticas] K ‘(\ vec {X_i}, \ vec {X_j}) = e ^ {- \ frac {\ vec {X_i} \ cdot \ vec {X_j}} {\ sigma ^ 2}} [/ matemática]

Si usa la expansión de la serie de potencia para la exponencial, verá que:
[matemáticas] K ‘(\ vec {X_i}, \ vec {X_j}) = \ sum_ {n = 0} ^ {+ \ infty} \ frac {(\ vec {X_i} \ cdot \ vec {X_j}) ^ n} {\ sigma ^ nn!} [/ math]

¿El numerador de cada término en la suma parece familiar? Sí, ese es un núcleo polinomial de grado [matemáticas] n [/ matemáticas]. Por lo tanto, el núcleo gaussiano es una combinación de todos los núcleos polinomiales de grados [matemática] n \ geq 0 [/ matemática]. Dado que un núcleo polinomial proyecta un vector en un espacio con un no mayor de dimensiones y aquí estamos viendo núcleos polinomiales de grados infinitos (por lo tanto, estamos viendo los productos de punto de vectores en presumiblemente espacios dimensionales infinitos), decimos que el núcleo gaussiano trata con vectores de dimensiones infinitas.

Creo que la forma de entender la “infinitud” de los núcleos gaussianos es darse cuenta de que el hecho de que un vector tenga dimensiones infinitas no significa que la similitud (expresada como producto de puntos) entre dos vectores en este espacio no pueda calcularse o no No tiene un valor bien definido. El producto punto puede ser gobernado / expresable a través de una ecuación que le indica a qué converge el valor de similitud, en este espacio; esto es exactamente lo que sucede para el núcleo gaussiano.

Todavía no veo la respuesta que me gusta aquí, así que aquí va.

En todo momento, usaré [math] \ langle, \ rangle [/ math] y [math] \ | \ cdot \ | [/ math] para denotar el producto interno estándar y la norma en [math] \ mathbb {R} ^ n [/ matemáticas] respectivamente. Si digo [math] \ langle, \ rangle_ \ mathcal {H} [/ math] o [math] \ | \ cdot \ | _ \ mathcal {H} [/ math], me refiero al producto interno o norma en el Espacio de Hilbert [matemáticas] \ matemáticas {H}. [/ Matemáticas]

Entonces el núcleo RBF (o núcleo gaussiano o núcleo térmico estándar) se define por

[matemáticas] K: \ mathbb {R} ^ n \ times \ mathbb {R} ^ n \ to \ mathbb {R} [/ math]

[matemáticas] K (x, y) = e ^ {\ frac {- \ | xy \ | ^ 2} {2 \ sigma}} [/ matemáticas]

Así que ahora queremos el mapa de características: [math] \ Phi: \ mathbb {R} ^ n \ to \ mathcal {H}, [/ math] donde [math] \ mathcal {H} [/ math] es un espacio de Hilbert . [matemáticas] \ Phi [/ matemáticas] debe ser tal que

[matemáticas] K (x, y) = \ langle \ Phi (x), \ Phi (y) \ rangle_ \ mathcal {H} [/ math]

Deje que [math] L ^ 2 (\ mathbb {R} ^ n, d \ gamma_n) [/ math] sea el espacio de funciones cuadradas integrables de valor complejo en [math] \ mathbb {R} ^ n [/ math] con respeto a la medida gaussiana . En otras palabras, el conjunto de funciones [math] f: \ mathbb {R} ^ n \ to \ mathbb {C} [/ math] tal que

[matemáticas] \ frac {1} {\ sqrt {2 \ pi}} \ int _ {\ mathbb {R} ^ n} | f (t) | ^ 2 e ^ {- \ | t \ | ^ 2/2} dt [/ math]

es finito Tenga en cuenta que el producto interno en este espacio de Hilbert está dado por

[matemáticas] \ langle f, g \ rangle_ {L ^ 2 (\ mathbb {R} ^ n, d \ gamma_n)} = \ frac {1} {\ sqrt {2 \ pi}} \ int _ {\ mathbb {R } ^ n} \ overline {f (t)} g (t) e ^ {- \ | t \ | ^ 2/2} dt [/ math]

Ahora defina [math] \ Phi: \ mathbb {R} ^ n \ to L ^ 2 (\ mathbb {R} ^ n, d \ gamma_n) [/ math] por

[matemáticas] \ Phi (x) (t) = e ^ {i \ langle x, t \ rangle / \ sqrt {\ sigma}} [/ matemáticas]

No es difícil ver que [math] \ Phi (x) [/ math] es cuadrado integrable con respecto a la medida gaussiana ya que el módulo de [math] \ Phi (x) (t) [/ math] es siempre 1. De hecho, esto significa que [math] \ | \ Phi (x) \ | _ {L ^ 2 (\ mathbb {R} ^ n, d \ gamma_n)} = 1. [/ Math] Ahora verifiquemos que [math ] \ Phi [/ math] tiene la propiedad correcta descrita anteriormente.

[matemáticas] \ langle \ Phi (x), \ Phi (y) \ rangle_ {L ^ 2 (\ mathbb {R} ^ n, d \ gamma_n)} [/ math]

[matemáticas] = \ frac {1} {\ sqrt {2 \ pi}} \ int _ {\ mathbb {R} ^ n} \ overline {e ^ {i \ langle x, t \ rangle / \ sqrt {\ sigma} }} e ^ {i \ langle y, t \ rangle / \ sqrt {\ sigma}} e ^ {- \ | t \ | ^ 2/2} dt [/ math]

[matemáticas] = \ frac {1} {\ sqrt {2 \ pi}} \ int _ {\ mathbb {R} ^ n} e ^ {- i \ langle x, t \ rangle / \ sqrt {\ sigma}} e ^ {i \ langle y, t \ rangle / \ sqrt {\ sigma}} e ^ {- \ | t \ | ^ 2/2} dt [/ math]

[matemáticas] = \ frac {1} {\ sqrt {2 \ pi}} \ int _ {\ mathbb {R} ^ n} e ^ {i \ langle \ frac {(yx)} {\ sqrt {\ sigma}} , t \ rangle – \ | t \ | ^ 2} dt [/ math]

A partir de aquí, usamos una versión vectorizada de una manipulación elemental de “completar el cuadrado” en el exponente:

[matemáticas] – \ | t \ | ^ 2/2 + i \ langle \ frac {(y -x)} {\ sqrt {\ sigma}}, t \ rangle = – \ | t – i \ frac {(yx )} {2 \ sqrt {\ sigma}} \ | ^ 2/2 – \ | \ frac {(yx)} {2 \ sqrt {\ sigma}} \ | ^ 2/2 [/ math]

A partir de aquí tenemos la integral:

[matemáticas] \ frac {1} {\ sqrt {2 \ pi}} \ int _ {\ mathbb {R} ^ n} e ^ {- \ | t – i \ frac {(yx)} {2 \ sqrt {\ sigma}} \ | ^ 2/2} e ^ {- \ frac {\ | yx \ | ^ 2} {2 \ sigma}} dt [/ math]

Observe que el término [matemáticas] e ^ {- \ | \ frac {\ | yx \ | ^ 2} {2 \ sigma}} [/ matemáticas] no depende de [matemáticas] t [/ matemáticas] y así podemos simplemente sáquelo de la integral. Ahora nos quedamos con

[matemáticas] \ frac {1} {\ sqrt {2 \ pi}} \ int _ {\ mathbb {R} ^ n} e ^ {- \ | t – i \ frac {(yx)} {2 \ sqrt {\ sigma}} \ | ^ 2/2} dt [/ matemáticas]

que es igual a 1. Esto es difícil de ver de inmediato, pero uno puede usar un argumento sofisticado de análisis complejo para mostrar que

[matemáticas] \ frac {1} {\ sqrt {2 \ pi}} \ int _ {\ mathbb {R} ^ n} e ^ {- \ | t – i \ frac {(yx)} {2 \ sqrt {\ sigma}} \ | ^ 2/2} dt = \ frac {1} {\ sqrt {2 \ pi}} \ int _ {\ mathbb {R} ^ n} e ^ {- \ | t \ | ^ 2/2 } dt = 1. [/ math]

Considere el núcleo polinomial de grado 2 definido por, [matemática] k (x, y) = (x ^ Ty) ^ 2 [/ matemática] donde [matemática] x, y \ in \ mathbb {R} ^ 2 [/ matemática ] y [matemáticas] x = (x_1, x_2), y = (y_1, y_2) [/ matemáticas].

De este modo, la función del núcleo se puede escribir como,
[matemáticas] \ displaystyle k (x, y) = (x_1y_1 + x_2y_2) ^ 2 = x_ {1} ^ 2y_ {1} ^ 2 + 2x_1x_2y_1y_2 + x_ {2} ^ 2y_ {2} ^ 2 \ tag {1} [/mates]
Ahora, tratemos de llegar a un mapa de características [math] \ Phi [/ math] de modo que la función del núcleo se pueda escribir como [math] k (x, y) = \ Phi (x) ^ T \ Phi ( y) [/ matemáticas].

Considere el siguiente mapa de características, [math] \ Phi (x) = (x_1 ^ 2, \ sqrt {2} x_1x_2, x_2 ^ 2) [/ math]. Básicamente, este mapa de características está asignando los puntos en [math] \ mathbb {R} ^ 2 [/ math] a puntos en [math] \ mathbb {R} ^ 3 [/ math]. Además, tenga en cuenta que,

[matemáticas] \ Phi (x) ^ T \ Phi (y) = x_1 ^ 2y_1 ^ 2 + 2x_1x_2y_1y_2 + x_2 ^ 2y_2 ^ 2 \ tag {2} [/ matemáticas]

que es esencialmente nuestra función del núcleo.

Esto significa que nuestra función de kernel en realidad está calculando el producto interno / punto de puntos en [math] \ mathbb {R} ^ 3 [/ math]. Es decir, está mapeando implícitamente nuestros puntos de [math] \ mathbb {R} ^ 2 [/ math] a [math] \ mathbb {R} ^ 3 [/ math].

Pregunta de ejercicio : Si sus puntos están en [math] \ mathbb {R} ^ n [/ math], un núcleo polinomial de grado 2 lo mapeará implícitamente en algún espacio vectorial F. ¿Cuál es la dimensión de este espacio vectorial F? Sugerencia: Todo lo que hice arriba es una pista.

Ahora, llegando a RBF.

Consideremos nuevamente el núcleo RBF para los puntos en [math] \ mathbb {R} ^ 2 [/ math]. Entonces, el núcleo se puede escribir como
[matemáticas] k (x, y) = \ exp (- \ | x – y \ | ^ 2) [/ matemáticas]
[matemáticas] = \ exp (- (x_1 – y_1) ^ 2 – (x_2 – y_2) ^ 2) [/ matemáticas]
[matemáticas] = \ exp (- x_1 ^ 2 + 2x_1y_1 – y_1 ^ 2 – x_2 ^ 2 + 2x_2y_2 – y_2 ^ 2) [/ matemáticas]
[matemáticas] = \ exp (- \ | x \ | ^ 2) \ exp (- \ | y \ | ^ 2) \ exp (2x ^ Ty) [/ matemáticas]
(suponiendo gamma = 1). Usando la serie taylor puedes escribir esto como,
[matemáticas] \ displaystyle k (x, y) = \ exp (- \ | x \ | ^ 2) \ exp (- \ | y \ | ^ 2) \ sum_ {n = 0} ^ {\ infty} \ frac {(2x ^ Ty) ^ n} {n!} \ Tag {3} [/ math]
Ahora, si tuviéramos que crear un mapa de características [math] \ Phi [/ math] tal como lo hicimos para el núcleo polinomial, se daría cuenta de que el mapa de características mapearía cada punto en nuestro [math] \ mathbb {R } ^ 2 [/ math] a un vector infinito. Por lo tanto, RBF asigna implícitamente cada punto a un espacio dimensional infinito.

Pregunta de ejercicio : ¿Obtenga los primeros elementos vectoriales del mapa de características para RBF para el caso anterior?

Es la expansión de Taylor para e ^ x.
Chih-Jen Lin explica esta parte a través de un ejemplo de mapeo 1D a infinitoD usando RBF Kernel (25:00 – 31:00 en el video) que debilita MLSS 2006.

Conferencia en video: http://videolectures.net/mlss06t… (El orador Chih-jen Lin es uno de los principales desarrolladores de libsvm)
Las diapositivas para el mismo se pueden encontrar aquí: http://www.csie.ntu.edu.tw/~cjlin/talks/MLSS.pdf

Ver mi entrada de blog

http: //charlesmartin14.wordpress