Una de las razones por las que me entusiasmó unirme a Quora como vicepresidente de ingeniería fue la importancia del aprendizaje automático para el éxito de la empresa. A partir de 2015, los enfoques de aprendizaje automático se utilizan ampliamente en muchas partes diferentes del producto Quora. La mayoría de estas aplicaciones estaban en su lugar antes de unirme. Sin embargo, constantemente estamos planteando nuevos enfoques y haciendo grandes mejoras a los existentes. Es importante tener en cuenta que todas estas mejoras primero se optimizan y prueban sin conexión mediante el uso de muchos tipos diferentes de métricas sin conexión, pero siempre se prueban finalmente en línea a través de pruebas A / B.
En los siguientes párrafos, describiré algunas de las aplicaciones y técnicas más importantes de ML en Quora a partir de 2015.
Clasificación
La clasificación es posiblemente una de las aplicaciones más importantes del aprendizaje automático en la Web. Las empresas, desde muy grandes hasta pequeñas, han creado modelos de negocio en torno a la capacidad de clasificar, por ejemplo, los resultados en una cadena de consulta. En Quora usamos algoritmos de clasificación en diferentes contextos y con diferentes propósitos.
Un ejemplo interesante es la clasificación de respuestas . Dada una pregunta y varias respuestas a esta pregunta, estamos interesados en clasificarlas en orden decreciente para mantener la “mejor” respuesta en la parte superior y la peor en la parte inferior (vea la captura de pantalla a continuación).
Hay muchas características diferentes que podrían entrar para determinar el orden correcto de las respuestas a una pregunta. Para determinar eso, primero necesitamos determinar qué definimos en Quora como una respuesta “buena”. Una buena manera de llegar a esa definición es mirar lo que Quora considera una “respuesta útil”. Leerá acerca de las respuestas como “sinceras”, “reutilizables”, “proporcionar explicaciones” o “bien formateadas”, entre otras. Nuestro algoritmo de aprendizaje automático, que implementa un enfoque particular de aprendizaje para clasificar, tiene muchas características diferentes que intentan codificar muchas dimensiones que finalmente se relacionan con todos esos conceptos abstractos. Por ejemplo, tenemos características que codifican información sobre la calidad de la escritura, pero también utilizamos características que informan sobre el tipo de interacciones que recibió la respuesta (por ejemplo, votos positivos, votos negativos o se expande). También tenemos características relacionadas con el usuario que escribió la respuesta, incluyendo, por ejemplo, la experiencia del usuario en el tema de la pregunta.
Tenemos muchas otras aplicaciones de clasificación en Quora, algunas de las cuales incluso podrían pasar desapercibidas. Por ejemplo, los nombres que parecen haber votado a favor de una respuesta dada también se clasifican de manera que presentamos en la parte superior los que consideramos más informativos para esa pregunta / respuesta dada. Lo mismo es cierto para los nombres que se sugieren cuando se presentan posibles respuestas a una pregunta en particular.
Echemos un vistazo más de cerca a dos instancias particulares de algoritmos de clasificación ML: Búsqueda y Clasificación personalizada.
Algoritmos de búsqueda
Para una aplicación como Quora, los algoritmos de búsqueda pueden considerarse simplemente como otra aplicación de clasificación. De hecho, la búsqueda se puede descomponer en dos pasos diferentes: coincidencia textual + clasificación. En el primer paso, se devuelven los documentos (preguntas) que coinciden con la consulta ingresada en el cuadro de búsqueda de alguna manera. Esos documentos se tratan como candidatos del segundo paso, que clasifica esos resultados para optimizar algo como la probabilidad de clic.
Este segundo paso es, de hecho, otro ejemplo de aplicación para aprender a clasificar, donde se pueden usar muchas características diferentes. Estas características pueden ir desde características textuales simples que ya se utilizaron en el paso de coincidencia textual original a otras que se relacionan con acciones del usuario o propiedades de objetos como su popularidad.
Ranking personalizado
En algunas situaciones como la descrita anteriormente, podríamos lograr una clasificación global óptima para todos los usuarios. En otras palabras, podemos suponer que el orden para la mayoría de las respuestas “útiles” a una pregunta dada es independiente del usuario que está leyendo la respuesta. Sin embargo, esa suposición claramente falla en muchos casos importantes. Uno de estos casos muy importantes es el Quora Feed. Quora Feed es básicamente la página de inicio que cualquier usuario ve al iniciar sesión en el producto. En esa página, estamos tratando de seleccionar y clasificar las historias más “interesantes” para ese usuario en un momento dado (ver el ejemplo a continuación). Este es un ejemplo prototípico de aprendizaje personalizado para clasificar, similar a lo que hace la página de inicio de Netflix con películas y programas de televisión.
Sin embargo, el caso de uso de Quora es un poco más desafiante que el de clasificar películas y programas de televisión en Netflix. De hecho, uno podría ver nuestro caso de uso como una combinación de lo que Netflix, Facebook y Google News deben hacer para optimizar su clasificación personalizada. Por un lado, queremos asegurarnos de que las historias que estén mejor clasificadas sean relevantes para el usuario. Por otro lado, Quora también tiene conexiones explícitas entre usuarios. Las acciones en su “red social” también deberían influir en la clasificación. Finalmente, las historias en Quora a veces pueden relacionarse con eventos en curso. La puntualidad es otro elemento que debería afectar la decisión del modelo de promover o degradar una historia.
Debido a esto, hay muchos tipos diferentes de características que intervienen en la creación de un rango tan personalizado en Quora. Hagamos una lista de algunos de ellos:
- Calidad de las preguntas / respuestas
- Temas que interesan al usuario
- Otros usuarios que el usuario sigue
- ¿Qué es tendencia / popular?
- …
De hecho, es importante tener en cuenta que en Quora estamos interesados tanto en involucrar a los usuarios para que lean contenido interesante como en presentar preguntas para las que los usuarios puedan escribir contenido interesante. Por lo tanto, tenemos que incluir características que se refieren tanto al interés de las respuestas como a las preguntas. Para derivar esas características, utilizamos información derivada de las acciones realizadas por el usuario, el autor y el objeto (es decir, respuesta / pregunta). Esas acciones se consideran y agregan en diferentes ventanas temporales y se incorporan al algoritmo de clasificación. En realidad, hay muchas características derivadas diferentes que se incluyen en nuestro modelo de feed personalizado, y estamos constantemente experimentando para agregar más.
Otra consideración importante acerca de nuestra aplicación de clasificación de feeds es que debemos ser capaces de responder a las acciones, impresiones e incluso tendencias de los usuarios. Tenemos una colección cada vez mayor de millones de preguntas y respuestas que no pudimos tratar de clasificar en tiempo real para cada usuario. Para optimizar la experiencia, hemos implementado una solución de clasificación en varias etapas en la que se seleccionan y clasifican a los diferentes candidatos por adelantado antes de que se realice la clasificación final.
Recomendaciones
La clasificación personalizada descrita anteriormente ya es una forma de recomendación. Un enfoque similar se utiliza en diferentes casos de uso. Por ejemplo, el popular resumen de correo electrónico de Quora incluye una colección de historias que han sido seleccionadas y recomendadas para usted. Este es un modelo diferente de aprendizaje para clasificar que está optimizado para una función objetivo diferente.
Además de los algoritmos de clasificación, tenemos otras recomendaciones personalizadas que aparecen en diferentes partes del producto. Por ejemplo, en diferentes lugares, verá recomendaciones de personas o temas que debe seguir (ver más abajo).
preguntas relacionadas
Otra fuente de recomendaciones es dar a los usuarios preguntas que están algo relacionadas con la actual.
Las preguntas relacionadas se determinan utilizando otro modelo de aprendizaje automático que tiene en cuenta diferentes características que incluyen, por ejemplo, similitud textual, datos de visitas conjuntas u otras características compartidas, como temas. También se tienen en cuenta otras características relacionadas con la popularidad o la calidad de la pregunta. Es importante tener en cuenta que lo que hace una buena recomendación “similar” no es solo cuán similar es ese elemento a la fuente, sino la “interés” del objetivo. De hecho, uno de los problemas más complicados para cualquier modelo de máquina de “artículos relacionados” es cómo compensar la similitud frente a otros elementos relevantes.
Las preguntas relacionadas es un modelo que es particularmente efectivo para crear la participación de los usuarios desconectados cuando visitan la página de preguntas desde una búsqueda externa. Esa es una de las razones por las cuales, por ahora, este modelo de recomendación no está personalizado.
Duplicados
Las preguntas duplicadas son un caso extremo del caso de preguntas relacionadas descrito anteriormente. Este es un problema para Quora porque queremos asegurarnos de que todas las energías de los usuarios que responden a una pregunta en particular se compartan y se centren en el lugar correcto. También es importante señalar a los usuarios que tienen una pregunta y desean agregarla al sitio a respuestas preexistentes. Debido a esto, se realizan muchos esfuerzos para detectar preguntas duplicadas, especialmente en el momento de la creación.
Nuestra solución actual se basa en la capacitación de un clasificador binario entrenado con etiquetas duplicadas / no duplicadas. Utilizamos diferentes tipos de señales que van desde modelos textuales de espacio vectorial a características basadas en el uso.
Confianza del usuario / Inferencia de experiencia
En una aplicación como Quora, es importante entender qué tan confiable es un usuario. De hecho, no solo estamos interesados en responder esta pregunta de manera absoluta, sino en relación con un tema dado. Un usuario puede estar muy bien informado en algunos temas, pero no tanto en otros. En Quora utilizamos técnicas de ML para inferir la experiencia del usuario. Para entrenar esos modelos tenemos varias características importantes. No solo conocemos las respuestas que un usuario ha escrito en un tema determinado, sino que también conocemos los votos a favor, en contra o las opiniones que el usuario ha recibido sobre ellos. También sabemos cuántos “avales” tiene el usuario sobre el tema dado. Los avales son un reconocimiento explícito de la experiencia de alguien proveniente de otros usuarios.
La otra cosa importante a tener en cuenta es que la confianza / experiencia se propaga a través de la red y eso debe ser tenido en cuenta por los algoritmos. Por ejemplo, si recibo un voto positivo de un experto en Aprendizaje automático a una respuesta sobre Aprendizaje automático, esto debería contar más que un voto positivo de un usuario aleatorio sin experiencia en ese tema. Lo mismo ocurre con los avales y otras funciones de usuario a usuario.
Detección de spam y moderación
Un sitio como Quora que se enorgullece de mantener un umbral de alta calidad en el contenido tiene que estar muy atento a los intentos de jugar con el sistema mediante la introducción de spam, contenido malicioso o simplemente de muy baja calidad. Un modelo manual puro para revisar el contenido no se escala. La forma de abordar el problema, lo adivinó, es usar modelos ML para detectar estos problemas.
En Quora tenemos varios modelos que detectan diferentes problemas relacionados con la calidad del contenido. En la mayoría de los casos, el resultado de esos clasificadores no se usa directamente para tomar una decisión sobre el contenido, sino que se usa como una forma de alimentar esas preguntas / respuestas en colas de moderación que luego se revisan manualmente.
Predicción de creación de contenido
Una cosa muy importante a tener en cuenta acerca de Quora es el hecho de que estamos optimizando muchas partes del sistema no solo para crear una experiencia atractiva para los lectores, sino también para maximizar la buena calidad y el contenido en demanda que se está creando. Por esta razón, tenemos un modelo ML que predice la probabilidad de que un usuario escriba una respuesta a una pregunta dada. Esto permite que nuestro sistema priorice esas preguntas de diferentes maneras. Uno de ellos es el sistema automático A2A (Preguntar para responder) que envía estas preguntas a los escritores potenciales a través de notificaciones. Otros sistemas de clasificación explicados anteriormente también utilizarán esta probabilidad predicha.
Modelos
Quora ha probado muchos modelos diferentes para abordar los diferentes casos de uso descritos anteriormente. A veces usamos implementaciones de código abierto, pero muchas otras terminamos implementando versiones internas más eficientes o flexibles.
No entraré en detalles sobre qué modelo se usa y dónde, pero aquí hay una lista de modelos que se usan en diferentes lugares de nuestro sistema:
- Regresión logística
- Redes elásticas
- Árboles de decisión impulsados por gradiente
- Bosques al azar
- Redes neuronales
- LambdaMART
- Factorización matricial
- Modelos vectoriales y otras técnicas de PNL
- …
Conclusión
Como se describió anteriormente, Quora usa Machine Learning de muchas maneras diferentes. Si bien ya hemos podido obtener ganancias muy importantes mediante el uso de estos enfoques de LD, confiamos en que hay muchas más ganancias y seguimos invirtiendo en nuevas técnicas. Además, hay nuevas y emocionantes aplicaciones de ML en el futuro cercano en las que ya estamos empezando a pensar. Estas incluyen áreas como la clasificación de anuncios, la traducción automática y otras aplicaciones de PNL que se incorporarán directamente a las nuevas características del producto que planeamos agregar pronto.