SynthID : outils permettant d'ajouter un filigrane et de détecter le texte généré par un LLM

L'intelligence artificielle générative (GenAI) peut générer un éventail plus large de contenus très divers à des échelles inimaginables. Bien que la majorité de ces utilisations soit à des fins légitimes, nous craignons qu'elles ne contribuent à des problèmes de désinformation et d'attribution erronée. Le filigranage est une technique permettant d'atténuer ces impacts potentiels. Des filigranes imperceptibles par l'humain peuvent être appliqués au contenu généré par IA, et les modèles de détection peuvent évaluer un contenu arbitraire pour indiquer la probabilité qu'il ait été filigrané.

SynthID est une technologie de Google DeepMind qui ajoute un filigrane et identifie le contenu généré par IA en intégrant des filigranes numériques directement dans des images, des fichiers audio, du texte ou des vidéos générés par l'IA. SynthID Text a été rendu Open Source pour mettre à la disposition des développeurs le filigranage pour la génération de texte. Pour obtenir une description technique plus complète de la méthode, consultez l'article dans Nature.

Une implémentation de niveau production de SynthID Text est disponible dans Hugging Face Transformers 4.46.0+, que vous pouvez tester dans l'espace texte SynthID officiel. Une implémentation de référence est également disponible sur GitHub. Elle peut être utile aux mainteneurs et contributeurs Open Source qui souhaitent appliquer cette technique à d'autres frameworks.

Application de filigrane

En pratique, SynthID Text est un processeur logits, appliqué au pipeline de génération de votre modèle après Top-K et Top-P, qui augmente les fonctions logit du modèle à l'aide d'une fonction g pseudo-aléatoire pour encoder les informations de filigrane de manière à vous aider à déterminer si le texte a été généré par votre modèle, sans affecter de manière significative la qualité du texte. Consultez l'article pour obtenir une description technique complète de l'algorithme et une analyse de l'impact des différentes valeurs de configuration sur les performances.

Les filigranes sont configurés pour paramétrer la fonction g et la manière dont elle est appliquée lors de la génération. Chaque configuration de filigrane que vous utilisez doit être stockée de manière sécurisée et privée, sinon votre filigrane risque d'être très facilement dupliqué par d'autres.

Vous devez définir deux paramètres dans chaque configuration de filigrane:

  • Le paramètre keys est une liste d'entiers aléatoires uniques qui sont utilisés pour calculer les scores de fonction g dans le vocabulaire du modèle. La longueur de cette liste détermine le nombre de calques de filigrane appliqués. Consultez l'annexe C.1 de l'article pour plus de détails.
  • Le paramètre ngram_len permet d'équilibrer la robustesse et la détectabilité. Plus la valeur est élevée, plus le filigrane est détectable, mais il est plus sensible aux modifications. Une longueur de 5 est une bonne valeur par défaut.

Vous pouvez configurer davantage le filigrane en fonction de vos besoins en termes de performances:

  • Une table d'échantillonnage est configurée par deux propriétés, sampling_table_size et sampling_table_seed. Vous souhaitez utiliser un sampling_table_size d'au moins\( 2^{16} \) pour vous assurer d'une fonction g non biaisée et stable lors de l'échantillonnage. Toutefois, sachez que la taille de la table d'échantillonnage a une incidence sur la quantité de mémoire requise au moment de l'inférence. Vous pouvez utiliser n'importe quel entier comme sampling_table_seed.
  • Les n-grammes répétés dans les jetons précédents context_history_size ne sont pas marqués pour améliorer la détectabilité.

Aucune formation supplémentaire n'est requise pour générer du texte avec un filigrane SynthID Text à l'aide de vos modèles. Il vous suffit de configurer le filigrane qui est transmis à la méthode .generate() du modèle pour activer le processeur de logits SynthID Text. Consultez l'article de blog et l'espace pour obtenir des exemples de code montrant comment appliquer un filigrane dans la bibliothèque Transformers.

Détection et vérifiabilité des filigranes

La détection de filigrane est probabiliste. Un détecteur bayésien est fourni avec Hugging Face Transformers et sur GitHub. Ce détecteur peut générer trois états de détection possibles : filigrané, non filigrané ou incertain. Le comportement peut être personnalisé en définissant deux valeurs de seuil pour obtenir un taux de faux positifs et de faux négatifs spécifiques. Pour en savoir plus, consultez l'annexe C.8 de l'article.

Les modèles qui utilisent le même tokenizer peuvent également partager la configuration et le détecteur de filigrane, et donc un filigrane commun, à condition que l'ensemble d'entraînement du détecteur inclue des exemples de tous les modèles qui partagent le filigrane.

Une fois que vous avez entraîné un détecteur, vous pouvez choisir de l'exposer à vos utilisateurs et au public en général, et de la manière dont vous le faites.

  • L'option entièrement privée ne libère ni n'expose le détecteur de quelque manière que ce soit.
  • L'option semi-privée ne libère pas le détecteur, mais l'expose via une API.
  • L'option public permet de libérer le détecteur pour que d'autres utilisateurs puissent le télécharger et l'utiliser.

Vous et votre organisation devez choisir l'approche de validation de détection la mieux adaptée à vos besoins, en fonction de votre capacité à gérer l'infrastructure et les processus associés.

Limites

Les filigranes de texte SynthID sont résistants à certaines transformations (recadrage de parties de texte, modification de quelques mots ou paraphrasage léger), mais cette méthode présente certaines limites.

  • L'application de filigranes est moins efficace sur les réponses factuelles, car il y a moins de possibilités d'augmenter la génération sans réduire la précision.
  • Les scores de confiance du détecteur peuvent être considérablement réduits lorsqu'un texte généré par IA est entièrement réécrit ou traduit dans une autre langue.

SynthID Text n'est pas conçu pour empêcher directement les adversaires motivés de causer des dommages. Toutefois, il peut compliquer l'utilisation du contenu généré par IA à des fins malveillantes, et il peut être associé à d'autres approches pour offrir une meilleure couverture sur tous les types de contenus et plates-formes.