He estado aprendiendo sobre redes neuronales y SVM. Los tutoriales que he leído han enfatizado la importancia de la kernelización para SVM. Sin una función de kernel, los SVM son solo un clasificador lineal. Con la kernelización, los SVM también pueden incorporar características no lineales, lo que los convierte en un clasificador más potente.
Me parece que uno también podría aplicar la kernelización a las redes neuronales, pero ninguno de los tutoriales sobre redes neuronales que he visto ha mencionado esto. ¿La gente usa comúnmente el truco del núcleo con las redes neuronales? Supongo que alguien debe haber experimentado con él para ver si hace una gran diferencia. ¿La kernelización ayuda a las redes neuronales tanto como a las SVM? ¿Por qué o por qué no?
(Puedo imaginar varias formas de incorporar el truco del núcleo en las redes neuronales. Una forma sería utilizar una función del núcleo adecuada para preprocesar la entrada, un vector en , en una entrada de mayor dimensión, un vector en para . Para redes neuronales de capas múltiples, otra alternativa sería aplicar una función de núcleo en cada nivel de la red neuronal).R m m≥n
Respuestas:
Creo que puede estar confundiendo la terminología de una manera que hace que el problema sea confuso. Los SVM funcionan definiendo un límite de decisión lineal, es decir, un hiperplano. Podemos definir este hiperplano en términos de productos internos entre los puntos. Por lo tanto, si definimos que este producto interno está en un espacio dimensional de alta dimensión o incluso infinito, lo que parece un hiperplano en este nuevo espacio no es un lineal necesario en el espacio de características original. Entonces, todo sigue siendo lineal, lo único que hemos hecho es implícitamente (a través del nuevo producto interno) incrustar los puntos en algún espacio dimensional superior. Tal vez ya sabes todo esto.
Hay 2 cuestiones a considerar con respecto a las redes neuronales. El primero fue presentado por @Yuval Filmus, debido a la capa oculta que las redes neuronales dependen de algo más que los productos internos entre los puntos. Si elimina la capa oculta, solo tiene algo como regresión logística, de las cuales hay versiones kernelized . Tal vez hay una manera de evitar esto, pero no lo veo.
En segundo lugar, mencionas el preprocesamiento de la entrada proyectando en un espacio dimensional más alto, pero no infinito. Las redes neuronales definen una superficie de decisión y esta superficie no está limitada a ser lineal. Esto significa que la ganancia de proyectar los puntos en un espacio dimensional superior será diferente, es decir, puede hacer que sea más fácil encontrar un buen conjunto de pesos, pero no necesariamente hemos hecho que nuestro modelo sea más poderoso. Esto se desprende del teorema de aproximación universal que nos dice que, dado un número suficientemente grande de unidades ocultas, podemos aproximar cualquier función (bajo algunas restricciones). Esta última declaración es bastante vacía y odio mencionarla. Al no decirle nada sobre cómo encontrar los pesos correctos, no aporta mucho a la mesa desde la perspectiva de una aplicación.
fuente
El truco del núcleo es posible para SVM debido a una propiedad especial del proceso de aprendizaje para SVM. Las redes neuronales no parecen tener esa propiedad (por lo que puedo decir).
fuente
Me gustaría compartir algunas observaciones que he hecho. Dimensión de entrada: 144. He entrenado una red neuronal, y durante el entrenamiento, la salida de las capas ocultas se dio como entrada para la regresión logística, y se trazó el valor medio de la función de pérdida después de ajustar el modelo.
Podemos ver que con el aumento en el tamaño de la capa, las características o la salida de las capas ocultas se vuelven linealmente separables. Si bien este es el propósito de aprender el vector de características kernelised , la red neuronal parece estar haciendo esto internamente.
fuente