Esta pregunta es un poco amplia para este foro. Creo que sería mejor consultar un libro de texto sobre redes neuronales, como Bishop Neural Networks for Pattern Recognition o Hagan Neural Network Design .
El nodo de sesgo en una red neuronal es un nodo que siempre está "encendido". Es decir, su valor se establece en sin tener en cuenta los datos en un patrón dado. Es análogo a la intersección en un modelo de regresión y cumple la misma función. Si una red neuronal no tiene un nodo de polarización en una capa dada, no podrá producir resultados en la siguiente capa que difieran de 0 (en la escala lineal, o el valor que corresponde a la transformación de 0 cuando se pasa por la función de activación) cuando los valores de la característica son 0 .10 00 00 0
Consideremos un ejemplo simple: Usted tiene una alimentación de avance perceptron con 2 nodos de entrada y x 2 , y 1 nodo de salida de Y . x 1 y x 2 son características binarias y se establecen en su nivel de referencia, x 1 = x 2 = 0 . Multiplicar los 2 0 's por cualquier pesos te gusta, w 1 y w 2 , sumar los productos y pasarlo a través de cualquier función de activación que prefiera. Sin un nodo de sesgo, solo unoX1X2yX1X2X1= x2= 00 0w1w2El valor de salida es posible, lo que puede producir un ajuste muy pobre. Por ejemplo, usando una función de activación logística, debe ser .5 , lo que sería horrible para clasificar eventos raros.y.5
Un nodo de sesgo proporciona una flexibilidad considerable a un modelo de red neuronal. En el ejemplo anterior, la única proporción pronosticada posible sin un nodo de sesgo fue del , pero con un nodo de sesgo, cualquier proporción en ( 0 , 1 ) puede ajustarse a los patrones donde x 1 = x 2 = 0 . Para cada capa, j , en la que se agrega un nodo de sesgo, el nodo de sesgo agregará N j + 1 parámetros / pesos adicionales a estimar (donde N j + 1 es el número de nodos en la capa j50 %( 0 , 1 )X1= x2= 0jnortej + 1nortej + 1 ). La instalación de más parámetros significa que tomará proporcionalmente más tiempo para que la red neuronal sea entrenada. También aumenta las posibilidades de sobreajuste, si no tiene muchos más datos que pesos para aprender. j + 1
Con este entendimiento en mente, podemos responder sus preguntas explícitas:
Los nodos de sesgo se agregan para aumentar la flexibilidad del modelo para adaptarse a los datos. Específicamente, permite que la red ajuste los datos cuando todas las características de entrada son iguales a , y muy probablemente disminuye el sesgo de los valores ajustados en otra parte del espacio de datos. 0 0
Por lo general, se agrega un solo nodo de sesgo para la capa de entrada y cada capa oculta en una red de avance. Nunca agregaría dos o más a una capa dada, pero podría agregar cero. Por lo tanto, el número total está determinado en gran medida por la estructura de su red, aunque podrían aplicarse otras consideraciones. (Tengo menos claridad sobre cómo se agregan los nodos de sesgo a las estructuras de la red neuronal que no sean feedforward).
Principalmente esto se ha cubierto, pero para ser explícito: nunca agregaría un nodo de sesgo a la capa de salida; eso no tendría ningún sentido.
¿CNN es diferente en este sentido? ¡Desde que agrego sesgo a mis capas de conv, el rendimiento (precisión) se degrada! y cuando los elimino, ¡en realidad va más alto!
Rika
@Hossein, no que yo sepa, pero podrías hacer una nueva pregunta. No soy muy experto allí.
gung - Restablecer Monica
¿Seguiría necesitando nodos de sesgo si mis entradas nunca van a 0?
Para cambiar la función de entrada / ser más flexible sobre la función aprendida.
Un solo nodo de sesgo por capa.
Agréguelos a todas las capas ocultas y a la capa de entrada, con algunas notas al pie
En un par de experimentos en mi tesis de maestría (p. Ej., Página 59), descubrí que el sesgo podría ser importante para la (s) primera (s) capa (s), pero especialmente en las capas completamente conectadas al final parece que no juega un papel importante. Por lo tanto, uno puede tenerlos en las primeras capas y no en las últimas. Simplemente entrene una red, trace la distribución de pesos de los nodos de sesgo y podelos si los pesos parecen estar demasiado cerca de cero.
Esto puede depender mucho de la arquitectura de red / conjunto de datos.
¿El nodo de sesgo tendría flechas conectadas desde la capa anterior? o simplemente contribuye a la siguiente capa multiplicando su valor "1" con el peso en la suma ponderada que se pasa a la activación. La respuesta a esto ahorrará horas, por favor ayuda
krupesh Anadkat
1
El sesgo es solo un número agregado a la siguiente activación de capas. Una forma de visualizarlo es tener un 1valor constante en la capa anterior y un peso (un valor de sesgo) para cada una de las neuronas de las capas siguientes.
Martin Thoma
2
En el contexto de las redes neuronales, Batch Normalization es actualmente el estándar de oro para hacer "nodos de sesgo" inteligentes. En lugar de sujetar el valor de sesgo de una neurona, en su lugar, ajusta la covarianza de la entrada de la neurona. Entonces, en una CNN, aplicaría una normalización por lotes solo entre la capa convolucional y la siguiente capa completamente conectada (por ejemplo, ReLus). En teoría, todas las capas completamente conectadas podrían beneficiarse de la Normalización de lotes, pero en la práctica se vuelve muy costoso de implementar, ya que cada normalización de lotes lleva sus propios parámetros.
En cuanto a por qué, la mayoría de las respuestas ya han explicado que, en particular, las neuronas son susceptibles a gradientes saturados cuando la entrada lleva la activación al extremo. En el caso de ReLu, esto se empujaría hacia la izquierda, dando un gradiente de 0. En general, cuando entrena un modelo, primero normaliza las entradas a la red neuronal. La normalización por lotes es una forma de normalizar las entradas dentro de la red neuronal, entre capas.
Respuestas:
El nodo de sesgo en una red neuronal es un nodo que siempre está "encendido". Es decir, su valor se establece en sin tener en cuenta los datos en un patrón dado. Es análogo a la intersección en un modelo de regresión y cumple la misma función. Si una red neuronal no tiene un nodo de polarización en una capa dada, no podrá producir resultados en la siguiente capa que difieran de 0 (en la escala lineal, o el valor que corresponde a la transformación de 0 cuando se pasa por la función de activación) cuando los valores de la característica son 0 .1 0 0 0 0 0 0
Consideremos un ejemplo simple: Usted tiene una alimentación de avance perceptron con 2 nodos de entrada y x 2 , y 1 nodo de salida de Y . x 1 y x 2 son características binarias y se establecen en su nivel de referencia, x 1 = x 2 = 0 . Multiplicar los 2 0 's por cualquier pesos te gusta, w 1 y w 2 , sumar los productos y pasarlo a través de cualquier función de activación que prefiera. Sin un nodo de sesgo, solo unoX1 X2 y X1 X2 X1= x2= 0 0 0 w1 w2 El valor de salida es posible, lo que puede producir un ajuste muy pobre. Por ejemplo, usando una función de activación logística, debe ser .5 , lo que sería horrible para clasificar eventos raros.y .5
Un nodo de sesgo proporciona una flexibilidad considerable a un modelo de red neuronal. En el ejemplo anterior, la única proporción pronosticada posible sin un nodo de sesgo fue del , pero con un nodo de sesgo, cualquier proporción en ( 0 , 1 ) puede ajustarse a los patrones donde x 1 = x 2 = 0 . Para cada capa, j , en la que se agrega un nodo de sesgo, el nodo de sesgo agregará N j + 1 parámetros / pesos adicionales a estimar (donde N j + 1 es el número de nodos en la capa j50 % ( 0 , 1 ) X1= x2= 0 j nortej + 1 nortej + 1 ). La instalación de más parámetros significa que tomará proporcionalmente más tiempo para que la red neuronal sea entrenada. También aumenta las posibilidades de sobreajuste, si no tiene muchos más datos que pesos para aprender. j + 1
Con este entendimiento en mente, podemos responder sus preguntas explícitas:
fuente
Respuestas simples y cortas:
En un par de experimentos en mi tesis de maestría (p. Ej., Página 59), descubrí que el sesgo podría ser importante para la (s) primera (s) capa (s), pero especialmente en las capas completamente conectadas al final parece que no juega un papel importante. Por lo tanto, uno puede tenerlos en las primeras capas y no en las últimas. Simplemente entrene una red, trace la distribución de pesos de los nodos de sesgo y podelos si los pesos parecen estar demasiado cerca de cero.
Esto puede depender mucho de la arquitectura de red / conjunto de datos.
fuente
1
valor constante en la capa anterior y un peso (un valor de sesgo) para cada una de las neuronas de las capas siguientes.En el contexto de las redes neuronales, Batch Normalization es actualmente el estándar de oro para hacer "nodos de sesgo" inteligentes. En lugar de sujetar el valor de sesgo de una neurona, en su lugar, ajusta la covarianza de la entrada de la neurona. Entonces, en una CNN, aplicaría una normalización por lotes solo entre la capa convolucional y la siguiente capa completamente conectada (por ejemplo, ReLus). En teoría, todas las capas completamente conectadas podrían beneficiarse de la Normalización de lotes, pero en la práctica se vuelve muy costoso de implementar, ya que cada normalización de lotes lleva sus propios parámetros.
En cuanto a por qué, la mayoría de las respuestas ya han explicado que, en particular, las neuronas son susceptibles a gradientes saturados cuando la entrada lleva la activación al extremo. En el caso de ReLu, esto se empujaría hacia la izquierda, dando un gradiente de 0. En general, cuando entrena un modelo, primero normaliza las entradas a la red neuronal. La normalización por lotes es una forma de normalizar las entradas dentro de la red neuronal, entre capas.
fuente