Ir al contenido

Blog


Uso de un humano en el bucle para superar el problema del arranque en frío en el etiquetado de elementos de menú

28 de agosto de 2020

|

Abhi Ramachandran

Las empresas con grandes catálogos digitales suelen tener muchos datos de texto libre sobre sus artículos, pero muy pocas etiquetas reales, lo que dificulta el análisis de los datos y el desarrollo de nuevas funciones. 

Construir un sistema que admita funciones de búsqueda y descubrimiento basadas en el aprendizaje automático (ML) y que, al mismo tiempo, sea lo suficientemente interpretable para que los usuarios empresariales desarrollen experiencias curadas es difícil. El proceso necesario para desarrollar un sistema de este tipo se vuelve aún más complejo cuando hay cientos de categorías significativas pero poco frecuentes, como suele ocurrir con los grandes catálogos digitales. 

En DoorDash, al final decidimos utilizar etiquetas interpretables en lugar de incrustaciones para categorizar los artículos de nuestro catálogo y poder utilizarlos tanto en aplicaciones de ML como de usuario manual. Para poder utilizar etiquetas con los cientos de clases diferentes y los millones de artículos que nos interesaban, necesitábamos contar con una forma automatizada de escalar nuestra solución de etiquetado. Sin embargo, cualquier solución basada en modelos ML se enfrenta al problema del arranque en frío, en el que no disponemos de suficientes muestras etiquetadas para cada clase para construir un modelo eficaz. 

Decidimos crear modelos de clasificación de etiquetas para que los problemas de escalabilidad fueran manejables, y después integramos estos modelos en un sistema humano en bucle que asignaba etiquetas basándose en una taxonomía de etiquetas para abordar el problema del arranque en frío. Gracias a este sistema, pudimos reducir sustancialmente el tiempo y el coste necesarios para recoger muestras suficientes para entrenar y validar nuestros modelos de etiquetado. 

Las dificultades de DoorDash para entender su catálogo 

Actualmente tenemos más de decenas de millones de artículos en el catálogo de DoorDash, y cada día se añaden decenas de miles de nuevos artículos, la mayoría de los cuales no se parecen a ningún otro que hayamos visto antes. Por ejemplo, considere una lista de postres que contiene cientos de variedades diferentes. Si tenemos en cuenta que nuestro catálogo contiene sólo una pequeña parte de ellas, la magnitud del problema es evidente.

Pero muchas partes del negocio de DoorDash necesitan comprender las características de los artículos con este nivel de detalle. Los equipos de merchandising y producto quieren ser capaces de crear experiencias editoriales curadas como "las mejores opciones de desayuno cerca de ti" o "comidas para la noche de juegos". Los equipos de estrategia pueden querer saber si tenemos suficientes opciones de comida "sana" disponibles en un mercado. O, si un cliente busca "pad thai" pero no hay opciones cercanas, quizá queramos saber qué platos tailandeses de características similares podemos sugerirle en su lugar. Podemos construir modelos especializados para cada una de estas tareas mencionadas, pero eso puede llevar demasiado tiempo para probar rápidamente nuevas ideas.

Por qué decidimos utilizar etiquetas generadas por ML 

Una posible solución genérica es utilizar incrustaciones ajustadas a nuestros menús, pero la calidad de las incrustaciones es difícil de evaluar, sobre todo en cientos de clases. Además, no son especialmente intuitivos para los usuarios profesionales que sólo quieren explorar rápidamente el catálogo de menús.

Otra alternativa es clasificar los artículos por etiquetas interpretables por el ser humano y crear modelos para clasificarlos, pero este enfoque se enfrenta al problema del arranque en frío: no tenemos suficientes datos etiquetados para las más de 300 categorías que interesan a nuestros equipos. Si intentamos depender del etiquetado humano manual para estas clases poco frecuentes, tendríamos que volver a etiquetar todo el catálogo a medida que los usuarios pidan nuevas clases, lo que resulta caro y lento. 

Incluso si se intentara ingenuamente que los anotadores etiquetaran suficientes datos de muestra para entrenar un modelo, se necesitarían millones de muestras para etiquetas que tienen un bajo índice de ocurrencia. A medida que el negocio de DoorDash crece y ofrecemos selecciones más especializadas, estas etiquetas más raras se vuelven aún más importantes, lo que nos permite presentar categorías más granulares de artículos como "Shanghainese" y "Sichuan" en lugar de tratarlos como simplemente "chino".

Decidimos abordar estos problemas de arranque en frío y escalado desarrollando una taxonomía de todas las etiquetas que nos interesaban y, a continuación, construyendo modelos para etiquetar automáticamente cada elemento de nuestro catálogo de acuerdo con esta taxonomía. Integramos estos modelos en un sistema humano que nos permitió recopilar datos de forma eficiente y reducir sustancialmente los costes de anotación. El resultado final fue un sistema que amplía nuestra taxonomía a medida que añadimos etiquetas y utiliza nuestro conocimiento de las relaciones jerárquicas entre ellas para aprender nuevas clases de forma rápida y eficaz. 

¿Cuáles son las características de una buena solución de etiquetado?

Nuestra solución debe cumplir algunos requisitos para ser útil:

  • Corrección: Debemos asegurarnos de que los elementos no se etiquetan incorrectamente para mantener una alta precisión.
  • Exhaustividad: Queremos asegurarnos de que los artículos tienen todas las etiquetas apropiadas y mantener una alta recordación.
  • Escalabilidad: Los equipos de merchandising quieren añadir nuevas etiquetas con regularidad, y nosotros necesitamos poder reetiquetar rápidamente nuestro catálogo existente.
  • Flexibilidad: Necesitamos la capacidad de añadir y modificar la organización de estas etiquetas.

Uso de un flujo humano para el etiquetado

En última instancia, necesitamos establecer la verdad sobre el terreno para nuestras etiquetas, por lo que contratamos a anotadores humanos para que nos ayuden a hacerlo. Para controlar los costes, queremos trabajar de forma eficiente etiquetando únicamente muestras que ayuden al modelo a explorar el espacio de decisión. Con el siguiente planteamiento, podemos cumplir los requisitos descritos anteriormente y seguir siendo eficientes en el uso de muestras: 

  1. Al desarrollar primero una taxonomía, podemos reducir significativamente el número de conjuntos de etiquetas que necesitamos anotar para cada elemento.
  2. A continuación, diseñamos una tarea que los anotadores humanos pueden completar de forma eficiente con una precisión y una recuperación elevadas.
  3. Integramos estos datos en un modelo que genera nuevas muestras para su anotación, completando así nuestro flujo humano.

Buenas prácticas para diseñar una taxonomía

Una taxonomía bien diseñada sirve de base para etiquetar eficazmente los artículos de nuestro catálogo. Queremos que esta taxonomía sea exhaustiva pero lo suficientemente flexible como para abarcar la amplia gama de artículos que tenemos actualmente, y los que encontraremos en el futuro. 

1) Intente que las etiquetas no se solapen 

Al garantizar que las etiquetas se excluyen mutuamente, evitamos que los anotadores tengan que trabajar con una lista de cientos de etiquetas. Al centrarse sólo en las partes relevantes de la taxonomía, los anotadores pueden ser más eficientes y precisos.

En lugar de preguntar directamente si un artículo es café, pasamos por varias etapas, recogiendo las respuestas en cada una de ellas, lo que nos permite anotar categorías más granulares en el futuro a medida que ampliamos nuestra taxonomía.
Figura 1: En lugar de preguntar directamente si un artículo es café, pasamos por varias etapas, recogiendo las respuestas en cada etapa, lo que nos permite anotar categorías más granulares en el futuro a medida que ampliamos nuestra taxonomía.

2) Particionar el nivel superior de la taxonomía por atributos distintos. 

En nuestro caso, eran propiedades de un artículo como "estilo de cocina regional" o "sabor". Este tipo de partición nos permite paralelizar la tarea. Diferentes anotadores pueden trabajar en distintas partes de la taxonomía al mismo tiempo, de modo que algunos pueden centrarse en etiquetar ingredientes, mientras que otros pueden trabajar en el tipo de cocina.

3) Asegúrese de que haya clases de "otros" en cada nivel.   

Al disponer de una clase "otros", podemos mejorar progresivamente la granularidad de nuestra taxonomía y sólo reetiquetar las muestras que se vean afectadas. Puede que actualmente sólo dispongamos de recursos para generar una etiqueta de bebida. Si gastamos nuestros recursos en anotaciones para una etiqueta muy específica como "té", tendremos que volver a etiquetar todos los artículos cuando queramos añadir más bebidas en el futuro. Sin embargo, si sólo generamos una etiqueta "bebida", con subniveles de "té" u "otros", necesitaremos la misma cantidad de esfuerzo de anotación, pero en la siguiente ronda podremos restringir todo el etiquetado de artículos de bebidas a los artículos etiquetados como "bebidas → otros."

4) Haz que las etiquetas sean lo más objetivas posible. 

Una etiqueta subjetiva como "popular" o "conveniente" es extremadamente arbitraria y es probable que cambie con el tiempo. Las etiquetas arbitrarias requieren más anotaciones para llegar a un consenso claro y es más probable que se etiqueten incorrectamente. Las etiquetas objetivas dependen menos de los antecedentes y el contexto de un anotador, lo que permite escalar horizontalmente a múltiples anotadores con un tiempo de adaptación mínimo.

Diseño de una tarea de alto rendimiento y precisión para anotadores

Dado que necesitamos utilizar anotadores humanos para proporcionar las etiquetas iniciales de nuestro conjunto de datos, tendremos que gestionar las métricas clave que se indican a continuación para asegurarnos de que el conjunto de datos tiene una calidad suficientemente alta y es lo bastante representativo como para utilizarlo en el entrenamiento y la validación de modelos:

  1. Precisión de la anotación: Queremos asegurarnos de que los anotadores no etiquetan incorrectamente las muestras que les proporcionamos.
  2. Recuerdo de anotaciones: Queremos asegurarnos de que los anotadores generan todas las etiquetas pertinentes para las muestras que les proporcionamos. 
  3. Representatividad del muestreo: Parte de los datos anotados se utilizarán para generar datos de entrenamiento del modelo. Si las muestras que los anotadores etiquetan como positivas no son representativas de la verdadera diversidad de una clase, la recuperación de nuestro modelo será baja (independientemente de la precisión y recuperación de la anotación). Por ejemplo, si los anotadores etiquetan hamburguesas, pero no proporcionamos ejemplos de "Whoppers", nuestro modelo nunca podrá entrenarse con "Whoppers". Peor aún, si no tenemos ningún dato de validación que contenga "Whoppers", ni siquiera nos daríamos cuenta de este punto ciego del modelo hasta que el modelo se ejecute en producción. 

La precisión y la recuperación de las anotaciones están fundamentalmente limitadas por el diseño de la tarea, la calidad de las instrucciones que proporcionamos a los anotadores y el cuidado y los conocimientos de los anotadores. Sin embargo, podemos compensar la variación de los anotadores utilizando mecanismos de consenso, por ejemplo, consiguiendo que más anotadores etiqueten la misma muestra. También proporcionamos a los anotadores una categoría "no estoy seguro" para que se salten las tareas que no están seguros de responder, en lugar de obligarles a elegir una respuesta que puede ser incorrecta. Esta práctica de permitir la opción "no estoy seguro" también nos da cierta visibilidad de la dificultad de la tarea en sí.

La representatividad de las muestras, sin embargo, está limitada por nuestra estrategia de muestreo, es decir, tenemos que asegurarnos de que pedimos a los anotadores que etiqueten datos que mostrarán a nuestro modelo información que no ha visto antes. Es difícil mejorar directamente nuestra estrategia de muestreo, pero si conseguimos etiquetar más muestras con el mismo presupuesto (mejorar el rendimiento), podremos obtener un conjunto de datos representativo. Al mejorar la precisión de un anotador individual, reducimos la cantidad de trabajo que necesitamos para generar una muestra positiva, lo que significa que podemos reasignar esos recursos para etiquetar más datos.

Podemos aprovechar la taxonomía que hemos desarrollado anteriormente para desarrollar esta tarea de alta precisión y alto rendimiento. Nuestra taxonomía se presta de forma natural a la generación de preguntas sencillas, binarias o de opción múltiple, para la anotación con un mínimo de información de fondo, por lo que podemos obtener una alta precisión utilizando anotadores menos experimentados e instrucciones menos detalladas, lo que agiliza la incorporación de los anotadores y reduce el riesgo de que un anotador malinterprete el objetivo de la tarea.

Por ejemplo:

Tabla de ejemplo de anotación

También tenemos un mayor control sobre las compensaciones que debemos hacer entre costes de anotación, velocidad y calidad. Por ejemplo, podemos utilizar Amazon Mechanical Turk, un mercado de crowdsourcing, que es muy barato y rápido, pero tiene menor precisión de anotación para preguntas sencillas (por ejemplo, si este artículo es vegano) que requieren menos conocimientos de fondo para responder. Para preguntas más complejas, podemos recurrir a anotadores más experimentados pero más lentos, especializados en información nutricional (unas 10 veces el precio de las anotaciones de Mechanical Turk) para decidir si un artículo es saludable.

Construir modelos escalables

Nuestros modelos deben tener algunas características clave para funcionar con una taxonomía en crecimiento y encajar en nuestro proceso de aprendizaje activo posterior.

Flexibilidad para adaptarse a una taxonomía creciente

A medida que crece nuestra taxonomía, no queremos entrenar modelos independientes para cada etiqueta. Además de ser difícil de mantener en producción, entrenar un modelo distinto para cada etiqueta es extremadamente costoso y requiere muchas muestras.

En su lugar, utilizamos nuestra taxonomía para entrenar nuestro modelo de una manera eficiente. En nuestra primera iteración, entrenamos varios modelos en cada categoría mutuamente excluyente de forma jerárquica. Cada modelo (uno por grupo de atributos) era un simple modelo LSTM de una capa con incrustaciones de palabras de FastText. Sin embargo, existe el riesgo de no preservar las correlaciones entre grupos de atributos (por ejemplo, las hamburguesas rara vez son veganas), por lo que también mantenemos un conjunto de reglas codificadas para tratar algunos de estos casos extremos.

A medida que nuestra taxonomía se hace más compleja y recogemos más muestras etiquetadas, vamos condensando los modelos en una arquitectura de objetivos multitarea, lo que nos permite aprender etiquetas para múltiples atributos simultáneamente, lo que ayuda a preservar las correlaciones entre etiquetas. 

Generar predicciones calibradas y representativas 

Aunque no necesitamos probabilidades calibradas para generar etiquetas, sí las necesitamos calibradas para seleccionar nuevas muestras para anotación. Esencialmente, nuestra estrategia consistirá en utilizar estas predicciones del modelo para seleccionar muestras con alta incertidumbre.

Para asegurarnos de que nuestras probabilidades están bien calibradas, preservamos el equilibrio natural de clases durante el entrenamiento. Dado nuestro proceso sesgado de selección de nuevas muestras para la anotación, también necesitaremos complementar nuestros datos de entrenamiento para mantener el equilibrio de clases. En concreto, elegimos una estrategia de autoentrenamiento mediante el entrenamiento de un modelo simple con alta precisión para generar muestras suplementarias para el entrenamiento. 

Establecer un bucle humano

Ahora que tenemos una taxonomía, un diseño claro de las tareas y una estrategia para construir un modelo, podemos unirlos en un flujo humano:

Configuramos un bucle para que la anotación alimente directamente un modelo (los pasos con participación humana en rojo y los pasos automatizados en verde). Este bucle nos permite centrarnos en la generación de las muestras que consideramos más útiles para el modelo. También tenemos un bucle para garantizar la calidad de nuestra anotación, lo que garantiza que nuestro modelo recibe datos de alta calidad.
Figura 2: Configuramos un bucle para que la anotación alimente directamente un modelo (pasos con participación humana en rojo y pasos automatizados en verde). Este bucle nos permite centrarnos en la generación de las muestras que consideramos más útiles para el modelo. También tenemos un bucle para garantizar la calidad de nuestra anotación, lo que garantiza que nuestro modelo recibe datos de alta calidad.

Siembra de los datos iniciales

En primer lugar, necesitamos una fuente de datos semilla para generar muestras para la anotación. Aunque en realidad utilizamos un clasificador simple para seleccionar las muestras antes de enviarlas a los anotadores (ya que podíamos generar con seguridad suficientes muestras de alta precisión seleccionando un umbral de probabilidad adecuadamente alto), si tuviéramos un presupuesto más alto o plazos de entrega más cortos, también podríamos enviarlas directamente a los anotadores para que las etiquetaran.

En nuestro caso, entrenamos incrustaciones semánticas de forma no supervisada para utilizarlas como referencia en la selección de muestras. En nuestra aplicación, resultaron especialmente útiles para generar muestras ambiguas como "pepperoni", que en el contexto de un menú se entendería probablemente como una pizza y no sólo como la carne que la recubre.

Aumento de datos

Antes hemos descrito nuestra estrategia de autoaprendizaje para generar nuevas muestras de entrenamiento y mantener el equilibrio de clases. También complementamos nuestros datos de entrenamiento con una mezcla de muestras cercanas en términos de distancia de edición y similitud coseno incrustada, así como con un aumento aleatorio del texto (variando aleatoriamente el orden de las frases en una descripción o eliminando información como la categoría de un menú). En la práctica, este aumento de datos también simula la variación en los menús, en los que los comerciantes a veces no tienen descripciones detalladas ni categorías de menú. 

Para algunos casos muy sencillos, el uso de algunas heurísticas basadas en reglas resultó muy eficaz (todos los artículos con "sushi" en el nombre son probablemente sushi). Sin embargo, esta heurística generaba conjuntos de datos con un gran número de muestras centradas en determinadas palabras clave. El entrenamiento de los modelos con estos conjuntos de datos sesgados provocaba problemas cuando el modelo se ajustaba en exceso a las palabras clave y pasaba por alto casos extremos (etiquetar incorrectamente "cerveza sin alcohol" como alcohol). En estas situaciones, utilizar la muestra junto con una descripción, si estaba disponible, y eliminar la palabra clave, era una forma eficaz de utilizar los datos sin sobreajustarlos.

Formación de modelos

Dado que disponemos de una combinación de nombres de artículos, categorías de menús y descripciones de texto completo, el enfoque obvio era utilizar LSTM con incrustaciones FastText preentrenadas. Sin embargo, debido a la naturaleza intensiva en muestras de estos modelos, dependíamos de un buen aumento de datos (teníamos una proporción de 100:1 para muestras sintéticas:etiquetadas) para un entrenamiento preciso, lo que nos obligaba a ajustar la selección de muestras para mantener el equilibrio de clases.

Nuestros métodos de aumento de datos no podían preservar tan fácilmente las correlaciones entre etiquetas. Así que, como hemos descrito antes, al principio tuvimos que entrenar un LSTM de tarea única (multiclase) en cada conjunto de etiquetas exclusivas. Al principio, descubrimos que los modelos multitarea funcionaban peor, ya que nuestro muestreo no preservaba la distribución natural de las etiquetas y teníamos muy pocas muestras para entrenar sólo con datos etiquetados. Sin embargo, a medida que recopilábamos más anotaciones, los métodos multitarea fueron más eficaces. 

Selección de muestras de anotación

Seleccionamos las muestras para la anotación con vistas a mejorar la precisión o la recuperación: 

  1. Para mejorar la precisión, seleccionamos muestras similares a aquellas en las que la predicción del modelo entraba en conflicto con la etiqueta del anotador.
  2. Para mejorar la recuperación, primero utilizamos el modelo para etiquetar nuevas muestras de nuestro conjunto de datos sin etiquetar. A continuación, seleccionamos muestras en las que el modelo tenía poca confianza (predicciones cercanas al límite de decisión) para su anotación.

Validación

Lo más importante es que esta estrategia de selección de muestras está sesgada, lo que significa que no pudimos evaluar la precisión o la recuperación del modelo en estas muestras. Necesitábamos un conjunto de validación no sesgado para poder comprender los puntos ciegos del modelo, así que para solucionarlo también anotamos por separado un conjunto de datos seleccionados uniformemente al azar. 

Anotación

El proceso real de anotación implicó trabajar con múltiples proveedores (un componente operativo que aún está evolucionando). Utilizamos una combinación de anotadores profesionales y Mechanical Turk. Los diseños de las tareas reales eran muy similares, pero obtuvimos un primer pase de Mechanical Turk para centrarnos en enviar a los anotadores profesionales casos más ambiguos. Para obtener un mejor rendimiento, también variamos la cantidad de consenso requerido por etiqueta, de modo que sólo requerimos un mayor consenso de las etiquetas con menor acuerdo entre evaluadores

Verificación

También necesitábamos conocer la calidad de nuestras anotaciones para poder mejorar este proceso y aumentar la eficacia de las muestras. Nuestra métrica inicial (principal) de la calidad de la anotación de una etiqueta era el acuerdo entre evaluadores, pero esto fallaría si un conjunto de anotadores estuviera sistemáticamente sesgado. Utilizamos la siguiente heurística para abordar el posible sesgo sistemático:

  • acuerdo de anotación verificado entre distintos proveedores 
  • utilizó muestras anotadas para crear un pequeño conjunto de "datos de oro". Se trataba de muestras en las que confiábamos plenamente en la precisión del etiquetado, por lo que, a medida que incorporábamos nuevos anotadores, mezclábamos los datos de oro para conocer la precisión de referencia de los anotadores.

En las grandes tareas de etiquetado múltiple, las anotaciones humanas suelen tener mayor precisión (un humano rara vez etiquetaría mal una hamburguesa como sándwich) que memoria (si se le pide a un humano que seleccione todas las etiquetas relevantes para una hamburguesa, es posible que se le escapen algunas). Así que nos centramos en alcanzar una cierta precisión de referencia en los datos dorados. Llegados a este punto, confiábamos en las etiquetas de los anotadores y podíamos utilizar nuestro modelo para generar nuevos candidatos potenciales para la anotación.

Barandillas

A pesar del muestreo, algunos términos eran demasiado raros para que pudiéramos seleccionarlos con una alta probabilidad. Es el caso, en particular, de los nombres de marca. Por ejemplo, aunque Kirin Ichiban es una cerveza y debería etiquetarse como alcohol, hay muy pocos comerciantes en la plataforma que vendan este artículo, y las palabras son demasiado infrecuentes para que el modelo aprenda del resto de los datos. Para resolver este problema sin depender de una mayor generación de muestras, y especialmente en algunos contextos delicados (por ejemplo, artículos con restricciones de edad), establecemos algunas reglas de código duro antes de poner estas etiquetas a disposición de los consumidores.

Evaluación

Dado que este proyecto alimenta múltiples aplicaciones posteriores, nuestra métrica de rendimiento objetivo era la puntuación macro-F1. El uso de esta métrica nos permite garantizar que el modelo es preciso incluso en etiquetas con índices de base muy bajos. También comprobamos manualmente el impacto en nuestros resultados de búsqueda de algunas de las etiquetas más utilizadas en mercados clave para comprobar que las etiquetas y anotaciones son pertinentes.

¿En qué medida mejora este proceso la calidad de las etiquetas?

Con este método hemos conseguido casi duplicar la recuperación y mantener la precisión de algunas de nuestras etiquetas más raras, lo que ha mejorado sustancialmente la selección de los clientes. A continuación se muestra un ejemplo de la diferencia entre las antiguas etiquetas (en las que sólo se devolvían artículos etiquetados como "postre") y las nuevas, en las que una consulta sobre "postres" puede ampliarse mediante un algoritmo de comprensión de consultas que recorre la taxonomía. 

Tabla que muestra cómo las etiquetas de los artículos mejoran la búsqueda

Figura 3: La adición de etiquetas adicionales mejora el descubrimiento de productos, ya que la búsqueda del usuario se amplía más allá de la simple coincidencia de cadenas.

A diferencia de la consulta inicial, que sólo indexa artículos con la palabra clave "postre", pudimos seleccionar muchos más artículos que realmente considerábamos postres sin modificar el algoritmo de búsqueda. 

También podemos potenciar casos de uso como el control de artículos restringidos (mayores de 21 años o alcohol) con relativa facilidad. A continuación se muestra una muestra de artículos que nuestro modelo reconoce como alcohol: 

Tabla de etiquetas con alcohol frente a etiquetas sin alcohol

Dada la delicadeza de esta aplicación, disponemos de múltiples guardarraíles y reglas adicionales, pero disponer de buenas etiquetas mejora significativamente la precisión de referencia, reduciendo la complejidad de las reglas que necesitamos mantener. 

También podemos utilizar estas etiquetas en otros contextos (merchandising, curación) para desarrollar inmediatamente productos mínimos viables. Lanzar una solución de merchandising para "los mejores postres cerca de ti" se convierte en una simple consulta en lugar de un proyecto de aprendizaje automático a medida.

Conclusión

Mientras que el coste habitual de etiquetar decenas de millones de elementos puede ascender a cientos de miles de dólares (y un esfuerzo de varios meses) por iteración, nuestro proyecto costó unos pocos miles de dólares en servicios de anotación y se terminó en unas tres semanas. Obtuvimos unos resultados tan espectaculares sobre todo porque nuestro problema de arranque en frío se adaptaba perfectamente a un sistema humano en bucle. La relativa diversidad de nuestras clases nos permitió crear una taxonomía que redujo el alcance del problema, aprovechar al máximo el aprendizaje por transferencia para que el problema fuera manejable para los humanos y confiar en la precisión de la anotación humana para ser mucho más eficientes en el muestreo que en un problema típico. 

Los problemas de arranque en frío son especialmente comunes en aplicaciones de comercio electrónico con inventarios grandes y diversos. En estos entornos, sobre todo cuando disponer de un único modelo o de una colección de modelos que ofrezcan una interfaz interpretable para trabajar con este inventario puede tener un gran impacto empresarial, un sistema human-in-the-loop es una buena solución inicial, ya que permite una rápida recopilación de datos y desarrollo de modelos. Aunque este planteamiento tiene claros inconvenientes, como el sesgo de predicción, el riesgo de implantación, la complejidad operativa y la dificultad de evaluar el rendimiento, a menudo resulta más barato y rápido utilizar primero estos planteamientos y luego ir avanzando hacia una solución más madura y totalmente automatizada.

Fotografía del encabezado Xiang Hu en Unsplash

Sobre el autor

  • Abhi Ramachandran

Trabajos relacionados

Ubicación
San Francisco, CA; Mountain View, CA; Nueva York, NY; Seattle, WA
Departamento
Ingeniería
Ubicación
San Francisco, CA; Sunnyvale, CA
Departamento
Ingeniería
Ubicación
San Francisco, CA; Sunnyvale, CA; Seattle, WA
Departamento
Ingeniería
ID de trabajo: 3013456
Ubicación
Pune, India
Departamento
Ingeniería
Ubicación
San Francisco, CA; Seattle, WA; Sunnyvale, CA
Departamento
Ingeniería