Estoy seguro de que mucha gente responderá con enlaces a «déjame buscarlo en Google», así que quiero decir que he intentado calcular esto, así que perdonen mi falta de comprensión aquí, pero no puedo 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, cuál es el cálculo real en esa capa y cómo se asigna a la la salida es solo un poco nublada. 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 se asignan a todas las unidades ocultas y nodos de entrada que se asignan solo a unas pocas unidades ocultas cada una y así Solo tengo algunas preguntas sobre el aspecto práctico. Por supuesto, una explicación simple de todo el proceso de la red neuronal, como le explicaría a un niño, sería genial.

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é ¿Hay algunas capas en la capa de entrada conectadas a la capa oculta y otras no?

Comentarios

  • La gente por aquí es agradable, nunca he visto una respuesta «déjame buscar en Google eso para ti», pero muchas respuestas sorprendentemente detalladas y perspicaces a lo que al principio parecían ser preguntas básicas. Lamentablemente, no puedo ‘ ayudarte con con el tuyo, pero parece bastante relevante, así que estoy feliz de votarlo.
  • Gracias por el comentario y el voto Gael, yo ‘ probablemente estoy un poco cansado la comunidad SO, ya que todos sabemos cómo pueden llegar esas personas 🙂 Me alegra ver más un espíritu de colaboración aquí en lugar de tratar de ganar insignias y puntos editando / cerrando preguntas.
  • No estoy experto en redes neuronales en concreto, aunque sí me involucro en sus aplicaciones y métodos. Mi respuesta tal vez no tan útil sería que los cálculos específicos en lo oculto dependen de la ‘ función de costo ‘ que está imponer en su resultado, es decir, lo que intenta lograr. Por ejemplo, si desea agrupar los elementos de entrada en conjuntos agrupados, calculará las distancias entre los elementos de la capa oculta. Esto puede pasar por varias iteraciones y ciclos de optimización dentro de esta capa, hasta que cumpla con un criterio de error que le permita al proceso `dejar ‘ esta capa.

Respuesta

Versión de tres frases:

  • Cada capa puede aplicar cualquier función que desee a la capa anterior (generalmente una transformación lineal seguida de una no linealidad aplastante).

  • El trabajo de las capas ocultas es transformar las entradas en algo que la capa de salida pueda usar.

  • La capa de salida transforma las activaciones de la capa oculta en cualquier escala en la que quieras que esté tu salida.

Como tú «re 5:

Si desea que una computadora le diga si hay un bus en una imagen, la computadora podría tener un tiempo más fácil si tuviera las herramientas adecuadas.

Por lo tanto, su detector de autobús podría estar hecho de un detector de ruedas (para ayudarlo a decirle que es un vehículo) y un detector de caja (ya que el autobús tiene la forma de una caja grande) y un detector de tamaño (para decirle es demasiado grande para ser un automóvil). Estos son los tres elementos de su capa oculta: no son parte de la imagen sin procesar, son herramientas que diseñó para ayudarlo a identificar autobuses.

Si los tres detectores se encienden (o quizás si están especialmente activos), entonces es muy probable que tenga un autobús frente a usted.

Las redes neuronales son útiles l porque hay buenas herramientas (como la propagación hacia atrás) para construir muchos detectores y armarlos.


Como si fuera un adulto

Una red neuronal de avance aplica una serie de funciones a los datos. Las funciones exactas dependerán de la red neuronal que estés usando: con mayor frecuencia, estas funciones calculan una transformación lineal de la capa anterior, seguida de una no linealidad aplastante. A veces, las funciones harán otra cosa (como calcular funciones lógicas en tus ejemplos o promediar los píxeles adyacentes en una imagen). Por lo tanto, los roles de las diferentes capas podrían depender de las funciones que se están calculando, pero intentaré ser muy general.

Llamemos a la entrada vector $ x $, las activaciones de capa oculta $ h $ y la activación de salida $ y $. Tiene alguna función $ f $ que se asigna desde $ x $ a $ h $ y otra función $ g $ que se asigna desde $ h $ a $ y $.

Entonces, 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 solo una?

Si el nivel de complejidad por función es limitado, $ g (f (x)) $ puede calcular cosas que $ f $ y $ g $ no pueden hacer individualmente.


Un ejemplo con funciones lógicas:

Por ejemplo, si solo permitimos $ f $ y $ g $ para ser operadores lógicos simples como «Y», «O» y «NAND», entonces «no puede calcular otras funciones como» XOR «con solo una de ellas. Por otro lado, podríamos calcular «XOR» si estuviéramos dispuestos a superponer estas funciones entre sí:

Funciones de la primera capa:

  • Asegúrese de que al menos un elemento sea «TRUE» (usando OR)
  • Asegúrese de que «no todos sean» TRUE «(usando NAND)

Función de segunda capa:

  • Asegúrese de que se cumplan los dos criterios de la primera capa (usando Y)

La salida de la red es solo la resultado de esta segunda función. La primera capa transforma las entradas en algo que la segunda capa puede usar 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 diferentes capas ocultas en una red neuronal en particular.

La primera capa busca pequeños trozos de bordes en la imagen: estos son muy fáciles de encontrar a partir de datos de píxeles sin procesar, pero no son muy útiles por sí mismos para decirle si está mirando una cara o un autobús o un elefante.

La siguiente capa compone los bordes: si los bordes de la capa oculta inferior encajan de cierta manera, entonces uno de los detectores oculares en el medio de la columna más a la izquierda podría encenderse . Sería difícil hacer una sola capa que fuera tan buena para encontrar algo tan específico a partir de los píxeles sin procesar: los detectores oculares son mucho más fáciles de construir a partir de detectores de borde que a partir de píxeles sin procesar.

La siguiente capa arriba compone los detectores oculares y los detectores nasales en caras. En otras palabras, se iluminarán cuando los detectores oculares y los detectores nasales de la capa anterior se enciendan con los patrones correctos. Estos son muy buenos para buscar tipos particulares de caras: si uno o más de ellos se encienden, entonces su capa de salida debe informar que hay un rostro presente.

Esto es útil porque Los detectores faciales son fáciles de construir con detectores oculares y detectores nasales, pero muy difíciles de construir con intensidades de píxeles.

Entonces cada capa te lleva cada vez más lejos de los píxeles sin procesar y más cerca de tu objetivo final (por ejemplo, detección de rostros o detección de autobuses).


Respuestas a otras preguntas variadas

«¿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 «sesgados». Hay una muy buena explicación aquí . La respuesta corta es que «son como términos de intercepción en regresión.

» Donde ¿De dónde provienen las imágenes del «detector de ojos» en el ejemplo de imagen? «

No he verificado las imágenes específicas a las que he vinculado, pero en general, estas visualizaciones muestran el conjunto de píxeles en la capa de entrada que maximizan la actividad de la neurona correspondiente. Por lo tanto, si pensamos en la neurona como un detector ocular, esta es la imagen que la neurona considera más parecida a un ojo. La gente suele encontrar estos conjuntos de píxeles con una optimización (escalada).

En este documento de algunos empleados de Google con una de las redes neuronales más grandes del mundo, muestran una neurona «detectora de rostros» y una neurona «detectora de gatos» de esta manera, así como una segunda manera: también muestran las imágenes reales que activan la neurona con más fuerza (figura 3, figura 16). El segundo enfoque es bueno porque muestra cuán flexible y no lineal es la red: estos «detectores» de alto nivel son sensibles a todas estas imágenes, aunque no se ven particularmente similares a nivel de píxeles.


Avíseme si algo aquí no está claro o si tiene más preguntas.

Comentarios

  • Entonces, ¿hay solo uno definido? algoritmo para cada nodo en una capa dada y los pesos son los que hacen que las salidas sean diferentes ¿O puede programar cada nodo en la capa para que sea diferente?
  • @GeorgeMcDowd esto llega al tema clave: mirar píxeles e identificar buses es difícil, como sugirió. Afortunadamente, mirar píxeles y encontrar bordes es fácil: ‘ es todo lo que la primera capa oculta intenta hacer. La siguiente capa intenta para hacer inferencias basadas en bordes, que es mucho más fácil que intentar hacerlo en base a píxeles.
  • ¡Así que debería darte alguna otra recompensa (además de puntos) por el tiempo y el esfuerzo que dedicaste a esta respuesta!
  • @JoshuaEnfield Creo que la lógica en la década de 1980 ‘ s era una combinación de ser similar a cómo la gente pensaba que funcionaba el cerebro, que era diferenciable en todas partes y que los valores estaban limitados como mencionaste. Desde entonces, las personas han descubierto que f(x) = max(x, 0) (la » unidad lineal rectificada «) a menudo funciona mejor, aunque no ‘ t tiene muchas de esas propiedades.
  • El ejemplo del bus y la cadena de funciones simplemente lo lograron. No ‘ no entienda por qué los libros de texto no pueden ‘ ser tan descriptivos.

Respuesta

Intentaré agregar a la descripción operativa intuitiva …

Una buena forma intuitiva de pensar sobre una red neuronal es pensar acerca de lo que intenta hacer un modelo de regresión lineal. Una regresión lineal tomará algunas entradas y generará un modelo lineal que toma cada valor de entrada multiplicado por algunos coeficientes de ponderación óptimos del modelo y trata de asignar la suma de esos resultados a una respuesta de salida que se acerque coincide con la salida real. Los coeficientes se determinan al encontrar los valores que minimizarán alguna métrica de error entre el valor de salida deseado y el valor aprendido por el modelo. Otra forma de decirlo es que el modelo lineal intentará crear multiplicadores de coeficientes para cada entrada y sume todas para tratar de determinar la relación entre el valor de la entrada (múltiple) y la salida (típicamente única) ues. Casi se puede pensar en ese mismo modelo como el componente básico de una red neuronal; un perceptrón de una sola unidad.

Pero el perceptrón de una sola unidad tiene una pieza más que procesará la suma de los datos ponderados de una manera no lineal. Por lo general, utiliza una función de aplastamiento (sigmoidea o tanh) para lograr esto. Entonces, tiene la unidad básica de la capa oculta, que es un bloque que sumará un conjunto de entradas ponderadas; luego pasa la respuesta sumada a una función no lineal para crear una respuesta de nodo de salida (capa oculta). La unidad de sesgo es como en la regresión lineal, un desplazamiento constante que se agrega a cada nodo a procesar. Debido al bloque de procesamiento no lineal, ya no está limitado a respuestas únicamente lineales (como en el modelo de regresión lineal).

De acuerdo, pero cuando tiene muchas de las unidades de perceptrón individuales trabajando juntas, cada una puede tener diferentes multiplicadores de peso de entrada y diferentes respuestas (aunque TODOS procesan el mismo conjunto de entradas con el mismo bloque no lineal descrito anteriormente). Lo que hace que las respuestas sean diferentes es que cada una tiene diferentes pesos de coeficientes que la red neuronal aprende a través del entrenamiento (algunas formas incluyen el descenso de gradientes). El resultado de todos los perceptrones se procesa nuevamente y se pasa a una capa de salida, tal como se procesaron los bloques individuales. Entonces, la pregunta es ¿cómo se determinan los pesos correctos para todos los bloques?

Una forma común de aprender los pesos correctos es comenzar con pesos aleatorios y medir la respuesta de error entre la salida real real y la aprendida. salida del modelo. El error normalmente se transmitirá hacia atrás a través de la red y el algoritmo de retroalimentación aumentará o disminuirá individualmente esos pesos en alguna proporción con el error. La red iterará repetidamente pasando hacia adelante, midiendo la respuesta de salida, luego actualizando (pasando los ajustes de peso hacia atrás) y corrigiendo los pesos hasta que se alcance algún nivel de error satisfactorio. En ese punto, 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 un aproximador de función universal.

Una de las formas que realmente me ayudó a aprender cómo funciona realmente una red neuronal es estudiar el código de una implementación de red neuronal y construirla. Una de las mejores explicaciones básicas del código se puede encontrar en el capítulo sobre redes neuronales (disponible gratuitamente) «La guía de DSP para científicos e ingenieros» Cap. 26. Está escrito principalmente en un lenguaje muy básico (creo que fue fortran) que realmente te ayuda a ver lo que está sucediendo.

Responder

Voy a describir mi punto de vista de esto en dos pasos: el paso de entrada a oculta y el paso de oculto a salida. Primero haré el paso de oculto a salida porque me parece menos interesante.

Oculto a salida

La salida de la capa oculta podría ser cosas diferentes, pero por ahora supongamos que provienen de funciones de activación sigmoidal . Por tanto, son valores entre 0 y 1, y para muchas entradas pueden ser 0 «sy 1» s.

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

Input-to-Hidden

Digamos que tiene 3 neuronas de entrada (solo para que pueda escribe aquí algunas ecuaciones) y algunas neuronas ocultas. Cada neurona oculta recibe como entrada una suma ponderada de entradas, por ejemplo, tal vez

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, para nada sensible a input_2 y solo ligeramente sensible a input_3.

Entonces, podría decir que hidden_1 está capturando un aspecto particular de la entrada, que podría llamar «input_1 es un aspecto «importante.

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

¡Así que 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 sabe algo álgebra lineal, puedes pensar geométricamente en términos de proyectar en ciertas direcciones. En el ejemplo anterior, proyecté a lo largo de la input_1 dirección.

Veamos hidden_1 nuevamente, desde Una vez que el valor en input_1 sea lo suficientemente grande, la salida de la función de activación sigmoide permanecerá en 1, no será más grande . En otras palabras, más y más input_1 no harán ninguna diferencia en la salida. De manera similar, si se mueve en la dirección opuesta (es decir, negativa), luego de un punto la salida no se verá afectada.

Ok, bien. Pero supongamos que no queremos sensibilidad en la dirección del infinito en cierta dirección, y queremos que se active solo para un cierto rango en una línea. Lo que 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, desea que se active. Aquí es donde usaría una 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 haber mucho más que esto, con redes multicapa y demás, pero esto es lo que entiendo hasta ahora.

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

Comentarios

  • Como el OP, yo ‘ estoy un poco confundido acerca de la capa oculta en redes neuronales. En su ejemplo, ¿cómo encuentra el algoritmo NN los pesos de las neuronas hidden_1, hidden_2 y hidden_3? Y dado que hidden_1, hidden_2 y hidden_3 se derivan de las mismas variables de entrada, ¿no ‘ t los pesos convergerían a la misma solución?

Respuesta

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

Se pueden ver las unidades en capas ocultas como el aprendizaje de características complejas a partir de datos que permiten que la capa de salida pueda distinguir mejor una clase de otra, para generar límites de decisión más precisos. Por ejemplo, en el caso del reconocimiento facial, las unidades en las primeras capas aprenden características de borde (detectan bordes en orientaciones y posiciones dadas) y la capa superior aprende a combinarlas para convertirse en detectores de características faciales como nariz, boca u ojos. Los pesos de cada unidad oculta representan esas características, y su salida (asumiendo que es un sigmoide) representa la probabilidad de que esa característica esté presente en su muestra.

En general, el significado de las salidas de salida y las capas ocultas dependen del problema que está tratando de resolver (regresión, clasificación) y la función de pérdida que emplea (entropía cruzada, errores mínimos cuadrados, …)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *