212 votos

¿Qué calcula la capa oculta de una red neuronal?

Estoy seguro de que mucha gente responderá con enlaces a "déjame que te lo busque en Google", así que quiero decir que he intentado averiguarlo, así que, por favor, perdona mi falta de comprensión, pero no consigo entender cómo funciona realmente la implementación práctica de una red neuronal.

Entiendo la capa de entrada y cómo normalizar los datos, también entiendo la unidad de sesgo, pero cuando se trata de la capa oculta, lo que el cálculo real es en esa capa, y cómo se asigna a la salida es sólo un poco confuso. He visto diagramas con signos de interrogación en la capa oculta, funciones booleanas como AND/OR/XOR, funciones de activación, y nodos de entrada que mapean a todas las unidades ocultas y nodos de entrada que mapean sólo a unas pocas unidades ocultas cada uno, así que sólo tengo algunas preguntas sobre el aspecto práctico. Por supuesto, una explicación sencilla de todo el proceso de la red neuronal como se le explicaría a un niño, sería impresionante.

¿Qué cálculos se realizan en la capa oculta?

¿Cómo se asignan esos cálculos a la capa de salida?

¿Cómo funciona la capa de salida? ¿Desnormalizar los datos de la capa oculta?

¿Por qué algunas capas de la capa de entrada están conectadas a la capa oculta y otras no?

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.

257voto

Bou Puntos 1859

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.

2 votos

Entonces, ¿hay un único algoritmo definido para cada nodo de una capa determinada y los pesos son los que hacen que las salidas sean diferentes? ¿O se puede programar cada nodo de la capa para que sea diferente?

0 votos

@GeorgeMcDowd Sí, normalmente los pesos son las únicas diferencias entre nodos dentro de una capa. Aunque no hay ninguna razón en particular (aparte de la eficiencia computacional) para que tenga que ser así.

0 votos

Gracias por las respuestas David, aprecio mucho tu post. Así que entiendo el hecho de que cada neurona utiliza los pesos que eventualmente van en una función de activación que le permite disparar un valor binario y que estos valores binarios computados juntos pueden producir una salida más compleja que un solo nodo no podría calcular. Un poco confundido todavía en cómo cuando un programa está buscando en el píxel # 1 que puede decir "Oh, sí, esto es un autobús" y disparar un 1 y luego ajustar el peso de esa salida.

14voto

user17541 Puntos 119

Voy a describir mi opinión al respecto en dos pasos: El paso de entrada a oculto y el paso de oculto a salida. Voy a hacer el paso oculto a la salida en primer lugar porque parece menos interesante (para mí).

Oculto a la salida

La salida de la capa oculta podrían ser diferentes cosas, pero por ahora supongamos que salen de sigmoidal funciones de activación. Por tanto, son valores entre 0 y 1, y para muchas entradas pueden ser simplemente 0 y 1.

Me gusta pensar que la transformación entre las salidas de estas neuronas ocultas y la capa de salida es sólo una traducción (en el sentido lingüístico, no en el geométrico). Esto es cierto si la transformación es invertible Y si no, es que se ha perdido algo en la traducción. Pero básicamente sólo tienes las salidas de las neuronas ocultas vistas desde una perspectiva diferente.

Entrada-oculta

Digamos que tienes 3 neuronas de entrada (sólo para poder escribir fácilmente algunas ecuaciones aquí) y algunas neuronas ocultas. Cada neurona oculta recibe como entrada un suma ponderada de entradas, por ejemplo

hidden_1 = 10 * (input_1) + 0 * (input_2) + 2 * (input_3)

Esto significa que el valor de hidden_1 es muy sensible al valor de input_1 , nada sensible a input_2 y sólo ligeramente sensible a input_3 .

Así que se podría decir que hidden_1 es capturar un aspecto de la entrada, que podría denominarse " input_1 es importante".

La salida de hidden_1 se forma normalmente pasando la entrada a través de alguna función, así que digamos que está utilizando una función sigmoide función. Esta función toma valores entre 0 y 1; así que piensa en ella como un interruptor que dice que o bien input_1 es importante o no lo es.

¡Eso es lo que hace la capa oculta! Extrae aspectos o características del espacio de entrada.

Ahora los pesos también pueden ser negativos. Lo que significa que puedes obtener aspectos como " input_1 es importante PERO TAMBIÉN input_2 quita esa importancia":

hidden_2 = 10 * (input_1) - 10 * (input_2 ) + 0 * (input_3)

o input_1 y input_3 tienen una importancia "compartida":

hidden_3 = 5 * (input_1) + 0 * (input_2) + 5 * (input_3)

Más geometría

Si sabes algo de álgebra lineal, puedes pensar geométricamente en términos de proyectar a lo largo de ciertas direcciones. En el ejemplo anterior, proyecté a lo largo de la input_1 dirección.

Veamos hidden_1 de nuevo, desde arriba. Una vez que el valor en input_1 es lo suficientemente grande, la salida de la función de activación sigmoidea se quedará en 1, no se hará más grande . En otras palabras, cada vez más input_1 no influirá en el resultado. Del mismo modo, si se mueve en la dirección opuesta (es decir, negativa), entonces después de un punto la salida no se verá afectada.

Vale, bien. Pero supongamos que no queremos sensibilidad en la dirección del infinito en cierta dirección a, y queremos que se active sólo para un determinado gama en una línea. Significa que para valores muy negativos no hay efecto, y para valores muy positivos no hay efecto, pero para valores entre digamos, 5 y 16 quieres que se despierte. Aquí es donde se utilizaría un función de base radial para su función de activación.

Resumen

La capa oculta extrae características del espacio de entrada y la capa de salida las traduce al contexto deseado. Puede que sea mucho más que esto, con las redes multicapa y demás, pero esto es lo que entiendo hasta ahora.

EDITAR: Esta página, con sus maravillosos gráficos interactivos, lo hace mejor que mi larga y engorrosa respuesta anterior: http://neuralnetworksanddeeplearning.com/chap4.html

2 votos

Al igual que el OP, estoy un poco confundido acerca de la capa oculta en las redes neuronales. En tu ejemplo, ¿cómo encuentra el algoritmo de la red neuronal los pesos para las neuronas oculta_1, oculta_2 y oculta_3? Y puesto que hidden_1, hidden_2 y hidden_3 se derivan de las mismas variables de entrada, ¿no convergerían los pesos a la misma solución?

13voto

Tiberia Puntos 121

Voy a tratar de añadir a la intuitiva descripción operativa...

Una buena forma intuitiva de pensar acerca de una red neuronal es el pensar en un modelo de regresión lineal intenta hacer. Una regresión lineal tendrá algunas entradas y venir para arriba con un modelo lineal que toma cada valor de entrada de veces de un modelo óptimo de ponderación de los coeficientes y intenta asignar la suma de los resultados de salida de la respuesta que se acerque a la verdadera salida. Los coeficientes se determinan mediante la búsqueda de los valores que va a minimizar algunos de error métrica entre el valor de salida deseado y el valor que se aprende por el modelo. Otra manera de decirlo es que el modelo lineal intentará crear coeficiente de multiplicadores para cada entrada y la suma de todos ellos para tratar de determinar la relación entre las (múltiples) de entrada y (típicamente una sola) valores de salida. Ese mismo modelo casi puede ser considerado como el bloque básico de construcción de una red neuronal; una sola unidad de tipo perceptrón.

Pero la única unidad de tipo perceptrón tiene una pieza más que se va a procesar la suma de la ponderación de los datos en un no-lineales. Se utiliza normalmente en un aplastamiento de la función (sigmoide, o tanh) para lograr esto. Así que usted tiene la unidad básica de la capa oculta, que es un bloque que se suma un conjunto de ponderación de insumos--, a continuación, pasa a la suma de la respuesta a una función no lineal para crear una capa oculta) nodo de salida de la respuesta. El sesgo de la unidad es tal como en la regresión lineal, un constante desplazamiento que se añade a cada nodo para ser procesados. Debido a que el procesamiento no lineal de bloque, que ya no se limitan a lineal sólo las respuestas (como en el modelo de regresión lineal).

Ok, pero cuando se tienen muchos de que el único tipo perceptrón unidades trabajando juntos, cada uno puede tener diferentes entradas peso de los multiplicadores y las diferentes respuestas (aunque TODO el proceso el mismo conjunto de entradas con el mismo no-lineal de bloque se ha descrito anteriormente). Lo que hace que las respuestas sean diferentes, es que cada uno tiene diferente coeficiente de pesos que son aprendidas por la red neuronal a través de la formación (algunas formas incluyen el gradiente de la pendiente). El resultado de todos los perceptrones se procesan de nuevo y se pasa a una capa de salida, así como los bloques individuales fueron procesados. La pregunta entonces es, ¿cómo son los correctos pesos determinado para todos los bloques?

Una forma común para aprender la correcta pesos es por partida aleatoria de los pesos y la medición de la respuesta de error entre la verdad real de salida y el aprendido salida del modelo. El error normalmente se pasa hacia atrás a través de la red y el algoritmo de retroalimentación individualmente aumentar o disminuir esos pesos por algunos proporción al error. La red repetidamente de iterar por pasar adelante, la medición de la respuesta de salida, a continuación, actualizar (pasar hacia atrás el peso de los ajustes) y la corrección de los pesos hasta algún nivel satisfactorio de error es alcanzado. En ese momento usted tiene un modelo de regresión que puede ser más flexible que un modelo de regresión lineal, es lo que comúnmente se llama una función universal approximator.

Una de las formas que realmente me ayudó a aprender de una red neuronal realmente funciona es estudiar el código de una red neuronal de implementación y construcción. Uno de los mejores básica explicaciones de código se puede encontrar en la red neuronal capítulo de (la libre disposición) 'El Científico y el Ingeniero de guía para DSP' Ch. 26. Es en su mayoría escritos en muy básicas del idioma (creo que fue fortran) que realmente te ayuda a ver lo que está pasando.

5voto

jpmuc Puntos 4817

Tomemos el caso de la clasificación. Lo que intenta hacer la capa de salida es estimar la probabilidad condicional de que su muestra pertenezca a una clase determinada, es decir, la probabilidad de que esa muestra pertenezca a una clase determinada. En términos geométricos, combinar capas de forma no lineal a través de las funciones umbral permite a las redes neuronales resolver problemas no convexos (reconocimiento del habla, de objetos, etc.), que son los más interesantes. En otras palabras, las unidades de salida son capaces de generar funciones de decisión no convexas como las que se muestran a continuación aquí .

Se puede considerar que las unidades de las capas ocultas aprenden características complejas de los datos que permiten a la capa de salida discernir mejor una clase de otra y generar límites de decisión más precisos. Por ejemplo, en el caso del reconocimiento facial, las unidades de las primeras capas aprenden características similares a los bordes (detectan bordes en determinadas orientaciones y posiciones) y las de las capas superiores aprenden a combinarlas para convertirse en detectores de rasgos faciales como la nariz, la boca o los ojos. Los pesos de cada unidad oculta representan esos rasgos, y su salida (suponiendo que sea una sigmoide) representa la probabilidad de que ese rasgo esté presente en la muestra.

En general, el significado de las salidas de las capas de salida y oculta depende del problema que se intente resolver (regresión, clasificación) y de la función de pérdida que se emplee (entropía cruzada, errores mínimos al cuadrado, ...)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X