¿Cómo podríamos (en teoría) resolver una red neuronal exactamente?

Por “resolver una red neuronal”, supongo que te refieres a encontrar los pesos que minimizan la función objetivo. Por “exactamente”, supondré que quiere decir que estamos seguros de que hemos encontrado un óptimo global (más bien, podemos acercarnos arbitrariamente a él), no que tengamos una expresión algebraica porque la solución generalmente será trascendental, lo que significa que No existe una solución algebraica.

La optimización global es un problema muy difícil. Si tiene algunas garantías sobre su función, se vuelve mucho más fácil. Dada la estructura de la red y el conjunto de datos, puede poner un límite superior en la magnitud del gradiente. También puede optar por un espacio de búsqueda basado en el hecho de que, dado que sus parámetros tienden al infinito, la función objetivo probablemente también lo hará. Si está utilizando activaciones sigmoideas, esto se vuelve más complicado, pero aún se puede hacer.

Ahora que ha encontrado un espacio de búsqueda compacto y tiene un límite superior en la magnitud del gradiente, puede hacer una búsqueda de cuadrícula recursiva. Comience con una cuadrícula amplia y determine, en función de su límite en la magnitud del gradiente (o calculando el hessian en cada punto, pero eso es mucho cálculo), qué cuadros n-dimensionales pueden contener un mínimo local. Luego haga una búsqueda de cuadrícula más fina sobre esos. Repetir. Repite otra vez. Y otra vez…

Eventualmente tendrás cajas arbitrariamente pequeñas alrededor de mínimos locales. Calcule los valores de la función de pérdida en esos y elija el más pequeño.

Habrás encontrado una gran cantidad de óptimos locales perfectamente iguales. Esto se debe a que puede permutar las neuronas (y los pesos correspondientes) en cualquier capa y obtener la misma función. Con esta información, puede restringir aún más su espacio de búsqueda mediante argumentos de simetría. Eso dará como resultado una enorme cantidad de cálculo guardado, pero aún así te dejará con un algoritmo obscenamente lento. Todavía hay muchas mejoras que puedes hacer, pero nunca será práctico.

No puedes No hay soluciones analíticas para la mayoría de estos problemas.