Aprendizaje de clasificación activa

Con esta publicación, estoy abriendo una serie en la que mis colegas y yo les contaremos cómo se usa ML en Mail.ru Search. Hoy explicaré cómo se organiza la clasificación y cómo usamos la información sobre las interacciones de los usuarios con nuestro motor de búsqueda para mejorar el motor de búsqueda.

Tarea de clasificación


¿Qué se entiende por tarea de clasificación? Imagine que en la muestra de capacitación hay un conjunto de consultas para las cuales se conoce el orden de los documentos por relevancia. Por ejemplo, usted sabe qué documento es el más relevante, cuál es el segundo más relevante, etc. Y necesita restaurar este orden para toda la población. Es decir, para todas las solicitudes de la población en general, el primer lugar es el documento más relevante y el último, el más irrelevante.

Veamos cómo se resuelven estos problemas en los grandes motores de búsqueda.


Tenemos un índice de búsqueda: esta es una base de datos de muchos miles de millones de documentos. Cuando llega una solicitud, primero generamos una lista de candidatos para la clasificación final utilizando modelos de texto simples. La opción más fácil es recoger documentos que, en principio, contienen palabras de la solicitud. ¿Por qué es necesario este paso? El hecho es que es imposible para todos los documentos disponibles construir letreros y formar pronósticos del modelo final. Después ya calculamos los signos. ¿Qué signos podemos tomar? Por ejemplo, el número de apariciones de palabras de una consulta en un documento o el número de clics en un documento determinado. Puede usar factores complejos entrenados por la máquina: en la Búsqueda usando redes neuronales, predecimos la relevancia del documento a pedido e insertamos este pronóstico con una nueva columna en nuestro espacio de características.

¿Por qué estamos haciendo todo esto? Queremos maximizar las métricas de los usuarios para que los usuarios encuentren los resultados relevantes en nuestros resultados lo más fácilmente posible y nos regresen con la mayor frecuencia posible.

Nuestro modelo final utiliza un conjunto de árboles de decisión construidos mediante el aumento de gradiente. Hay dos opciones para construir una métrica objetivo para el entrenamiento:

  • Estamos creando un departamento de asesores, personas especialmente capacitadas a quienes les hacemos consultas y les decimos: "Chicos, evalúen qué tan relevante es nuestra emisión". Ellos responderán con números que miden la relevancia. ¿Por qué es malo este enfoque? En este caso, maximizaremos el modelo con respecto a las opiniones de las personas que no son nuestros usuarios. No optimizaremos para la métrica que realmente queremos optimizar.
  • Por esta razón, utilizamos el segundo enfoque para la variable objetivo: mostramos a los usuarios los resultados, observamos a qué documentos pasan, cuáles se saltan. Y luego usamos estos datos para entrenar el modelo final.

¿Cómo se resuelve el problema de clasificación?


Hay tres enfoques para resolver el problema de clasificación:

  • Puntiagudo , es puntiagudo. Consideraremos la relevancia como una medida absoluta y ajustaremos el modelo para la diferencia absoluta entre la relevancia predicha y la que conocemos de la muestra de entrenamiento. Por ejemplo, el asesor le dio al documento una calificación de 3, y nosotros diríamos que 2, por lo que ajustamos el modelo por 1.
  • En parejas, en parejas. Compararemos los documentos entre nosotros. Por ejemplo, en la muestra de capacitación hay dos documentos, y sabemos cuál es más relevante para esta solicitud. Luego, ajustaremos el modelo si pone el pronóstico más bajo que el menos relevante, es decir, el par está mal organizado.
  • Listwise . También se basa en la relevancia relativa, pero no dentro de los pares: clasificamos todo el problema según el modelo y evaluamos el resultado; si el documento más relevante no está en primer lugar, recibimos una gran multa.

¿Qué enfoque es mejor usar para nuestra variable objetivo? Para hacer esto, vale la pena discutir una pregunta importante: "¿se pueden usar los clics como una medida de la relevancia absoluta de un documento?" Es imposible, porque dependen de la posición del documento en el tema. Después de recibir el problema, lo más probable es que haga clic en el documento que será más alto, porque le parece que los primeros documentos son más relevantes.

¿Cómo se puede verificar tal hipótesis? Tomamos dos documentos en la parte superior del problema y los intercambiamos. Si los clics fueran una medida absoluta de relevancia, su número dependería solo del documento en sí y no de la posición. Pero esto no es así. El documento anterior siempre recibe más clics. Por lo tanto, los clics nunca se pueden usar como una medida de relevancia absoluta. Por lo tanto, puede usar pairwise o listwise.

Recopilamos un conjunto de datos.


Ahora extraemos los datos para el conjunto de entrenamiento. Tuvimos esta sesión:


De los cuatro documentos, hubo un clic en el segundo y cuarto. Como regla, la gente mira los resultados de arriba a abajo. Miró el primer documento, no le gustó, hizo clic en el segundo. Luego volvieron a la búsqueda, miraron el tercero e hicieron clic en el cuarto. Obviamente, te gustó el segundo más que el primero, y el cuarto más que el primero y el tercero. Estos son los pares que generamos para todas las solicitudes y utilizamos modelos para el entrenamiento.

Todo parece estar bien, pero hay un problema: las personas solo hacen clic en los documentos desde la parte superior del problema. Por lo tanto, si hace la muestra de entrenamiento solo de esta manera, la distribución en ella será exactamente la misma que en la muestra de prueba. Es necesario alinear de alguna manera la distribución. Hacemos esto agregando ejemplos negativos: estos son documentos que estaban en la parte inferior de la clasificación, el usuario definitivamente no los vio, pero sabemos que son malos.


Entonces, obtuvimos un esquema para la capacitación de clasificación: les mostraron a los usuarios los resultados, obtuvieron clics de ellos, agregaron ejemplos negativos para alinear la distribución y reentrenaron el modelo de clasificación. Por lo tanto, tenemos en cuenta la reacción de los usuarios a su clasificación actual, tenemos en cuenta los errores y mejoramos la clasificación. Repetimos estos procedimientos muchas veces hasta la convergencia. Es importante tener en cuenta que buscamos no solo por la web, sino también por video, por imágenes, y el esquema descrito funciona perfectamente en cualquier tipo de búsqueda. Como resultado, las métricas de comportamiento crecen mucho. En la segunda iteración, es ligeramente más pequeña, en la tercera iteración es aún más pequeña, y como resultado converge a un óptimo local.

Pensemos por qué convergemos en un óptimo local y no en un óptimo global.

Suponga que es un fanático del fútbol y que por la noche no tuvo tiempo de ver el partido de su equipo favorito. Despierta por la mañana e ingresa el nombre del equipo en la barra de búsqueda para averiguar el resultado del partido. Vea los primeros tres documentos: estas son las páginas oficiales sobre el club, no hay información útil. No hojeará todo el problema, no recogerá otra solicitud. Quizás incluso haga clic en algún documento irrelevante. Pero como resultado, se molesta, cierra el SERP y abre otro motor de búsqueda.



Aunque este problema no solo se encuentra en la búsqueda, es especialmente relevante aquí. Imagine una tienda en línea, que es una gran cinta sin la capacidad de decir qué categoría particular de productos desea ver. Esto es exactamente lo que sucede con los resultados de búsqueda: después de enviar la solicitud, ya no puede explicar lo que realmente necesita: información sobre el equipo de fútbol o el puntaje del último partido.

Imagine que un hombre brutal fue a una tienda en línea tan extraña, que consta de una cinta de recomendaciones, y en sus recomendaciones solo ve productos típicamente femeninos. Tal vez incluso hace clic en un vestido, porque lo usa una chica hermosa. Enviaremos este clic al conjunto de entrenamiento y decidiremos que al hombre le gusta este vestido más que la esponja. Cuando regrese a nuestro sistema, ya verá algunos vestidos. Inicialmente, no teníamos productos que fueran válidos para el usuario, por lo que este enfoque no nos permitirá corregir este error. Estábamos en un óptimo local, en el que la persona pobre ya no puede decirnos que no le gustan ni las esponjas ni los vestidos. A menudo este problema se llama problema de retroalimentación positiva.

Mejora adicional


¿Cómo mejorar un motor de búsqueda? ¿Cómo salir de un óptimo local? Se deben agregar nuevos factores. Supongamos que hicimos un factor muy bueno que, previa solicitud con el nombre del equipo de fútbol, ​​generará un documento relevante, es decir, los resultados del último partido. ¿Cuál podría ser el problema aquí? Si entrena el modelo en datos antiguos, en datos fuera de línea, tome el conjunto de datos anterior con clics y agregue este atributo allí. Puede ser relevante, pero no lo ha usado antes en el ranking y, por lo tanto, la gente no hizo clic en aquellos documentos para los que este atributo es bueno. No se correlaciona con su variable de destino, por lo que simplemente no será utilizada por el modelo.

En tales casos, a menudo usamos esta solución: omitiendo el modelo final, forzamos a nuestra clasificación a usar esta función. Mostramos por la fuerza el resultado del último partido a pedido con el nombre del equipo, y si el usuario hizo clic en él, entonces esta es la información que nos permite entender que el letrero es bueno.

Veamos un ejemplo. Recientemente hicimos hermosas fotos para documentos de Instagram:



Parece que esas bellas imágenes deberían satisfacer a nuestros usuarios tanto como sea posible. Obviamente, tenemos que hacer una señal de que el documento tiene esa imagen. Agregamos al conjunto de datos, reentrenamos el modelo de clasificación y vemos cómo se usa esta característica. Y luego analizamos el cambio en las métricas de comportamiento. Han mejorado un poco, pero ¿es esta la mejor solución?

No, porque para muchas solicitudes no muestra bellas imágenes. No le diste al usuario la oportunidad de mostrar cómo le gustan. Para resolver este problema, para algunas solicitudes que implican mostrar documentos de Instagram, omitiendo por la fuerza el modelo, mostramos bellas imágenes y observamos si hicieron clic en ellas. Tan pronto como los usuarios apreciaron la innovación, comenzaron a reentrenar el modelo en conjuntos de datos, en los que los usuarios tuvieron la oportunidad de mostrar la importancia de este factor. Después de este procedimiento, en un nuevo conjunto de datos, el factor comenzó a usarse muchas veces con más frecuencia y aumentó significativamente las métricas del usuario.



Por lo tanto, examinamos la declaración del problema de clasificación y discutimos las trampas que le esperarán al conocer los comentarios de los usuarios. Lo principal que debe sacar de este artículo: usando la retroalimentación como un objetivo de entrenamiento, recuerde que el usuario puede dejar esta retroalimentación solo donde el modelo actual lo permita. Tal retroalimentación puede jugar un truco cuando intente construir un nuevo modelo de aprendizaje automático.

Source: https://habr.com/ru/post/461927/


All Articles