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.
- ¿Por qué las redes convolucionales profundas llegaron tan tarde?
- ¿Existe alguna implementación de aprendizaje profundo de respuesta basada en la recuperación de preguntas?
- ¿Cómo se recupera la información de las cajas negras?
- ¿Cuáles son ejemplos cuando es útil generar muestras a partir de un modelo probabilístico?
- ¿Cuáles son las deficiencias del aprendizaje profundo? ¿Cuál es el mayor defecto o limitación del aprendizaje profundo?
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:
- [math] \ psi (\ vec {X_i}) \ cdot \ psi (\ vec {X_j}) [/ math] podría tener una alta complejidad computacional
- [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:
- 9 multiplicaciones para calcular el vector en el nuevo espacio. Esto es 18 multiplicaciones en total, para los dos vectores.
- 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?
- 3 multiplicaciones y 2 adiciones para calcular el producto escalar en el espacio original
- 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.