La Red de Conocimientos Pedagógicos - Currículum vitae - Red de memoria-Red de memoria

Red de memoria-Red de memoria

La red de memoria es una pequeña rama del aprendizaje profundo. Desde su introducción en 2014, se han desarrollado gradualmente varios modelos maduros. Lo que más me preocupa es su aplicación y desarrollo en el campo del control de calidad. Esta columna seleccionará varios artículos para presentar sistemáticamente modelos y aplicaciones relacionados de redes de memoria. También se presentarán algunos artículos sobre la implementación de TensorFlow.

El primer artículo que se presentará es el artículo "Memory Networks" publicado por FaceBook en 2014. La "Máquina Neural de Turing" propuesta al mismo tiempo también utilizó un método similar (memoria externa). Los modelos tradicionales de aprendizaje profundo (RNN, LSTM, GRU, etc.) utilizan estados ocultos o mecanismos de atención como funciones de memoria, pero la cantidad de memoria producida por este método es demasiado pequeña para registrar con precisión todo el contenido expresado en un párrafo, es decir , la entrada Se pierde mucha información cuando se codifica como vectores densos. Por lo tanto, este artículo propone un módulo de almacenamiento externo legible y escribible y lo entrena con un componente de inferencia, obteniendo finalmente un módulo de almacenamiento que puede operarse de manera flexible. A continuación, echemos un vistazo a su marco:

En primer lugar, el modelo incluye principalmente una serie de unidades de memoria (puede considerarse como una matriz, cada unidad almacena la memoria de una oración) y yo, G, O, r cuatro módulos, el diagrama de estructura es el siguiente:

En pocas palabras, el texto de entrada es codificado en un vector por el módulo de entrada y luego utilizado como entrada del módulo de generalización. El módulo de generalización lee y escribe la memoria de acuerdo con el vector de entrada. Es decir, actualiza la memoria. Luego, el módulo de salida pesa el contenido de la memoria según la pregunta (también codificada por el módulo de entrada), combina las memorias según su relevancia para la pregunta y obtiene el vector de salida. Finalmente, el módulo de respuesta genera una respuesta en lenguaje natural basada en la codificación del vector de salida. Las funciones de cada módulo son las siguientes:

A continuación, echemos un vistazo a los detalles de implementación del modelo básico:

Según la descripción del artículo, el I del El modelo básico es una operación de búsqueda incrustada simple, es decir, el texto original se convierte en la forma de un vector de palabras y el módulo G almacena directamente el vector de entrada en la siguiente posición de la matriz de memoria sin realizar otras operaciones. escribiéndolo directamente en la nueva memoria sin modificar la memoria anterior. El trabajo principal se realiza en los módulos O y R. El módulo O selecciona la memoria relacionada con topk de todas las memorias en función del vector del problema de entrada. El método de selección específico es el siguiente: primero seleccione la memoria más relevante en la memoria:

A continuación, según el o1 seleccionado. e ingrese X, seleccione La memoria o2 más relacionada con ellos:

Para la fórmula anterior, si X y o1 están representados por vectores lineales (BOW, etc.), se puede dividir en la siguiente suma , de lo contrario no puede.

Simplemente seleccione la ranura de memoria superior más relevante para su problema. Como entrada al módulo R, se genera la respuesta final. De hecho, es muy sencillo utilizar la misma función de puntuación anterior para calcular la correlación entre todas las palabras candidatas y la entrada de R. La palabra con la puntuación más alta se puede generar como la respuesta correcta:

La puntuación. La función utilizada muchas veces anteriormente puede satisfacer la siguiente forma:

En el modelo final, la función de pérdida selecciona una pérdida de clasificación de margen, lo que requiere que la puntuación de la respuesta correcta sea al menos un margen r mayor que la puntuación de la respuesta incorrecta. La fórmula es la siguiente:

Las respuestas incorrectas aquí se seleccionan aleatoriamente de la muestra, en lugar de contar todas las muestras incorrectas. Pongamos un ejemplo sencillo para ilustrar el proceso anterior:

Para la primera pregunta: ¿Dónde está la leche ahora? El módulo de salida calificará todos los recuerdos (en realidad, las oraciones de entrada) y obtendrá la puntuación más alta para "Joe dejó la leche", que es la más relevante para la pregunta, y luego calificará los recuerdos restantes para encontrar el Dónde está actual. la leche? El recuerdo más asociado a Joe es el de dejar la leche. Descubrimos que es "Joe viaja a la oficina". De esta manera puedes encontrar los recuerdos más relevantes y luego usar el módulo R para calificar todas las palabras y encontrar la palabra con la puntuación más alta como respuesta.

El enfoque de este artículo es que propuso un marco de modelo general (red de memoria), pero muchas partes son imperfectas. El artículo también explica algunos problemas como el ingreso de palabras, la gran cantidad de memoria y las palabras nuevas al final del artículo, pero creo que es más útil leer artículos publicados por otros sobre esta base. Así que no lo presentaré en detalle aquí.