Papel del Sesgo en las Redes Neuronales


Soy consciente del Descenso del Gradiente y del Teorema de la propagación posterior. Lo que no entiendo es: ¿Cuándo es importante usar un sesgo y cómo lo usas?

Por ejemplo, cuando mapeo la función AND, 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.

Author: Salvador Dali, 2010-03-20

16 answers

Creo que los sesgos son casi siempre útiles. En efecto, un valor de sesgo le permite cambiar la función de activación a la izquierda o a la derecha, lo que puede ser crítico para el aprendizaje exitoso.

Podría ayudar ver un ejemplo simple. Considere esta red de 1 entrada, 1 salida que no tiene sesgo:

red simple

La salida de la red se calcula multiplicando la entrada (x) por el peso (w0) y pasar el resultado a través de algún tipo de activación función (por ejemplo, una función sigmoide.)

Aquí está la función que esta red calcula, para varios valores de w0:

salida de red, con diferentes pesos w0

Cambiar el peso w0 esencialmente cambia la "pendiente" del sigmoide. Eso es útil, pero lo que si desea que la red de salida 0 cuando x es 2? Simplemente cambiar la pendiente del sigmoide no funcionará { desea poder cambiar toda la curva a la derecha.

Eso es exactamente lo que el el sesgo te permite hacerlo. Si añadimos un sesgo a esa red, así:

red simple con un sesgo

...entonces la salida de la red se convierte en sig(w0*x + w1*1.0). Así es como se ve la salida de la red para varios valores de w1:

salida de red, con diferentes pesos w1

Con un peso de -5 para w1 desplaza la curva hacia la derecha, lo que nos permite tener una red que produce 0 cuando x es 2.

 1034
Author: Nate Kohl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-22 00:49:22

Sólo para agregar mis dos centavos.

Una forma más simple de entender lo que es el sesgo: es de alguna manera 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 ajuste más pobre.

 244
Author: zfy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-10 00:21:26

Dos tipos diferentes de parámetros pueden se ajustará durante el entrenamiento de un ANN, los pesos y el valor en el funciones de activación. Esto es práctico y sería más fácil si solo uno de los parámetros debe ser ajustar. Para hacer frente a este problema se inventa la neurona sesgada. Sesgo neurona se encuentra en una capa, está conectado a todas las neuronas de la siguiente capa, pero ninguno en la capa anterior y siempre emite 1. Desde el sesgo neurona emite 1 el pesos, conectados a la sesgo neurona, se añaden directamente a la suma combinada de las otras ponderaciones (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á 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 sesgo sin un valor cambiante le permite controlar el comportamiento de estrato.

Además, el sesgo le permite usar una sola red neuronal para representar casos similares. Considere la función AND booleana representada por la siguiente red neuronal:

ANN http://www.aihorizon.com/images/essays/perceptron.gif

  • w0 corresponde a b.
  • w1 corresponde a x1.
  • w2 corresponde a x2.

Una sola perceptron se puede utilizar para representan muchas funciones booleanas.

Por ejemplo, si asumimos valores booleanos de 1 (verdadero) y -1 (falso) , luego uno manera de utilizar un perceptrón de dos entradas para implementar la función Y es establecer los pesos w0 = -3, y w1 = w2=.5. Este perceptrón se puede hacer para representar la función OR en su lugar por alterando el umbral a w0= -.3. En hecho, Y y O puede ser visto como casos especiales de funciones m-de-n: es decir, funciones donde al menos m de las n entradas al perceptrón deben ser verdadero. La función OR corresponde a m = 1 y la función Y a m = n. Cualquier función m-of-n es fácilmente representado usando un perceptrón por establecer todos los pesos de entrada en el mismo valor (por ejemplo, 0.5) y luego establecer el umbral w0 en consecuencia.

Los perceptrones pueden representar todos los funciones booleanas primitivas Y, O, NAND (1 Y), y NOR (1 O). Aprendizaje automático-Tom Mitchell)

El umbral es el sesgo y w0 es el peso asociado con la neurona sesgo/umbral.

 32
Author: Kiril,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-19 21:44:57

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 puede ser pasado a través de una función sigmoide para la normalización y para su uso en múltiples capas ANN 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. Esto podría ser una solución razonable para algunos sistemas, pero en general es demasiado restrictivo.

Usando un sesgo, está agregando efectivamente 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. Usted no pierde ninguna generalidad por esto porque su matriz de peso entrenado no necesita ser sobreyectiva, por lo que todavía puede mapear a todos los valores previamente posibles.

2d ANN:

Para una asignación ANN de dos dimensiones a una dimensión, como en la reproducción de las funciones AND o OR (o XOR), puede piense en una red neuronal como haciendo lo siguiente:

En el plano 2d marque todas las posiciones de los vectores de entrada. Por lo tanto, para los valores booleanos, usted querría marcar (-1,-1), (1,1), (-1,1), (1,-1). Lo que su ANN ahora hace 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, eres libre de ponerlo en cualquier lugar. Por lo tanto, verá que sin sesgo se enfrenta a un problema con la función Y, ya que no se puede poner ambos (1,-1) y (-1,1) al lado negativo. (No se les permite estar en la línea.) El problema es igual para la función OR. Sin embargo, con un sesgo, 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.

 16
Author: Debilski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-19 22:45:06

Cuando se utiliza ANNs, rara vez se conoce el funcionamiento interno de los sistemas que se 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 una asignación lineal), no puede encontrar una solución. Sin embargo, si usted tiene un sesgo es trivial!

En un entorno ideal, un sesgo también podría mapear todos los puntos a la media de los puntos objetivo y dejar las neuronas ocultas modelan las diferencias desde ese punto.

 14
Author: bayer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-21 21:40:17

El sesgo no es un término NN, es un término genérico de álgebra a considerar.

Y = M*X + C (ecuación de línea recta)

Ahora si C(Bias) = 0 entonces, la línea siempre pasará por el origen, es decir, (0,0), y depende de un solo parámetro, es decir, M, 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 para cambiar el gráfico, y por lo tanto capaz de representar situaciones más complejas.

En una regresión logística, el valor esperado del objetivo es transformado por una función de enlace para restringir su valor al intervalo de unidad. De esta manera, las predicciones del modelo se pueden ver como probabilidades de resultado primario como se muestra: Función sigmoide 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 cambia la curva de manera flexible para ayudarnos a mapear el modelo.

 11
Author: Pradi KL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-15 06:13:42

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 usar un sesgo en absoluto. En teoría, de esa manera su red será más independiente de la magnitud de los datos, como en si la imagen es oscura, o brillante y vívida. Y la red va a 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 que tienen sesgos podrían ser críticos. Depende del tipo de datos con los que estés tratando. Si su información es invariante de magnitud - - - si ingresar [1,0,0. 1] debería conducir al mismo resultado que ingresar [100,0,10], podría estar mejor sin un sesgo.

 8
Author: Íhor Mé,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-20 19:55:33

En un par de experimentos en mi tesis de maestría (por ejemplo, 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 no jugar un papel importante.

Esto puede depender en gran medida de la arquitectura de red / conjunto de datos.

 7
Author: Martin Thoma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-01 17:09:42

La modificación de los PESOS neuronales solo sirve para manipular la forma/curvaturade su función de transferencia, y no su equilibrio/cero punto de cruce.

La introducción de las neuronas sesgo le permite cambiar la curva de la función de transferencia horizontalmente (izquierda/derecha) a lo largo del eje de entrada, dejando la forma/curvatura inalterada. Esto permitirá que la red produzca salidas arbitrarias diferentes de los valores predeterminados y, por lo tanto, puede personalizar / cambiar la asignación de entrada a salida para satisfacer sus necesidades particulares.

Vea aquí la explicación gráfica: http://www.heatonresearch.com/wiki/Bias

 7
Author: Oke Uwechue,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-10-08 07:49:24

Ampliando la explicación de @zfy... La ecuación para una entrada, una neurona, una salida debe verse:

y = a * x + b * 1    and out = f(y)

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 sigmoide. También tenga en cuenta que el sesgo podría ser cualquier constante, pero para hacer todo más simple siempre elegimos 1 (y probablemente eso es tan común que @zfy lo hizo sin mostrarlo y explicarlo).

Su red está intentando para aprender los coeficientes a y b para adaptarse a sus datos. Así que puede ver por qué agregar el elemento b * 1 le permite ajustarse mejor a más datos: ahora puede cambiar tanto la pendiente como la intersección.

Si tiene más de una entrada, su ecuación se verá como:

y = a0 * x0 + a1 * x1 + ... + aN * 1

Tenga en cuenta que la ecuación todavía describe una neurona, una red de 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 sumar cada nodo contribución.

Que puede escribir en formato vectorizado como

A = [a0, a1, .., aN] , X = [x0, x1, ..., 1]
Y = A . XT

Es decir, poniendo coeficientes en una matriz y (entradas + sesgo) en otro tiene su solución deseada como el producto escalar de los dos vectores (necesita transponer X para que la forma sea correcta, escribí XT a 'X transpuesto')

Así que al final también puede ver su sesgo como es solo una entrada más para representar la parte de la salida que es realmente independiente de su entrada.

 4
Author: RobMcZag,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-10 06:58:05

En particular, la respuesta de Nate , la respuesta de zfy , y la respuesta de Pradi son geniales.

En términos más simples, los sesgos permiten más y más variaciones de pesos para ser aprendidos/almacenados... ( side-note: a veces dado 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 la adivinación de la red neural potencia)

Por ejemplo, en los modelos de aprendizaje, la hipótesis/conjetura está idealmente 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 de la hipótesis / resultado es el umbral del que hablé anteriormente. Tenga en cuenta que mis ejemplos configuran las entradas X para ser cada x=un vector de valor doble o 2, en lugar de las entradas x de valor único 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 en su mayoría ocurren cerca del origen (0,0). El modelo se limitaría entonces a cantidades más pobres de buenos pesos, en lugar de los muchos muchos más buenos pesos que podría aprender mejor con sesgo. (Donde los pesos mal aprendidos conducen a conjeturas más pobres o a 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, pero también, en tantos lugares como sea posible dentro del umbral / límite de decisión. Con el sesgo podemos habilitar grados de libertad cercanos al origen, pero no limitados a la región inmediata del origen.

 3
Author: Jordan Bennett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-06 11:11:51

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 desea actualizar su peso, debe 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.So, supongamos que si usted puede añadir un valor extra que ayudará y=w1*x+w0*1,donde el sesgo=1 y el peso se pueden ajustar para obtener un sesgo correcto.Considere el siguiente ejemplo.

En términos de pendiente de línea-intercepción es una forma específica de ecuaciones lineales.

y = mx + b

Compruebe la imagen

Image

aquí b es (0,2)

Si desea aumentarlo a (0,3) ¿cómo lo hará cambiando el valor de b que será su sesgo

 2
Author: Yumlembam Rahul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-17 10:12:28

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 serán las señales transmitidas desde la neurona de disparo 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 que contradicen con cómo funcionan las neuronas, como resultado 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 entero

 2
Author: Edward,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-10 20:19:55

Distintas de las respuestas mencionadas..Quisiera añadir algunos otros puntos.

El sesgo actúa como nuestro ancla. Es una forma para nosotros de tener algún tipo de línea de base donde no vamos por debajo de eso. En términos de un gráfico, pensar en como y = mx + b es como una intercepción y de esta función.

Output = input times the weight value and added a valor de sesgo y luego aplicar una función de activación.

 2
Author: Naren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-08 10:51:55

El sesgo decide cuánto ángulo desea que gire su peso.

En el gráfico de 2 dimensiones, el peso y el sesgo nos ayudan a encontrar el límite de decisión de las salidas. Digamos que necesitamos construir Y funcionar, el par entrada(p)-salida(t) debe ser

{p=[0,0], t=0},{p=[1,0], t=0},{p=[0,1], t=0},{p=[1,1], t=1}

introduzca la descripción de la imagen aquí

Ahora necesitamos encontrar el límite de la decisión, el límite de la idea debe ser:

introduzca la descripción de la imagen aquí

¿Ves? 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 a la primera vez. En su mayoría, elegimos el valor W original al azar. Por lo tanto, el primer límite puede ser este: introduzca la descripción de la imagen aquí

Ahora el límite es pareller al eje y.

Queremos rotar el límite, ¿cómo?

Cambiando la W.

Entonces, usamos la función de regla de aprendizaje: W' = W + P: introduzca la descripción de la imagen aquí

W ' = W + P es equivalente a W' = W + bP, mientras que b = 1.

Por lo tanto, cambiando el valor de b(sesgo), puede decidir el ángulo entre W' y W. Eso es "la regla de aprendizaje de ANN".

También se puede leer Neural Network Design por Martin T. Hagan / Howard B. Demuth / Mark H. Beale, capítulo 4 "Perceptron Learning Rule"

 2
Author: Det2sial,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-04 08:12:21

En general, en machine learning tenemos esta fórmula baseEquilibrio Sesgo-Varianza Debido a que en NN tenemos un problema de Sobreajuste (problema de generalización del modelo donde pequeños cambios en los datos conducen a grandes cambios en el resultado del modelo) y debido a eso tenemos una gran varianza, la introducción de un pequeño sesgo podría ayudar mucho. Considerando la fórmula anterior Compensación Sesgo-Varianza , donde el sesgo es cuadrado, por lo tanto la introducción de sesgo pequeño podría conducir a la reducción de la varianza mucho. Tan, introducir sesgo, cuando se tiene gran varianza y peligro de sobreajuste.

 -3
Author: Euler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-14 20:23:59