Deep Learning pour des mots-clés infinis (multilingues)

Jan 25 2023
Comment nous avons utilisé un modèle inspiré du CLIP pour suggérer des mots-clés pour l'étiquetage des modèles dans plusieurs langues
par Sachinthaka Abeywardana Chez Canva, nous avons des millions de contenus, dans de nombreuses langues, pour servir nos plus de 100 millions d'utilisateurs actifs par mois dans le monde. Pour qu'ils apparaissent lors de la recherche, les mots-clés sont une nécessité.

par Sachinthaka Abeywardana

Chez Canva, nous avons des millions de contenus, dans de nombreuses langues, pour servir nos plus de 100 millions d'utilisateurs actifs par mois dans le monde .

Pour qu'ils apparaissent lors de la recherche, les mots-clés sont une nécessité. Il est courant dans la plupart des sites Web d'inclure des mots-clés afin d'être indexés sur les moteurs de recherche. Notre moteur de recherche interne qui alimente l'éditeur (voir ci-dessous) s'appuie sur de bons mots-clés pour afficher le contenu le plus pertinent. L'absence de mots-clés sur un contenu peut également affecter son apparition sur l'éditeur lors de la session de conception d'un utilisateur.

Exemple de recherche de modèles de présentation.

Canva dispose d'un marché pour les créateurs qui permet aux créateurs du monde entier de gagner un revenu passif en percevant des redevances à partir de modèles et d'éléments de conception tels que des photos, des illustrations et bien d'autres répertoriés sur le marché.

Bien que les concepteurs les plus expérimentés sachent quels mots clés conviennent, il s'agit d'un jeu de devinettes pour certains de nos nouveaux créateurs. Cela signifie que la courbe d'apprentissage pour les nouveaux créateurs est abrupte, car ils devraient maîtriser cela ainsi que créer des modèles et du contenu esthétiques. De plus, ces mots clés doivent être en plusieurs langues pour répondre à la diversité de la base d'utilisateurs de Canva.

Afin de permettre aux créateurs de se concentrer sur la création, et moins sur les mots-clés, nous avons développé un modèle d'apprentissage en profondeur pour accélérer le processus de sélection des mots-clés.

Dans ce blog, nous verrons comment nous avons recueilli les données, conçu l'architecture du modèle, formé avec la fonction de perte spéciale que nous avons choisie, et enfin discuter des résultats.

Architecture de modèle et formation

Les modèles de classification typiques ne sont capables de classer qu'un nombre prédéterminé de classes. L'approche habituelle consiste à encoder à chaud les étiquettes. En désignant les étiquettes par des nombres, nous détruisons toute relation entre les étiquettes, qui est évidente lorsque l'on considère les noms des étiquettes (par exemple, shark, sharks). Nous pourrions théoriquement prendre en charge un nombre infini de mots-clés, y compris dans des langues pour lesquelles il n'a pas été spécifiquement formé.

Modèles de langue siamoise

Le modèle affiché ci-dessous est de CLIP . Il est noté « siamois » car nous utilisons des modèles jumeaux qui commencent avec les mêmes poids mais qui prennent des intrants différents. Les deux composantes de l'architecture sont les

  • Modèle d'intégration de mots clés : il s'agit d'un transformateur de phrase multilingue qui convertit un mot clé suggéré en une intégration, et
  • Modèle d'incorporation de contenu de titre et de texte : il s'agit également d'un transformateur de phrase multilingue qui convertit le contenu du titre et du texte d'un modèle en une incorporation.
Architecture de modèle, qui se compose de deux modèles de langage.

Prenons un exemple tiré de la figure ci-dessus. Supposons que nous ayons 3 modèles. Nous passons le texte du modèle à travers un transformateur de phrase et les mots-clés à travers un autre.

Notez que même si nous avons 3 modèles, nous avons 5 mots-clés potentiels ( cat, dog, mat, shark, bat). Chaque ensemble de mots-clés (étiquettes) sont extraits dans chaque lot et ne sont pas tous des mots-clés possibles dans cette langue.

Les cellules vertes représentent où il y aurait une étiquette de 1 et 0 ailleurs. Les cellules rouges représentent les incorporations représentatives du texte. Les boîtes bleues sont des transformateurs de phrases multilingues .

Les globules rouges sont multipliés ensemble pour créer une matrice de similarité. Chaque entrée de la matrice est une valeur comprise entre 0 et 1, y compris les deux valeurs. Par exemple, dans ce cas, si les incorporations de texte étaient 3 x 768et les incorporations de mots-clés étaient 5 x 768, la matrice de similarité serait 3 x 5. Dans cet exemple, 3il s'agit de la taille du lot tandis 5que le nombre de mots-clés trouvés dans ce lot.

Nous traitons la matrice de similarité comme logits et utilisons une fonction de perte contrastive pour former notre modèle. La principale distinction avec la perte CLIP est que les étiquettes positives ne sont que sur la diagonale. Cela n'est pas vrai dans notre méthode de formation.

Nettoyage des données, traitement par lots et mélange de lots

Nous n'utilisons que des fonctionnalités textuelles dans ce modèle, il ne s'agit donc pas d'un modèle multimodal.

Les données de formation que nous avons utilisées étaient les données historiques sur les modèles, l'entrée étant le contenu textuel d'un modèle tandis que les sorties étaient les mots-clés réels. Nous limitons les données de formation à nos créateurs internes pour assurer un haut niveau du modèle. Malheureusement, les créateurs externes ont la motivation d'ajouter des mots-clés non pertinents afin d'être visibles même dans les requêtes de recherche sans rapport. Bien que le nombre de créateurs internes soit bien inférieur à celui des créateurs externes, cela n'a que peu ou pas de conséquence.

Afin d'obtenir une formation efficace, nous devions faire attention à la manière dont les données étaient choisies, mélangées et regroupées pendant la formation.

Pour nous assurer qu'il y avait un minimum de fautes d'orthographe dans les mots clés, nous avons choisi des mots clés qui sont apparus au moins 30 fois chez différents créateurs. Pendant la formation, nous nous limitons aux 1000 premiers mots-clés par langue. C'est ainsi que chaque mot-clé est vu "suffisamment" de fois pendant le processus de formation. Comme nous le verrons bientôt, cette limite de 1000 mots-clés ne s'applique pas lors de l'inférence.

Chaque lot ne contenait qu'une seule langue . Ceci a été fait pour qu'à chaque lot, les mots clés proviennent d'une seule langue. Cela garantit que nous n'attribuons pas accidentellement au mot-clé traduit une étiquette négative.

Nous avons également observé que la formation était moins bonne si nous apprenions une langue et passions à la suivante. Par conséquent, nous mélangeons les lots au hasard afin que le modèle ne devienne pas "bon" dans une langue avant d'essayer de passer à la suivante.

Perte asymétrique pour ignorer les étiquettes négatives

Dans le modèle CLIP, la perte contrastive est spécifiée par le pseudocode suivant (tiré de la figure 3 de l'article "Learning Transferable Visual Models From Natural Language Supervision" de Radford et al.), où loss_iet loss_treprésente la perte due à l'apprentissage d'une image et d'un texte représentation respectivement.

# 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

Nous utilisons à la place la perte asymétrique qui est fortement inspirée de la perte focale afin d'éviter l'exploitation minière pour ces exemples difficiles. La majeure partie de la perte peut être expliquée par l'équation suivante. Le paramètre gamma est appelé paramètre de focalisation , ce qui pénalise les exemples difficiles à classer par rapport aux exemples plus faciles à classer. La perte asymétrique est essentiellement une perte focale mais avec une plus forte gammadans le cas négatif. Ils coupent et déplacent également les probabilités négatives afin d'affaiblir encore plus l'effet des exemples négatifs. Tout cela pour que le modèle puisse automatiquement se concentrer sur les exemples positifs.

Définition de la perte asymétrique. Le paramètre gamma est appelé paramètre de focalisation, ce qui pénalise les exemples difficiles à classer par rapport aux exemples plus faciles à classer.

Une implémentation PyTorch du code de la fonction de perte peut être vue ci-dessous.

Il convient de noter que, étant donné que les modèles (sont deux transformateurs de phrases pré-formés), même sans aucune formation, ils démarrent avec une bonne précision. Le diagramme suivant montre les courbes de précision et de rappel pour différentes langues à divers hyper-paramètres.

Précision/Rappel pour certaines langues du jeu de validation. nl=Pays-Bas, hi=Hindi (Inde), tr=Turquie, pl=Pologne, ko=Corée, es=Espagne. Chacune des différentes courbes d'un panneau est l'endroit où j'ai changé l'un des hyper-paramètres (principalement le taux d'apprentissage). Un réglage trop bas d'un taux d'apprentissage conduit à la courbe jaune.

Inférence

Lors de l'inférence, nous prenons les 1000 mots-clés les plus populaires par langue et servons les 10 mots-clés les plus probables. Nous limitons davantage ces mots clés pour nous assurer que seuls les mots clés de la plus haute qualité sont suggérés. Étant donné que nous utilisons la perte asymétrique, nous ne pouvons pas simplement utiliser 0,5 et choisir à la place une valeur inférieure. Cela est dû au fait que, comme pour la perte focale, l'accent est mis sur l'augmentation de la probabilité de classes mal étiquetées.

Une astuce que nous utilisons consiste à précalculer les incorporations de mots-clés pour toutes les langues pour les 1000 mots-clés. Étant donné que la seule chose qui est dynamique sont les entrées de texte du modèle, nous pouvons garder le côté mot-clé constant.

Comme mentionné précédemment, rien ne nous empêche d'utiliser des mots-clés invisibles pendant la formation, ou même des langues totalement invisibles. Ceci est sujet à des travaux futurs.

Résumé

En conclusion, nous avons créé un modèle de classification multi-langues et multi-classes. Les ingrédients clés étaient le modèle jumeau, la fonction de perte et l'ordre dans lequel les données ont été introduites dans le modèle.

Nous servons actuellement ce modèle aux milliers de créateurs que nous avons. Dites-nous ce que vous pensez de nos modèles ML en vous inscrivant à Canva Creators .

Remerciements

Un grand merci à Canh Dinh pour avoir aidé à développer et à construire le modèle, et à Paul Tune pour m'avoir aidé à écrire ce post.

Intéressé à travailler sur des solutions innovantes de machine learning en design ? Rejoignez-nous!