artificial-intelligence - que - redes neuronales inteligencia artificial
Papel del sesgo en las redes neuronales (17)
Soy consciente de la pendiente descendente y el teorema de la propagación hacia atrás. Lo que no entiendo es: ¿Cuándo es importante usar un sesgo y cómo se 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.
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 sesgada. La neurona de sesgo se encuentra en una capa, está conectada a todas las neuronas en la siguiente capa, pero ninguna en la capa anterior y siempre emite 1. Dado que la neurona de sesgo emite 1, los pesos, conectados a la neurona de sesgo, se agregan directamente a la suma combinada de los otros pesos (ecuación 2.1), igual que el valor t en las funciones de activación. 1
La razón por la que es poco práctico es porque al mismo tiempo se ajusta 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 te permite usar una sola red neuronal para representar casos similares. Considere la función booleana AND 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 .
Se puede usar 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 usar 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 al modificar el umbral a w0 = -.3. De hecho, AND y OR pueden verse como casos especiales de funciones m-de-n: es decir, funciones donde al menos m de las n entradas al perceptrón deben ser verdaderas. La función OR corresponde a m = 1 y la función AND a m = n. Cualquier función m-de-n se representa fácilmente mediante un perceptrón al 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 todas las funciones booleanas primitivas AND, OR, NAND (1 AND) y NOR (1 OR). Aprendizaje de máquina - Tom Mitchell)
El umbral es el sesgo y w0 es el peso asociado con la neurona sesgo / umbral.
Ampliando en la explicación de @zfy ... La ecuación para una entrada, una neurona, una salida debería ser:
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 pasar a una función, a menudo una función sigmoide. También tenga en cuenta que el sesgo podría ser una constante, pero para simplificarlo todo, siempre elegimos 1 (y probablemente eso sea tan común que @zfy lo hizo sin mostrarlo y 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 adaptarse 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á así:
y = a0 * x0 + a1 * x1 + ... + aN * 1
Tenga en cuenta que la ecuación aún 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 contribución de nodo.
Que se puede escribir en formato vectorizado como
A = [a0, a1, .., aN] , X = [x0, x1, ..., 1]
Y = A . XT
es decir, al colocar los coeficientes en una matriz y (entradas + sesgo) en otra, tiene la solución deseada como el producto puntual de los dos vectores (debe transponer X para que la forma sea correcta, escribí XT con 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 es realmente independiente de su entrada.
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 referencia donde no vamos por debajo de eso. En términos de una gráfica, piense que como y = mx + b es como una intersección en y de esta función.
salida = entrada multiplicado por el valor de peso y agregado un valor de sesgo y luego aplica una función de activación.
Bias decide la cantidad de ángulo que quieres que gire tu peso.
En el gráfico bidimensional, el peso y el sesgo nos ayudan a encontrar el límite de decisión de los productos. Digamos que necesitamos construir la función AND, el par de entrada (p) -output (t) debe ser
{p = [0,0], t = 0}, {p = [1,0], t = 0}, {p = [0,1], t = 0}, {p = [1,1] , t = 1}
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. Así, decimos que W decidió la dirección del límite.
Sin embargo, es difícil encontrar la W correcta a la primera. Sobre todo, elegimos el valor original de W al azar. Así, el primer límite puede ser este:
Ahora el límite es pareller a y axis.
Queremos rotar el límite, ¿cómo?
Cambiando la W.
Entonces, usamos la función de la regla de aprendizaje: W ''= W + P:
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 red neuronal por Martin T. Hagan / Howard B. Demuth / Mark H. Beale, capítulo 4 "Regla de aprendizaje de Perceptron"
Creo que los sesgos casi siempre son ú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 fundamental para un aprendizaje exitoso.
Podría ser útil mirar un ejemplo simple. Considere esta red de 1 entrada, 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 sigmoide).
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 ¿qué pasaría si desea que la red produzca 0 cuando x es 2? El simple hecho de cambiar la inclinación del sigmoide no funcionará realmente: desea poder desplazar la curva completa 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). Aquí es cómo 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.
Cuando utiliza las ANN, rara vez conoce los aspectos internos de los sistemas que desea aprender. Algunas cosas no se pueden aprender sin un sesgo. Por ejemplo, observe 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 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.
El sesgo no es un término NN
, es un término de álgebra genérico 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 la gráfica 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 de la unidad. De esta manera, las predicciones de modelos 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 cambia la curva de manera flexible para ayudarnos a mapear el modelo.
En general, en el aprendizaje automático tenemos esta fórmula básica Compromiso entre sesgo y varianza Debido a que en NN tenemos un problema de Overfitting (problema de generalización del modelo donde los pequeños cambios en los datos provocan grandes cambios en el resultado del modelo) y debido a eso tenemos una gran varianza, introduciendo un pequeño sesgo podría ayudar mucho. Teniendo en cuenta la fórmula anterior, Compensación de varianza-desviación , donde el sesgo es cuadrado, por lo tanto, introducir un sesgo pequeño podría llevar a reducir la varianza mucho. Entonces, introduzca el sesgo, cuando hay una gran variación y un peligro de sobrealimentación.
En particular, la answer de Nate, la answer zfy y la answer Pradi son excelentes.
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 le 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á limitada de manera deseable por y = 0 o y = 1 dada alguna entrada, tal vez en alguna tarea de clasificación ... es decir, y = 0 para alguna x = (1,1) y alguna y = 1 para algunos x = (0,1). (La condición en la hipótesis / resultado es el umbral que mencioné anteriormente. Tenga en cuenta que mis ejemplos configuran las entradas X para que sean cada x = un doble o 2 vectores de valor, en lugar de las entradas x de un solo valor de Nate de alguna colección X).
Si ignoramos el sesgo, muchas entradas pueden llegar a ser representadas por un lote de los mismos pesos (es decir, los pesos aprendidos se producen 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 buenos pesos, podría aprender mejor con sesgo (donde los pesos mal aprendidos conducen a suposiciones 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 cerca del origen, pero también, en tantos lugares como sea posible dentro del límite del umbral / decisión. Con el sesgo podemos permitir grados de libertad cercanos al origen, pero no limitados a la región inmediata del origen.
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 no parece jugar un papel importante.
Esto podría ser altamente dependiente de la arquitectura de la red / conjunto de datos.
Este hilo realmente me ayudó a desarrollar mi propio proyecto. Aquí hay algunas ilustraciones adicionales que muestran el resultado de una red neuronal con alimentación directa de 2 capas con y sin unidades de polarización en un problema de regresión de dos variables. Los pesos se inicializan aleatoriamente y se usa 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).
La modificación de los PESOS de la neurona 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 neuronas sesgadas le permite cambiar la curva de la función de transferencia horizontalmente (izquierda / derecha) a lo largo del eje de entrada, mientras que la forma / curvatura no se altera. 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í para la explicación gráfica: http://www.heatonresearch.com/wiki/Bias
Para pensar de manera simple, si tiene y = w1 * x, donde y es su salida y w1 es el peso, imagine una condición donde x = 0 entonces y = w1 * x es igual a 0 , si desea actualizar su peso, para calcular cuánto cambio por delw = target-y donde target es su salida de destino, en este caso, ''delw'' no cambiará, ya que y se calcula como 0. Entonces, supongamos que si puede agregar algún valor adicional ayudará a 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 línea, la pendiente-intersección es una forma específica de ecuaciones lineales.
y = mx + b
mira la 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?
Para todos los libros de LM que estudié, la W siempre se define como el índice de conectividad entre dos neuronas, lo que significa que la conectividad más alta entre dos neuronas, más fuertes serán las señales que se transmitirán desde la neurona de disparo a la neurona objetivo o Y = w * Como resultado de X para mantener el carácter biológico de las neuronas, necesitamos mantener 1> = W> = -1, pero en la regresión real, la W terminará con | W | > = 1 que contradice con el funcionamiento de 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
Sólo para agregar mis dos centavos.
Una forma más sencilla 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 peor.
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 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 brillante y vívida. Y la red aprenderá a hacer su trabajo estudiando la relatividad dentro de sus datos. Muchas redes neuronales modernas utilizan esto.
Para otros datos que tengan sesgos pueden ser críticos. Depende de qué tipo de datos estás tratando. Si su información es invariante en magnitud, si ingresar [1,0,0.1] debería llevar al mismo resultado que si ingresa [100,0,10], es posible que esté mejor sin un sesgo.
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 se puede pasar a través de una función sigmoide para la normalización y para su uso en ANN de múltiples capas posteriormente, 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ás agregando otra dimensión a tu espacio de entrada, que siempre toma el valor uno, por lo que estás evitando un vector de entrada de todos los ceros. No se pierde ninguna generalidad con esto porque su matriz de peso entrenado no necesita ser superyectiva, por lo que aún puede asignarse a todos los valores que antes eran posibles.
2d ANN:
Para una ANN que asigna dos dimensiones a una dimensión, como al reproducir las funciones AND o OR (o XOR), puede pensar que una red neuronal hace 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 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, eres libre de ponerlo en cualquier lugar. Entonces, verá que sin sesgos se enfrenta a un problema con la función AND, ya que no puede colocar tanto (1, -1) como (-1,1) en el 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.