¿Hay alguna manera de extraer la función subyacente de una red neuronal entrenada?

Sí, lo es, y es muy sencillo. Considere el ejemplo (simple) a continuación.

En este ejemplo simple de NN, la salida es [matemática] y [/ matemática] y las entradas son [matemática] x_1 [/ matemática], [matemática] x_2 [/ matemática] y [matemática] x_3 [/ matemática]. La relación es

[matemáticas] y (x_1, x_2, x_3) = f (w_1 x_1 + w_2 x_2 + w_3 x_3) [/ matemáticas]

Si la función de activación [math] f (u) [/ math] es un sigmoide, [math] f (u) = 1 / (1 + e ^ {- u}) [/ math], entonces tenemos

[matemáticas] y (x_1, x_2, x_3) = 1 / [1 + e ^ {- (w_1 x_1 + w_2 x_2 + w_3 x_3)}] [/ matemáticas]

Y esta es la función subyacente de este NN.

En una red neuronal entrenada, las constantes [matemática] w_1 [/ matemática], [matemática] w_2 [/ matemática] y [matemática] w_3 [/ matemática] que pesan los arcos serían conocidas.

Para NN más grandes, uno tiene que componer funciones de funciones, debido a las varias capas y muchas más entradas y arcos, y el argumento a los sigmoides en los nodos es una combinación lineal de las entradas a ese nodo, pero siempre es fácil escribe la función no lineal implementada por el NN. Finalmente, se agrega un desplazamiento a la combinación lineal de entradas en cada nodo cuando el argumento del sigmoide está “compuesto”.

La red neuronal, específicamente la propagación directa después del entrenamiento (predicción) es la función subyacente.

Según tengo entendido, lo que se entiende por redes neuronales como cajas negras es exactamente la falta de una interpretación intuitiva de los pesos y, por lo tanto, la función que ocurre en la mayoría de los casos.

Sin embargo, se han realizado algunas investigaciones para tratar de “blanquear” la caja negra, por ejemplo, la visualización de los pesos de filtro convolucionales (admito que probablemente no sea un doctorado para darse cuenta de que la visualización es una buena idea). Esto ayuda a comprender qué características se están haciendo coincidir.

El conocimiento sobre esto, a su vez, ayuda a la intuición detrás de ejemplos adversos en los que la representación de un objeto en la red dice que se puede agregar un gato a una imagen de otro objeto, por ejemplo, un martillo para hacer que el clasificador crea con gran certeza que el objeto es un gato, aunque El humano diría que es un martillo.

No, no lo hay. Puede emplear algunas técnicas de visualización de datos que pueden ayudarlo a comprender cómo “piensa” la red neuronal. Esto tiene sentido especialmente con las redes neuronales convolucionales.

Pero en general, la red neuronal funciona como una caja negra, por lo que lo que pides no será posible.

Sí. De hecho, aprender una función es el punto de entrenar una red neuronal.

Después de entrenar una red neuronal, terminamos con un conjunto de parámetros [matemática] W [/ matemática] y [matemática] b [/ matemática], donde [matemática] W [/ matemática] es un conjunto de pesos y [matemática] b [/ math] es un conjunto de sesgos. Esos parámetros definen la función que la red neuronal ha aprendido. Por ejemplo, si hemos entrenado una única red neuronal de capa oculta con entradas [math] d [/ math] y salidas [math] c [/ math], y obtenido los parámetros [math] W ^ {(1)} [/ math ], [matemáticas] b ^ {(1)} [/ matemáticas] para la primera capa, [matemáticas] W ^ {(2)} [/ matemáticas], [matemáticas] b ^ {(2)} [/ matemáticas] para la segunda capa, entonces la función subyacente de la red neuronal es [math] f: \ mathbb {R} ^ d \ to \ mathbb {R} ^ c [/ math] [math] f (x) = g_2 \ left (W ^ {(2)} g_1 \ left (W ^ {(1)} x + b ^ {(1)} \ right) + b ^ {(2)} \ right) [/ math]. Aquí, [math] g_1 [/ math] y [math] g_2 [/ math] son ​​funciones de activación para la primera capa y la capa oculta, respectivamente. Utilizamos la propagación hacia adelante para calcular / evaluar la función aprendida en cualquier entrada dada [math] x \ in \ mathbb {R} ^ d [/ math].

Más formalmente, una red neuronal es una función [matemática] f [/ matemática]. Los diferentes parámetros [math] \ theta [/ math] definen diferentes funciones / redes neuronales [math] f _ {\ theta} [/ math]. Buscamos iterativamente el espacio de funciones / redes neuronales usando el descenso de gradiente, y elegimos una función / red neuronal particular que minimiza la tasa de error. Para elaborar esto, denotemos por [math] f_i [/ ​​math], los parámetros / función / red neuronal aprendidos después de la iteración [math] i [/ math] th de descenso de gradiente. Luego exploramos nuestro espacio de funciones / redes neuronales de la siguiente manera:

[matemáticas] f_1 \ rightarrow f_2 \ rightarrow f_3 \ rightarrow \ cdots \ rightarrow f_N [/ math].

Después de que el descenso del gradiente converge, elegimos una función particular / red neuronal [matemática] f_N [/ matemática], y la usamos para predicciones.

La arquitectura del modelo con pesos entrenados constituye la función de la red. Siempre puede extraerlo, pero generalmente tiene millones de parámetros, por lo que es bastante difícil entenderlos.