La red neuronal artificial manuscrita más fácil de entender de la historia (2) algoritmo de retropropagación

En el primer artículo, presentamos los conceptos básicos de las redes neuronales, incluidas las neuronas y las redes neuronales, y comprendimos profundamente que la esencia de las redes neuronales multicapa es la multiplicación de matrices . En este artículo, nuestro enfoque estará en el famoso algoritmo de retropropagación .

Dirección anterior: La red neuronal artificial manuscrita más fácil de entender de la historia - (1)_Blog de red neuronal convolucional-Blog CSDN_Red neuronal manuscrita

1. Error: la brecha entre el ideal y la realidad.

Cómo entender el error, démosle un ejemplo simple, como se muestra en la figura a continuación, A lanzó una pelota de fútbol con navegación a B, según el cálculo teórico, la posición objetivo de esta pelota de fútbol es un almacén, y las coordenadas están marcadas como A(X1,Y1 ) , pero al final el balón golpeó una casa privada B(X2,Y2) cerca del almacén , es decir, el balón se perdió, llamamos Δδ = B - A , es decir, la desviación entre el Las coordenadas reales y las coordenadas calculadas se denominan error, entonces: Valor de error = valor real - valor teórico .

La imagen proviene de Internet.

Entonces, la próxima vez que lances una pelota de fútbol, ​​no puedes lanzarla así, de lo contrario será una pérdida de dinero. Entonces, ¿qué se debe hacer?

La respuesta es: adopte métodos de navegación avanzados y corrija la fórmula de cálculo de la teoría del fútbol para reducir el error y que el próximo tiro sea más preciso.

Para las redes neuronales, podemos hacer consideraciones similares.

Por ejemplo, consideramos un caso simple, es decir, el peso G de un bloque de hierro cuboide, G depende del volumen V y la densidad C del bloque de hierro.

Entonces hay una relación tan simple:

                                G = CXV

Supongamos que tenemos un bloque de hierro con un volumen V de 1cm³, entonces su valor teórico G debería ser 7.860 g/cm³ * 1cm³ = 7.860g

Pero el peso que medimos con una báscula electrónica precisa es de 7.870 g, lo que muestra algo, muestra que la densidad del bloque de hierro no es igual a 7.860 g/cm³.

En este momento, el error de peso:

                Δ = 7,870 - 7,860 = 0,010

¿Cómo hacer que el valor calculado sea más preciso? Ajustar densidad C

Aumentamos C en 0.005, esta vez el error de peso:

                Δ = 7,870 - 7,865 = 0,005

Vemos que el error se reduce.

El núcleo aquí es:

Calcule el error a través del cálculo directo y luego ajuste los parámetros con el objetivo de reducir el error .


2. Propagación hacia atrás: dónde ir y venir

Del ejemplo del bloque de hierro anterior, entendemos que el error se propagará , es decir, el error de la densidad provocará el error del peso ΔG.

Como se muestra en la figura a continuación, el error de un tornillo de automóvil es de 5 cm, luego este error definitivamente se transmitirá a las cosas posteriores que dependen de él, como las piezas de automóviles, luego este error eventualmente se transmitirá al automóvil, como para cómo transmitir y la cantidad de transmisión, entonces depende de las condiciones dependen.

Pero generalmente no hacemos esto en el diseño. Primero diseñamos el todo y luego las partes. Este proceso de diseño es opuesto al proceso de fabricación y ensamblaje.

Si las partes del automóvil se consideran la entrada y el automóvil completo se considera la salida , entonces el error puede transmitirse de las partes al automóvil completo, lo que se ve desde la perspectiva de la fabricación y el ensamblaje. Pero desde el punto de vista del diseño, el error general del automóvil también debe ser causado por el error de las partes del automóvil, por lo que el error de las partes se puede calcular hacia atrás a partir del error general, que es un proceso inverso.

Entonces, la retropropagación aquí se refiere a la retropropagación del error , es decir, desde el error de salida, hacia atrás o calcula el error de entrada, por lo que se llama retropropagación del error.

Entonces, el núcleo de la retropropagación es:

El error de entrada se extrapola del error de salida y este proceso continúa aguas arriba.

        La imagen proviene de Internet. 

La imagen proviene de Internet. 


3. Retropropagación de neuronas

Para facilitar la comprensión, veamos primero la retropropagación de una neurona. Como se muestra en la siguiente figura, es una neurona. Sabemos que su error de salida es Δo, entonces, ¿cómo entender la retropropagación de una neurona?

Muy sencillo, recuerda que el error de la salida proviene del error de la entrada.

Lo sabemos por el artículo anterior:

 La idea básica de una neurona es: todas las señales de entrada a una neurona se superponen al mismo tiempo de acuerdo con un cierto peso, y luego, cuando la señal de suma superpuesta supera un cierto umbral, se activará la salida de la neurona.

Describe una neurona artificial con la fórmula:

salida = f(x1*w1+x2*w2+x3*w3+......+xn*wn+b)

1.salida es la salida de la neurona;

2.x1——xn es la entrada n de la neurona;

3.w1——wn es el peso de la neurona correspondiente a n entradas;

4.b es el desplazamiento afectado por el mundo exterior;

5.f es la función de activación, que es una función que puede controlar la salida;

Por lo tanto, el error de salida Δo se puede ver a partir de la fórmula de x1-xn Dado que el error de salida proviene de n errores de entrada, ¿cuánto es cada error de entrada? ¿Contribuyen igualmente al error de salida?

La respuesta obviamente no es promedio.

Podemos ver en la fórmula que cada entrada tiene un coeficiente w1-wn. Para la misma entrada x1, obviamente, cuanto mayor sea el coeficiente w1, mayor será la contribución al error. Porque, debido a que el coeficiente es grande, el error será amplificado aún más.

Por lo tanto, el error de entrada se distribuye de acuerdo con el coeficiente. Cuanto mayor sea el coeficiente, mayor será la contribución de la entrada al error, por lo que este coeficiente w1-wn se puede llamar el peso del error, entonces hay una fórmula de error:

                Δsalida = f(Δ* w1 + Δ * w2 + Δ * wn + Δb)

Entonces, en el caso de la retropropagación, la contribución de error de cada entrada a la neurona debería ser:

                Δxi = F((wi / (w1 + w2 + wn)) * (Δsalida - Δb))

La imagen proviene de Internet.


4. Propagación hacia atrás de la red neuronal

Primero observe una red neuronal simple y luego generalicemos a redes neuronales complejas.

Como se muestra en la figura a continuación, es una red neuronal de dos capas (capa 1 y capa 2) con dos entradas y dos salidas.

Según nuestro análisis anterior: el error del nodo de salida proviene del error de entrada, y el error se distribuye según el peso.

Suponemos que la salida esperada de los dos nodos es t1 y t2, y o1 y o2 son sus valores de salida reales, entonces

El error del nodo de salida de la capa 2 se puede obtener:

                                                e1 = t1 - o1

                                                e2 = t2 - o2

Se puede ver en la figura que tanto e1 como e2 tienen dos fuentes parciales, e1 proviene de W11 aportado por el primer nodo en la capa 1 y W21 aportado por el segundo nodo; e2 proviene del primer nodo en la capa 1 La contribución W12 parte del nodo y la parte W22 del segundo nodo.

De acuerdo con el análisis anterior, e1 se puede desmontar como:

e1 = W11 / (W11 + W21) * e1 + W21 / (W11 + W21) * e1

del mismo modo

e2 = W12 / (W12 + W22) * e2 + W22 / (W12 + W22) * e2

La parte roja es el punto clave, que refleja la contribución de los dos nodos de la capa 1 al error de la capa 2. De esta forma, si conocemos el valor del error de salida y el valor del peso del nodo anterior al nodo de salida, puede calcular el nodo anterior El error de entrada del nodo, por supuesto, también puede calcular el error de salida de cada nodo en la capa anterior:

El error de salida del nodo 1 en la capa 1 se registra como E1, que es igual a:

                         E1 =  W11 / (W11 + W21) * e1 +  W12 / (W12 + W22) * e2

El error de salida del nodo 2 de la capa 1 se registra como E2, que es igual a:

                        E2 =  W21 / (W11 + W21) * e1 +  W22 / (W12 + W22) * e2

Si se calculan todos los errores de salida de la capa 1, entonces si hay una capa 0 delante de la capa 1, entonces el error de salida de la capa 0 se puede seguir calculando de la misma manera, y así sucesivamente .

entonces:

Calcule el error hacia adelante a partir del error de salida de la capa final. Cuando se conocen los pesos de conexión entre todas las capas, se pueden calcular los errores de todas las capas anteriores. Esto se puede entender simplemente como la propagación hacia atrás del error, y el error es calculado de atrás hacia adelante . .

Si observamos cuidadosamente las dos fórmulas anteriores E1 y E2, encontraremos que se puede escribir de la siguiente manera:

 En otras palabras, la propagación hacia atrás del error se puede expresar mediante la multiplicación de matrices, que es un punto importante.

Es decir, el error de salida de la capa anterior es igual a una matriz de pesos multiplicada por el error de salida de la siguiente capa.

Por supuesto, también podemos actualizar los pesos según el error.

La imagen proviene de Internet. 


Para la red y la red neuronal de múltiples capas, se puede calcular de la misma manera , pero la cantidad de cálculo es un poco mayor. Sin embargo, el cálculo de su retropropagación se puede realizar con una matriz, y basta con multiplicar la matriz una vez más.

La imagen proviene de Internet.

 En resumen, en conexión con lo aprendido en el artículo anterior, podemos saber que la multiplicación de matrices puede representar tanto redes neuronales como retropropagación de errores, y ambas matrices están relacionadas con pesos, pero esta relación es Diferente , debido al espacio limitado. , la relación entre los dos y cómo actualizar el peso a través del error, lo detallaremos en el próximo artículo.

 Dirección de descarga del código fuente del algoritmo de retropropagación: código  fuente y datos de red neuronal escritos a mano de Python.rar_red neuronal artificial escrita a mano-Python Documentation Resources-CSDN Download

Supongo que te gusta

Origin blog.csdn.net/xipengbozai/article/details/124197499
Recomendado
Clasificación