Papel del sesgo en las redes neuronales

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

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.

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

Puede ser útil mirar un ejemplo simple. Considere esta red de 1 entrada y 1 salida que no tiene ningún sesgo:

red simple

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 :

salida de red, dado diferentes pesos w0

Cambiar el peso w 0 esencialmente cambia la “inclinación” del sigmoide. Eso es útil, pero ¿y si quisieras que la red emitiera 0 cuando x es 2? Simplemente cambiar la inclinación del sigmoide no funcionará realmente; desea poder desplazar toda la curva hacia la derecha .

Eso es exactamente lo que el sesgo le permite hacer. Si agregamos un sesgo a esa red, así:

red simple con un sesgo

… entonces la salida de la red se convierte en sig (w 0 * x + w 1 * 1.0). Aquí se muestra el resultado de la red para varios valores de w 1 :

salida de red, dados diferentes pesos w1

Tener un peso de -5 por w 1 desplaza la curva hacia la derecha, lo que nos permite tener una red que emite 0 cuando x es 2.

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 ajuste más pobre.

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 solo se ajustara uno de los parámetros. Para hacer frente a este problema, se inventa una neurona de sesgo. La neurona de polarización se encuentra en una capa, está conectada a todas las neuronas en la capa siguiente, pero no en la capa anterior y emite siempre 1. Dado que la neurona de polarización emite 1, los pesos, conectados a la neurona de polarización, se agregan directamente a la sum 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á ajustando simultáneamente el peso y el valor, por lo que cualquier cambio en el peso puede neutralizar el cambio al valor que fue útil para una instancia de datos anterior … agregar una neurona de sesgo sin un valor cambiante permite usted para controlar el comportamiento de la capa.

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

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

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

Un único perceptrón se puede usar para representar muchas funciones booleanas.

Por ejemplo, si asumimos valores booleanos de 1 (verdadero) y -1 (falso), entonces una forma de usar 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 O en su lugar alterando el umbral a w0 = -3. De hecho, AND y OR pueden verse como casos especiales de funciones m-of-n: es decir, funciones en las que al menos m de las n entradas al perceptron deben ser verdaderas. La función OR corresponde a m = 1 y la función AND a m = n. Cualquier función m-of-n se representa fácilmente utilizando un perceptrón configurando todas las ponderaciones de entrada al mismo valor (por ejemplo, 0,5) y luego ajustando 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.

Una capa en una neural network sin sesgo no es más que la multiplicación de un vector de entrada con una matriz. (El vector de salida se puede pasar a través de una función sigmoidea para la normalización y para su posterior uso en ANN multicapa, 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.

Al usar 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 pierdes ninguna generalidad debido a que tu matriz de peso entrenada no tiene que ser surjective, 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 pensar en una neural network como lo siguiente:

En el plano 2d, marque todas las posiciones de los vectores de entrada. Entonces, para los valores booleanos, 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. Entonces, verá que sin sesgo se enfrenta a 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.

Cuando utilizas ANN, raras veces conoces los aspectos internos de los sistemas que quieres aprender. Algunas cosas no se pueden aprender sin un sesgo. 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 tiene un sesgo, ¡es trivial!

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

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

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

Ahora bien, si C(Bias) = 0 , 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, puede representar situaciones más complejas.

En una regresión logística, el valor esperado del objective se transforma mediante una función de enlace para restringir su valor al intervalo de la unidad. De esta manera, las predicciones del modelo se pueden ver como probabilidades de resultado primarias como se muestra: Función de Sigmoid 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.

Solo para agregar a todo esto algo que falta mucho y que el rest, muy probablemente, no sabía.

Si trabajas con imágenes, es posible que prefieras no utilizar ningún sesgo. 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 shiny y vívida. Y la red aprenderá a hacer su trabajo mediante el estudio de la relatividad dentro de sus datos. Muchas redes neuronales modernas utilizan esto.

Para otros datos que tienen sesgos podría ser crítico. 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] debe llevar al mismo resultado que si se ingresa [100,0,10], podría estar mejor sin un sesgo.

En un par de experimentos en mi tesis de maestría (por ejemplo, la página 59), encontré que el sesgo podría ser importante para la (s) primera (s) capa (s), pero especialmente en las capas totalmente conectadas al final parece no desempeñar un papel importante.

Esto podría ser altamente dependiente de la architecture de red / conjunto de datos.

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

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

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

Ampliando la explicación @zfy … La ecuación para una entrada, una neurona, una salida debería 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 polarización; y puede ser directamente su salida o pasarse 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 sea tan común que @zfy lo haya hecho sin mostrarlo ni explicarlo).

Su red está tratando de aprender los coeficientes a y b para adaptarse a sus datos. Entonces puede ver por qué agregar el elemento b * 1 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 tendrá el siguiente aspecto:

 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 agrega una dimensión a la matriz de coeficientes, multiplexa las entradas de todos los nodos y sum la contribución de cada nodo.

Que puedes escribir en formato vectorizado como

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

es decir, poner coeficientes en una matriz y (entradas + sesgo) en otra, tienes la solución deseada como el producto de puntos de los dos vectores (necesitas transponer X para que la forma sea correcta, escribí XT una ‘X transpuesta’)

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

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 que se aprendan / almacenen más y más variaciones de pesos … ( nota al margen : a veces se da algún umbral). De todos modos, más variaciones significan que los sesgos añaden 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 neural network)

Por ejemplo, en los modelos de aprendizaje, la hipótesis / suposición está deseablemente limitada por y = 0 oy = 1 dada alguna entrada, en tal vez alguna tarea de clasificación … es decir, algo 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 que las entradas X sean x = un vector doble o 2 valuadas, en lugar de las entradas x valoradas de forma única de Nate de alguna colección X).

Si ignoramos el sesgo, muchos insumos pueden terminar siendo representados por muchos de los mismos pesos (es decir, los pesos aprendidos ocurren mayormente cerca del origen (0,0). El modelo estaría entonces limitado a cantidades más pobres de pesos buenos, en lugar de los muchos más pesos buenos que podría aprender con sesgo (donde los pesos poco bien aprendidos conducen a conjeturas más pobres o una disminución en el poder de adivinación de la neural network)

Entonces, es óptimo que el modelo aprenda tanto cerca del origen, como también, en tantos lugares como sea posible dentro del límite umbral / decisión. Con el sesgo podemos habilitar grados de libertad cerca del origen, pero no limitado a la región inmediata del origen.

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 producción objective, en este caso ‘delw’ no cambiará ya que y se computa como 0.So, supongamos que si puede agregar algún valor extra ayudará y = w1 * x + w0 * 1 , donde el sesgo = 1 y el peso se pueden ajustar para obtener un sesgo correcto. Considere el ejemplo a continuación.

En términos de línea Slope-interceptar es una forma específica de ecuaciones lineales.

y = mx + b

verifica la imagen

imagen

aquí b es (0,2)

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

Para todos los libros ML que estudié, el W siempre se define como el índice de conectividad entre dos neuronas, lo que significa que la mayor conectividad entre dos neuronas, más fuertes se transmitirán las señales de la neurona de disparo a la neurona objective 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 contradice la forma en que 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 número entero

Aparte de las respuestas mencionadas … Me gustaría agregar algunos otros puntos.

Bias actúa como nuestro ancla. Es una forma de que tengamos algún tipo de línea de base donde no vayamos por debajo de eso. En términos de un gráfico, piense que y = mx + b es como una intersección en y de esta función.

output = entrada multiplicado por el valor de peso y agregado un valor de bias y luego aplica una función de activación.

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 de entrada (p) -output (t) debería ser

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

enter image description here

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

enter image description here

¿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 en el primer momento. En su mayoría, elegimos el valor W original al azar. Por lo tanto, el primer límite puede ser este: enter image description here

Ahora el límite es pareller al eje y.

Queremos rotar los límites, ¿cómo?

Al cambiar el W.

Entonces, usamos la función de regla de aprendizaje: W ‘= W + P: enter image description here

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

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 Diseño de redes neuronales por Martin T. Hagan / Howard B. Demuth / Mark H. Beale, capítulo 4 “Regla de aprendizaje del perceptrón”

En general, en machine learning tenemos esta fórmula base Bias-Variance Tradeoff Porque en NN tenemos un problema de sobreajuste (problema de generalización de modelo donde pequeños cambios en los datos llevan grandes cambios en el resultado del modelo) y debido a eso tenemos una gran varianza, introduciendo un un pequeño sesgo podría ayudar mucho. Teniendo en cuenta la fórmula anterior Bias-Variance Tradeoff , donde el sesgo está al cuadrado, por lo tanto, la introducción de un pequeño sesgo podría conducir a la reducción de la varianza en gran medida. Entonces, introduzca un sesgo, cuando tenga una gran varianza y un peligro de sobreajuste.

    Intereting Posts