- ¿Por qué se usan los nodos de sesgo en las redes neuronales?
- ¿Cuántos deberías usar?
- ¿En qué capas debe usarlas: todas las capas ocultas y la capa de salida?
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 .
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 unoEl 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.
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 j ). 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.
Con este entendimiento en mente, podemos responder sus preguntas explícitas:
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.
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.