Reglas de aprendizaje automático:

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Recomendaciones para la ingeniería de AA

Martín Zinkevich

El objetivo de este documento es ayudar a las personas con conocimientos básicos del aprendizaje automático a aprovechar los beneficios de las recomendaciones de Google en el aprendizaje automático. Presenta un estilo para el aprendizaje automático, similar a la Guía de estilo de Google C++ y a otras guías populares de programación práctica. Si tomaste una clase sobre aprendizaje automático, o bien compilaste o trabajaste en un modelo de aprendizaje automático, entonces tienes los conocimientos necesarios para leer este documento.

Martin Zinkevich presenta diez de sus reglas favoritas del aprendizaje automático. Siga leyendo para conocer las 43 reglas.

Terminología

Los siguientes términos aparecerán repetidamente en nuestro debate sobre el aprendizaje automático eficaz:

  • Instancia: El aspecto sobre el que deseas hacer una predicción. Por ejemplo, la instancia puede ser una página web que deseas clasificar como "sobre gatos" o "no sobre gatos".
  • Etiqueta: Una respuesta a la tarea de predicción, que se puede generar mediante un sistema de aprendizaje automático o a partir de los datos de entrenamiento. Por ejemplo, la etiqueta para una página web puede ser "sobre gatos".
  • Atributo: Una propiedad de una instancia utilizada en una tarea de predicción. Por ejemplo, una página web puede tener un atributo "contiene la palabra gato".
  • Columna de atributos: Un conjunto de atributos relacionados, como el conjunto de todos los países posibles donde es posible que vivan los usuarios. Un ejemplo puede tener uno o más atributos presentes en una columna de atributos. "Columna de atributos" es una terminología específica de Google. Una columna de atributos se conoce como un "espacio de nombres" en el sistema de VW (en Yahoo/Microsoft) o como un campo.
  • Ejemplo: Una instancia (con sus atributos) y una etiqueta.
  • Modelo: Una representación estadística de una tarea de predicción Entrenas un modelo con ejemplos y, luego, lo usas para hacer predicciones.
  • Métrica: Es un número que te interesa. Pueden optimizarse directamente o no.
  • Objetivo: Una métrica que tu algoritmo intenta optimizar.
  • Canalización: La infraestructura que rodea a un algoritmo de aprendizaje automático. Incluye recopilar los datos del frontend, colocarlos en archivos de datos de entrenamiento, entrenar uno o más modelos y exportarlos a producción.
  • Tasa de clics: El porcentaje de visitantes a una página web que hacen clic en el vínculo de un anuncio.

Descripción general

Para crear buenos productos:

aprende sobre el aprendizaje automático como el gran ingeniero que eres, no como el gran experto en aprendizaje automático que no eres.

De hecho, la mayoría de los problemas que debes enfrentar son problemas de ingeniería. Incluso con todos los recursos de un gran experto en aprendizaje automático, la mayoría de las ganancias provienen de grandes atributos, no de excelentes algoritmos de aprendizaje automático. El enfoque básico es el siguiente:

  1. Asegúrate de que tu canalización sea sólida de extremo a extremo.
  2. Comience con un objetivo razonable.
  3. Agrega funciones de sentido común de una manera simple.
  4. Asegúrate de que tu canalización se mantenga sólida.

Este enfoque funcionará bien durante un período prolongado. Abandona este enfoque solo cuando no hay más trucos simples para llegar más lejos. Agregar complejidad ralentiza las versiones futuras.

Una vez que hayas agotado los trucos simples, el aprendizaje automático de vanguardia puede ser en el futuro. Consulta la sección en los proyectos de aprendizaje automático de la Fase III.

Este documento se organiza de la siguiente manera:

  1. La primera parte te permite determinar si es el momento indicado para desarrollar un sistema de aprendizaje automático.
  2. La segunda parte se trata de implementar la primera canalización.
  3. La tercera parte cubre el lanzamiento y la iteración mientras se agregan atributos nuevos a la canalización, la evaluación de los modelos y la desviación entre el entrenamiento y la publicación.
  4. La parte final trata sobre qué hacer cuando alcanzas una meseta.
  5. Luego, hay una lista del trabajo relacionado y un apéndice con información sobre los sistemas que se usan comúnmente como ejemplos en este documento.

Antes del aprendizaje automático

Regla n.o 1: No tengas miedo de lanzar un producto sin aprendizaje automático.

El aprendizaje automático es genial, pero requiere datos. En teoría, puedes tomar datos de un problema diferente y, luego, modificar el modelo para un producto nuevo, pero es probable que esto tenga un bajo rendimiento en la heurística básica. Si crees que el aprendizaje automático te dará un impulso del 100%, una heurística te permitirá alcanzar el 50% de ese camino.

Por ejemplo, si clasificas apps en un mercado de apps, podrías usar la tasa de instalación o la cantidad de instalaciones como heurística. Si detectas spam, filtra los publicadores que ya enviaron spam. Tampoco tengas miedo de usar la edición humana. Si necesitas clasificar contactos, clasifica el que se usó más recientemente como el más alto (o clasifica el orden alfabético). Si el aprendizaje automático no es absolutamente obligatorio para tu producto, no lo uses hasta que tengas datos.

Regla n.o 2: Primero, diseña e implementa métricas.

Antes de formalizar lo que hará tu sistema de aprendizaje automático, realiza un seguimiento tanto como sea posible en tu sistema actual. Hazlo por los siguientes motivos:

  1. Es más fácil obtener permiso de los usuarios del sistema desde el comienzo.
  2. Si crees que algo puede ser una preocupación en el futuro, es mejor obtener datos históricos ahora.
  3. Si diseñas tu sistema con la instrumentación de métricas en mente, las cosas irán mejorando en el futuro. Específicamente, no querrás buscar strings en registros para instrumentar tus métricas.
  4. Notarás que todo cambia y qué no cambia. Por ejemplo, supongamos que deseas optimizar directamente a los usuarios activos por un día. Sin embargo, durante las primeras manipulaciones del sistema, es posible que notes que las alteraciones dramáticas de la experiencia del usuario no cambian esta métrica de forma notoria.

El equipo de Google Plus mide las expansiones por lectura, las veces que se comparte el contenido por lectura, los +1 por lectura, los comentarios por lectura, los comentarios por usuario, la cantidad de veces que se comparte el usuario, etc., que usan para calcular la calidad de una publicación al momento de la publicación. Además, ten en cuenta que es importante un marco de trabajo experimental, en el que puedes agrupar usuarios y agregar estadísticas por experimento. Consulta la regla n.o 12.

Si recopilas métricas de forma más liberal, puedes obtener un panorama más amplio de tu sistema. ¿Notas algún problema? Agrega una métrica para seguirla. ¿Te entusiasma el cambio cuantitativo en la última versión? Agrega una métrica para seguirla.

Regla n.o 3: Elige aprendizaje automático en lugar de una heurística compleja.

Una simple heurística puede hacer que tu producto llegue a la tienda. Una heurística compleja no es sostenible. Una vez que tengas los datos y una idea básica de lo que intentas lograr, continúa con el aprendizaje automático. Al igual que en la mayoría de las tareas de ingeniería de software, debes actualizar el enfoque de forma constante, ya sea un modelo heurístico o un aprendizaje automático. Notarás que el modelo de aprendizaje automático es más fácil de actualizar y mantener (consulta la regla n.o 16).

Fase I de AA: Su primera canalización

Enfócate en la infraestructura de tu sistema para tu primera canalización. Si bien es divertido pensar en todo el aprendizaje automático imaginativo que realizarás, será difícil determinar qué sucede si no confías en tu canalización.

Regla n.o 4: Mantén el primer modelo simple y obtén la infraestructura adecuada.

El primer modelo proporciona el mayor impulso para tu producto, por lo que no necesita ser elegante. Sin embargo, te encontrarás con muchos más problemas de infraestructura de los que esperas. Antes de que alguien pueda usar tu nuevo y sofisticado sistema de aprendizaje automático, debes determinar lo siguiente:

  • Cómo obtener ejemplos para tu algoritmo de aprendizaje
  • Un primer corte en cuanto a lo que significa "bueno" y "malo" para su sistema.
  • Cómo integrar el modelo en tu aplicación Puedes aplicar el modelo en vivo o procesarlo previamente en ejemplos sin conexión y almacenar los resultados en una tabla. Por ejemplo, es posible que desees clasificar con anterioridad las páginas web y almacenar los resultados en una tabla, pero también puedes clasificar los mensajes de chat en vivo.

Elegir funciones simples facilita lo siguiente:

  • Las funciones alcanzan su algoritmo de aprendizaje correctamente.
  • El modelo aprende ponderaciones razonables.
  • Los atributos llegan a tu modelo en el servidor correctamente.

Una vez que tienes un sistema que hace estas tres tareas de manera confiable, hiciste la mayor parte del trabajo. Tu modelo simple te proporciona métricas de referencia y un comportamiento de referencia que puedes usar para probar modelos más complejos. Algunos equipos buscan un primer lanzamiento "neutral": un primer lanzamiento que da de baja explícitamente las prioridades del aprendizaje automático para evitar distracciones.

Regla n.o 5: Prueba la infraestructura independientemente del aprendizaje automático.

Asegúrate de que la infraestructura se pueda probar y de que las partes de aprendizaje del sistema estén encapsuladas para que puedas probar todo a su alrededor. En particular, las siguientes:

  1. Prueba ingresar datos al algoritmo. Verifica que las columnas de atributos que deben propagarse estén propagadas. Cuando la privacidad lo permita, inspecciona de forma manual la entrada de tu algoritmo de entrenamiento. Si es posible, verifica las estadísticas en tu canalización en comparación con las estadísticas para los mismos datos procesados en otro lugar.
  2. Prueba obtener modelos del algoritmo de entrenamiento. Asegúrate de que el modelo del entorno de entrenamiento proporcione la misma puntuación que el modelo del entorno de entrega (consulta la regla n.o 37).

El aprendizaje automático tiene un elemento de impredecibilidad, así que asegúrate de tener pruebas para el código a fin de crear ejemplos en el entrenamiento y la entrega, y que puedas cargar y usar un modelo fijo durante la entrega. Además, es importante comprender los datos: consulta Consejos prácticos para el análisis de conjuntos de datos grandes y complejos.

Regla n.o 6: Ten cuidado con la pérdida de datos cuando copias canalizaciones.

A menudo, para crear una canalización, copiamos una existente (es decir, la programación a ciegas), y la canalización anterior descarta datos que necesitamos en la canalización nueva. Por ejemplo, la canalización para la vista Lo más interesante de Google+ pierde las publicaciones anteriores (porque intenta calificar las publicaciones nuevas). Esta canalización se copió para usarla en las Novedades de Google+, donde las publicaciones anteriores todavía tienen valor. Sin embargo, la canalización sigue perdiendo publicaciones antiguas. Otro patrón común es solo registrar los datos que vio el usuario. Por lo tanto, estos datos son inútiles si queremos modelar la razón por la cual el usuario no vio una publicación en particular, porque se eliminaron todos los ejemplos negativos. Ocurrió un problema similar en Play. Mientras se trabajaba en la página principal de Play Apps, se creó una canalización nueva que también contenía ejemplos de la página de destino de Play Juegos sin ninguna función para desambiguar el origen de cada ejemplo.

Regla n.o 7: Convierte la heurística en atributos o gestiónalos de forma externa.

Por lo general, los problemas que el aprendizaje automático intenta resolver no son completamente nuevos. Existe un sistema para clasificar, clasificar o el problema que intentes resolver. Esto significa que hay un montón de reglas y heurística. Estas mismas heurísticas pueden ayudarte a mejorar el aprendizaje automático. Tus heurísticas deben extraerse por cualquier información que tengan, por dos razones. Primero, la transición a un sistema de aprendizaje automático será más sencilla. En segundo lugar, esas reglas suelen contener mucha intuición sobre el sistema que no quieres desechar. Existen cuatro maneras de usar una heurística existente:

  • Procesar previamente con la heurística Si la función es increíble, esta es una opción. Por ejemplo, si en un filtro de spam el remitente ya se incluyó en la lista negra, no intentes volver a obtener información sobre qué significa "lista negra". Bloquea el mensaje. Este enfoque tiene más sentido en tareas de clasificación binaria.
  • Crea un elemento. Crear una característica directamente a partir de la heurística es genial. Por ejemplo, si usas una heurística para calcular una puntuación de relevancia para un resultado de consulta, puedes incluir la puntuación como el valor de un atributo. Más adelante, es posible que desees usar técnicas de aprendizaje automático para masajear el valor (por ejemplo, convertirlo en uno de un conjunto finito de valores discretos o combinarlo con otros atributos), pero comienza con el valor sin procesar que produce la heurística.
  • Extrae las entradas sin procesar de la heurística. Si existe una heurística para las apps que combina la cantidad de instalaciones, la cantidad de caracteres en el texto y el día de la semana, considera separar estos datos y enviar estas entradas al aprendizaje por separado. Aquí se aplican algunas técnicas que se aplican a los conjuntos (consulta la regla n.o 40).
  • Modifica la etiqueta. Esta es una opción cuando sientes que la heurística captura información que no está contenida actualmente en la etiqueta. Por ejemplo, si intentas maximizar la cantidad de descargas, pero también deseas obtener contenido de calidad, la solución puede ser multiplicar la etiqueta por la cantidad promedio de estrellas que recibió la app. Hay mucho libertad. Consulte "Su primer objetivo".

Ten en cuenta la complejidad agregada cuando uses la heurística en un sistema de AA. Usar una heurística antigua en tu nuevo algoritmo de aprendizaje automático puede ayudar a crear una transición sin problemas, pero piensa si existe una manera más simple de lograr el mismo efecto.

Supervisión

En general, practica una buena higiene de alertas, como hacer que las alertas sean prácticas y tener una página de panel.

Regla n.o 8: Conoce los requisitos de actualización de tu sistema.

¿Cuánto se degrada el rendimiento si tienes un modelo que tiene un día de antigüedad? ¿Una semana? ¿Un trimestre? Esta información puede ayudarte a comprender las prioridades de la supervisión. Si pierdes una calidad de producto significativa si el modelo no se actualiza durante un día, te recomendamos que un ingeniero lo observe de forma continua. La mayoría de los sistemas de publicación de anuncios tienen que administrar anuncios nuevos todos los días y deben actualizarse a diario. Por ejemplo, si el modelo de AA para Búsqueda de Google Play no está actualizado, puede tener un impacto negativo en menos de un mes. Algunos modelos de Lo más interesante en Google+ no tienen un identificador de publicaciones, por lo que pueden exportarlos con poca frecuencia. Otros modelos que tienen identificadores de publicación se actualizan con mucha más frecuencia. Además, ten en cuenta que la actualidad puede cambiar con el tiempo, en especial cuando se agregan o quitan columnas de atributos.

Regla n.o 9: Detecta problemas antes de exportar modelos.

Muchos sistemas de aprendizaje automático tienen una etapa en la que exportas el modelo para entregarlo. Si hay un problema con un modelo exportado, es un problema del usuario.

Realiza verificaciones de estado justo antes de exportar el modelo. Específicamente, asegúrate de que el rendimiento del modelo sea razonable para los datos retenidos. O, si tienes inquietudes persistentes con los datos, no exportes un modelo. Muchos equipos que implementan continuamente modelos comprueban el área bajo la curva ROC (o AUC) antes de la exportación. Los problemas sobre los modelos que no se exportaron requieren una alerta por correo electrónico, pero los problemas en un modelo para el usuario pueden requerir una página. Es mejor esperar y estar seguro antes de afectar a los usuarios.

Regla n.o 10: Busca las fallas silenciosas.

Este es un problema que ocurre más en los sistemas de aprendizaje automático que en otros tipos de sistemas. Supongamos que una tabla en particular que se une ya no se actualiza. El sistema de aprendizaje automático se ajustará y el comportamiento continuará siendo razonablemente bueno, con un decaimiento gradual. A veces, se encuentran tablas que están desactualizadas por meses, y una simple actualización mejora el rendimiento más que cualquier otro lanzamiento durante ese trimestre. La cobertura de una característica puede cambiar debido a cambios de implementación: por ejemplo, una columna de atributos podría propagarse en el 90% de los ejemplos y, de repente, disminuir hasta el 60% de los ejemplos. En una ocasión, Play tuvo una tabla que había estado inactiva durante 6 meses, y la actualización solo dio un aumento del 2% en la tasa de instalaciones. Si realizas un seguimiento de las estadísticas de los datos y, luego, los inspeccionas de forma manual en ocasiones, puedes reducir este tipo de fallas.

Regla n.o 11: Proporciona documentación y propietarios de las columnas de atributos.

Si el sistema es grande y hay muchas columnas de atributos, debes saber quién creó o mantiene cada columna de atributos. Si descubres que la persona que comprende una columna de atributos se va, asegúrate de que alguien tenga la información. Aunque muchas columnas de atributos tienen nombres descriptivos, es bueno tener una descripción más detallada de qué es el atributo, de dónde proviene y cómo se espera que ayude.

Su primer objetivo

Tienes muchas métricas o mediciones sobre el sistema que te interesan, pero tu algoritmo de aprendizaje automático a menudo requiere un solo objetivo, un número que tu algoritmo "prueba" para optimizar. Aquí distingo entre objetivos y métricas: una métrica es cualquier número que informa el sistema, que puede o no ser importante. Consulta también la regla n.o 2.

Regla n.o 12: No pienses demasiado qué objetivo eliges optimizar directamente.

Quieres ganar dinero, satisfacer a los usuarios y hacer del mundo un lugar mejor. Hay muchísimas métricas que te interesan y deberías medirlas a todas (consulta la regla n.o 2). Sin embargo, al principio del proceso de aprendizaje automático, notarás que todos aumentan, incluso aquellos que no optimizas directamente. Por ejemplo, supongamos que te importan la cantidad de clics y el tiempo en el sitio. Si optimiza la cantidad de clics, es probable que vea un aumento en el tiempo dedicado.

Por lo tanto, mantenlo simple y no te preocupes demasiado por equilibrar diferentes métricas cuando puedas aumentarlas con facilidad. Sin embargo, no lleves esta regla demasiado lejos: no confundas tu objetivo con el estado final del sistema (consulta la regla n.o 39). Además, si aumentas la métrica optimizada directamente, pero decides no iniciarla, es posible que debas revisar algunos objetivos.

Regla n.o 13: Elige una métrica simple, observable y atribuible para tu primer objetivo.

A menudo, no sabes cuál es el verdadero objetivo. Piensas que lo haces, pero luego, cuando observas los datos y el análisis en paralelo del sistema anterior y del sistema de AA nuevo, te das cuenta de que deseas ajustar el objetivo. Además, los diferentes miembros del equipo a menudo no están de acuerdo en el verdadero objetivo. El objetivo de AA debe ser algo fácil de medir y un proxy del objetivo "verdadero". De hecho, a menudo no existe un objetivo "verdadero" (consulta la regla n.o 39). Por lo tanto, entrena el objetivo de AA simple y considera tener una “capa de política” encima que te permita agregar lógica adicional (con suerte, una lógica muy simple) para realizar la clasificación final.

Lo más fácil de modelar es un comportamiento del usuario que se observa directamente y se puede atribuir a una acción del sistema:

  • ¿Se hizo clic en este vínculo clasificado?
  • ¿Se descargó este objeto clasificado?
  • ¿Se reenvió/respondió por correo electrónico este objeto clasificado?
  • ¿Este objeto se clasificó?
  • ¿El objeto que se muestra se marcó como spam, pornografía o ofensivo?

Evite modelar efectos indirectos al principio:

  • ¿El usuario realizó una visita al día siguiente?
  • ¿Cuánto tiempo visitó el usuario el sitio?
  • ¿Cuáles fueron los usuarios activos por día?

Los efectos indirectos son métricas excelentes y se pueden usar durante las pruebas A/B y durante las decisiones de lanzamiento.

Por último, no intentes hacer que el aprendizaje automático descubra lo siguiente:

  • ¿El usuario está feliz de usar el producto?
  • ¿El usuario está satisfecho con la experiencia?
  • ¿El producto mejora el bienestar general del usuario?
  • ¿Cómo afectará esto al estado general de la empresa?

Todos estos son importantes, pero también muy difíciles de medir. En su lugar, usa proxies: si el usuario está satisfecho, permanecerá en el sitio por más tiempo. Si el usuario está satisfecho, volverá a visitar el sitio mañana. En cuanto al bienestar y el estado de la empresa, se requiere el criterio humano para conectar cualquier objetivo de aprendizaje automático con la naturaleza del producto que vendes y tu plan empresarial.

Regla n.o 14: Comenzar con un modelo interpretable facilita la depuración.

La regresión lineal, la regresión logística y la regresión de Poisson están directamente motivadas por un modelo probabilístico. Cada predicción se puede interpretar como una probabilidad o un valor esperado. Esto facilita la depuración que los modelos que usan objetivos (pérdida de cero uno, varias pérdidas de bisagra, etc.) que tratan de optimizar directamente la precisión de clasificación o el rendimiento de la clasificación. Por ejemplo, si las probabilidades en el entrenamiento se desvían de las probabilidades predichas en paralelo o mediante la inspección del sistema de producción, esta desviación podría revelar un problema.

Por ejemplo, en la regresión lineal, logística o de Poisson, hay subconjuntos de datos en los que la expectativa promedio prevista es igual a la etiqueta promedio (calibrado con un momento o simplemente calibrado). Esto es verdadero suponiendo que no tienes regularización y que tu algoritmo ha convergido, y es aproximadamente verdadero en general. Si tienes un atributo que es 1 o 0 para cada ejemplo, entonces el conjunto de 3 ejemplos en el que ese atributo es 1 está calibrado. Además, si tienes un atributo que es 1 para cada ejemplo, se calibra el conjunto de todos los ejemplos.

Con modelos simples, es más fácil lidiar con ciclos de reacción (consulta la regla n.o 36). A menudo, usamos estas predicciones probabilísticas para tomar una decisión: p. ej., clasificar las publicaciones en el valor esperado decreciente (es decir, la probabilidad de hacer clic, descargar, etc.). Sin embargo, recuerda que cuando debes elegir qué modelo usar, la decisión es más importante que la probabilidad de los datos según el modelo (consulta la regla n.o 27).

Regla n.o 15: Separa el filtro de spam y la clasificación de calidad en una capa de política.

La clasificación de calidad es una buena obra, pero el filtro de spam es una guerra. Los indicadores que uses para determinar las publicaciones de alta calidad serán evidentes para quienes usen tu sistema y ajustarán sus publicaciones para que tengan estas propiedades. Por lo tanto, tu clasificación de calidad debe enfocarse en clasificar el contenido que se publica de buena fe. No debes descontar al alumno de clasificación de calidad por clasificar el spam demasiado. Del mismo modo, el contenido subido de tono debe manejarse por separado de la clasificación de calidad. El filtrado de spam es una historia diferente. Debes esperar que los atributos que necesitas generar cambien constantemente. A menudo, habrá reglas obvias que se incluirán en el sistema (si una publicación tiene más de tres votos de spam, no la recuperes, etcétera). Cualquier modelo aprendido deberá actualizarse a diario, si no más rápido. La reputación del creador del contenido será muy importante.

En algún nivel, se deberá integrar el resultado de estos dos sistemas. Ten en cuenta que filtrar el spam en los resultados de la búsqueda probablemente sea más agresivo que en los mensajes de correo electrónico. Esto es verdadero suponiendo que no tienes regularización y que tu algoritmo ha convergido. En general, esto es así. Además, se recomienda quitar el spam de los datos de entrenamiento para el clasificador de calidad.

Fase II de AA: Ingeniería de atributos

En la primera fase del ciclo de vida de un sistema de aprendizaje automático, los problemas importantes son incorporar los datos de entrenamiento en el sistema de aprendizaje, instrumentar las métricas de interés y crear una infraestructura de entrega. Una vez que tienes un sistema integral de extremo a extremo con pruebas de unidades y sistemas instrumentadas, comienza la fase II.

En la segunda fase, hay muchas frutas de bajo costo. Hay una variedad de características obvias que podrían incluirse en el sistema. Por lo tanto, la segunda fase del aprendizaje automático implica incorporar la mayor cantidad de atributos posible y combinarlos de formas intuitivas. Durante esta fase, todas las métricas deberían seguir aumentando. Habrá muchos lanzamientos y es un buen momento para incorporar muchos ingenieros que puedan unir todos los datos que necesitas a fin de crear un sistema de aprendizaje realmente increíble.

Regla n.o 16: Planifica el lanzamiento y la iteración.

No esperes que el modelo en el que estás trabajando ahora sea el último que lanzarás o, incluso, que alguna vez dejarás de hacerlo. Por lo tanto, considera si la complejidad que agregas con este lanzamiento ralentizará los lanzamientos futuros. Muchos equipos han lanzado un modelo por trimestre o más durante años. Existen tres razones básicas para lanzar modelos nuevos:

  • Estás creando nuevas funciones.
  • Estás ajustando la regularización y combinando atributos antiguos de formas nuevas.
  • Está ajustando el objetivo.

Sin embargo, darle algo de amor a un modelo puede ser bueno: revisar los datos que se ingresan en el ejemplo puede ayudar a encontrar señales nuevas y antiguas. Por lo tanto, a medida que compilas el modelo, piensa en lo fácil que es agregar, quitar o recombinar atributos. Piensa en lo fácil que es crear una copia nueva de la canalización y verificar su precisión. Piensa si es posible tener dos o tres copias en ejecución en paralelo. Por último, no te preocupes si la función 16 de 35 incluye esta versión de la canalización. La conseguirán el próximo trimestre.

Regla n.o 17: Comienza con los atributos observados directamente y los informados, en lugar de los atributos aprendidos.

Este puede ser un punto polémico, pero evita muchos errores. En primer lugar, describimos qué es un atributo aprendido. Un atributo aprendido es un atributo generado por un sistema externo (como un sistema de agrupamiento en clústeres no supervisado) o por el propio aprendizaje (p.ej., mediante un modelo factorizado o aprendizaje profundo). Ambas opciones pueden ser útiles, pero pueden tener muchos problemas, por lo que no deberían estar en el primer modelo.

Si usas un sistema externo para crear un atributo, recuerda que el sistema externo tiene su propio objetivo. El objetivo del sistema externo solo puede estar relacionado poco respecto de tu objetivo actual. Si tomas una instantánea del sistema externo, puede quedar desactualizada. Si actualizas los atributos desde el sistema externo, los significados pueden cambiar. Si usas un sistema externo para proporcionar una función, ten en cuenta que este enfoque requiere de mucho cuidado.

El problema principal con los modelos factorizados y los modelos profundos es que no son convexos. Por lo tanto, no hay garantía de que se pueda aproximar o encontrar una solución óptima, y que el mínimo local que se encuentra en cada iteración sea diferente. Esta variación hace que sea difícil determinar si el impacto de un cambio en tu sistema es significativo o aleatorio. Si creas un modelo sin atributos profundos, puedes obtener un excelente rendimiento del modelo de referencia. Después de lograr este modelo de referencia, puedes probar enfoques más esotéricos.

Regla n.o 18: Explora con funciones de contenido que generalizan en contextos diferentes.

A menudo, un sistema de aprendizaje automático es una parte pequeña de un panorama mucho más grande. Por ejemplo, si imaginas una publicación que podría usarse en Lo más interesante, muchas personas hacen +1 en una publicación, la comparten o la comentan antes de que aparezca en Lo más interesante. Si proporcionas esas estadísticas al alumno, esta puede promover publicaciones nuevas para las que no tiene datos en el contexto que está optimizando. YouTube Watch Next puede usar la cantidad de veces que se miró un video, que es la cantidad de veces que se miró un video después de otro desde la búsqueda de YouTube. También puedes usar calificaciones explícitas de usuarios. Por último, si tienes una acción del usuario que usas como etiqueta, ver esa acción en el documento en un contexto diferente puede ser una gran característica. Todas estas funciones te permiten incluir contenido nuevo en el contexto. Ten en cuenta que esto no se trata de personalización: primero, descubre si a alguien le gusta el contenido en este contexto. Luego, descubre a quién le gusta más o menos.

Regla n.o 19: Usa funciones muy específicas cuando puedas.

Con toneladas de datos, es más fácil aprender millones de atributos simples que unos pocos atributos complejos. Los identificadores de documentos que se recuperan y las consultas canónicas no proporcionan mucha generalización, pero alinean tu clasificación con tus etiquetas en las consultas principales. Por lo tanto, no temas grupos de atributos en los que cada uno se aplique a una fracción muy pequeña de datos, pero la cobertura total sea superior al 90%. Puedes usar la regularización para eliminar los atributos que se aplican a muy pocos ejemplos.

Regla n.o 20: Combina y modifica los elementos existentes a fin de crear nuevos atributos de formas comprensibles para los seres humanos.

Hay varias formas de combinar y modificar los atributos. Los sistemas de aprendizaje automático como TensorFlow te permiten preprocesar los datos mediante transformaciones. Los dos enfoques más estándares son las “discretizaciones” y las “combinaciones”.

La discretización consiste en tomar un atributo continuo y crear muchos atributos discretos a partir de él. Considera un atributo continuo, como la edad. Puedes crear un atributo que sea 1 cuando la edad es menor de 18, otro atributo que es 1 cuando la edad es entre 18 y 35, etcétera. No pienses demasiado en los límites de estos histogramas: los cuantiles básicos te darán la mayor parte del impacto.

Las combinaciones combinan dos o más columnas de atributos. Una columna de atributos, en la terminología de TensorFlow, es un conjunto de características homogéneas (p.ej., {male, Women}, {US, Canada, México}, etcétera). Una combinación es una columna de atributos nueva con características como, por ejemplo, {masculino, femenino} × {EE.UU., Canadá, México}. Esta nueva columna de atributos contendrá el atributo (masculino, Canadá). Si usas TensorFlow y le indicas que cree esta combinación, esta función (masculina y Canadá) estará presente en ejemplos que representan a hombres canadienses. Ten en cuenta que se necesitan grandes cantidades de datos para aprender modelos con combinaciones de tres, cuatro o más columnas de atributos de base.

Las combinaciones que producen columnas de atributos muy grandes pueden sobreajustar. Por ejemplo, imagina que estás realizando algún tipo de búsqueda y tienes una columna de atributos con palabras en la consulta y una columna de atributos con palabras en el documento. Puedes combinarlos con una combinación, pero obtendrás muchos atributos (consulta la regla n.o 21).

Cuando se trabaja con texto, existen dos alternativas. Lo más drástico es un producto de puntos. Un producto escalar en su forma más simple simplemente cuenta la cantidad de palabras en común entre la consulta y el documento. Esta característica se puede discretizar. Otro enfoque es una intersección: tendremos un atributo que está presente solo si la palabra "poni" aparece en el documento y en la consulta, y otro atributo que está presente si y solo si la palabra "está" tanto en el documento como en la consulta.

Regla n.o 21: La cantidad de pesos de atributos que puedes aprender en un modelo lineal es casi proporcional a la cantidad de datos que tienes.

Existen resultados teóricos fascinantes sobre aprendizaje estadístico relacionados con el nivel de complejidad apropiado para un modelo, pero esta regla es todo lo que necesitas saber. Tuve conversaciones en las que los usuarios dudaban de que se pudiera aprender algo a partir de mil ejemplos o de que uno necesitaría más de un millón de ejemplos porque se atascan en un método de aprendizaje determinado. La clave es escalar el aprendizaje al tamaño de los datos:

  1. Si trabajas en un sistema de clasificación de búsqueda y hay millones de palabras diferentes en los documentos y en la consulta, y tienes 1, 000 ejemplos etiquetados, debes usar un producto de puntos entre las funciones de documentos y consultas, TF-IDF y media docena de otras funciones de ingeniería humana. 1, 000 ejemplos y una docena de atributos.
  2. Si tienes un millón de ejemplos, combina las columnas de atributos de documentos y consulta con la regularización y, posiblemente, la selección de atributos. Esto te brindará millones de atributos, pero, con la regularización, tendrás menos. Diez millones de ejemplos, tal vez cien mil atributos.
  3. Si tienes miles o cientos de miles de millones, puedes combinar las columnas de atributos con tokens de consultas y de documentos mediante la regularización y la selección de atributos. Tendrás mil millones de ejemplos y 10 millones de atributos. La teoría de aprendizaje estadístico raramente establece límites estrictos, pero es un buen punto de partida.

Al final, usa la regla n.o 28 para decidir qué funciones usar.

Regla n.o 22: Borra las funciones que ya no uses.

Los atributos no utilizados crean deuda técnica. Si descubres que no usas una función y que combinarla con otras no funciona, quítala de la infraestructura. Deseas mantener tu infraestructura limpia para que las funciones más prometedoras se puedan probar lo más rápido posible. Si es necesario, siempre se puede volver a agregar la función.

Tenga en cuenta la cobertura cuando considere qué funciones agregar o mantener. ¿Cuántos ejemplos cubre la función? Por ejemplo, si tienes algunas funciones de personalización, pero solo el 8% de los usuarios tiene funciones de personalización, esto no será muy efectivo.

Al mismo tiempo, algunos atributos pueden tener un peso mayor. Por ejemplo, si tienes un atributo que cubre solo el 1% de los datos, pero el 90% de los ejemplos que tienen el atributo son positivos, será un excelente atributo para agregar.

Análisis humano del sistema

Antes de pasar a la tercera fase del aprendizaje automático, es importante enfocarse en algo que no se enseña en ninguna clase de aprendizaje automático: cómo observar un modelo existente y mejorarlo. Esto es más un arte que una ciencia y, sin embargo, hay varios antipatrones que ayudan a evitar.

Regla n.o 23: No eres un usuario final típico.

Esta es, probablemente, la forma más fácil de que un equipo se entusiasme. Si bien hay muchos beneficios relacionados con la pesca (con un prototipo dentro del equipo) y la prueba interna (con un prototipo dentro de la empresa), los empleados deben analizar si el rendimiento es correcto. Si bien no debería usarse un cambio que sea evidentemente malo, todo lo que parezca razonablemente cercano a la producción debe probarse más a fondo, ya sea pagando a los laicos para que respondan preguntas en una plataforma de participación colectiva o a través de un experimento en vivo con usuarios reales.

Hay dos motivos. La primera es que estás demasiado cerca del código. Es posible que estés buscando un aspecto específico de las publicaciones, o que estés muy involucrado (p.ej., el sesgo de confirmación). El segundo es que su tiempo es demasiado valioso. Considera el costo de nueve ingenieros en una reunión de una hora y piensa cuántas etiquetas humanas contratadas compran en una plataforma de participación colectiva.

Si realmente quieres comentarios de usuarios, usa metodologías de experiencia del usuario. Crea usuarios-persona (puedes encontrar una descripción en el libro Sketching User Experiences [Cómo diseñar experiencias de usuario] de Bill Buxton) al comienzo del proceso y, luego, realiza pruebas de usabilidad (puedes encontrar una descripción en el documento Don’t Make Me Think [No me hagas pensar] de Steve Krug). Los usuarios persona implican crear un usuario hipotético. Por ejemplo, si tu equipo es solo hombres, podría ser útil diseñar una persona de usuario femenina de 35 años (completa con las características del usuario) y observar los resultados que genera en lugar de 10 resultados para hombres de 25 a 40 años. Incorporar personas reales para que reaccionen a tu sitio (de forma local o remota) en las pruebas de usabilidad también puede darte una nueva perspectiva.

Regla n.o 24: Mide el delta entre los modelos.

Una de las mediciones más fáciles y, a veces, más útiles que puedes realizar antes de que los usuarios miren tu modelo nuevo es calcular qué tan diferentes son los resultados nuevos de la producción. Por ejemplo, si tienes un problema de clasificación, ejecuta ambos modelos en una muestra de consultas en todo el sistema y observa el tamaño de la diferencia simétrica de los resultados (ponderados por la posición de clasificación). Si la diferencia es muy pequeña, podrás detectar sin cambios un experimento. Si la diferencia es muy grande, asegúrate de que el cambio sea bueno. Revisar las consultas en las que la diferencia simétrica es alta puede ayudarte a comprender de manera cualitativa cómo fue el cambio. Sin embargo, asegúrate de que el sistema sea estable. Cuando se compara un modelo consigo mismo, asegúrate de que tenga una diferencia simétrica baja (idealmente cero).

Regla n.o 25: Cuando eliges modelos, el rendimiento funcional tiene prioridad sobre el poder predictivo.

Tu modelo puede intentar predecir la tasa de clics. Sin embargo, al final, la pregunta clave es lo que haces con esa predicción. Si la usas para clasificar documentos, la calidad de la clasificación final es más importante que la predicción en sí misma. Si predices la probabilidad de que un documento sea spam y, luego, tienes un límite en lo que se bloquea, la precisión de lo que se permite es más importante. La mayoría de las veces, estos dos aspectos están de acuerdo: cuando no están de acuerdo, es probable que sea una pequeña ganancia. Por lo tanto, si hay algún cambio que mejore la pérdida logística, pero que degrade el rendimiento del sistema, busca otro atributo. Cuando esto comienza a ocurrir con más frecuencia, es momento de revisar el objetivo de tu modelo.

Regla n.o 26: Busca patrones en los errores medidos y crea nuevos atributos.

Supongamos que ves un ejemplo de entrenamiento que indica que el modelo es incorrecto. En una tarea de clasificación, este error puede ser un falso positivo o un falso negativo. En una tarea de clasificación, el error podría ser un par en el que un positivo tenía una clasificación menor que un negativo. Lo más importante es que este sea un ejemplo de que el sistema de aprendizaje automático sabe que se equivocó y le gustaría solucionarlo si tiene la oportunidad. Si le das al modelo un atributo que le permita corregir el error, el modelo intentará usarlo.

Por otro lado, si intentas crear un atributo basado en ejemplos que el sistema no considera errores, el elemento se ignorará. Por ejemplo, supongamos que, en la búsqueda de apps de Play, alguien busca "juegos gratuitos". Supongamos que uno de los resultados principales es una app de bromas menos relevante. Por lo tanto, creas una función para apps de bromas. Sin embargo, si maximizas la cantidad de instalaciones y las personas instalan una app de bromas cuando buscan juegos gratuitos, la función de bromas no tendrá el efecto que deseas.

Una vez que tengas ejemplos de que el modelo se equivocó, busca tendencias que estén fuera del conjunto de atributos actual. Por ejemplo, si el sistema parece descender de nivel las publicaciones más largas, agrega la longitud de la publicación. No seas demasiado específico sobre las funciones que agregues. Si agregas la longitud de la publicación, no intentes adivinar qué significa "largo", solo agrega una decena de atributos y permite que el modelo descubra qué hacer con ellos (consulta la regla n.o 21). Esa es la manera más fácil de obtener lo que deseas.

Regla n.o 27: Intenta cuantificar el comportamiento no deseado que observes.

Algunos miembros de tu equipo comenzarán a frustrarse con las propiedades del sistema que no les gusten y que no sean capturadas por la función de pérdida existente. En este punto, deben hacer lo que sea necesario para convertir sus quejas en números sólidos. Por ejemplo, si creen que hay demasiadas apps de bromas en la Búsqueda de Play, podrían hacer que los evaluadores humanos identifiquen apps de bromas. (Es posible que puedas usar datos etiquetados por humanos en este caso porque una fracción relativamente pequeña de las consultas representa una gran parte del tráfico). Si tus problemas son medibles, puedes comenzar a usarlos como atributos, objetivos o métricas. La regla general es medir primero, optimizar después.

Regla n.o 28: Ten en cuenta que el comportamiento idéntico a corto plazo no implica un comportamiento idéntico a largo plazo.

Imagina que tienes un sistema nuevo que analiza cada doc_id y exact_query, y luego calcula la probabilidad de clic para cada doc para cada consulta. Observas que su comportamiento es casi idéntico al sistema actual en ambos lados y en las pruebas A/B, por lo que, dado su simplicidad, lo inicias. Sin embargo, notas que no se muestran apps nuevas. ¿Por qué? Dado que tu sistema solo muestra un documento basado en su propio historial con esa consulta, no hay forma de saber que se debe mostrar un documento nuevo.

La única forma de entender cómo funcionaría ese sistema a largo plazo es entrenarlo solo con datos adquiridos cuando el modelo estaba activo. Esto es muy difícil.

Sesgo entre el entrenamiento y la publicación

La desviación entre el entrenamiento y la entrega es la diferencia entre el rendimiento durante el entrenamiento y el rendimiento durante la entrega. Este sesgo puede deberse a lo siguiente:

  • Una discrepancia entre cómo manejas los datos en las canalizaciones de entrenamiento y entrega
  • Un cambio en los datos entre el momento del entrenamiento y el de publicación
  • Un ciclo de reacción entre tu modelo y tu algoritmo.

Observamos sistemas de aprendizaje automático de producción en Google con una desviación entre el entrenamiento y la publicación que afecta negativamente el rendimiento. La mejor solución es supervisarlo explícitamente para que los cambios en el sistema y en los datos no introduzcan sesgos imperceptibles.

Regla n.o 29: La mejor manera de asegurarte de que el entrenamiento se asemeja a la publicación es guardar el conjunto de atributos que se usa en el momento de la entrega y, luego, canalizar esos atributos en un registro para usarlos en el momento del entrenamiento.

Incluso si no puedes hacerlo en cada ejemplo, hazlo para una fracción pequeña, de modo que puedas verificar la coherencia entre la publicación y el entrenamiento (consulta la regla n.o 37). Los equipos que hicieron esta medición en Google a veces se sorprendían por los resultados. La página principal de YouTube cambió a funciones de registro en el momento de la publicación con mejoras de calidad significativas y una reducción en la complejidad del código, y muchos equipos están cambiando su infraestructura mientras hablamos.

Regla n.o 30: Datos de muestra con peso de importancia, no los descartes de manera arbitraria.

Cuando tienes demasiados datos, existe la tentación de tomar los archivos 1-12 e ignorar los archivos 13-99. Esto es un error. Aunque los datos que nunca se mostraron al usuario se pueden descartar, la ponderación por importancia es la mejor opción para el resto. La ponderación de importancia significa que, si decides que vas a realizar una muestra de ejemplo X con una probabilidad del 30%, entonces dale un peso de 10/3. Con la ponderación por importancia, se mantienen todas las propiedades de calibración que analizamos en la regla n.o 14.

Regla n.o 31: Ten en cuenta que si unes datos de una tabla en el entrenamiento y en la publicación, los datos en la tabla pueden cambiar.

Supongamos que unes los ID de documentos con una tabla que contiene atributos para esos documentos (como la cantidad de comentarios o clics). Entre el entrenamiento y la entrega, los atributos en la tabla pueden cambiar. La predicción de tu modelo para el mismo documento puede diferir entre el entrenamiento y la entrega. La forma más sencilla de evitar este tipo de problemas es registrar los atributos durante la entrega (consulta la regla n.o 32). Si la tabla cambia lentamente, también puedes tomar una instantánea de la tabla por hora o por día para obtener datos razonablemente cercanos. Ten en cuenta que esto no resuelve por completo el problema.

Regla n.o 32: Vuelve a usar el código entre tu canalización de entrenamiento y tu canalización de entrega siempre que sea posible.

El procesamiento por lotes es diferente del procesamiento en línea. En el procesamiento en línea, debes manejar cada solicitud a medida que llega (p.ej., debes realizar una búsqueda por separado para cada consulta), mientras que en el procesamiento por lotes, puedes combinar tareas (p.ej., hacer una unión). En la entrega, estás realizando procesamiento en línea, mientras que el entrenamiento es una tarea de procesamiento por lotes. Sin embargo, hay algunas cosas que puedes hacer para reutilizar el código. Por ejemplo, puedes crear un objeto que sea específico para tu sistema, en el que el resultado de cualquier consulta o unión se pueda almacenar de una forma legible y donde los errores se puedan probar con facilidad. Luego, una vez que hayas recopilado toda la información, durante la entrega o el entrenamiento, ejecuta un método común para unir el objeto legible específico de tu sistema, y cualquier formato que el sistema de aprendizaje automático espere. Esto elimina una fuente de desviación entre el entrenamiento y la entrega. Como corolario, intenta no usar dos lenguajes de programación diferentes entre el entrenamiento y la entrega. Esa decisión hará que sea casi imposible compartir el código.

Regla n.o 33: Si produces un modelo basado en los datos hasta el 5 de enero, prueba el modelo en los datos a partir del 6 de enero.

En general, mide el rendimiento de un modelo con los datos recopilados después de los datos en los que entrenaste el modelo, ya que esto refleja mejor lo que hará el sistema en producción. Si produces un modelo basado en los datos hasta el 5 de enero, pruébalo con los datos del 6 de enero. El rendimiento no será tan bueno en los datos nuevos, pero no debería ser mucho peor. Dado que puede haber efectos diarios, es posible que no predigas la tasa de clics promedio o el porcentaje de conversiones, pero el área bajo la curva, que representa la probabilidad de darle una puntuación más alta al ejemplo positivo que a un ejemplo negativo, debería ser razonablemente cercana.

Regla n.o 34: En la clasificación binaria para filtrar (como la detección de spam o determinar correos electrónicos interesantes), realiza pequeños sacrificios a corto plazo en el rendimiento para obtener datos muy limpios.

En una tarea de filtrado, los ejemplos que se marcan como negativos no se muestran al usuario. Supongamos que tienes un filtro que bloquea el 75% de los ejemplos negativos durante la entrega. Es posible que te sientas tentado a extraer datos de entrenamiento adicionales de las instancias que se muestran a los usuarios. Por ejemplo, si un usuario marca un correo electrónico como spam que permitió tu filtro, es posible que quieras aprender de eso.

Pero este enfoque introduce un sesgo muestral. Puedes recopilar datos más limpios si, durante la entrega, etiquetas el 1% de todo el tráfico como "excluido" y envías todos los ejemplos retenidos al usuario. Ahora tu filtro bloquea al menos el 74% de los ejemplos negativos. Estos ejemplos retenidos pueden convertirse en sus datos de entrenamiento.

Ten en cuenta que, si tu filtro bloquea el 95% de los ejemplos negativos o más, este enfoque se vuelve menos viable. Aun así, si deseas medir el rendimiento de entrega, puedes hacer una muestra aún más pequeña (por ejemplo, 0.1% o 0.001%). Diez mil ejemplos son suficientes para estimar el rendimiento con bastante precisión.

Regla n.o 35: Ten en cuenta la desviación inherente a los problemas de clasificación.

Cuando cambias tu algoritmo de clasificación lo suficiente como para que aparezcan diferentes resultados, habrás cambiado de manera efectiva los datos que tu algoritmo verá en el futuro. Este tipo de desviación aparecerá y debes diseñar el modelo en torno a ella. Existen varios enfoques diferentes. Estos enfoques son todas formas de favorecer los datos que tu modelo ya vio.

  1. Tener una regularización más alta en los atributos que cubren más consultas, en comparación con los atributos que están activados para una sola consulta De esta manera, el modelo favorecerá a los atributos que son específicos de una o algunas consultas por sobre los atributos que generalizan a todas las consultas. Este enfoque puede ayudar a evitar que los resultados muy populares se filtren en consultas irrelevantes. Ten en cuenta que esto es contrario a la sugerencia más convencional de tener más regularización en columnas de atributos con valores más únicos.
  2. Solo permite que los atributos tengan pesos positivos. Por lo tanto, cualquier buen atributo será mejor que uno que sea "desconocido".
  3. No tienen funciones exclusivas para documentos. Esta es una versión extrema de la primera. Por ejemplo, incluso si una app determinada es una descarga popular, sin importar cuál era la consulta, no quieres mostrarla en todas partes. No tener funciones de solo documento mantiene la simplicidad. El motivo por el que no quieres mostrar una app popular específica en todas partes tiene que ver con la importancia de hacer que todas las apps deseadas sean accesibles. Por ejemplo, si alguien busca "app para observar pájaros", podría descargar "pájaros furiosos", pero no fue su intención. Si se muestra esta app, es posible que mejore la tasa de descarga, pero no se cumplen con las necesidades del usuario.

Regla n.o 36: Evita los ciclos de reacción con funciones posicionales.

La posición del contenido afecta drásticamente la probabilidad de que el usuario interactúe con él. Si colocas una app en la primera posición, se hará clic con más frecuencia y estarás convencido de que es más probable que se haga clic en ella. Una forma de lidiar con esto es agregar atributos posicionales, es decir, atributos sobre la posición del contenido en la página. Entrenas tu modelo con atributos posicionales y aprende a ponderar, por ejemplo, el atributo 1stposition en gran medida. Por lo tanto, tu modelo otorga menos peso a otros factores para los ejemplos con "1stposition=true". Luego, en la entrega, no se otorga a ninguna instancia la función posicional, o se les otorga la misma función predeterminada, ya que se puntúan a los candidatos antes de decidir el orden en el que se mostrarán.

Ten en cuenta que es importante mantener cualquier atributo posicional separado del resto del modelo debido a esta asimetría entre el entrenamiento y las pruebas. Lo ideal es que el modelo sea la suma de una función de los atributos posicionales y una función del resto de los atributos. Por ejemplo, no cruces los atributos posicionales con los atributos de documento.

Regla n.o 37: Mide la desviación entre el entrenamiento y la publicación.

Existen varias cosas que pueden causar sesgo en el sentido más general. Además, puede dividirlo en varias partes:

  • La diferencia entre el rendimiento de los datos de entrenamiento y los datos de exclusión. En general, esto siempre existirá y no siempre es malo.
  • La diferencia entre el rendimiento de los datos de exclusión y los datos del día siguiente. Nuevamente, esto siempre existirá. Debes ajustar la regularización para maximizar el rendimiento del día siguiente. Sin embargo, las grandes disminuciones en el rendimiento entre los datos retenidos y los datos del día siguiente pueden indicar que algunos atributos dependen del tiempo y, posiblemente, degradan el rendimiento del modelo.
  • Diferencia entre el rendimiento de los datos del día siguiente y los datos en vivo. Si aplicas un modelo a un ejemplo en los datos de entrenamiento y el mismo ejemplo en la publicación, deberías obtener el mismo resultado (consulta la regla n.o 5). Por lo tanto, una discrepancia aquí indica un error de ingeniería.

Fase III de AA: Crecimiento lento, refinamiento de la optimización y modelos complejos

Habrá ciertos indicios de que la segunda fase está llegando a su fin. En primer lugar, tus ganancias mensuales comenzarán a disminuir. Comenzarás a lograr compensaciones entre métricas: notarás que algunas aumentan y otras disminuyen en algunos experimentos. Aquí es donde se pone interesante. Debido a que las ganancias son más difíciles de lograr, el aprendizaje automático debe volverse más sofisticado. Una advertencia: esta sección tiene más reglas de cielo azul que las secciones anteriores. Hemos visto a muchos equipos pasar por momentos felices de las fases I y II. Una vez que se alcanza la fase III, los equipos deben encontrar su propio camino.

Regla n.o 38: No pierdas tiempo en funciones nuevas si el objetivo no alineado es el problema.

A medida que tu meseta de mediciones, tu equipo comenzará a analizar problemas que están fuera del alcance de los objetivos de tu sistema de aprendizaje automático actual. Como se indicó antes, si los objetivos del producto no están cubiertos por el objetivo algorítmico existente, debes cambiar tu objetivo o los objetivos del producto. Por ejemplo, puedes optimizar los clics, los +1 o las descargas, pero tomar decisiones de lanzamiento en parte, en función de evaluadores humanos.

Regla n.o 39: Las decisiones de lanzamiento son un indicador de los objetivos de producto a largo plazo.

Alice tiene una idea para reducir la pérdida logística de la predicción de las instalaciones. Agrega un atributo. La pérdida logística disminuye. Cuando realiza un experimento en vivo, ve que la tasa de instalación aumenta. Sin embargo, cuando va a una reunión de revisión de lanzamiento, alguien señala que la cantidad de usuarios activos por día disminuye un 5%. El equipo decide no lanzar el modelo. Alice está decepcionada, pero ahora se da cuenta de que las decisiones de lanzamiento dependen de varios criterios y solo algunos de ellos se pueden optimizar directamente con el AA.

La verdad es que el mundo real no es mazmorras y dragones; no hay puntos de coincidencia que identifiquen el estado de tu producto. El equipo debe usar las estadísticas que recopila para intentar predecir de manera efectiva qué tan bueno será el sistema en el futuro. Deben preocuparse por la participación, los usuarios activos por 1 día (DAU), los 30 DAU, los ingresos y el retorno de la inversión del anunciante. Estas métricas que se pueden medir en las pruebas A/B son solo una representación de los objetivos a largo plazo: satisfacer a los usuarios, aumentar la cantidad de usuarios, satisfacer a los socios y generar ganancias. Incluso en ese momento, se podrían considerar proxies por tener un producto útil de alta calidad y una empresa próspera dentro de cinco años.

Las únicas decisiones de lanzamiento sencillas son cuando todas las métricas mejoran (o al menos no empeoran). Si el equipo puede elegir entre un algoritmo de aprendizaje automático sofisticado y una heurística simple, si la heurística simple hace un mejor trabajo en todas estas métricas, debería elegir la heurística. Además, no hay una clasificación explícita de todos los valores de métrica posibles. En particular, considera las siguientes dos situaciones:

Experimento Usuarios activos por día Ingresos/día
A 1 millón USD 4 millones
B 2 millones USD 2 millones

Si el sistema actual es A, es poco probable que el equipo cambie a B. Si el sistema actual es B, es poco probable que el equipo cambie a A. Esto parece entrar en conflicto con el comportamiento racional; sin embargo, las predicciones de las métricas cambiantes pueden o no completarse, por lo que existe un gran riesgo relacionado con cualquiera de los cambios. Cada métrica cubre algunos riesgos que preocupan al equipo.

Además, ninguna métrica cubre la máxima preocupación del equipo, ¿dónde estará mi producto dentro de cinco años?

Por otra parte, las personas tienden a favorecer un objetivo que pueden optimizar directamente. La mayoría de las herramientas de aprendizaje automático favorecen ese entorno. Un ingeniero que combina funciones nuevas puede obtener un flujo constante de lanzamientos en ese entorno. Existe un tipo de aprendizaje automático, el aprendizaje multiobjetivo, que comienza a abordar este problema. Por ejemplo, se puede formular un problema de satisfacción de restricciones que tiene límites inferiores en cada métrica y optimiza alguna combinación lineal de las métricas. Sin embargo, incluso entonces, no todas las métricas se enmarcan fácilmente como objetivos de aprendizaje automático: si se hace clic en un documento o se instala una app, es porque se mostró el contenido. Pero es mucho más difícil determinar por qué un usuario visita tu sitio. Cómo predecir el éxito futuro de un sitio como un todo es IA completa: tan difícil como la visión por computadora o el procesamiento de lenguaje natural.

Regla n.o 40: Crea conjuntos simples.

Los modelos unificados que aceptan atributos sin procesar y clasifican contenido directamente son los modelos más fáciles de depurar y comprender. Sin embargo, un conjunto de modelos (un modelo que combina las puntuaciones de otros modelos) puede funcionar mejor. Para simplificar el proceso, cada modelo debe ser un conjunto que solo tome la entrada de otros modelos o un modelo base que tome muchas características, pero no ambos. Si tienes modelos sobre otros modelos que se entrenan por separado, combinarlos puede dar como resultado un comportamiento inadecuado.

Usa un modelo simple para el ensamble que solo tome la salida de tus modelos de "base" como entradas. También quieres aplicar propiedades en estos modelos de conjuntos. Por ejemplo, un aumento en la puntuación producida por un modelo base no debería disminuir la puntuación del ensamble. Además, es mejor si los modelos entrantes se pueden interpretar de forma semántica (por ejemplo, calibrados), de modo que los cambios de los modelos subyacentes no confundan el modelo de ensamble. Además, aplica que un aumento en la probabilidad predicha de un clasificador subyacente no disminuya la probabilidad predicha del ensamble.

Regla n.o 41: Cuando el rendimiento se estanca, busca nuevas fuentes de información de forma cualitativa en lugar de definir mejor las señales existentes.

Agregaste cierta información demográfica sobre el usuario. Agregaste cierta información sobre las palabras del documento. Revisó la plantilla y ajustó la regularización. No has visto un lanzamiento con una mejora superior al 1% en tus métricas clave en unos pocos trimestres. ¿Cuál es el próximo paso?

Es momento de comenzar a compilar la infraestructura para atributos radicalmente diferentes, como el historial de documentos a los que este usuario accedió en el último día, semana o año, o datos de una propiedad diferente. Usa entidades de wikidatos o algún recurso interno de tu empresa (como el gráfico de conocimiento de Google). Usa el aprendizaje profundo. Comienza a ajustar las expectativas sobre el retorno de la inversión que esperas y expande tus esfuerzos según corresponda. Al igual que en cualquier proyecto de ingeniería, debes comparar el beneficio de agregar atributos nuevos con el costo de una mayor complejidad.

Regla n.o 42: No esperes que la diversidad, la personalización o la relevancia estén tan correlacionadas con la popularidad como crees.

La diversidad en un conjunto de contenidos puede significar muchas cosas, ya que la diversidad de la fuente del contenido es una de las más comunes. La personalización implica que cada usuario obtiene sus propios resultados. La relevancia implica que los resultados de una consulta en particular son más apropiados para esa consulta que para cualquier otra. Por lo tanto, las tres propiedades se definen como diferentes de lo común.

El problema es que lo común suele ser difícil de superar.

Ten en cuenta que si tu sistema mide clics, tiempo dedicado, reproducciones, +1, veces que se comparte, etc., estás midiendo la popularidad del contenido. A veces, los equipos intentan aprender un modelo personal con diversidad. Para personalizar las funciones, agregan funciones que permiten que el sistema lo personalice (algunas funciones que representan el interés del usuario) o la diversificación (características que indican si este documento tiene características en común con otros documentos mostrados, como el autor o el contenido), y descubren que esas características tienen menos peso (o, a veces, un signo diferente) de lo que esperan.

Esto no significa que la diversidad, la personalización o la relevancia no sean valiosas. Como se indicó en la regla anterior, puedes realizar el posprocesamiento para aumentar la diversidad o la relevancia. Si ves que los objetivos a largo plazo aumentan, puedes declarar que la diversidad o la relevancia son valiosas, además de la popularidad. Luego, puedes seguir usando el procesamiento posterior o modificar el objetivo directamente en función de la diversidad o la relevancia.

Regla n.o 43: Tus amigos tienden a ser los mismos en diferentes productos. Tus intereses no suelen serlo.

Los equipos de Google están muy interesados en tomar un modelo que predice la cercanía de una conexión en un producto y en hacer que funcione bien en otro. Tus amigos son como son. Por otro lado, vi a varios equipos tener dificultades con las funciones de personalización en las divisiones de productos. Sí, parece que debería funcionar. Por ahora, no parece ser así. A veces, lo que funciona es usar datos sin procesar de una propiedad para predecir el comportamiento de otra. Además, ten en cuenta que incluso puede ayudar saber que un usuario tiene un historial en otra propiedad. Por ejemplo, la presencia de actividad del usuario en dos productos puede ser un indicativo en sí misma.

Hay muchos documentos sobre el aprendizaje automático en Google y de forma externa.

Agradecimientos

Gracias a David Westbrook, Peter Brandt, Samuel Ieong, Chenyu Zhao, Li Wei, Michalis Potamias, Evan Rosen, Barry Rosenberg, Christine Robson, James Pine, Tal Shaked, Tushar Chandra, Isabel Lina y sus admiradores, y Linda Linda. Además, gracias a Kristen Lefevre, Suddha Basu y Chris Berg, quienes ayudaron con una versión anterior. Cualquier error, omisión o comentario

Apéndice

Este documento contiene diversas referencias a los productos de Google. Para proporcionar más contexto, te doy una descripción breve de los ejemplos más comunes a continuación.

Descripción general de YouTube

YouTube es un servicio de transmisión de videos. Tanto los equipos de YouTube como la página principal de YouTube y de la Página principal usan modelos de AA para clasificar las recomendaciones de videos. Ver a continuación recomienda videos para mirar después del que se está reproduciendo, mientras que la página principal recomienda videos a los usuarios que exploran la página principal.

Descripción general de Google Play

Google Play tiene muchos modelos que resuelven una variedad de problemas. La Búsqueda de Play, las recomendaciones personalizadas de la página principal de Play y las apps del tipo "Los usuarios también instalaron" usan aprendizaje automático.

Descripción general de Google+

Google+ usó el aprendizaje automático en diferentes situaciones: clasificar las publicaciones en las novedades de publicaciones que el usuario vio; clasificar las publicaciones de "Lo más interesante" (publicaciones que son muy populares en la actualidad), clasificar a las personas que conoce, etc. Google Plus cerró todas las cuentas personales en 2019 y fue reemplazada por Google Currents para cuentas empresariales el 6 de julio de 2020.