¿Existe alguna implementación de aprendizaje profundo de respuesta basada en la recuperación de preguntas?

Nota: En resumen, puedo proporcionar algunos enlaces a documentos y código (que lo haré, al final). Pero para mantener la integridad de una respuesta de Quora y diferenciarla de una respuesta de Stackoverflow, también daré una breve explicación de la estructura común general y la filosofía que siguen la mayoría de los documentos.

La respuesta a preguntas basadas en recuperación también se llama Selección de oración de respuesta. Independientemente de la nomenclatura, el problema puede formularse como una pregunta Q y una lista de respuestas candidatas [matemáticas] A_ {i = 1..N} [/ matemáticas] tenemos que encontrar la mejor respuesta [matemáticas] A_k [/ matemáticas ] (o algunas veces las mejores respuestas).

Primero hablemos de la parte de representación. En el nivel base, codifica principalmente la pregunta y la respuesta de una o más capas de RNN (preferiblemente bidireccionales) para obtener representaciones de nivel superior.

Simplemente puede decir que el izquierdo (azul) está codificando preguntas y el derecho (rojo) está codificando respuestas. Finalmente, una agrupación media sobre todos los estados LSTM le da un solo vector. (Puede ignorar con seguridad las flechas punteadas).

La gente también usa CNN para codificarlos. Usted trata cada oración como una imagen 2d de tamaño de incrustación de palabras x no. de palabras.

El punto principal es que no importa lo que use: CNN o LSTM, una cosa que es común en la mayoría de los documentos es que se comparte el peso entre la pregunta y la respuesta. Por ejemplo, el mismo LSTM codifica tanto Q como A.

Uso de mecanismos de atención : puede continuar construyendo representaciones de nivel más alto de A atendiendo a Q. Puede crear nuevos estados ocultos para A atendiendo a los estados de Q en cada paso de tiempo. Uno de estos enfoques es hacer coincidir cada estado oculto [matemático] h_i ^ A [/ matemático] de A con todos los estados [matemático] h ^ Q [/ matemático] de Q y formar un nuevo estado oculto [matemático] h`_i ^ A [/ math] que es consciente de las preguntas, que es otra forma de decir que se enfoca solo en partes de A que es importante para Q. (Se pueden encontrar más detalles en la sección 3.3 del documento [3] mencionado en la parte inferior)

Ahora, como la capa de representación termina aquí, en su mayoría hay dos formas de pasar a la siguiente parte que determina qué tan buena es la respuesta de un candidato para una pregunta dada.

  1. Puntiagudo: es principalmente un enfoque de clasificación binaria. Tiene representaciones de preguntas y respuestas de candidatos que puede concatenar y alimentar a una red neuronal de alimentación para clasificar si la respuesta es válida o no. Esto es más fácil de entrenar. Cada ejemplo de entrenamiento es un triplete (pregunta, respuesta del candidato, etiqueta 0 o 1)
  2. Por parejas: es más difícil entrenar. Para cada ejemplo de entrenamiento, usted toma la pregunta [matemáticas] Q [/ matemáticas], una respuesta válida [matemáticas] A _ + [/ matemáticas] y una respuesta no válida [matemáticas] A _- [/ matemáticas]. Si tiene varias respuestas válidas e inválidas, muestre una para cada categoría del grupo de respuestas candidatas. Calcula la puntuación [matemática] S (Q, A _ +) [/ matemática] y [matemática] S (Q, A _-) [/ matemática], donde [matemática] S [/ matemática] puede ser un clasificador simple que utilizó en enfoque 1 o podría ser algunas funciones de similitud como coseno. Emplea la pérdida de clasificación en la que intenta minimizar la cantidad alta [matemática] S _ + [/ matemática] que obtiene de [matemática] S _- [/ matemática].

Lo que significa esta pérdida es que si su puntaje de coseno para una respuesta válida es más alto que el puntaje para una respuesta no válida por al menos el margen M, entonces habrá una pérdida cero (y, por lo tanto, no habrá actualización), de lo contrario, el número en el que no alcanza M se minimizará . Es más difícil trabajar con este objetivo de capacitación, pero puede dar mejores puntajes a las respuestas de los candidatos.

Documentos:

  1. https://www.researchgate.net/publication/300031046_Learning_to_Rank_Short_Text_Pairs_with_Convolutional_Deep_Neural_Networks
  2. [1412.1632] Aprendizaje profundo para la selección de oraciones de respuesta
  3. [1511.04108] Modelos de aprendizaje profundo basados ​​en LSTM para la selección de respuestas no factoides
  4. http://aclweb.org/anthology/P15-…

Implementaciones:

  1. aseveryn / qa profundo
  2. brmson / selección de oraciones
  3. zhangzibin / PairCNN-Ranking

Obtendrás mucho más.

Recientemente ha habido un buen progreso en el campo de preguntas y respuestas utilizando el aprendizaje profundo. Estos recursos pueden ayudar: