Soy consciente del descenso del gradiente y del algoritmo de propagación hacia atrás. Lo que no entiendo es: ¿cuándo es importante utilizar un sesgo y cómo se usa?
Por ejemplo, cuando mapeo la AND
función, cuando uso 2 entradas y 1 salida, no da los pesos correctos, sin embargo, cuando uso 3 entradas (1 de las cuales es un sesgo), da los pesos correctos.
Respuestas:
Creo que los prejuicios son casi siempre útiles. En efecto, un valor de sesgo le permite desplazar la función de activación hacia la izquierda o hacia la derecha , lo que puede ser crítico para un aprendizaje exitoso.
Puede ser útil mirar un ejemplo simple. 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 esta red calcula, para varios valores de w 0 :
Cambiar el peso w 0 esencialmente cambia la "inclinación" del sigmoide. Eso es útil, pero ¿y si quisieras que la red produjera 0 cuando x es 2? Simplemente cambiar la inclinación del sigmoide realmente no funcionará; desea 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.
fuente
Solo para agregar mis dos centavos.
Una forma más simple de entender cuál 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 con los datos. Sin b, la línea siempre pasa por el origen (0, 0) y puede obtener un peor ajuste.
fuente
Este hilo realmente me ayudó a desarrollar mi propio proyecto. Aquí hay algunas ilustraciones adicionales que muestran el resultado de una simple red neuronal de alimentación de 2 capas con y sin unidades de sesgo en un problema de regresión de dos variables. Los pesos se inicializan al azar y se utiliza la activación estándar de ReLU. Como concluyeron las respuestas ante mí, sin el sesgo, la red ReLU no puede desviarse de cero en (0,0).
fuente
La razón por la que no es práctico es porque está 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 sesgada sin un valor cambiante permite usted para controlar el comportamiento de la capa.
Además, el sesgo le permite usar una única red neuronal para representar casos similares. Considere la función booleana AND representada por la siguiente red neuronal:
(fuente: aihorizon.com )
El umbral es el sesgo y w0 es el peso asociado con el sesgo / neurona umbral.
fuente
El sesgo no es un
NN
término, es un término genérico de álgebra para tener en cuenta.Y = M*X + C
(ecuación en línea recta)Ahora, si es
C(Bias) = 0
así, la línea siempre pasará por el origen, es decir(0,0)
, y depende de un solo parámetro, es decirM
, que es la pendiente, por lo que tenemos menos cosas con las que jugar.C
, que es el sesgo, toma cualquier número y tiene la actividad de desplazar el gráfico, y por lo tanto puede representar situaciones más complejas.En una regresión logística, el valor esperado del objetivo se transforma mediante una función de enlace para restringir su valor al intervalo unitario. De esta manera, las predicciones del modelo se pueden ver como probabilidades de resultados primarios, como se muestra: Función sigmoidea en Wikipedia
Esta es la capa de activación final en el mapa NN que enciende y apaga la neurona. Aquí también el sesgo tiene un papel que desempeñar y desplaza la curva de manera flexible para ayudarnos a mapear el modelo.
fuente
Una capa en una red neuronal sin sesgo no es más que la multiplicación de un vector de entrada con una matriz. (El vector de salida podría pasar a través de una función sigmoidea para la normalización y para su uso en ANN de varias capas después, pero eso no es importante).
Esto significa que está utilizando una función lineal y, por lo tanto, una entrada de todos los ceros siempre se asignará a una salida de todos los ceros. Esta podría ser una solución razonable para algunos sistemas, pero en general es demasiado restrictiva.
Usando un sesgo, efectivamente está agregando otra dimensión a su espacio de entrada, que siempre toma el valor uno, por lo que está evitando un vector de entrada de todos los ceros. No pierde ninguna generalidad con esto porque su matriz de peso entrenada no necesita ser sobreyectiva, por lo que aún puede correlacionarse con todos los valores previamente posibles.
2d ANN:
Para un mapeo ANN de dos dimensiones a una dimensión, como en la reproducción de las funciones AND o OR (o XOR), puede pensar en una red neuronal como haciendo lo siguiente:
En el plano 2D, marque todas las posiciones de los vectores de entrada. Entonces, para valores booleanos, querrás marcar (-1, -1), (1,1), (-1,1), (1, -1). Lo que hace su ANN ahora es dibujar una línea recta en el plano 2d, separando la salida positiva de los valores de salida negativos.
Sin sesgo, esta línea recta tiene que pasar por cero, mientras que con sesgo, puedes colocarla en cualquier lugar. Entonces, verá que sin sesgo, enfrenta un problema con la función AND, ya que no puede poner ambos (1, -1) y (-1,1) en el lado negativo. (No se les permite estar en la línea). El problema es igual para la función OR. Con un sesgo, sin embargo, es fácil trazar la línea.
Tenga en cuenta que la función XOR en esa situación no se puede resolver incluso con sesgo.
fuente
Cuando usa ANN, rara vez conoce las partes internas de los sistemas que desea aprender. Algunas cosas no se pueden aprender sin prejuicios. Por ejemplo, eche un vistazo a los siguientes datos: (0, 1), (1, 1), (2, 1), básicamente una función que asigna cualquier x a 1.
Si tiene una red de una capa (o un mapeo lineal), no puede encontrar una solución. Sin embargo, si tienes un sesgo, ¡es trivial!
En un entorno ideal, un sesgo también podría asignar todos los puntos a la media de los puntos objetivo y dejar que las neuronas ocultas modelen las diferencias desde ese punto.
fuente
La modificación de los PESOS neuronales solo sirve para manipular la forma / curvatura de su función de transferencia, y no su punto de equilibrio / cruce por cero .
La introducción del sesgo neuronas permite cambiar la curva de la función de transferencia horizontalmente (izquierda / derecha) a lo largo del eje de entrada, sin alterar la forma / curvatura. Esto permitirá que la red produzca salidas arbitrarias diferentes de las predeterminadas y, por lo tanto, puede personalizar / cambiar la asignación de entrada a salida para satisfacer sus necesidades particulares.
Ver aquí para una explicación gráfica: http://www.heatonresearch.com/wiki/Bias
fuente
Solo para agregar a todo esto algo que falta mucho y que el resto, muy probablemente, no sabía.
Si está trabajando con imágenes, es posible que prefiera no utilizar un sesgo en absoluto. En teoría, de esa manera su red será más independiente de la magnitud de los datos, como si la imagen es oscura o brillante y vívida. Y la red aprenderá a hacer su trabajo a través del estudio de la relatividad dentro de sus datos. Muchas redes neuronales modernas utilizan esto.
Para otros datos, tener sesgos puede ser crítico. Depende de qué tipo de datos esté tratando. Si su información es invariante en magnitud --- si ingresar [1,0,0.1] debería conducir al mismo resultado que si ingresa [100,0,10], podría estar mejor sin un sesgo.
fuente
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.
Esto puede depender mucho de la arquitectura de red / conjunto de datos.
fuente
Bias decide cuánto ángulo desea que gire su peso.
En el gráfico bidimensional, el peso y el sesgo nos ayudan a encontrar el límite de decisión de los resultados. Digamos que necesitamos construir la función AND, el par input (p) -output (t) debería ser
Ahora necesitamos encontrar el límite de decisión, el límite de la idea debería ser:
¿Ver? W es perpendicular a nuestro límite. Por lo tanto, decimos que W decidió la dirección del límite.
Sin embargo, es difícil encontrar la W correcta por primera vez. En su mayoría, elegimos el valor W original al azar. Por lo tanto, el primer límite puede ser este:
Ahora el límite es pareller al eje y.
Queremos rotar el límite, ¿cómo?
Al cambiar la W.
Entonces, usamos la función de regla de aprendizaje: W '= W + P:
Por lo tanto, al cambiar el valor de b (sesgo), puede decidir el ángulo entre W 'y W. Esa es "la regla de aprendizaje de ANN".
También puede leer Neural Network Design por Martin T. Hagan / Howard B. Demuth / Mark H. Beale, capítulo 4 "Regla de aprendizaje de Perceptron"
fuente
En particular, de Nate respuesta , de ZFY respuesta , y Pradi respuesta son grandes.
En términos más simples, los sesgos permiten que se aprendan / almacenen más y más variaciones de pesos ... ( nota al margen : a veces se les da algún umbral). De todos modos, más variaciones significan que los sesgos agregan una representación más rica del espacio de entrada a los pesos aprendidos / almacenados del modelo. (Donde mejores pesos pueden mejorar el poder de adivinación de la red neuronal)
Por ejemplo, en los modelos de aprendizaje, la hipótesis / conjetura está deseablemente limitada por y = 0 o y = 1 dada alguna entrada, tal vez en alguna tarea de clasificación ... es decir, algunos y = 0 para algunos x = (1,1) y algunos y = 1 para algunos x = (0,1). (La condición en la hipótesis / resultado es el umbral del que hablé anteriormente. Tenga en cuenta que mis ejemplos configuraron las entradas X para que sean x = un vector doble o 2 de valor, en lugar de las entradas x de Nate de alguna colección X).
Si ignoramos el sesgo, muchas entradas pueden terminar siendo representadas por muchos de los mismos pesos (es decir, los pesos aprendidos ocurren principalmente cerca del origen (0,0). El modelo se limitaría a cantidades más pobres de buenos pesos, en lugar de los muchos más pesos buenos, podría aprender mejor con sesgo (donde los pesos mal aprendidos conducen a conjeturas más pobres o una disminución en el poder de adivinación de la red neuronal)
Por lo tanto, es óptimo que el modelo aprenda tanto cerca del origen, como también, en tantos lugares como sea posible dentro del límite de umbral / decisión. Con el sesgo podemos habilitar grados de libertad cerca del origen, pero no limitado a la región inmediata del origen.
fuente
Ampliando la explicación de @zfy ... La ecuación para una entrada, una neurona, una salida debería verse:
donde x es el valor del nodo de entrada y 1 es el valor del nodo de sesgo; y puede ser directamente su salida o pasar a una función, a menudo una función sigmoidea. También tenga en cuenta que el sesgo podría ser constante, pero para simplificar todo siempre elegimos 1 (y probablemente eso es tan común que @zfy lo hizo sin mostrarlo y explicarlo).
Su red está tratando de aprender los coeficientes ayb para adaptarse a sus datos. Entonces puede ver por qué agregar el elemento le
b * 1
permite ajustarse mejor a más datos: ahora puede cambiar tanto la pendiente como la intercepción.Si tiene más de una entrada, su ecuación se verá así:
Tenga en cuenta que la ecuación todavía describe una red de una neurona, una salida; Si tiene más neuronas, simplemente agregue una dimensión a la matriz de coeficientes, para multiplexar las entradas a todos los nodos y resumir la contribución de cada nodo.
Que puedes escribir en formato vectorizado como
es decir, al poner los coeficientes en una matriz y (entradas + sesgo) en otra, tiene la solución deseada como producto de punto de los dos vectores (debe transponer X para que la forma sea correcta, escribí XT como una 'X transpuesta')
Entonces, al final, también puede ver su sesgo, ya que es solo una entrada más para representar la parte de la salida que en realidad es independiente de su entrada.
fuente
Aparte de las respuestas mencionadas ... Me gustaría agregar algunos otros puntos.
El sesgo actúa como nuestro ancla. Es una forma de tener algún tipo de línea de base donde no vamos por debajo de eso. En términos de una gráfica, piense que y = mx + b es como una intersección en y de esta función.
output = input multiplicado por el valor de peso y agregado un valor de polarización y luego aplica una función de activación.
fuente
Para pensar de manera simple, si tienes y = w1 * x donde y es tu salida y w1 es el peso, imagina una condición donde x = 0 entonces y = w1 * x es igual a 0 , si quieres actualizar tu peso tienes para calcular cuánto cambio por delw = target-y donde target es su salida objetivo, en este caso, 'delw' no cambiará ya que y se calcula como 0. Entonces, suponga que si puede agregar algún valor adicional, ayudará y = w1 * x + w0 * 1 , donde sesgo = 1 y peso se pueden ajustar para obtener un sesgo correcto. Considere el siguiente ejemplo.
En términos de línea, la intersección en pendiente es una forma específica de ecuaciones lineales.
y = mx + b
mira la imagen
imagen
aquí b es (0,2)
si desea aumentarlo a (0,3), ¿cómo lo hará cambiando el valor de b, que será su sesgo?
fuente
Para todos los libros de ML que estudié, la W siempre se define como el índice de conectividad entre dos neuronas, lo que significa que cuanto mayor sea la conectividad entre dos neuronas, más fuertes se transmitirán las señales de la neurona activa a la neurona objetivo o Y = w * X como resultado para mantener el carácter biológico de las neuronas, necesitamos mantener el 1> = W> = -1, pero en la regresión real, el W terminará con | W | > = 1, lo que contradice el funcionamiento de las neuronas, por lo que propongo W = cos (theta), mientras que 1> = | cos (theta) | , e Y = a * X = W * X + b mientras que a = b + W = b + cos (theta), b es un número entero
fuente
En redes neuronales:
En ausencia de sesgo, la neurona puede no activarse considerando solo la suma ponderada de la capa de entrada. Si la neurona no está activada, la información de esta neurona no se pasa a través del resto de la red neuronal.
El valor del sesgo se puede aprender.
Efectivamente, sesgo = - umbral. Puedes pensar en el sesgo como cuán fácil es hacer que la neurona produzca un 1; con un sesgo realmente grande, es muy fácil para la neurona emitir un 1, pero si el sesgo es muy negativo, entonces es difícil.
en resumen: el sesgo ayuda a controlar el valor al que se activará la función de activación.
Sigue este video para más detalles
Pocos enlaces más útiles:
geeksforgeeks
hacia la ciencia
fuente
a
entrenarse el sesgo cuando el gradientea
es siempre constante?El término sesgo se usa para ajustar la matriz de salida final como lo hace la intersección en y. Por ejemplo, en la ecuación clásica, y = mx + c, si c = 0, entonces la línea siempre pasará por 0. Agregar el término de sesgo proporciona más flexibilidad y una mejor generalización a nuestro modelo de red neuronal.
fuente
En general, en el aprendizaje automático tenemos esta fórmula de base Bias-Variance Tradeoff Porque en NN tenemos un problema de sobreajuste (problema de generalización del modelo donde pequeños cambios en los datos generan grandes cambios en el resultado del modelo) y debido a eso tenemos una gran variación, introduciendo un pequeño sesgo podría ayudar mucho. Teniendo en cuenta la fórmula anterior, Bias-Variance Tradeoff , donde el sesgo es cuadrado, por lo tanto, introducir un sesgo pequeño podría conducir a reducir mucho la varianza. Entonces, introduce prejuicios cuando tengas una gran variación y un peligro de sobreajuste.
fuente
El sesgo ayuda a obtener una mejor ecuación.
Imagine la entrada y la salida como una función
y = ax + b
y necesita colocar la línea correcta entre la entrada (x) y la salida (y) para minimizar el error global entre cada punto y la línea, si mantiene la ecuación de esta maneray = ax
, tendrá solo un parámetro para la adaptación, incluso si encuentra la mejora
minimización del error global, estará un poco lejos del valor deseadoPuede decir que el sesgo hace que la ecuación sea más flexible para adaptarse a los mejores valores.
fuente