Redes de dos torres y muestreo negativo en sistemas de recomendación |  de Michael Roizner |  noviembre de 2023

Comprender los elementos clave que impulsan los motores de recomendación avanzados

Uno de los tipos de modelos más importantes en los sistemas de recomendación actualmente son las redes neuronales de dos torres. Están estructurados de la siguiente manera: una parte de la red neuronal (torre) procesa toda la información sobre la consulta (usuario, contexto), mientras que la otra torre procesa información sobre el objeto. Las salidas de estas torres son incrustaciones, que luego se multiplican (producto escalar o coseno, como ya comentamos) aquí). Una de las primeras menciones a la aplicación de este tipo de redes para recomendaciones se puede encontrar en un muy buen papel sobre YouTube. Por cierto, ahora llamaría a este artículo un clásico y el más adecuado para entrar en el campo de las recomendaciones.

Del papel Redes neuronales profundas para recomendaciones de YouTube

¿Qué caracteriza a tales redes? Son muy similares a la factorización matricial, que en realidad es un caso especial, ya que toma solo ID_usuario y Identificación del artículo como entrada. Sin embargo, si las comparamos con redes arbitrarias, la restricción del cruce tardío (no permitir que las entradas de diferentes torres se fusionen hasta el final) hace que las redes de dos torres sean extremadamente eficientes en su aplicación. Para generar recomendaciones para un solo usuario, debemos calcular la torre de consultas una vez y luego multiplicar esta incrustación con las incrustaciones de documentos, que generalmente se calculan previamente. Este proceso es muy rápido. Además, estas incrustaciones de documentos precalculadas se pueden organizar en un ANA índice (por ejemplo, HNSW) para encontrar rápidamente buenos candidatos sin tener que revisar toda la base de datos.

Podemos lograr aún más eficiencia calculando la parte del usuario no para cada consulta, sino de forma asincrónica, con cierta regularidad. Sin embargo, esto significa sacrificar la consideración de la historia y el contexto en tiempo real.

Las torres en sí pueden ser bastante sofisticadas. Por ejemplo, en la parte del usuario, podemos usar el mecanismo de autoatención para procesar el historial, lo que resulta en un transformador para la personalización. ¿Pero cuál es el coste de introducir la restricción del cruce tardío? Naturalmente, afecta la calidad. En el mismo mecanismo de atención no podemos utilizar los artículos que actualmente deseamos recomendar. Idealmente, nos gustaría centrarnos en elementos similares en el historial del usuario. Por tanto, las redes con cruce temprano se suelen utilizar en las últimas etapas de clasificación, cuando sólo quedan unas pocas docenas o cientos de candidatos, mientras que aquellas con cruce tardío (dos torres) se utilizan, por el contrario, en las primeras etapas y para candidatos. generación.

(Sin embargo, existe un argumento puramente teórico de que cualquier clasificación razonable de documentos para diferentes consultas se puede codificar mediante incrustaciones de dimensionalidad suficiente. Además, los decodificadores en PNL en realidad operan según el mismo principio, solo recalculan la torre de consultas para cada token).

Un punto de particular interés es la función de pérdida utilizada para entrenar redes de dos torres. En principio, se pueden entrenar con cualquier función de pérdida, apuntando a varios resultados e incluso teniendo múltiples resultados diferentes para diferentes cabezas (con diferentes incrustaciones en cada torre). Sin embargo, una variante interesante es el entrenamiento con una pérdida softmax en negativos en lotes. Para cada par de consulta-documento en el conjunto de datos, los otros documentos en el mismo mini-lote se usan como negativos en combinación con la misma consulta en la pérdida softmax. Este método es una forma muy eficaz de minería negativa dura.

Pero es importante considerar la interpretación probabilística de dicha función de pérdida, que no siempre se comprende bien. En una red entrenada,

El exponente de la puntuación no es proporcional a la probabilidad a priori del documento dado la consulta, sino al PMI (Información mutua puntual), específico de la consulta. Los documentos más populares no necesariamente serán recomendados con más frecuencia por un modelo de este tipo, porque durante el entrenamiento, proporcionalmente aparecen más a menudo como negativos. Usar la puntuación como característica puede ser beneficioso, pero para la clasificación final y la generación de candidatos, esto puede generar documentos muy específicos pero de mala calidad.

Google, en un papel, sugirió combatir este problema con la corrección logQ durante el entrenamiento. Nosotros, por otro lado, normalmente abordamos esto en la etapa de solicitud, no durante la capacitación, simplemente multiplicando por la probabilidad a priori del documento P(d). Sin embargo, nunca comparamos estos enfoques, lo que de hecho sería una comparación interesante.

Existe un algoritmo de filtrado colaborativo conocido como ALS implícita (IALS). Ya tengo lo mencioné antes. En la era anterior a las redes neuronales, podría decirse que era uno de los algoritmos más populares. Su característica distintiva es la eficaz “extracción” de negativos: todos los pares usuario-objeto sin un historial de interacción se tratan como negativos (aunque con menos peso que las interacciones reales). Además, a diferencia de la minería real, estos negativos no se muestrean sino que se utilizan en su totalidad en cada iteración. Este enfoque se conoce como regularización implícita.

¿Cómo es esto posible? Dados tamaños de tarea razonables (número de usuarios y objetos), debería haber tantos aspectos negativos que incluso enumerarlos llevaría más tiempo que todo el proceso de capacitación. La belleza del algoritmo radica en el hecho de que, utilizando la pérdida MSE y el método de mínimos cuadrados, es posible precalcular ciertos elementos por separado para todos los usuarios y por separado para todos los objetos antes de cada iteración completa, y esto es suficiente para realizar regularización implícita. De esta forma, el algoritmo evita un tamaño cuadrático. (Para más detalles, los remito a Uno de mis artículos favoritos de esa época.).

Hace un par de años, me pregunté si era posible combinar esta maravillosa idea de regularización implícita con la tecnología más avanzada de las redes neuronales de dos torres. Es una pregunta compleja, ya que hay optimización estocástica en lugar de lote completo, y hay renuencia a volver a la pérdida de MSE (al menos para toda la tarea; específicamente para la regularización, podría estar bien), ya que tiende a producir resultados inferiores.

¡Lo pensé mucho y finalmente encontré una solución! Durante un par de semanas, me sentí entusiasmado y anticipé ansiosamente cómo probaríamos esto en lugar de los negativos en lotes.

Y luego, por supuesto (como suele ocurrir en estos casos), leí en un periódico que ya estaba todo pensado tres años antes. De nuevo, fue Google. Posteriormente, en ese mismo artículo sobre la corrección logQdemostraron que la pérdida softmax con negativos en lotes funciona mejor que la regularización implícita.

Así pudimos ahorrar tiempo y no probar esta idea 🙂

Después de todo, tenemos casos reales de impresiones de recomendaciones, y si un usuario no interactuó con ellas, estas pueden usarse como fuertes negativas. (Esto no considera el caso en el que el servicio de recomendación en sí aún no se ha lanzado y aún no hay impresiones).

La respuesta a esta pregunta no es tan trivial; Depende de cómo exactamente pretendemos aplicar el modelo entrenado: para la clasificación final, para la generación de candidatos o simplemente como características para ingresar a otro modelo.

¿Qué sucede cuando entrenamos el modelo solo con impresiones reales? Se produce un sesgo de selección bastante fuerte y el modelo aprende a distinguir bien sólo aquellos documentos que se mostraron en ese contexto particular. En documentos (o más precisamente, pares de documentos de consulta) que no se mostraron, el modelo funcionará mucho peor: podría sobreestimar algunos documentos y subestimar otros. Ciertamente, este efecto se puede mitigar aplicando la exploración en la clasificación, pero la mayoría de las veces esto es sólo una solución parcial.

Si un generador de candidatos está entrenado de esta manera, puede producir una gran cantidad de documentos en respuesta a una consulta, documentos que nunca ha visto en ese contexto y para los cuales sobreestima las predicciones. Entre estos documentos, a menudo hay basura total. Si el modelo de clasificación final es lo suficientemente bueno, filtrará estos documentos y no se los mostrará al usuario. Sin embargo, todavía desperdiciamos innecesariamente la cuota de candidatos (y es posible que no quede ningún documento adecuado). Por lo tanto, los generadores de candidatos deben recibir capacitación de manera que comprendan que la mayor parte de la base de documentos es de mala calidad y no deben ser recomendados (nominados como candidatos). El muestreo negativo es un buen método para esto.

Los modelos de clasificación final son muy similares a los de generación de candidatos en este sentido, pero hay una distinción importante: aprenden de sus errores. Cuando el modelo comete un error al sobreestimar las predicciones para ciertos documentos, estos documentos se muestran a los usuarios y luego pueden incluirse en el siguiente conjunto de datos de entrenamiento. Podemos volver a entrenar el modelo en este nuevo conjunto de datos e implementarlo nuevamente para los usuarios. Surgirán nuevos falsos positivos. El proceso de recopilación y reentrenamiento del conjunto de datos se puede repetir, lo que da como resultado una especie de aprendizaje activo. En la práctica, bastan unas pocas iteraciones de reentrenamiento para que el proceso converja y el modelo deje de recomendar tonterías. Por supuesto, se debe sopesar el daño de las recomendaciones aleatorias y, a veces, vale la pena tomar precauciones adicionales. Pero, en general, aquí no es necesario un muestreo negativo. Por el contrario, puede perjudicar la exploración, haciendo que el sistema permanezca en un óptimo local.

Si el modelo se utiliza para características como entrada en otro modelo, entonces se aplica la misma lógica, pero el daño de sobreestimar las predicciones para documentos candidatos aleatorios es aún menos significativo porque otras características pueden ayudar a ajustar la predicción final. (Si un documento ni siquiera aparece en la lista de candidatos, no calcularemos sus características).

En un momento, probamos directamente y descubrimos que, como características, el ALS estándar funciona mejor que el IALS, pero no debería usarse para la generación de candidatos.