Operación del aprendizaje automático en Mail.ru Mail

Operación del aprendizaje automático en Mail.ru Mail

Basado en mis discursos en Highload++ y DataFest Minsk 2019.

Hoy en día, para muchos, el correo es una parte integral de la vida en línea. Con su ayuda, realizamos correspondencia comercial, almacenamos todo tipo de información importante relacionada con finanzas, reservas de hotel, realización de pedidos y mucho más. A mediados de 2018, formulamos una estrategia de producto para el desarrollo del correo. ¿Cómo debería ser el correo moderno?

El correo debe ser inteligente, es decir, ayudar a los usuarios a navegar por el creciente volumen de información: filtrarla, estructurarla y proporcionarla de la forma más conveniente. Ella debe ser útil, permitiéndote resolver diversas tareas directamente en tu buzón, por ejemplo, pagar multas (una función que, lamentablemente, uso). Y al mismo tiempo, por supuesto, el correo debe proporcionar protección de la información, cortando el spam y protegiendo contra la piratería, es decir, ser seguro.

Estas áreas definen una serie de problemas clave, muchos de los cuales pueden resolverse eficazmente mediante el aprendizaje automático. A continuación se muestran ejemplos de funciones ya existentes desarrolladas como parte de la estrategia, una para cada dirección.

  • Respuesta inteligente. Mail tiene una función de respuesta inteligente. La red neuronal analiza el texto de la carta, comprende su significado y propósito y, como resultado, ofrece las tres opciones de respuesta más adecuadas: positiva, negativa y neutral. Esto ayuda a ahorrar mucho tiempo al responder cartas y, a menudo, también responde de una manera divertida y no estándar.
  • Agrupar correos electrónicosrelacionados con pedidos en tiendas online. A menudo compramos online y, por regla general, las tiendas pueden enviar varios correos electrónicos para cada pedido. Por ejemplo, desde AliExpress, el servicio más grande, llegan muchas cartas para un pedido, y calculamos que en el caso del terminal su número podría llegar hasta 29. Por lo tanto, utilizando el modelo de Reconocimiento de entidades nombradas, extraemos el número de pedido. y otra información del texto y agrupar todas las letras en un hilo. También mostramos información básica sobre el pedido en un cuadro separado, lo que facilita el trabajo con este tipo de correo electrónico.

    Operación del aprendizaje automático en Mail.ru Mail

  • antiphishing. El phishing es un tipo de correo electrónico fraudulento especialmente peligroso, con el que los atacantes intentan obtener información financiera (incluidas las tarjetas bancarias del usuario) e inicios de sesión. Estas cartas imitan las reales enviadas por el servicio, incluso visualmente. Por lo tanto, con la ayuda de Computer Vision, reconocemos logotipos y estilos de diseño de letras de grandes empresas (por ejemplo, Mail.ru, Sber, Alfa) y los tenemos en cuenta junto con el texto y otras características en nuestros clasificadores de spam y phishing. .

Aprendizaje automático

Un poco sobre el aprendizaje automático en el correo electrónico en general. El correo es un sistema muy cargado: una media de 1,5 millones de cartas al día pasan por nuestros servidores para 30 millones de usuarios de DAU. Alrededor de 30 sistemas de aprendizaje automático admiten todas las funciones y características necesarias.

Cada letra pasa por un proceso de clasificación completo. Primero cortamos el spam y dejamos buenos correos electrónicos. Los usuarios a menudo no notan el trabajo del antispam, porque entre el 95% y el 99% del spam ni siquiera termina en la carpeta correspondiente. El reconocimiento de spam es una parte muy importante de nuestro sistema, y ​​la más difícil, ya que en el campo del antispam hay una adaptación constante entre los sistemas de defensa y ataque, lo que supone un continuo reto de ingeniería para nuestro equipo.

A continuación, separamos las letras de las personas y los robots. Los correos electrónicos de las personas son los más importantes, por lo que les ofrecemos funciones como Respuesta inteligente. Las cartas de los robots se dividen en dos partes: transaccionales: son cartas importantes de servicios, por ejemplo, confirmaciones de compras o reservas de hotel, finanzas e informativas: son publicidad comercial, descuentos.

Creemos que los correos electrónicos transaccionales tienen la misma importancia que la correspondencia personal. Deben estar a mano, porque a menudo necesitamos encontrar rápidamente información sobre un pedido o una reserva de billete de avión, y dedicamos tiempo a buscar estas cartas. Por tanto, por comodidad, los dividimos automáticamente en seis categorías principales: viajes, pedidos, finanzas, billetes, inscripciones y, finalmente, multas.

Las cartas informativas son el grupo más grande y probablemente menos importante, que no requieren una respuesta inmediata, ya que nada significativo cambiará en la vida del usuario si no lee dicha carta. En nuestra nueva interfaz, los colapsamos en dos hilos: redes sociales y boletines, limpiando así visualmente la bandeja de entrada y dejando visibles solo los mensajes importantes.

Operación del aprendizaje automático en Mail.ru Mail

explotación

Una gran cantidad de sistemas provoca muchas dificultades de funcionamiento. Después de todo, los modelos se degradan con el tiempo, como cualquier software: las funciones se rompen, las máquinas fallan, el código se vuelve torcido. Además, los datos cambian constantemente: se añaden nuevos, se transforman los patrones de comportamiento de los usuarios, etc., por lo que un modelo sin el soporte adecuado funcionará cada vez peor con el tiempo.

No debemos olvidar que cuanto más profundamente penetre el aprendizaje automático en la vida de los usuarios, mayor será el impacto que tendrá en el ecosistema y, como resultado, más pérdidas financieras o ganancias podrán recibir los actores del mercado. Por lo tanto, en un número cada vez mayor de áreas, los jugadores se están adaptando al trabajo de los algoritmos de ML (los ejemplos clásicos son la publicidad, la búsqueda y el antispam ya mencionado).

Además, las tareas de aprendizaje automático tienen una peculiaridad: cualquier cambio, incluso menor, en el sistema puede generar mucho trabajo con el modelo: trabajo con datos, reentrenamiento, implementación, lo que puede llevar semanas o meses. Por lo tanto, cuanto más rápido cambie el entorno en el que operan sus modelos, más esfuerzo requerirá mantenerlos. Un equipo puede crear muchos sistemas y estar contento con ellos, pero luego gastar casi todos sus recursos en mantenerlos, sin la oportunidad de hacer nada nuevo. Una vez nos encontramos con una situación así en el equipo antispam. Y llegaron a la conclusión obvia de que el soporte debe automatizarse.

Automatización

¿Qué se puede automatizar? Casi todo, en realidad. He identificado cuatro áreas que definen la infraestructura de aprendizaje automático:

  • recopilación de datos;
  • entrenamiento adicional;
  • desplegar;
  • pruebas y seguimiento.

Si el entorno es inestable y cambia constantemente, entonces toda la infraestructura que rodea al modelo resulta mucho más importante que el modelo mismo. Puede que sea un buen clasificador lineal antiguo, pero si le proporciona las funciones adecuadas y obtiene buenos comentarios de los usuarios, funcionará mucho mejor que los modelos de última generación con todas las comodidades.

Bucle de retroalimentación

Este ciclo combina recopilación de datos, capacitación adicional e implementación; de hecho, todo el ciclo de actualización del modelo. ¿Por qué es importante? Mire el calendario de inscripción en el correo:

Operación del aprendizaje automático en Mail.ru Mail

Un desarrollador de aprendizaje automático ha implementado un modelo anti-bot que evita que los bots se registren en el correo electrónico. El gráfico cae a un valor en el que solo quedan usuarios reales. ¡Todo esta bien! Pero pasan cuatro horas, los robots modifican sus guiones y todo vuelve a la normalidad. En esta implementación, el desarrollador pasó un mes agregando funciones y reentrenando el modelo, pero el spammer pudo adaptarse en cuatro horas.

Para no ser tan doloroso y no tener que rehacer todo más tarde, primero debemos pensar en cómo será el ciclo de retroalimentación y qué haremos si el entorno cambia. Comencemos por recopilar datos: este es el combustible de nuestros algoritmos.

Сбор данных

Está claro que para las redes neuronales modernas, cuantos más datos, mejor y, de hecho, son generados por los usuarios del producto. Los usuarios pueden ayudarnos marcando datos, pero no podemos abusar de esto, porque en algún momento los usuarios se cansarán de completar sus modelos y cambiarán a otro producto.

Uno de los errores más comunes (aquí hago referencia a Andrew Ng) es centrarse demasiado en las métricas del conjunto de datos de prueba y no en los comentarios del usuario, que en realidad es la principal medida de la calidad del trabajo, ya que creamos un producto para el usuario. Si el usuario no comprende o no le gusta el trabajo del modelo, entonces todo se arruina.

Por lo tanto, el usuario siempre debería poder votar y se le debería proporcionar una herramienta para recibir comentarios. Si creemos que ha llegado al buzón una carta relacionada con finanzas, debemos marcarla como “finanzas” y dibujar un botón en el que el usuario pueda hacer clic y decir que esto no es finanzas.

Calidad de retroalimentación

Hablemos de la calidad de los comentarios de los usuarios. En primer lugar, usted y el usuario pueden poner diferentes significados en un concepto. Por ejemplo, usted y sus gerentes de producto piensan que "finanzas" significa cartas del banco, y el usuario piensa que una carta de la abuela sobre su pensión también se refiere a finanzas. En segundo lugar, hay usuarios a los que les encanta presionar botones sin ninguna lógica. En tercer lugar, el usuario puede estar profundamente equivocado en sus conclusiones. Un ejemplo sorprendente de nuestra práctica es la implementación de un clasificador. spam nigeriano, un tipo de spam muy divertido en el que se pide al usuario que retire varios millones de dólares de un pariente lejano que se encuentra de repente en África. Después de implementar este clasificador, verificamos los clics "No es spam" en estos correos electrónicos y resultó que el 80% de ellos eran spam nigeriano jugoso, lo que sugiere que los usuarios pueden ser extremadamente crédulos.

Y no olvidemos que no sólo las personas pueden hacer clic en los botones, sino también todo tipo de robots que se hacen pasar por un navegador. Por tanto, la retroalimentación bruta no es buena para aprender. ¿Qué puedes hacer con esta información?

Utilizamos dos enfoques:

  • Comentarios de ML vinculado. Por ejemplo, tenemos un sistema anti-bot online que, como mencioné, toma una decisión rápida basándose en un número limitado de señales. Y hay un segundo sistema, lento, que funciona después del hecho. Tiene más datos sobre el usuario, su comportamiento, etc. Como resultado, se toma la decisión más informada y, en consecuencia, tiene mayor precisión e integridad. Puede dirigir la diferencia en el funcionamiento de estos sistemas al primero como datos de entrenamiento. Así, un sistema más simple siempre intentará acercarse al rendimiento de uno más complejo.
  • Clasificación de clic. Simplemente puede clasificar cada clic del usuario, evaluar su validez y usabilidad. Esto lo hacemos en el correo antispam, utilizando los atributos del usuario, su historial, los atributos del remitente, el propio texto y el resultado de los clasificadores. Como resultado, obtenemos un sistema automático que valida los comentarios de los usuarios. Y como es necesario volver a capacitarlo con mucha menos frecuencia, su trabajo puede convertirse en la base de todos los demás sistemas. La principal prioridad en este modelo es la precisión, porque entrenar el modelo con datos inexactos está plagado de consecuencias.

Mientras limpiamos los datos y entrenamos aún más nuestros sistemas de aprendizaje automático, no debemos olvidarnos de los usuarios, porque para nosotros, miles, millones de errores en el gráfico son estadísticas, y para el usuario, cada error es una tragedia. Además del hecho de que el usuario de alguna manera debe vivir con su error en el producto, después de recibir comentarios, espera que se elimine una situación similar en el futuro. Por lo tanto, siempre vale la pena brindar a los usuarios no solo la oportunidad de votar, sino también corregir el comportamiento de los sistemas de ML, creando, por ejemplo, heurísticas personales para cada clic de retroalimentación; en el caso del correo, esta podría ser la capacidad de filtrar. dichas cartas por remitente y título para este usuario.

También es necesario construir un modelo basado en algunos informes o solicitudes de soporte en modo semiautomático o manual para que otros usuarios no sufran problemas similares.

Heurísticas para el aprendizaje.

Hay dos problemas con estas heurísticas y muletas. La primera es que el número cada vez mayor de muletas es difícil de mantener, y mucho menos su calidad y rendimiento a largo plazo. El segundo problema es que el error puede no ser frecuente y unos pocos clics para entrenar más el modelo no serán suficientes. Parecería que estos dos efectos no relacionados pueden neutralizarse significativamente si se aplica el siguiente enfoque.

  1. Creamos una muleta temporal.
  2. Enviamos datos al modelo, este se actualiza periódicamente, incluidos los datos recibidos. Aquí, por supuesto, es importante que las heurísticas tengan una alta precisión para no reducir la calidad de los datos en el conjunto de entrenamiento.
  3. Luego configuramos el monitoreo para activar la muleta, y si después de un tiempo la muleta ya no funciona y está completamente cubierta por el modelo, entonces puedes quitarla de manera segura. Ahora bien, es poco probable que este problema vuelva a ocurrir.

Por eso un ejército de muletas es muy útil. Lo principal es que su servicio es urgente y no permanente.

Entrenamiento adicional

El reentrenamiento es el proceso de agregar nuevos datos obtenidos como resultado de la retroalimentación de los usuarios u otros sistemas, y entrenar un modelo existente sobre ellos. Puede haber varios problemas con la formación adicional:

  1. Es posible que el modelo simplemente no admita capacitación adicional, sino que aprenda solo desde cero.
  2. En ninguna parte del libro de la naturaleza está escrito que una formación adicional mejorará con seguridad la calidad del trabajo en la producción. A menudo sucede lo contrario, es decir, sólo es posible el deterioro.
  3. Los cambios pueden ser impredecibles. Este es un punto bastante sutil que hemos identificado por nosotros mismos. Incluso si un nuevo modelo en una prueba A/B muestra resultados similares en comparación con el actual, esto no significa que funcionará de manera idéntica. Su trabajo puede diferir en sólo un uno por ciento, lo que puede traer nuevos errores o devolver los antiguos que ya han sido corregidos. Tanto nosotros como los usuarios ya sabemos cómo vivir con los errores actuales, y cuando surgen una gran cantidad de errores nuevos, es posible que el usuario tampoco comprenda lo que está sucediendo, porque espera un comportamiento predecible.

Por tanto, lo más importante en la formación adicional es conseguir que el modelo mejore, o al menos no empeore.

Lo primero que nos viene a la mente cuando hablamos de formación adicional es el enfoque de Aprendizaje Activo. ¿Qué quiere decir esto? Por ejemplo, el clasificador determina si un correo electrónico está relacionado con finanzas y alrededor de su límite de decisión agregamos una muestra de ejemplos etiquetados. Esto funciona bien, por ejemplo, en publicidad, donde hay muchos comentarios y se puede entrenar el modelo online. Y si hay poca retroalimentación, entonces obtenemos una muestra altamente sesgada en relación con la distribución de los datos de producción, a partir de la cual es imposible evaluar el comportamiento del modelo durante la operación.

Operación del aprendizaje automático en Mail.ru Mail

De hecho, nuestro objetivo es preservar viejos patrones, modelos ya conocidos y adquirir otros nuevos. La continuidad es importante aquí. El modelo, que a menudo nos esforzamos mucho en implementar, ya está funcionando, por lo que podemos centrarnos en su rendimiento.

En el correo se utilizan diferentes modelos: árboles, lineales, redes neuronales. Para cada uno creamos nuestro propio algoritmo de entrenamiento adicional. En el proceso de formación adicional, no solo recibimos nuevos datos, sino también, a menudo, nuevas características que tendremos en cuenta en todos los algoritmos siguientes.

Modelos lineales

Digamos que tenemos regresión logística. Creamos un modelo de pérdidas a partir de los siguientes componentes:

  • LogLoss en nuevos datos;
  • regularizamos los pesos de las nuevas funciones (no tocamos las antiguas);
  • también aprendemos de datos antiguos para preservar viejos patrones;
  • y, quizás, lo más importante: agregamos Regularización Armónica, lo que garantiza que los pesos no cambiarán mucho con respecto al modelo anterior según la norma.

Dado que cada componente de Pérdida tiene coeficientes, podemos seleccionar los valores óptimos para nuestra tarea mediante validación cruzada o en función de los requisitos del producto.

Operación del aprendizaje automático en Mail.ru Mail

Деревья

Pasemos a los árboles de decisión. Hemos compilado el siguiente algoritmo para entrenamiento adicional de árboles:

  1. La producción gestiona un bosque de entre 100 y 300 árboles, que se entrena con un conjunto de datos antiguo.
  2. Al final eliminamos M = 5 piezas y agregamos 2M = 10 nuevas, entrenadas en todo el conjunto de datos, pero con un peso alto para los nuevos datos, lo que naturalmente garantiza un cambio incremental en el modelo.

Evidentemente, con el tiempo, el número de árboles aumenta considerablemente y es necesario reducirlos periódicamente para cumplir con los plazos. Para hacer esto, utilizamos la ahora omnipresente Destilación del Conocimiento (KD). Brevemente sobre el principio de su funcionamiento.

  1. Tenemos el modelo "complejo" actual. Lo ejecutamos en el conjunto de datos de entrenamiento y obtenemos la distribución de probabilidad de clase en la salida.
  2. A continuación, entrenamos el modelo de estudiante (el modelo con menos árboles en este caso) para repetir los resultados del modelo utilizando la distribución de clases como variable objetivo.
  3. Es importante señalar aquí que no utilizamos el marcado del conjunto de datos de ninguna manera y, por lo tanto, podemos utilizar datos arbitrarios. Por supuesto, utilizamos una muestra de datos del flujo de combate como muestra de entrenamiento para el modelo de estudiante. Así, el conjunto de entrenamiento nos permite asegurar la precisión del modelo, y la muestra de flujo garantiza un desempeño similar en la distribución de producción, compensando el sesgo del conjunto de entrenamiento.

Operación del aprendizaje automático en Mail.ru Mail

La combinación de estas dos técnicas (agregar árboles y reducir periódicamente su número mediante la Destilación del Conocimiento) asegura la introducción de nuevos patrones y una continuidad completa.

Con la ayuda de KD, también realizamos diferentes operaciones en las características del modelo, como eliminar características y trabajar en espacios. En nuestro caso, tenemos una serie de características estadísticas importantes (por remitentes, hashes de texto, URL, etc.) que se almacenan en la base de datos y que tienden a fallar. El modelo, por supuesto, no está preparado para tal desarrollo de eventos, ya que las situaciones de falla no ocurren en el conjunto de entrenamiento. En tales casos, combinamos KD y técnicas de aumento: cuando entrenamos para parte de los datos, eliminamos o restablecemos las características necesarias y tomamos las etiquetas originales (salidas del modelo actual), y el modelo del estudiante aprende a repetir esta distribución. .

Operación del aprendizaje automático en Mail.ru Mail

Notamos que cuanto más grave es la manipulación del modelo, mayor es el porcentaje de muestra de hilo requerido.

La eliminación de características, la operación más simple, requiere solo una pequeña parte del flujo, ya que solo cambian un par de características y el modelo actual se entrenó en el mismo conjunto; la diferencia es mínima. Para simplificar el modelo (reducir el número de árboles varias veces), ya se requieren de 50 a 50. Y para las omisiones de características estadísticas importantes que afectarán seriamente el rendimiento del modelo, se requiere aún más flujo para nivelar el trabajo del Nuevo modelo resistente a omisiones en todo tipo de letras.

Operación del aprendizaje automático en Mail.ru Mail

Texto rápido

Pasemos a FastText. Permítanme recordarles que la representación (Incrustación) de una palabra consiste en la suma de la incrustación de la palabra misma y todas sus letras N-gramas, generalmente trigramas. Dado que puede haber muchos trigramas, se utiliza Bucket Hashing, es decir, convertir todo el espacio en un determinado mapa hash fijo. Como resultado, se obtiene la matriz de peso con la dimensión de la capa interna por número de palabras + cubos.

Con entrenamiento adicional, aparecen nuevos signos: palabras y trigramas. No sucede nada significativo en la formación de seguimiento estándar de Facebook. Sólo los pesos antiguos con entropía cruzada se vuelven a entrenar con datos nuevos. Por lo tanto, no se utilizan nuevas funciones; por supuesto, este enfoque tiene todas las desventajas descritas anteriormente asociadas con la imprevisibilidad del modelo en producción. Por eso modificamos un poco FastText. Agregamos todos los pesos nuevos (palabras y trigramas), expandimos toda la matriz con entropía cruzada y agregamos regularización armónica por analogía con el modelo lineal, lo que garantiza un cambio insignificante en los pesos antiguos.

Operación del aprendizaje automático en Mail.ru Mail

CNN

Las redes convolucionales son un poco más complicadas. Si las últimas capas se completan en la CNN, entonces, por supuesto, se puede aplicar la regularización armónica y garantizar la continuidad. Pero si se requiere capacitación adicional de toda la red, dicha regularización ya no se podrá aplicar a todas las capas. Sin embargo, existe una opción para entrenar incrustaciones complementarias mediante Triplet Loss (articulo original).

triple pérdida

Usando una tarea antiphishing como ejemplo, veamos Triplet Loss en términos generales. Tomamos nuestro logo, así como ejemplos positivos y negativos de logos de otras empresas. Minimizamos la distancia entre los primeros y maximizamos la distancia entre los segundos, lo hacemos con un pequeño espacio para asegurar una mayor compacidad de las clases.

Operación del aprendizaje automático en Mail.ru Mail

Si entrenamos más la red, entonces nuestro espacio métrico cambia por completo y se vuelve completamente incompatible con el anterior. Este es un problema grave en problemas que utilizan vectores. Para solucionar este problema, mezclaremos incrustaciones antiguas durante el entrenamiento.

Hemos agregado nuevos datos al conjunto de entrenamiento y estamos entrenando la segunda versión del modelo desde cero. En la segunda etapa, entrenamos aún más nuestra red (Finetuning): primero se completa la última capa y luego se descongela toda la red. En el proceso de composición de tripletes, calculamos solo una parte de las incrustaciones utilizando el modelo entrenado, el resto, utilizando el anterior. Así, en el proceso de formación adicional, aseguramos la compatibilidad de los espacios métricos v1 y v2. Una versión única de regularización armónica.

Operación del aprendizaje automático en Mail.ru Mail

Toda la arquitectura

Si tomamos como ejemplo el sistema completo utilizando antispam, entonces los modelos no están aislados, sino anidados unos dentro de otros. Tomamos fotografías, texto y otras funciones; usando CNN y Fast Text obtenemos incrustaciones. A continuación, se aplican clasificadores encima de las incrustaciones, que proporcionan puntuaciones para varias clases (tipos de letras, spam, presencia de un logotipo). Las señales y carteles ya se adentran en el bosque de árboles para que se tome la decisión final. Los clasificadores individuales en este esquema permiten interpretar mejor los resultados del sistema y, más específicamente, volver a entrenar los componentes en caso de problemas, en lugar de introducir todos los datos en árboles de decisión en forma cruda.

Operación del aprendizaje automático en Mail.ru Mail

Como resultado, garantizamos la continuidad en todos los niveles. En el nivel inferior de CNN y Fast Text utilizamos regularización armónica; para los clasificadores del medio también utilizamos regularización armónica y calibración de velocidad para mantener la coherencia de la distribución de probabilidad. Bueno, el impulso de árboles se entrena de forma incremental o mediante la destilación de conocimientos.

En general, mantener un sistema de aprendizaje automático anidado suele ser complicado, ya que cualquier componente en el nivel inferior conduce a una actualización de todo el sistema superior. Pero como en nuestra configuración cada componente cambia ligeramente y es compatible con el anterior, todo el sistema se puede actualizar pieza por pieza sin necesidad de volver a entrenar toda la estructura, lo que permite soportarlo sin grandes gastos generales.

Desplegar

Hemos discutido la recopilación de datos y el entrenamiento adicional de diferentes tipos de modelos, por lo que pasamos a su implementación en el entorno de producción.

Pruebas A/B

Como dije antes, en el proceso de recopilación de datos, generalmente obtenemos una muestra sesgada, a partir de la cual es imposible evaluar el desempeño de producción del modelo. Por lo tanto, al implementar, el modelo debe compararse con la versión anterior para comprender cómo van realmente las cosas, es decir, realizar pruebas A/B. De hecho, el proceso de implementación y análisis de gráficos es bastante rutinario y puede automatizarse fácilmente. Implementamos nuestros modelos gradualmente para el 5%, 30%, 50% y 100% de los usuarios, mientras recopilamos todas las métricas disponibles sobre las respuestas de los modelos y los comentarios de los usuarios. En el caso de algunos valores atípicos graves, automáticamente revertimos el modelo y, en otros casos, después de haber recopilado una cantidad suficiente de clics de los usuarios, decidimos aumentar el porcentaje. Como resultado, llevamos el nuevo modelo al 50% de los usuarios de forma completamente automática y una persona aprobará el lanzamiento para toda la audiencia, aunque este paso se puede automatizar.

Sin embargo, el proceso de prueba A/B ofrece margen de optimización. El caso es que cualquier test A/B es bastante largo (en nuestro caso tarda de 6 a 24 horas dependiendo de la cantidad de feedback), lo que lo hace bastante caro y con recursos limitados. Además, se requiere un porcentaje de flujo suficientemente alto para la prueba para acelerar esencialmente el tiempo total de la prueba A/B (reclutar una muestra estadísticamente significativa para evaluar métricas en un porcentaje pequeño puede llevar mucho tiempo), lo que hace que El número de espacios A/B es extremadamente limitado. Obviamente, sólo necesitamos probar los modelos más prometedores, de los cuales recibimos bastantes durante el proceso de formación adicional.

Para resolver este problema, entrenamos un clasificador independiente que predice el éxito de una prueba A/B. Para hacer esto, tomamos como características estadísticas de toma de decisiones, precisión, recuperación y otras métricas en el conjunto de entrenamiento, en el diferido y en la muestra del flujo. También comparamos el modelo con el actual en producción, con heurísticas, y tenemos en cuenta la Complejidad del modelo. Utilizando todas estas características, un clasificador entrenado en el historial de pruebas evalúa los modelos candidatos, en nuestro caso son bosques de árboles, y decide cuál usar en la prueba A/B.

Operación del aprendizaje automático en Mail.ru Mail

En el momento de la implementación, este enfoque nos permitió aumentar varias veces el número de pruebas A/B exitosas.

Pruebas y monitoreo

Las pruebas y el seguimiento, por extraño que parezca, no perjudican nuestra salud, sino al contrario, la mejoran y nos liberan de estrés innecesario. Las pruebas le permiten prevenir una falla y el monitoreo le permite detectarla a tiempo para reducir el impacto en los usuarios.

Es importante comprender aquí que, tarde o temprano, su sistema siempre cometerá errores; esto se debe al ciclo de desarrollo de cualquier software. Al comienzo del desarrollo del sistema siempre hay muchos errores hasta que todo se calma y se completa la etapa principal de innovación. Pero con el tiempo, la entropía pasa factura y los errores vuelven a aparecer, debido a la degradación de los componentes y a los cambios en los datos, de los que hablé al principio.

Aquí me gustaría señalar que cualquier sistema de aprendizaje automático debe considerarse desde el punto de vista de sus beneficios a lo largo de todo su ciclo de vida. El siguiente gráfico muestra un ejemplo de cómo funciona el sistema para detectar un tipo raro de spam (la línea en el gráfico está cerca de cero). Un día, debido a un atributo almacenado en caché incorrectamente, se volvió loca. Quiso la suerte que no se controlara la activación anormal y, como resultado, el sistema comenzó a guardar grandes cantidades de cartas en la carpeta "spam" en el límite de toma de decisiones. A pesar de corregir las consecuencias, el sistema ya ha cometido errores tantas veces que no se amortizará ni siquiera en cinco años. Y esto es un completo fracaso desde el punto de vista del ciclo de vida del modelo.

Operación del aprendizaje automático en Mail.ru Mail

Por tanto, algo tan sencillo como la monitorización puede convertirse en clave en la vida de un modelo. Además de las métricas estándar y obvias, consideramos la distribución de las respuestas y puntuaciones del modelo, así como la distribución de los valores de las características clave. Usando la divergencia KL, podemos comparar la distribución actual con la histórica o los valores en la prueba A/B con el resto del flujo, lo que nos permite notar anomalías en el modelo y revertir los cambios de manera oportuna.

En la mayoría de los casos, lanzamos nuestras primeras versiones de sistemas utilizando heurísticas simples o modelos que usaremos como seguimiento en el futuro. Por ejemplo, monitoreamos el modelo NER en comparación con los modelos habituales para tiendas en línea específicas, y si la cobertura del clasificador cae en comparación con ellos, entonces entendemos las razones. ¡Otro uso útil de la heurística!

resultados

Repasemos nuevamente las ideas clave del artículo.

  • cubierta de fibra. Siempre pensamos en el usuario: cómo vivirá con nuestros errores, cómo podrá denunciarlos. No olvide que los usuarios no son una fuente pura de retroalimentación para los modelos de capacitación y deben aclararse con la ayuda de sistemas auxiliares de ML. Si no es posible recoger la señal del usuario, buscamos fuentes alternativas de retroalimentación, por ejemplo, sistemas conectados.
  • Entrenamiento adicional. Lo principal aquí es la continuidad, por eso confiamos en el modelo de producción actual. Entrenamos nuevos modelos para que no difieran mucho del anterior debido a la regularización armónica y trucos similares.
  • Desplegar. La implementación automática basada en métricas reduce en gran medida el tiempo de implementación de modelos. El seguimiento de las estadísticas y la distribución de la toma de decisiones, el número de caídas de los usuarios es imprescindible para un sueño reparador y un fin de semana productivo.

Bueno, espero que esto le ayude a mejorar sus sistemas de aprendizaje automático más rápidamente, a comercializarlos más rápido y a hacerlos más confiables y menos estresantes.

Fuente: habr.com

Añadir un comentario