Aprendizaje profundo para palabras clave infinitas (multilingüe)

Jan 25 2023
Cómo usamos un modelo inspirado en CLIP para sugerir palabras clave para el etiquetado de plantillas en varios idiomas
por Sachinthaka Abeywardana En Canva tenemos millones de piezas de contenido, en muchos idiomas para servir a nuestros más de 100 millones de usuarios activos mensuales en todo el mundo. Para que aparezcan durante la búsqueda, las palabras clave son una necesidad.

por Sachinthaka Abeywardana

En Canva tenemos millones de piezas de contenido, en muchos idiomas para servir a nuestros más de 100 millones de usuarios activos mensuales en todo el mundo .

Para que aparezcan durante la búsqueda, las palabras clave son una necesidad. Es una práctica común en la mayoría de los sitios web incluir palabras clave para ser indexadas en los motores de búsqueda. Nuestro motor de búsqueda interno que impulsa al editor (como se ve a continuación) se basa en buenas palabras clave para mostrar el contenido más relevante. La falta de palabras clave en una parte del contenido también puede afectar su aparición en el editor durante la sesión de diseño de un usuario.

Ejemplo de búsqueda de plantillas de presentación.

Canva tiene un mercado para creadores que les permite a los creadores de todo el mundo obtener ingresos pasivos al obtener regalías de plantillas y elementos de diseño, como fotos, ilustraciones y muchos más que figuran en el mercado.

Si bien los diseñadores más experimentados saben qué palabras clave son adecuadas, es un juego de adivinanzas para algunos de nuestros creadores más nuevos. Esto significa que la curva de aprendizaje para los creadores más nuevos es empinada, ya que necesitarán dominar esto y crear contenido y plantillas estéticas. Además, estas palabras clave deben estar en varios idiomas para atender a la diversa base de usuarios de Canva.

Para permitir que los creadores se concentren en la creación y menos en las palabras clave, desarrollamos un modelo de aprendizaje profundo para acelerar el proceso de selección de palabras clave.

En este blog, veremos cómo recopilamos los datos, diseñamos la arquitectura del modelo, entrenamos con la función de pérdida especial que elegimos y, finalmente, analizamos los resultados.

Arquitectura modelo y formación

Los modelos de clasificación típicos solo son capaces de clasificar un número predeterminado de clases. El enfoque habitual es codificar en caliente las etiquetas. Al denotar las etiquetas con números, destruimos cualquier relación entre las etiquetas, que son obvias al considerar los nombres de las etiquetas (p. ej., shark, sharks). En teoría, podríamos admitir una cantidad infinita de palabras clave, incluso en idiomas para los que no se entrenó específicamente.

Modelos de idioma siamés

El modelo que se muestra a continuación es de CLIP . Se denomina "siamés" ya que usamos modelos gemelos que comienzan con los mismos pesos pero admitirán diferentes entradas. Los dos componentes de la arquitectura son los

  • Modelo de incrustación de palabras clave : este es un transformador de oraciones multilingüe que convierte una palabra clave sugerida en una incrustación, y
  • Modelo de incrustación de título y contenido de texto : este también es un transformador de oraciones multilingüe que convierte el título y el contenido de texto en una plantilla en una incrustación.
Modelo de arquitectura, que consta de dos modelos de lenguaje.

Consideremos un ejemplo de la figura anterior. Supongamos que tenemos 3 plantillas. Pasamos el texto de la plantilla a través de un transformador de oraciones y las palabras clave a través de otro.

Tenga en cuenta que aunque tenemos 3 plantillas, tenemos 5 palabras clave potenciales ( cat, dog, mat, shark, bat). Cada conjunto de palabras clave (etiquetas) se extraen en cada lote y no son todas las palabras clave posibles en ese idioma.

Las celdas verdes representan dónde habría una etiqueta de 1 y 0 en otros lugares. Las celdas rojas representan las incrustaciones representativas del texto. Los recuadros azules son transformadores de oraciones multilingües .

Los glóbulos rojos se multiplican entre sí para crear una matriz de similitud. Cada entrada en la matriz es un valor entre 0 y 1, incluidos ambos valores. Por ejemplo, en este caso, si las incrustaciones de texto fueran 3 x 768y las incrustaciones de palabras clave fueran 5 x 768, la matriz de similitud sería 3 x 5. En este ejemplo, 3el tamaño del lote 5es el número de palabras clave encontradas en ese lote.

Tratamos la matriz de similitud como logits y usamos una función de pérdida contrastiva para entrenar nuestro modelo. La principal distinción con la pérdida de CLIP es que las etiquetas positivas están solo en la diagonal. Esto no es cierto en nuestro método de entrenamiento.

Limpieza de datos, procesamiento por lotes y mezcla de lotes

Solo usamos características textuales en este modelo, por lo que no es un modelo multimodal.

Los datos de entrenamiento que usamos fueron los datos históricos de las plantillas, siendo la entrada el contenido de texto de una plantilla, mientras que las salidas fueron las palabras clave reales. Restringimos los datos de entrenamiento a nuestros creadores internos para garantizar un alto estándar del modelo. Desafortunadamente, los creadores externos están motivados para agregar palabras clave irrelevantes para ser visibles incluso en consultas de búsqueda no relacionadas. Si bien el número de creadores internos es mucho menor que el de los creadores externos, esto tiene poca o ninguna consecuencia.

Para obtener una capacitación efectiva, necesitábamos tener cuidado con la forma en que se elegían, mezclaban y agrupaban los datos durante la capacitación.

Para asegurarnos de que hubiera errores ortográficos mínimos en las palabras clave, elegimos palabras clave que aparecían al menos 30 veces en diferentes creadores. Durante la formación nos limitamos a las 1000 palabras clave principales por idioma. Esto es para que cada palabra clave se vea "suficientes" veces durante el proceso de entrenamiento. Como veremos pronto, este límite de 1000 palabras clave no se aplica durante la inferencia.

Cada lote contenía un solo idioma . Esto se hizo para que en cada lote, las palabras clave provengan de un solo idioma. Esto garantiza que no le demos accidentalmente una etiqueta negativa a la palabra clave traducida.

También observamos que la formación era peor si entrenábamos un idioma y pasábamos al siguiente. Por lo tanto, mezclamos los lotes al azar para que el modelo no sea "bueno" en un idioma antes de intentar pasar al siguiente.

Pérdida asimétrica para ignorar etiquetas negativas

En el modelo CLIP, la pérdida contrastiva se especifica mediante el siguiente pseudocódigo (tomado de la Figura 3 en el artículo "Aprendizaje de modelos visuales transferibles a partir de la supervisión del lenguaje natural" de Radford et al.), donde loss_iy loss_trepresenta la pérdida por aprender una imagen y un texto representación respectivamente.

# symmetric loss function
labels = np.arange(n)
loss_i = cross_entropy_loss(logits, labels, axis=0)
loss_t = cross_entropy_loss(logits, labels, axis=1)
loss = (loss_i + loss_t)/2

En su lugar, usamos la pérdida asimétrica , que está fuertemente inspirada en la pérdida focal para eludir la minería en estos ejemplos difíciles. La mayor parte de la pérdida puede explicarse mediante la siguiente ecuación. El parámetro gamma se conoce como parámetro de enfoque , que penaliza los ejemplos difíciles de clasificar en relación con los ejemplos más fáciles de clasificar. La pérdida asimétrica es esencialmente pérdida focal pero con una mayor intensidad gammaen el caso negativo. También recortan y desplazan las probabilidades negativas para debilitar aún más el efecto de los ejemplos negativos. Todo esto es para que el modelo pueda enfocarse automáticamente en los ejemplos positivos.

Definición de pérdida asimétrica. El parámetro gamma se conoce como parámetro de enfoque, que penaliza los ejemplos difíciles de clasificar en relación con los ejemplos más fáciles de clasificar.

A continuación se puede ver una implementación de PyTorch del código de la función de pérdida.

Vale la pena señalar que, dado que los modelos (son dos transformadores de oraciones preentrenados), incluso sin ningún entrenamiento, comienzan con una buena precisión. El siguiente diagrama muestra las curvas de precisión y recuperación para diferentes idiomas en varios hiperparámetros.

Precisión/recuperación para algunos idiomas en el conjunto de validación. nl=Países Bajos, hi=Hindi (India), tr=Turquía, pl=Polonia, ko=Corea, es=España. Cada una de las diferentes curvas en un panel es donde cambié uno de los hiperparámetros (principalmente tasa de aprendizaje). Establecer una tasa de aprendizaje demasiado baja conduce a la curva amarilla.

Inferencia

Durante la inferencia, tomamos las 1000 palabras clave más populares por idioma y presentamos las 10 palabras clave de mayor probabilidad. Aplicamos un umbral adicional a estas palabras clave para garantizar que solo se sugieran las palabras clave de la más alta calidad. Dado que estamos usando la pérdida asimétrica, no podemos simplemente usar 0.5 y, en su lugar, elegir un valor más bajo. Esto se debe al hecho de que, de manera similar a la pérdida focal, el énfasis está en aumentar la probabilidad de clases mal etiquetadas.

Un truco que usamos es precalcular las incrustaciones de palabras clave para todos los idiomas para las 1000 palabras clave. Dado que lo único que es dinámico son las entradas de texto de la plantilla, podemos mantener constante el lado de la palabra clave.

Como se mencionó anteriormente, no hay nada que nos impida usar palabras clave que no se ven durante el entrenamiento, o incluso idiomas que no se ven por completo. Esto está sujeto a trabajo futuro.

Resumen

Para terminar, creamos un modelo de clasificación multilingüe y multiclase. Los ingredientes clave fueron el modelo gemelo, la función de pérdida y el orden en que se introdujeron los datos en el modelo.

Actualmente estamos sirviendo este modelo a los miles de creadores que tenemos. Háganos saber lo que piensa de nuestros modelos ML registrándose en Canva Creators .

Agradecimientos

Muchas gracias a Canh Dinh por ayudarme a desarrollar y construir el modelo, ya Paul Tune por ayudarme a escribir esta publicación.

¿Está interesado en trabajar en soluciones innovadoras de aprendizaje automático en diseño? ¡Únete a nosotros!