sigmoide redes oculta neuronales neuronal modelo libro las historia explicacion desde cero capa bias math machine-learning artificial-intelligence neural-network

math - oculta - redes neuronales libro pdf



¿Cómo actualizar el sesgo en la propagación de redes neuronales? (2)

La cantidad que cambie el peso y el sesgo individual será la derivada parcial de su función de costo en relación con cada peso individual y cada sesgo individual.

∂C/∂(index of bias in network)

Dado que su función de costo probablemente no dependa explícitamente de pesos y valores individuales (el costo puede ser igual (salida de red - salida esperada) ^ 2, por ejemplo), necesitará relacionar las derivadas parciales de cada peso y sesgo con algo que saber, es decir, los valores de activación (salidas) de las neuronas. Aquí hay una gran guía para hacer esto:

https://medium.com/@erikhallstrm/backpropagation-from-the-beginning-77356edf427d

Esta guía establece cómo hacer estas cosas con claridad, pero a veces puede faltar una explicación. Me resultó muy útil leer los capítulos 1 y 2 de este libro al leer la guía que se menciona más arriba:

http://neuralnetworksanddeeplearning.com/chap1.html (proporciona antecedentes esenciales para la respuesta a su pregunta)

http://neuralnetworksanddeeplearning.com/chap2.html (responde a su pregunta)

Básicamente, los sesgos se actualizan de la misma manera que se actualizan los pesos: un cambio se determina en función del gradiente de la función de costo en un punto multidimensional.

Piense en el problema que su red intenta resolver como un paisaje de colinas y valles multidimensionales (gradientes). Este paisaje es una representación gráfica de cómo cambia su costo al cambiar los pesos y los sesgos. El objetivo de una red neuronal es alcanzar el punto más bajo en este panorama, encontrando el menor costo y minimizando el error. Si imagina su red como un viajero tratando de llegar al final de estos gradientes (es decir, Gradient Descent), la cantidad por la que cambiará cada peso (y sesgo) está relacionada con la pendiente de la pendiente (gradiente de la función) que el viajero está bajando actualmente. La ubicación exacta del viajero viene dada por un punto de coordenadas multidimensional (peso1, peso2, peso3, ... peso_n), donde el sesgo puede considerarse como otro tipo de peso. Pensando en los pesos / sesgos de una red como las variables para la función de costo de la red, deje en claro que se debe usar ∂C / ∂ (índice de sesgo en la red).

¿Podría alguien explicarme cómo actualizar el sesgo a lo largo de la retropropagación?

¡He leído bastantes libros, pero no puedo encontrar actualizaciones de sesgo!

Entiendo que el sesgo es una entrada adicional de 1 con un peso asociado (para cada neurona). Debe haber una fórmula.

Gracias,

@msw

Más interesante. Gracias, creo que dos puntos buenos son: 1. "La propiedad de" aproximación universal "de perceptrones multicapa con las funciones de activación de capa oculta más utilizadas no se cumple si se omiten los términos de sesgo. Pero Hornik (1993) muestra que un condición suficiente para la propiedad de aproximación universal sin sesgos es que ninguna derivada de la función de activación desaparece en el origen, lo que implica que con las funciones de activación sigmoideas habituales, se puede usar un término de sesgo distinto de cero fijo en lugar de un sesgo entrenable ". 2. Los términos de sesgo se pueden aprender al igual que otros pesos. "Así que agregaré un ''peso constante'' o entrenaré este peso como todos los demás usando el descenso de gradiente.

¿Estoy entendiendo bien?


Siguiendo la notación de Rojas 1996, capítulo 7 , backpropagation calcula derivadas parciales de la función de error E (también conocido como costo, también conocido como pérdida)

∂E/∂w[i,j] = delta[j] * o[i]

donde w[i,j] es el peso de la conexión entre las neuronas i y j , siendo j una capa más alta en la red que i , y o[i] es la salida (activación) de i (en el caso del " capa de entrada ", ese es solo el valor de la característica i en la muestra de capacitación bajo consideración). Cómo determinar el delta se da en cualquier libro de texto y depende de la función de activación, por lo que no lo repetiré aquí.

Estos valores se pueden usar en actualizaciones de peso, por ejemplo

// update rule for vanilla online gradient descent w[i,j] -= gamma * o[i] * delta[j]

donde gamma es la tasa de aprendizaje.

La regla para los pesos de sesgo es muy similar, excepto que no hay entrada de una capa anterior. En cambio, el sesgo es (conceptualmente) causado por la entrada de una neurona con una activación fija de 1. Entonces, la regla de actualización para los pesos de sesgo es

bias[j] -= gamma_bias * 1 * delta[j]

donde el bias[j] es el peso del sesgo en la neurona j , la multiplicación con 1 puede obviamente omitirse, y las gamma_bias pueden establecerse en gamma o en un valor diferente. Si recuerdo correctamente, se prefieren los valores más bajos, aunque no estoy seguro de la justificación teórica de eso.