Red de conocimiento informático - Conocimiento del nombre de dominio - Introducción a las redes neuronales recurrentes (RNN)

Introducción a las redes neuronales recurrentes (RNN)

RNN es la abreviatura de Red neuronal recursiva y Red neuronal recurrente. Aunque estos dos tipos de redes neuronales son inseparables, este artículo se centrará en el segundo modelo de red neuronal: la red neuronal recurrente.

Una red neuronal recurrente es una estructura que se repite en el tiempo. Se utiliza ampliamente en campos como el procesamiento del lenguaje natural (PNL), el habla y las imágenes. La mayor diferencia entre las redes RNN y otras redes es que RNN puede lograr una determinada "función de memoria" y es la mejor opción para el análisis de series de tiempo. Así como los humanos pueden comprender mejor el mundo a través de la memoria, RNN implementa un mecanismo similar al cerebro humano, que retiene cierta memoria de la información procesada, a diferencia de otro tipo de redes neuronales que no retienen la información procesada.

El principio de la red neuronal recurrente no es muy complicado. Esta sección analiza principalmente la estructura y función de RNN a partir del principio. No implica la derivación matemática ni la prueba de RNN. Parámetros de entrada, salida y estado de la red. En la figura se muestra una red neuronal RNN típica:

Como se puede ver en la figura anterior, una red RNN típica contiene una entrada x, una salida h y una unidad de red neuronal A. A diferencia de las redes neuronales ordinarias, la unidad de red neuronal A de la red RNN no solo está conectada a la entrada y la salida, sino que también tiene un bucle en sí. Esta estructura de red revela la esencia de RNN: la información del estado de la red en un momento actuará sobre el estado de la red en el momento siguiente. Si la estructura de red anterior no es lo suficientemente clara, la red RNN se puede extender a las siguientes series de tiempo:

El lado derecho del signo igual es la extensión RNN. Dado que los RNN se utilizan generalmente para procesar información secuencial, la siguiente explicación se explicará utilizando series de tiempo como ejemplo. La entrada inicial de la red RNN equivalente en el lado derecho del signo igual es x0 y la salida es h0. Esto significa que la entrada de la red RNN en el momento 0 es x0 y la salida es h0. Las neuronas en el momento 0 se guardan en A. .

El proceso anterior se puede ilustrar con un ejemplo sencillo: supongamos que tenemos una frase "Quiero jugar al baloncesto". Dado que el lenguaje natural en sí es una serie de tiempo, el lenguaje anterior tendrá ciertas diferencias con el posterior. tipo de conexión. Por ejemplo, en la oración anterior, el verbo "hit" significa que debe haber un sustantivo detrás de él, y es posible que sea necesario determinar qué es este sustantivo mediante un contexto adicional, por lo que una oración también se puede usar como entrada de un RNN. . Volviendo a la oración anterior, las cinco palabras de esta oración aparecen en orden cronológico. Ahora codificamos estas cinco palabras y las ingresamos en el RNN en orden. La palabra "I" que aparece primero en la secuencia de tiempo se utiliza como entrada x0, tiene salida h0 y cambia el estado de la neurona inicial A. Tomando la segunda palabra "querer" en la secuencia de tiempo como entrada x1, la salida del RNN y el estado de la neurona no solo dependen de x1, sino que también dependen del estado de la neurona en el momento anterior, o de la entrada x0 en el momento anterior. Y así sucesivamente hasta que se ingrese la última palabra "baloncesto" en la oración anterior.

A continuación, debemos prestar atención a la estructura neuronal de RNN:

La figura anterior sigue siendo el modelo de expansión temporal de la red neuronal RNN. El modelo de red en el medio t. momento revela la estructura del RNN. Como puede verse, la estructura interna de la red RNN original es muy simple. El estado de la neurona A en el momento t es solo el valor de la función tangente hiperbólica entre el estado de la neurona en el momento t-1 y la entrada de la red en el momento t. Este valor no es solo la salida de la red en ese momento. tiempo, pero también el valor de la red en el momento t. El estado en este momento se pasa al estado de la red en el momento siguiente. Este proceso se denomina propagación directa de RNN.

Nota: La forma analítica de la función tangente hiperbólica es la siguiente:

El proceso de derivación de la función tangente hiperbólica es el siguiente:

La imagen de la función tangente hiperbólica es la siguiente :

Esto lleva a una pregunta: ¿Por qué la función de activación de la red RNN debería ser la función tangente hiperbólica en lugar de sigmod? (Además de la tangente hiperbólica, la función RELU también se usa mucho como función de activación de RNN). La razón es que la red RNN involucra una gran cantidad de derivadas de series de tiempo al resolver. El uso de la función sigmod puede ser fácil. hace que el gradiente desaparezca y la forma derivada de sigmod es relativamente compleja. De hecho, incluso si se utiliza la función tangente hiperbólica, la red RNN tradicional todavía tiene el problema de la desaparición del gradiente y no puede "memorizar" información de secuencia a largo plazo. Este problema no se resolvió hasta que se introdujo el estado de la unidad en LSTM.

Esta sección presentará la derivación matemática de RNN, que es un modelo temporal y, por lo tanto, puede no resolverse de la misma manera que una red neuronal típica. Primero, es necesario presentar el diagrama estructural completo de RNN. La sección anterior proporcionó el diagrama de estructura de RNN, omitiendo muchos parámetros internos y brindándolo solo como modelo conceptual.

La figura anterior muestra la topología completa de la red RNN, desde la cual podemos ver los parámetros en la red RNN. Aquí, solo analizamos el comportamiento y la derivación matemática de la red en el momento t. La red recibe la entrada xt en el momento t. El estado de la neurona st de la red en este momento se expresa mediante la siguiente fórmula:

El estado st de la red en el momento t no solo debe ingresarse al Estado de la red en el próximo momento t 1. También sirve como salida de la red en ese momento. Por supuesto, st no se puede generar directamente. Debe multiplicarse por un coeficiente V antes de la salida y, para facilitar la retropropagación del error, la salida generalmente se normaliza, es decir, la salida se maximiza suavemente. Por lo tanto, la salida de la red en el momento t se expresa de la siguiente forma:

Para facilitar la expresión, el autor ha realizado las siguientes transformaciones a las dos fórmulas anteriores:

Lo anterior son las matemáticas de la expresión de la red RNN, a continuación debemos resolver el modelo. Antes de discutir la solución específica, primero debemos aclarar dos preguntas: ¿Cuál es la función objetivo de optimización? ¿Cuál es la cantidad a optimizar?

Solo cuando se aclaren estas dos cuestiones se podrá derivar y resolver específicamente el modelo. Con respecto a la primera pregunta, elegí la función de pérdida del modelo como objetivo de optimización. Con respecto a la segunda pregunta, no es difícil encontrarla en el diagrama de estructura de RNN: siempre que se cumplan los tres parámetros U, V y W; Se obtienen el modelo, el estado del modelo puede ser Totalmente seguro. Por lo tanto, las variables de optimización de este problema de optimización son estos tres parámetros de RNN. Por cierto, los parámetros U, V y W del modelo RNN están habilitados globalmente, lo que significa que los parámetros del modelo son los mismos en diferentes momentos. Esta característica hace que el RNN esté un poco menos parametrizado.

La función de pérdida de RNN es la entropía cruzada, que es una de las funciones de pérdida más utilizadas en el aprendizaje automático. Su expresión habitual es la siguiente:

La fórmula anterior es el escalar. de la forma de entropía cruzada, donde y_i es el valor verdadero del marcador y y_i* es el valor predicho dado por el modelo. El signo acumulativo se debe a que la salida del modelo suele ser un vector multidimensional y solo se pueden sumar pérdidas de n dimensiones para obtener el valor de pérdida real. La entropía cruzada necesita realizar algunos cambios cuando se aplica a RNN: en primer lugar, la salida de RNN tiene la forma de un vector y no es necesario sumar todas las dimensiones. El valor de pérdida se puede representar directamente mediante un vector; el modelo RNN trata problemas de secuencia, el modelo La pérdida no puede ser solo un momento de pérdida, sino que debe incluir todos los N momentos de pérdida.

Por lo tanto, la función de pérdida del modelo RNN en el tiempo t se escribe de la siguiente manera:

La función de pérdida (pérdida global) de todos los N momentos se expresa de la siguiente manera:

Es necesario prestar atención a: yt es el valor verdadero de la etiqueta de la entrada en el momento t, ot es el valor predicho del modelo y N representa todos los N momentos. A continuación, Pérdida se abrevia como L para facilitar la escritura. Antes de finalizar esta sección, agregue una fórmula final para derivar la función softmax:

Dado que el modelo RNN está relacionado con series de tiempo, el algoritmo BP (backpropagation) no se puede usar directamente. Para el caso especial del problema RNN, propusimos el algoritmo BPTT, el algoritmo de "propagación hacia atrás en el tiempo". La base de este método sigue siendo el algoritmo de cadena tradicional, y la derivación específica comienza en el siguiente paso. Aunque la pérdida global de RNN está relacionada con todos los N momentos, en aras de la simplicidad, los autores solo se centran en la función de pérdida en el tiempo t en la derivación.

Primero encuentre el diferencial de la función de pérdida relacionada con o_t* en el momento t:

Encuentre el diferencial de la función de pérdida relacionada con el parámetro V:

Por lo tanto , La pérdida global relacionada con el parámetro V es:

Encuentre el diferencial de la función de pérdida relacionada con st* en el momento t:

Encuentre la función de pérdida relacionada con s_t-1* en tiempo t Diferencial de:

Encuentre el diferencial parcial de la función de pérdida relacionada con el parámetro U en el tiempo t. Nota: Dado que este es un modelo de serie de tiempo, el diferencial de la función de pérdida con respecto a U en el momento t está relacionado con el tiempo anterior t-1. El cálculo se puede limitar a los n momentos anteriores, pero es necesario incluirlos. todo el tiempo anterior t-1 Derivación:

Por lo tanto, el diferencial parcial de la pérdida global con respecto a U es:

Encontrar el diferencial parcial de la función de pérdida en el tiempo t. con respecto al parámetro W es el mismo que el anterior.

Por tanto, el diferencial de la función de pérdida global relacionada con el parámetro W es:

En este punto se ha obtenido el diferencial de la función de pérdida global relacionada con los tres parámetros principales. Su estructura organizativa es la siguiente:

A continuación, simplificaremos aún más la expresión diferencial anterior. La principal dirección de simplificación es el diferencial de la función de pérdida en el tiempo t con respecto a ot y el diferencial con respecto a. calle*. Se conoce la expresión de la función de pérdida en el instante t, y se obtiene el diferencial con respecto a ot:

De aquí se obtiene la función softmax:

Por lo tanto:

Y porque:

Y:

A través de la derivación matemática anterior, podemos obtener la fórmula del gradiente de la pérdida global relacionada con los tres parámetros U, V y W:

Debido al diferencial Los parámetros U y W en la fórmula no solo están relacionados con el tiempo t, sino también con todos los momentos t-1 anteriores, por lo que la fórmula no se puede escribir directamente. Sin embargo, la fórmula de recurrencia diferencial de la función de pérdida en el tiempo t con respecto a s_t-1 se proporcionó anteriormente. Creemos que resolver esta ecuación es muy simple, por lo que no entraremos en detalles aquí.

Lo anterior es la derivación matemática del algoritmo BPTT. De los resultados finales, podemos ver que los resultados diferenciales parciales de estas tres fórmulas son muy simples y se pueden incorporar directamente al cálculo durante el proceso de optimización específico. Para este tipo de problema de optimización, el método más utilizado es el descenso de gradiente. Para el problema RNN involucrado en este artículo, se puede construir la fórmula de actualización de gradiente de los tres parámetros:

Con base en la fórmula de actualización de gradiente anterior, los tres parámetros se pueden resolver iterativamente hasta que los valores de tres parámetros convergen.

Este fue mi primer intento de derivar el modelo matemático de RNN y encontré muchos errores durante el proceso de derivación.

Estoy muy agradecido con algunas informaciones públicas y blogs en Internet, que me han brindado mucha ayuda y orientación. A continuación, intentaré implementar un modelo RNN de una sola capa oculta para implementar un modelo de predicción semántica.