Notas de estudio básico de la red neuronal (cuatro) método de propagación de retorno de error

Tabla de contenido

Error de propagación hacia atrás

Prefacio:

5.1 Cálculo

5.1.1 Resolver con gráfico de cálculo

5.2 Regla de la cadena

5.2.1 Retropropagación de grafo computacional

5.2.2 ¿Qué es la regla de la cadena?

5.3 Retropropagación

5.3. 1  de nuevo nodo de propagación sumador

5.3.2 Retropropagación de nodos de multiplicación

5.3.3 El ejemplo de Apple

5.4 Implementación de capa simple

5.4.1 Implementación de la capa de multiplicación

5.4.2 lograr la capa sumadora

5.5 Implementación de la capa de función de activación

5.5.2 Capa sigmoidea

5.6.2 Versión por lotes de la capa afín

5.7 La realización del método de retropropagación de errores

5.7.1 Cuadro general del aprendizaje de redes neuronales

5.7.2 La realización de la red neuronal correspondiente al método de retropropagación de error

5.7.3 Método de confirmación de gradiente del error de retropropagación

5.7.4 Aprendizaje mediante el método de retropropagación de errores

5.8 Resumen


Error de retropropagación

Prefacio:

Aunque la diferenciación numérica es simple y fácil de implementar, su desventaja es que lleva tiempo calcularla. En este capítulo, aprenderemos un método que puede calcular de manera eficiente el gradiente de los parámetros de peso: método de retropropagación del error.

Entender correctamente el método de retropropagación del error: uno se basa en una fórmula matemática; el otro se basa en un gráfico computacional (gráfico computacional)

5.1 Cálculo

5.1.1 Resolver con gráfico de cálculo

Los nodos están representados por ○ y ○ es el contenido del cálculo.

También se puede expresar como:

5.2 Regla de la cadena

5.2.1 Retropropagación de grafo computacional

5.2.2 ¿Qué es la regla de la cadena?

Toma funciones compuestas en grandes cantidades como inspiración

z = (x + y) ^ 2

regla:

Si una determinada función está representada por una función compuesta, la derivada de la función compuesta se puede representar por el producto de la derivada de cada función que constituye la función compuesta.

5.2.3 Regla de la cadena y diagrama de cálculo

Intentamos expresar el cálculo de la regla de la cadena de la fórmula (5.4) con un diagrama de cálculo

La fórmula anterior es fácil de obtener:

5.3 Retropropagación

La sección anterior introdujo que la propagación inversa de gráficos computacionales se basa en la regla de la cadena. A continuación se muestran ejemplos de operaciones como + *

5.3.1 Retropropagación del nodo de adición

z = derivada de x + y

Entonces obtén:

5.3.2 Retropropagación de nodos de multiplicación

"Invertir valor" --- es demasiado intuitivo, es la situación en la que xy busca derivada parcial

5.3.3 El ejemplo de Apple

Ejercicio:

responder:

5.4 Implementación de capa simple

El nodo de multiplicación se llama "capa de multiplicación" (MulLayer), y el nodo de suma se llama "capa de suma".

5.4.1 Implementación de la capa de multiplicación

Regala una castaña:

Código de implementación:

Nota: cada capa debe estar separada

La derivada de cada variable se puede obtener mediante backward ()

5.4.2 Implementación de la capa de adición

El avance () de la capa de adición recibe dos parámetros xey, los agrega y los genera.

backward () pasa la derivada (dout) de upstream a downstream intacta

Código de implementación:

5.5 Implementación de la capa de función de activación

Aplicamos la idea de gráficos computacionales a redes neuronales.

Implementamos las capas que componen la red neuronal como clase. Primero implementemos la capa ReLU y la capa Sigmoide de la función de activación.

5.5.1 Capa ReLU

En la implementación de capas de redes neuronales, generalmente se asume que los parámetros de forward () y backward () son matrices NumPy.

Código de implementación:

Código de implementación:

Explicación sobre (x <= 0)

Si el valor de entrada durante la propagación hacia adelante es menor o igual a 0 , el valor de la propagación hacia atrás es 0 . Por lo tanto, la máscara guardada durante la propagación hacia adelante se utilizará en la propagación hacia atrás, y el elemento de la máscara dout pasada desde el flujo ascendente se establecerá en Verdadero.

5.5.2 Capa sigmoidea

Implementa la función sigmoidea. La función sigmoidea está representada por la fórmula (5.9)

Si la expresión del gráfico de cálculo (5.9), como se muestra en la Figura 5-19

Hay nuevos nodos "exp" y "/", respectivamente, y = exp (x), y = 1 / x

A continuación, calcule su propagación de dirección

Dividida en cuatro pasos, la imagen del libro es más intuitiva

paso 1:

En la propagación hacia atrás, el valor ascendente se multiplica por −y 2 (el cuadrado de la salida de la propagación hacia adelante multiplicado por -1) y luego se pasa al flujo descendente.

Paso 2

El nodo "+" pasa el valor ascendente intacto al descendente. El diagrama de cálculo se muestra a continuación.

Paso 3

Paso 4

Para multiplicar, solo necesitas hacer un giro

Finalmente, podemos obtener:

Por lo tanto, encontramos que podemos encontrar el valor de esta fórmula a través de la propagación hacia adelante de xey

La versión simplificada del diagrama de cálculo puede omitir el proceso de cálculo en retropropagación, por lo que la eficiencia del cálculo es mayor.

, Puede ignorar los detalles triviales en la capa Sigmoide, pero solo necesita enfocarse en su entrada y salida

La propagación hacia atrás de la capa sigmoidea que se muestra en la Figura 5-21 se puede calcular basándose únicamente en la salida de la propagación hacia adelante.

5.6 Implementación de la capa Affine / Softmax

En la propagación hacia adelante de la red neuronal, para calcular la suma de las señales ponderadas, se utiliza la operación del producto matricial

La suma ponderada de neuronas puede ser Y = np.dot (X, W) + B

El producto de X y W debe hacer que el número de elementos de la dimensión correspondiente sea el mismo.

Tenga en cuenta que este no es el significado de la multiplicación de matrices de 2 filas

La operación del producto matricial realizada en la propagación directa de la red neuronal se denomina " transformación afín " A en el campo de la geometría . Por lo tanto, el proceso de realizar la transformación afín se implementa aquí como una " capa afín ".

El cálculo de np.dot (X, W) + B se puede representar mediante el diagrama de cálculo que se muestra en la Figura 5-24

Vimos que el flujo entre los nodos en el gráfico de cálculo es un escalar y, en este ejemplo, la propagación entre los nodos es una matriz.

¿Por qué prestar atención a la forma de la matriz? Debido a que la operación del producto matricial requiere que el número de elementos en las dimensiones correspondientes sea consistente, al confirmar la consistencia, se puede derivar la fórmula (5.13).

5.6.2 Versión por lotes de la capa afín

En el caso en que consideremos la propagación hacia adelante de N datos juntos, es decir, la versión por lotes de la capa Affine.

A diferencia de lo que hace ahora, la forma de la entrada X ahora es (N, 2). Luego, como antes, realice cálculos matriciales simples en el gráfico de cálculo.

Debido a la propagación hacia adelante, el desplazamiento se agregará a cada dato (primero, segundo ...). Al retropropagar, el valor de retropropagación de cada dato debe resumirse como el elemento de compensación.

En este ejemplo, suponga que hay 2 datos (N = 2). La retropropagación sesgada sumará las derivadas de estos 2 elementos de datos por elemento

Aquí np.sum () se usa para sumar los elementos en la dirección del eje 0 (el eje con datos como unidad, eje = 0 )

La implementación considera el caso donde los datos de entrada son un tensor (datos de cuatro dimensiones), que es ligeramente diferente al que se presenta aquí.

5.6.3 Softmax-con-pérdida 层

Función Softmax, como cuando se reconocen dígitos escritos a mano:

Debido a que el reconocimiento de dígitos escritos a mano debe clasificarse en 10 categorías, también hay 10 entradas para la capa Softmax.

Nota:

El procesamiento en la red neuronal tiene dos etapas: inferencia y aprendizaje . El razonamiento de la red neuronal generalmente no usa la capa Softmax. En otras palabras, cuando el razonamiento de la red neuronal solo necesita dar una respuesta, porque en este momento solo le interesa la puntuación máxima, no se necesita la capa Softmax. Sin embargo, la fase de aprendizaje de la red neuronal requiere una capa Softmax.

Teniendo en cuenta que también contiene error de entropía cruzada como función de pérdida, se denomina "capa Softmax-con-pérdida". El diagrama de cálculo de la capa Softmax-withLoss (función Softmax y error de entropía cruzada) se muestra en la Figura 5-29.

El diagrama de cálculo de la Figura 5-29 se puede simplificar a la Figura 5-30

La función softmax se registra como la capa Softmax , y el error de entropía cruzada se registra como la capa de Error de entropía cruzada . Se asume aquí que hay 3 tipos de clasificación y se reciben 3 entradas (puntajes) de la capa anterior. Como se muestra en la Figura 5-30, la capa Softmax normaliza la entrada (a1, a2, a3) y las salidas (y1, y2, y3). La capa Cross Entropy Error recibe la salida de Softmax (y1, y2, y3) y la etiqueta del profesor (t1, t2, t3) y genera la pérdida L de estos datos.

La propagación hacia atrás de la capa Softmax ha obtenido un resultado "hermoso" (y1 - t1, y2 - t2, y3 - t3). Dado que (y1, y2, y3) es la salida de la capa Softmax y (t1, t2, t3) son los datos de supervisión, (y1 - t1, y2 - t2, y3 - t3) es la diferencia entre la salida de la capa Softmax y la etiqueta del profesor .

El propósito del aprendizaje de redes neuronales es hacer que la salida de la red neuronal (la salida de Softmax) se acerque a la etiqueta del maestro ajustando los parámetros de peso .

El error entre la salida de la red neuronal y la etiqueta del profesor se debe pasar de manera eficiente a la capa anterior.

Ejemplos específicos:

Por ejemplo, considere la situación en la que la etiqueta del profesor es (0, 1, 0) y la salida de la capa Softmax es (0.3, 0.2, 0.5). Debido a que la probabilidad de resolver correctamente la etiqueta es 0.2 (20%), la red neuronal en este momento no logra realizar el reconocimiento correcto. En este momento, la retropropagación de la capa Softmax transmite un gran error de (0.3, −0.8 , 0.5) . Debido a que este gran error se propagará a la capa anterior, la capa frente a la capa Softmax aprenderá el contenido "grande" de este gran error.

Nota:

Usando la "suma del error cuadrado" como la función de pérdida de la "función de identidad", la retropropagación puede obtener resultados tan "hermosos" como (y1 - t1, y2 - t2, y3 - t3).

Para otro ejemplo, considere la situación en la que la etiqueta del profesor es (0, 1, 0) y la salida de la capa Softmax es (0.01, 0.99, 0) (esta red neuronal la reconoce con bastante precisión). En este momento, la retropropagación de la capa Softmax transmite un pequeño error de (0.01, −0.01, 0). Este pequeño error también se propagará a la capa anterior, porque el error es muy pequeño, por lo que el contenido aprendido en la capa anterior de la capa Softmax también es muy "pequeño".

Implementación de la capa Softmax-with-Loss

Tenga en cuenta que al retropropagar, después de dividir el valor a propagar por el tamaño del lote (batch_size) , lo que se pasa a la capa anterior es el error de un solo dato

5.7 La realización del método de retropropagación de errores

5.7.1 Cuadro general del aprendizaje de redes neuronales

El aprendizaje de la red neuronal se divide en los siguientes 4 pasos

El método de retropropagación de errores aparecerá en el paso 2.

En el experimento de la sección anterior, adoptamos el método de diferenciación numérica, que aunque es simple, lleva demasiado tiempo.

5.7.2 La realización de la red neuronal correspondiente al método de retropropagación de error

Aquí vamos a implementar la red neuronal de 2 capas como TwoLayerNet

Muy similar al capítulo anterior

La principal diferencia radica en el uso de capas aquí . Mediante el uso de capas, el procesamiento de la obtención del resultado del reconocimiento (predecir ()) y el procesamiento del cálculo del gradiente (gradiente ()) se puede completar solo mediante la transferencia entre capas.

Solo intercepta las diferentes partes:

Preste atención al código en negrita en esta implementación, especialmente lo importante para guardar la capa de red neuronal como OrderedDict . OrderedDict es un diccionario ordenado. "Ordered" significa que puede recordar el orden en el que se agregan los elementos al diccionario. La propagación hacia adelante de la red neuronal solo necesita llamar al método forward () de cada capa en el orden de agregar elementos para completar el procesamiento, mientras que la propagación hacia atrás solo necesita llamar a las capas en el orden inverso .

Debido a que la capa Affine y la capa ReLU manejarán correctamente la propagación hacia adelante y la propagación hacia atrás , lo único que se puede hacer aquí es conectar las capas en el orden correcto y luego llamar a las capas en orden (o en orden inverso)

Simplemente agregue las capas necesarias, como ensamblar bloques de Lego para construir una red neuronal más grande.

5.7.3 Método de confirmación de gradiente del error de retropropagación

Dos métodos para encontrar el gradiente:

Uno es un método basado en la diferenciación numérica y el otro es un método para resolver fórmulas matemáticas analíticamente. El último método utiliza el método de retropropagación del error para calcular de manera eficiente el gradiente incluso si hay una gran cantidad de parámetros. Utilice el método de retropropagación del error para encontrar el gradiente.

Al confirmar si la implementación del método de retropropagación de error es correcta , se necesita diferenciación numérica.

La operación de confirmar si el resultado del gradiente obtenido por la diferenciación numérica y el resultado obtenido por el método de retropropagación del error son consistentes (estrictamente hablando, es muy similar) se llama verificación de gradiente.

El método de cálculo del error aquí es encontrar el valor absoluto de la diferencia de los elementos correspondientes en cada parámetro de peso y calcular el valor promedio. Después de ejecutar el código anterior, se generarán los siguientes resultados

Por ejemplo, el error de desplazamiento de la primera capa es 9.7e-13 (0.00000000000097). De esta manera, sabemos que el gradiente obtenido por el método de retropropagación de error es correcto y la implementación del método de retropropagación de error es correcta.

5.7.4 Aprendizaje mediante el método de retropropagación de errores

Echemos un vistazo a la implementación del aprendizaje de redes neuronales utilizando el método de retropropagación de error. En comparación con la implementación anterior, la única diferencia es que el gradiente se obtiene mediante el método de retropropagación del error.

La parte de uso es diferente a la anterior solo en:

5.8 Resumen

Utilizando el gráfico de cálculo, se introduce el método de retropropagación del error en la red neuronal y el procesamiento en la red neuronal se implementa en unidades de capas. Las capas que hemos aprendido son capa ReLU, capa Softmax-with-Loss, capa Affine, capa Softmax Etc., los métodos hacia adelante y hacia atrás se implementan en estas capas Al propagar los datos hacia adelante y hacia atrás, el gradiente del parámetro de peso se puede calcular de manera eficiente. Mediante el uso de capas para modularización, las capas se pueden ensamblar libremente en la red neuronal y usted puede construir fácilmente su red favorita.

 

 

Supongo que te gusta

Origin blog.csdn.net/qq_37457202/article/details/107566659
Recomendado
Clasificación