Es posible que haya escuchado decir que las redes neuronales son " aproximadores de funciones universales ". En esencia, el teorema de Cybenko dice que para cualquier función de mapeo de reales a reales, puede aproximarlo con una red neuronal con funciones de activación sigmoideas. De hecho, resulta que las redes neuronales le permiten calcular cualquier función que sea computable por una máquina de Turing (es decir, cualquier cosa que pueda escribir un algoritmo para calcular). Desafortunadamente, estas pruebas solo dicen que para algunas configuraciones finitas de neuronas y pesos, puede aproximar cualquier función.
La teoría es muy agradable y elegante, pero su pregunta parece estar más en la línea de cómo codificar realmente el cálculo de alguna función en un conjunto de neuronas y pesos. Para ilustrar, considere un ejemplo simple: el exclusivo o. El XOR toma dos entradas, pasa esas entradas. Cuando se activa una y solo una de las entradas, se activa el nodo de salida. Con ambas o ninguna de las entradas activadas, el nodo de salida no se activa.
Observe que los tres nodos ocultos hacen cosas diferentes. Los nodos más a la izquierda y a la derecha simplemente pasan a través de las activaciones de nodos de entrada de respeto. La neurona media toma las dos entradas y de alguna manera las niega si ambas están activadas. Esta inteligente combinación y recombinación de entradas es esencialmente cómo se realiza el trabajo en una red neuronal.
Obviamente, para funciones más complejas, la combinación y la recombinación deben realizarse de maneras más inteligentes y complicadas, pero esto es en esencia lo que sucede en un nivel bajo. ¡Lo loco es que esto es realmente todo lo que necesita para calcular cualquier función computable! Por otra parte, las máquinas de Turing también resultan ser engañosamente simples ...
El problema es que realmente no tenemos una forma de generar mágicamente la red neuronal que computa alguna función arbitraria. Las pruebas solo nos dicen que hay alguna red por ahí que podría hacerlo. Cuando entrenamos nuestras redes neuronales, simplemente estamos tratando de encontrar una red que esté bastante cerca.
En el contexto del reconocimiento de imágenes, puede imaginarse codificando patrones en la red. Por ejemplo, para reconocer el número '1', puede imaginar nodos ocultos que esperan que una columna de píxeles esté activada en su mayoría o en su totalidad, con los píxeles vecinos apagados. Este nodo oculto podría ser bastante bueno para reconocer una línea recta en esa columna en particular. Ponga suficientes de estos juntos y muy pronto tendrá un montón de nodos que lo hacen en suficientes lugares de su imagen que si le muestro a la red uno, se activarán suficientes nodos ocultos en línea recta, lo que indica un '1'. El problema, por supuesto, es generalizar la red para que pueda reconocer un conjunto variado de entradas.
Esperemos que esto le ayude a comprender más o menos los conceptos de cómo una red neuronal puede realizar cálculos. Sin embargo, se ha topado con un punto que es bastante importante sobre las redes neuronales: en general, en el mejor de los casos es difícil entender por qué la red escupe una salida en particular, especialmente cuando considera que para algo como el reconocimiento de imágenes, las redes son generalmente lo suficientemente grande como para que los humanos tengan dificultades para comprender cada una de las partes móviles de la máquina. Lo que complica aún más el asunto es que, en general, la mayoría de las redes neuronales en realidad no tienen un solo nodo oculto para cada pequeña característica que la red podría aprender sobre los datos. En cambio, detectar algo como una línea recta para clasificar el número '1' se llevaría a cabo de manera no centralizada en muchos nodos ocultos. Otros algoritmos,
Si está buscando más lectura, le recomiendo leer este tutorial en ai junkie. Le guía a través de los conceptos básicos de cómo funciona una red neuronal, e incluso proporciona un ejemplo de código simple para lograr que las redes neuronales conduzcan un tanque hacia una meta. Sin embargo, el tutorial no cubre la propagación hacia atrás, que es, con mucho, la forma más común de entrenar redes neuronales, y en su lugar utiliza un algoritmo genético simple. Una vez que comience a hablar sobre genética, supongo que puedes dejar de leer ...