Red de conocimiento informático - Conocimiento sistemático - En pocas palabras, RNN

En pocas palabras, RNN

RNN es una antigua red neuronal para el aprendizaje profundo en el campo del procesamiento del lenguaje natural. Estableció la dirección de desarrollo de la tecnología de redes neuronales en el campo de la PNL y su reputación se limita a CNN. Aunque rara vez ha aparecido en los últimos años, su estatus en el mundo no ha disminuido. Incluso las populares estrellas GRU y LSTM son variantes del mismo.

RNN (Redes neuronales recurrentes), red neuronal recurrente significa que el modelo recorre cada entrada y cada iteración se denomina tiempo (abreviado como "T" en la fórmula). En la Figura 1, el lado derecho del signo igual es el diagrama de expansión de RNN: entrada, (~). Después del procesamiento del bucle de la capa oculta, se generará una salida cada vez, (~), y también hay un estado oculto, que es el resultado del aprendizaje de la capa oculta en la entrada, que se pasará a la capa oculta como siguiente parámetro de entrada (flecha roja).

Mencioné en la capa completamente conectada que RNN se compone de una capa lineal. Para ser precisos, la capa de entrada, la capa oculta y la capa de salida de RNN son las flechas en la Figura 1, y todas son capas completamente conectadas.

Este artículo reescribirá RNN y analizará RNN de superficial a profundo. Haga clic aquí para ver el código fuente completo.

Además de usar la biblioteca Fastai, también usaremos su conjunto de datos ligero de PNL: yeight, 九千九九九".

Nuestra tarea es crear un N-grama RNN Modelo de lenguaje para aprender a contar. Por ejemplo, cuando vemos "uno, dos, tres, cuatro, cinco", podemos predecir que 10 tokens consecutivos ("también son tokens) son "seis". , modelo de lenguaje, para incrustar y lotes pequeños de nlp, puede volver al artículo anterior y desarrollar su propio robot de redacción de reseñas de películas con IA, que no entraré en detalles aquí

Como se muestra en la figura. 1, Model1 (recursivamente) procesa cada entrada a través de un bucle for (token) y pasa el estado oculto al siguiente bucle. Una vez aprendidos todos los n (x.shape[1]), se utiliza el enésimo estado oculto. genere la salida en función de los N comandos anteriores. El proceso de predicción del token N1.

La razón por la que RNN puede predecir el token N1 es porque el estado oculto contiene la información de los primeros N tokens H = H. F. Relu (self. Input (self. EMB (x [:, I])), que proporciona información temprana para la predicción RNN.

Learner es una biblioteca proporcionada por Fastai para el entrenamiento de modelos. acc_f" muestra la precisión de la predicción del modelo: 45,9.

El estado oculto del Modelo1 solo mantiene la información del token en el mismo minilote, y el estado oculto se borrará una vez que comience a aprender un nuevo minilote: h . =torch.zero(x.shape[0],NH).to(device=x.device).

Por lo tanto, el modelo 3 conservará el estado oculto obtenido del entrenamiento del mini lote anterior. En otras palabras, el estado oculto en este momento retiene la información de todo el conjunto de datos. No solo eso, Model3 no solo predice el token N1, sino que también predice el siguiente token para todos los tokens. 3 implementa las funciones básicas de RNN. la precisión de la predicción alcanza 72,2. Además, si se usa tanh en lugar de relu, la precisión aumentará a 75,4. La función de activación predeterminada del RNN estándar es tanh. Implementado por RNN proporcionado oficialmente por Pytorch. A juzgar por los resultados del entrenamiento, su precisión es mucho menor que la del Model3. Por lo tanto, un cálido recordatorio aquí es no tomar el funcionario como un edicto. La práctica muestra que la combinación de relu batchnorm es efectiva en RNN. No funcionará en nn.RNN

Aunque el rendimiento de nn.RNN no es tan bueno como el suyo, no anima a todos a hacer sus propias ruedas. Hacer sus propias ruedas. Este método casi no genera ningún valor. De hecho, cuando usamos un RNN de 2 capas, el modelo 4 funciona mejor que el modelo 3.

La siguiente figura muestra la estructura de un modelo de dos capas. RNN.

Aunque el efecto de dos capas ocultas es mejor que el de una capa oculta, la cantidad de cálculo se duplica. Debido a que la cantidad de parámetros de la capa completamente conectada es mucho mayor que la de la capa convolucional, el tiempo de entrenamiento de un RNN profundo es mucho más largo que el de una CNN de la misma profundidad, por lo que el número de capas RNN no debería ser demasiado. muchos.

Aunque RNN guarda la información de cada token a través del estado oculto, no puede procesar ni utilizar esta información de manera efectiva. Guarda toda la información que ha entrenado en el estado oculto y la utiliza para influir en el aprendizaje posterior de cada token. Esta influencia, ya sea buena o mala, se convierte en una bola de nieve que genera más y más información a medida que avanza el entrenamiento.

Obviamente, RNN carece de control sobre la información nueva y antigua (estados ocultos y tokens), por lo que cuando hay más y más tokens para aprender, la proporción de información del token al comienzo del texto será cada vez más grande se vuelve cada vez más pequeño, en otras palabras, el contenido al principio del texto se olvida fácilmente.

GPU y LSTM están especialmente diseñados para manejar entrenamiento de texto largo. Agregaron mecanismos como puertas de entrada, puertas de salida, puertas de olvido y puertas de actualización a RNN para filtrar la información entrante y saliente, descartar información obsoleta e inútil y ajustar el impacto de la información de entrada en el entrenamiento del modelo.

Después de que Model5 reemplazó RNN con GRU, la precisión del modelo mejoró nuevamente, alcanzando 83,8 en las mismas condiciones. El análisis de GRU se dejará para la próxima publicación del blog y no se repetirá aquí.

Este artículo detalla la estructura del modelo RNN mediante la reconstrucción del RNN y presenta además los principios de funcionamiento de GRU y LSTM mediante el análisis de sus fallas.