¿Cuál es el papel del sesgo en las redes neuronales? [cerrado]
Soy consciente del descenso del gradiente y del algoritmo de retropropagación. Lo que no entiendo es: ¿cuándo es importante utilizar un sesgo y cómo se utiliza?
Por ejemplo, al mapear la AND
función, cuando uso dos entradas y una salida, no da los pesos correctos. Sin embargo, cuando uso tres entradas (una de las cuales es un sesgo), obtengo los pesos correctos.
Creo que los prejuicios casi siempre son útiles. De hecho, un valor de sesgo le permite desplazar la función de activación hacia la izquierda o hacia la derecha , lo que puede ser fundamental para un aprendizaje exitoso.
Podría ser útil mirar un ejemplo sencillo. Considere esta red de 1 entrada y 1 salida que no tiene sesgo:
La salida de la red se calcula multiplicando la entrada (x) por el peso (w 0 ) y pasando el resultado a través de algún tipo de función de activación (por ejemplo, una función sigmoidea).
Aquí está la función que calcula esta red, para varios valores de w 0 :
Cambiar el peso w 0 esencialmente cambia la "inclinación" del sigmoide. Eso es útil, pero ¿qué pasaría si quisiera que la red generara 0 cuando x es 2? Simplemente cambiar la inclinación del sigmoide no funcionará realmente; lo que deseas es poder desplazar toda la curva hacia la derecha .
Eso es exactamente lo que el sesgo te permite hacer. Si agregamos un sesgo a esa red, así:
... entonces la salida de la red se convierte en sig(w 0 *x + w 1 *1.0). Así es como se ve la salida de la red para varios valores de w 1 :
Tener un peso de -5 para w 1 desplaza la curva hacia la derecha, lo que nos permite tener una red que genera 0 cuando x es 2.
Una forma más sencilla de entender qué es el sesgo: de alguna manera es similar a la constante b de una función lineal
y = ax + b
Le permite mover la línea hacia arriba y hacia abajo para ajustar mejor la predicción a los datos.
Sin b , la línea siempre pasa por el origen (0, 0) y es posible que el ajuste sea peor.
A continuación se muestran algunas ilustraciones adicionales que muestran el resultado de una red neuronal de alimentación directa de dos capas con y sin unidades de sesgo en un problema de regresión de dos variables. Los pesos se inicializan aleatoriamente y se utiliza la activación ReLU estándar. Como concluyeron las respuestas que tenía ante mí, sin el sesgo, la red ReLU no puede desviarse de cero en (0,0).
Se pueden ajustar dos tipos diferentes de parámetros durante el entrenamiento de una ANN, los pesos y el valor en las funciones de activación. Esto no es práctico y sería más fácil si sólo se ajustara uno de los parámetros. Para hacer frente a este problema se inventa una neurona de polarización. La neurona de polarización se encuentra en una capa, está conectada a todas las neuronas de la capa siguiente, pero a ninguna de la capa anterior y siempre emite 1. Dado que la neurona de polarización emite 1, los pesos, conectados a la neurona de polarización, se agregan directamente a la suma combinada de los otros pesos (ecuación 2.1), al igual que el valor t en las funciones de activación. 1
La razón por la que no es práctico es porque estás ajustando simultáneamente el peso y el valor, por lo que cualquier cambio en el peso puede neutralizar el cambio en el valor que fue útil para una instancia de datos anterior... agregar una neurona de polarización sin un valor cambiante permite usted puede controlar el comportamiento de la capa.
Además, el sesgo le permite utilizar una única red neuronal para representar casos similares. Considere la función booleana AND representada por la siguiente red neuronal:
(fuente: aihorizon.com )
- w0 corresponde a b .
- w1 corresponde a x1 .
- w2 corresponde a x2 .
Se puede utilizar un solo perceptrón para representar muchas funciones booleanas.
Por ejemplo, si asumimos valores booleanos de 1 (verdadero) y -1 (falso), entonces una forma de utilizar un perceptrón de dos entradas para implementar la función AND es establecer los pesos w0 = -3 y w1 = w2 = .5. Se puede hacer que este perceptrón represente la función OR alterando el umbral a w0 = -0,3. De hecho, AND y OR pueden verse como casos especiales de m de n funciones: es decir, funciones en las que al menos m de las n entradas al perceptrón deben ser verdaderas. La función O corresponde a m = 1 y la función Y a m = n. Cualquier función m-de-n se representa fácilmente usando un perceptrón estableciendo todos los pesos de entrada al mismo valor (por ejemplo, 0,5) y luego estableciendo el umbral w0 en consecuencia.
Los perceptrones pueden representar todas las funciones booleanas primitivas AND, OR, NAND (1 AND) y NOR (1 OR). Aprendizaje automático: Tom Mitchell)
El umbral es el sesgo y w0 es el peso asociado con la neurona de sesgo/umbral.