Versión de tres frases:
-
Cada capa puede aplicar cualquier función que desee a la capa anterior (normalmente una transformación lineal seguida de una no linealidad de aplastamiento).
-
El trabajo de las capas ocultas es transformar las entradas en algo que la capa de salida pueda utilizar.
-
La capa de salida transforma las activaciones de la capa oculta en la escala en la que desees que esté la salida.
Como si tuvieras 5 años:
Si quieres que un ordenador te diga si hay un autobús en una foto, el ordenador lo tendría más fácil si dispusiera de las herramientas adecuadas.
Así, tu detector de autobuses podría estar compuesto por un detector de ruedas (para ayudarte a saber que es un vehículo) y un detector de cajas (ya que el autobús tiene forma de caja grande) y un detector de tamaño (para decirte que es demasiado grande para ser un coche). Estos son los tres elementos de tu capa oculta: no forman parte de la imagen en bruto, son herramientas que has diseñado para ayudarte a identificar autobuses.
Si los tres detectores se encienden (o si están especialmente activos), es muy probable que tengas un autobús delante.
Las redes neuronales son útiles porque existen buenas herramientas (como la retropropagación) para construir muchos detectores y unirlos.
Como si fueras un adulto
Una red neuronal feed-forward aplica una serie de funciones a los datos. Las funciones exactas dependerán de la red neuronal que utilice: lo más frecuente es que cada una de estas funciones calcule una transformación lineal de la capa anterior, seguida de una no linealidad de aplastamiento. A veces, las funciones harán algo más (como calcular funciones lógicas en tus ejemplos, o promediar píxeles adyacentes en una imagen). Así que los papeles de las diferentes capas podrían depender de qué funciones se están calculando, pero voy a tratar de ser muy general.
Llamemos al vector de entrada $x$ las activaciones de la capa oculta $h$ y la activación de salida $y$ . Tiene alguna función $f$ que mapea desde $x$ a $h$ y otra función $g$ que mapea desde $h$ a $y$ .
Así que la activación de la capa oculta es $f(x)$ y la salida de la red es $g(f(x))$ .
¿Por qué tener dos funciones ( $f$ y $g$ ) en lugar de uno solo?
Si el nivel de complejidad por función es limitado, entonces $g(f(x))$ puede computar cosas que $f$ y $g$ no pueden hacer individualmente.
Un ejemplo con funciones lógicas:
Por ejemplo, si sólo permitimos $f$ y $g$ sean operadores lógicos simples como "AND", "OR" y "NAND", entonces no se pueden calcular otras funciones como "XOR" con sólo uno de ellos. Por otro lado podría calcular "XOR" si quisiéramos superponer estas funciones:
Funciones de la primera capa:
- Asegúrese de que al menos un elemento es "TRUE" (utilizando OR)
- Asegúrate de que no son todos "TRUE" (usando NAND)
Función de segunda capa:
- Asegúrese de que se cumplen los dos criterios de la primera capa (mediante AND)
La salida de la red no es más que el resultado de esta segunda función. La primera capa transforma las entradas en algo que la segunda capa pueda utilizar para que toda la red pueda realizar XOR.
Un ejemplo con imágenes:
Diapositiva 61 de esta charla --también disponible aquí como una sola imagen--muestra (una forma de visualizar) lo que buscan las distintas capas ocultas de una red neuronal concreta.
La primera capa busca fragmentos cortos de bordes en la imagen: son muy fáciles de encontrar a partir de los datos de píxeles en bruto, pero no son muy útiles por sí solos para saber si estamos viendo una cara, un autobús o un elefante.
La siguiente capa compone los bordes: si los bordes de la capa oculta inferior encajan de una determinada manera, puede que se encienda uno de los detectores de ojos situados en el centro de la columna más a la izquierda. Sería difícil hacer una sola capa que fuera tan buena para encontrar algo tan específico a partir de los píxeles en bruto: los detectores de ojos son mucho más fáciles de construir a partir de detectores de bordes que a partir de píxeles en bruto.
La siguiente capa compone los detectores de ojos y los detectores de nariz en caras. En otras palabras, se iluminarán cuando los detectores de ojos y nariz de la capa anterior se enciendan con los patrones adecuados. Estos son muy buenos buscando tipos particulares de caras: si uno o más de ellos se encienden, entonces tu capa de salida debería informar de que hay una cara presente.
Esto es útil porque Los detectores de rostros son fáciles de construir a partir de detectores de ojos y nariz, pero muy difíciles de construir a partir de intensidades de píxeles.
Así, cada capa te aleja cada vez más de los píxeles en bruto y te acerca a tu objetivo final (por ejemplo, la detección de caras o de autobuses).
Respuestas a otras preguntas
"¿Por qué algunas capas de la capa de entrada están conectadas a la capa oculta y otras no?".
Los nodos desconectados de la red se denominan nodos "bias". Hay una explicación muy buena aquí . La respuesta corta es que son como los términos de intercepción en regresión.
"¿De dónde proceden las imágenes del "detector de ojos" del ejemplo de la imagen?"
No he vuelto a comprobar las imágenes concretas que he enlazado, pero en general, estas visualizaciones muestran el conjunto de píxeles de la capa de entrada que maximizan la actividad de la neurona correspondiente. Así que si pensamos en la neurona como un detector de ojos, esta es la imagen que la neurona considera más parecida a un ojo. La gente suele encontrar estos conjuntos de píxeles con un procedimiento de optimización (escalada de colinas).
En este documento por unos chicos de Google con una de las redes neuronales más grandes del mundo, muestran una neurona "detectora de caras" y una neurona "detectora de gatos" de esta forma, así como una segunda forma: También muestran la imágenes reales que activan la neurona con mayor intensidad (figura 3, figura 16). El segundo enfoque es interesante porque muestra lo flexible y no lineal que es la red: estos "detectores" de alto nivel son sensibles a todas estas imágenes, aunque no se parezcan mucho a nivel de píxel.
Avísame si hay algo que no te haya quedado claro o si tienes más preguntas.
15 votos
La gente de aquí es amable, nunca he visto una respuesta del tipo "déjame que te lo busque en Google", sino muchas respuestas sorprendentemente minuciosas y perspicaces a lo que al principio parecían preguntas básicas. Desgraciadamente, no puedo ayudarte con la tuya, pero parece bastante relevante, así que me alegro de votarla.
6 votos
Gracias por el comentario y el voto Gael, probablemente estoy un poco hastiado de la comunidad SO como todos sabemos cómo esa gente puede conseguir :) Me alegro de ver más espíritu de colaboración por aquí en lugar de intentar ganar insignias y puntos editando/cerrando preguntas.
1 votos
No soy experto en redes neuronales específicamente, aunque sí me ocupo de sus aplicaciones y métodos. Mi respuesta, que quizá no sea muy útil, sería que los cálculos específicos de la función oculta dependen de la "función de coste" que se imponga a la salida, es decir, de lo que se intente conseguir. Por ejemplo, si quiere agrupar los elementos de entrada en conjuntos agrupados, calculará distancias entre elementos en la capa oculta. Esto puede pasar por varias iteraciones y ciclos de optimización dentro de esta capa, hasta que se cumpla un criterio de error que permita al proceso "salir" de esta capa.