Red de conocimiento informático - Aprendizaje de código fuente - Lectura de artículos del sistema de recomendación (10): algoritmo de recomendación de secuencia basado en red neuronal

Lectura de artículos del sistema de recomendación (10): algoritmo de recomendación de secuencia basado en red neuronal

Artículo:

Dirección: Educación y gráficos de redes neuronales Sr-gnn.

github: /CRIPAC-DIG/SR-GNN

Las recomendaciones basadas en sesiones generalmente modelan conversaciones secuenciales, codifican toda la conversación en un vector oculto y luego usan este vector oculto para predecir el siguiente clic. Sin embargo, este método no tiene en cuenta la transición directa y compleja de elementos, es decir, en una sesión en la que se hace clic, además del orden temporal entre elementos, también existen relaciones complejas de puntería de nodos en el gráfico dirigido, por lo que el método anterior No es lo suficientemente bueno para modelar secuencias de clics.

Los métodos de recomendación basados ​​en sesiones existentes se centran principalmente en redes neuronales recurrentes y cadenas de Markov. Este artículo propone dos deficiencias de los métodos existentes:

1) Cuando a Cuando el número de comportamientos del usuario. Una sesión es muy limitada, es difícil para estos métodos obtener representaciones precisas del comportamiento del usuario. Por ejemplo, cuando se utiliza un modelo RNN, la expresión del comportamiento del usuario es la salida de la última unidad, lo cual no es muy preciso.

2) Según trabajos anteriores, el patrón de transferencia entre elementos es una característica muy importante en la recomendación conversacional, pero los procesos RNN y Markov solo tratan la relación de transferencia unidireccional entre dos elementos adyacentes mientras ignoran. otros temas de la sesión.

Para superar las deficiencias anteriores, este artículo propone un método para utilizar redes neuronales gráficas para modelar sesiones de usuario:

A continuación se describe en detalle cómo recomendar secuencias de imágenes.

V = {v1, v2...vm} son todos los elementos, S = {} son los elementos en los que se hace clic en orden cronológico en una sesión. El objetivo de este artículo es predecir el siguiente elemento en el que el usuario hará clic vs, n+1. La tarea del modelo es generar las probabilidades predichas de todos los elementos y seleccionar el k superior para la recomendación.

Construimos un subgrafo para cada sesión y obtenemos su correspondiente matriz de grados de salida y matriz de grados de entrada.

Supongamos que una secuencia de clic es v 1-> v2-> v4-& gt; entonces el subgráfico que obtiene se muestra en la parte roja de la siguiente figura:

<; p> Entonces, por ejemplo, una secuencia de clic es v1->v2->v3->v2->V4, entonces sus subgrafos son los siguientes:

Al mismo tiempo, construiremos un subgrafo para cada subgrafo Una matriz de grados de salida y de entrada, y normalice cada fila de la matriz de grados de salida y de entrada, por ejemplo, nuestra secuencia v 1-> v2-> v3-> v2-> corresponde a. La matriz de v4 es la siguiente:

¿Cómo se calculan los valores de esta matriz? Hablemos de ello:

Mira la matriz de grados de la izquierda. La primera línea es 0 1 000, lo que significa v1->V2. Debido a que v1 solo tiene un elemento señalador, es 1; Debido a que v2 tiene aristas que apuntan a v3 y v4, cada valor se convierte en 1/2 después de la normalización. El método de cálculo de la matriz de grados es el mismo, por lo que no entraré en detalles nuevamente.

Este artículo utiliza unidades GRU para el modelado de secuencias e incorpora información gráfica en redes neuronales para que GRU pueda aprender completamente la relación entre elementos. El GRU tradicional solo puede aprender la relación entre dos elementos adyacentes. Después de agregar información del gráfico, puede aprender la información de todo el subgrafo de la conversación.

La fórmula de cálculo es la siguiente:

Para comprender este proceso de cálculo, seguimos utilizando el ejemplo anterior: v 1-& gt; gt; v2-& gt;V4 analiza paso a paso el proceso de entrada-salida.

(1) es el tiempo t. La entrada correspondiente al I-ésimo clic en la sesión S es una matriz n2n. Esta es la matriz completa del subgrafo de la sesión, pero una de las filas, que es la. fila correspondiente a la entrada vi. El tamaño es 12n, donde N representa el número de entradas diferentes en la secuencia.

Según el ejemplo, si tomo 2, es [0 01/2 1/2 1/2 01/2 0/20].

Además, se puede descomponer: en [,]

(2) puede entenderse como el vector de incrustación correspondiente al elemento I en la secuencia durante el proceso de entrenamiento. Este vector cambia continuamente a medida que se entrena el modelo y puede entenderse como el estado de la capa oculta, que es un vector de dimensión D.

(3)H es el vector de peso de d*2d, que también puede considerarse como una matriz de bloques. Puede entenderse como H=[Hin|Hout]. * d. .

Echemos un vistazo al proceso de cálculo:

1)[...,], el resultado es una matriz d*n, y después de la transposición es una matriz n*d , el cálculo es

2): H equivale a [? ], es decir, desmontado, multiplicado y luego empalmado, por lo que el resultado es un vector 1 * 2d.

Lo anterior es el proceso de cálculo completo de la entrada del primer clic. Se puede ver que antes de ingresar al cálculo de GRU, la información gráfica se incrusta en la red neuronal multiplicándola por la matriz As, I, lo que profundiza la información interactiva entre los elementos aprendidos por la red neuronal.

El otro es el proceso de cálculo de GRU. La diferencia con el GRU original es que la entrada se cambia de xt a as e incrusto información gráfica.

Las muestras generales también tienen puertas de actualización y puertas de reinicio, y el método de cálculo es exactamente el mismo que el del GRU original.

Las cosas aquí son en realidad equivalentes a las del gru original, pero en SR-GNN, I no cambia durante una ronda de operación, lo que equivale a que cada elemento se ingrese en el GRU para un cálculo separado. , y obtenemos Su propio vector, es decir, cambia constantemente durante el proceso de cálculo de GRU, por lo que es más fácil de entender mirando el código fuente:

Oculto en la fórmula, gru actualizarse en cada paso del cálculo. Tengo una pregunta aquí. Si se actualiza la ocultación de todos los elementos, todos los elementos de la secuencia completa se ingresan en el GRU para su cálculo en paralelo y cada paso obtiene su propio vector. Cuando se actualiza el vector de cada elemento, el siguiente paso se calcula en función del nuevo cálculo y luego se calcula nuevamente el siguiente paso.

El proceso de cálculo es aproximadamente el siguiente:

Hay cuatro GRU computando en paralelo, sus estados ocultos no se actualizan cada vez y toda la información oculta y gráfica se considera como entrada.

Como se puede ver en la figura anterior, cada elemento debe pasar por T pasos para obtener su propio elemento - vec, por lo que después de T pasos, obtenemos los vectores de todos los elementos en la secuencia, es decir:

Con los vectores dibujados en el cuadro azul de la imagen, ¿cómo podemos obtener los resultados de la predicción? Esto lleva a la siguiente pregunta.

Observando la estructura del modelo anterior, podemos ver el grado de atención. Sí, consideramos que todos los elementos de la sesión no tienen ningún impacto en los resultados de la predicción. Algunos elementos tienen un gran impacto en los resultados y otros tienen un impacto pequeño, por lo que hacemos una suma ponderada. Al mismo tiempo, el documento cree que la sesión es muy importante para el último elemento: vec, s1 = vn, por lo que se elimina por separado:

La fórmula (6) es, de hecho, una operación de atención simple. Desde la perspectiva de la fórmula, consiste en calcular el peso de cada vi y el último vector vn, y luego realizar una suma ponderada.

En la capa de salida final, calcule el producto interno usando sh y la incrustación de cada elemento, donde vi debe ser el vector de la capa de incrustación del elemento, no el vector oculto:

Finalmente, la probabilidad de clic de cada elemento se obtiene a través de un softmax:

La función de pérdida es la función de pérdida de entropía cruzada:

Desde el punto de vista de los datos, SR-GNN Supera al clásico GRU4REC, lo que también muestra que la incrustación de información gráfica puede generar mejores resultados de recomendación.

Este artículo incorpora inteligentemente información gráfica en la red neuronal, lo que permite a GRU aprender la relación entre cada elemento de manera más efectiva y ya no se limita al aprendizaje entre elementos adyacentes. En los últimos años, las ideas y métodos de las redes neuronales gráficas se han utilizado repetidamente en los sistemas de recomendación. Aprender las redes neuronales gráficas debería ser la próxima moda en los sistemas de recomendación.