← Derniers articles
💬 NLP

Fine-Tuning Pre-Trained Code Models for AI-Generated Code Detection

Le document présente le système de l'équipe « Archaeology » pour la tâche 13 de SemEval-2026, qui exploite des modèles de code préentraînés affinés et des stratégies spécialisées telles que la validation croisée en laissant une langue de côté et l'empaquetage de tokens sandwich pour atteindre des performances de premier plan dans la détection du code généré par l'IA et l'attribution de sa source.

Auteurs originaux : Jany-Gabriel Ispas, Sergiu Nisioi

Publié 2026-05-05
📖 6 min de lecture🧠 Analyse approfondie

Auteurs originaux : Jany-Gabriel Ispas, Sergiu Nisioi

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

Imaginez une agence de détectives numériques appelée Archaeology. Leur travail ne consiste pas à fouiller de la poterie antique, mais à tamiser des piles de code informatique pour répondre à deux grandes questions :

  1. Qui a écrit ceci ? S'agit-il d'un programmeur humain ou d'un robot (IA) ?
  2. Quel robot l'a écrit ? Si c'est un robot, quel modèle d'IA spécifique l'a créé ?

Cette équipe a participé à une compétition à haut risque appelée SemEval-2026 Task 13 pour prouver ses compétences. Voici comment ils ont procédé, expliqué simplement.

Le Défi : Un Mystère en Deux Parties

La compétition comportait deux énigmes distinctes, chacune nécessitant une stratégie d'enquête différente.

Énigme A : Le Test "Humain vs Robot" (Classification Binaire)

  • L'Objectif : Examiner un morceau de code et dire "Humain" ou "IA".
  • Le Piège : L'équipe s'est entraînée principalement sur du code Python (91 % de leurs données d'entraînement), mais le test final incluait des langues qu'ils n'avaient jamais vues, comme JavaScript, Go et C#. C'est comme enseigner à un chef de cuisiner uniquement de la nourriture italienne, puis lui demander d'identifier si un plat est fait maison ou fabriqué en usine alors qu'il s'agit en réalité d'un curry thaï.
  • L'Indices : Le code généré par l'IA a tendance à être plus long et plus uniforme, tandis que le code humain est plus court et plus chaotique. Cependant, cette règle s'inverse selon la langue (par exemple, en C++, les humains écrivent en réalité du code plus long que l'IA).

Énigme B : Le Test "Quel Robot ?" (Attribution Multi-Classes)

  • L'Objectif : Si le code est généré par une IA, identifier exactement lequel des 11 modèles d'IA différents l'a écrit.
  • Le Piège : Les données étaient extrêmement déséquilibrées. Une catégorie (code écrit par des humains) représentait 88 % des données, tandis que certains modèles d'IA spécifiques avaient moins de 2 000 exemples. C'est comme chercher une aiguille dans une botte de foin, où la botte est composée à 99 % de foin et les aiguilles sont de différentes couleurs, mais vous n'avez qu'une seule aiguille rouge et un million d'aiguilles bleues.
  • L'Indices : Différents modèles d'IA ont des styles d'"écriture" subtils, mais ces styles sont difficiles à repérer dans du code long et complexe.

La Boîte à Outils du Détective

L'équipe n'a pas seulement deviné ; elle a utilisé quatre "super-yeux" différents (modèles d'IA pré-entraînés) et leur a donné des techniques d'entraînement spéciales pour chaque énigme.

Pour l'Énigme A (Humain vs Robot)

  1. L'Exercice "Changement de Langue" : Pour se préparer aux langues surprises du test, ils ont entraîné les modèles en cachant une langue à la fois. Ils ont appris au modèle à reconnaître des modèles sans dépendre de astuces spécifiques à une langue (comme l'utilisation de # pour les commentaires en Python).
  2. L'Entraînement "Nettoyage et Masquage" : Ils ont retiré les commentaires et remplacé les nombres par des espaces réservés pendant l'entraînement. Cela a forcé les modèles à examiner la logique du code, et non seulement les décorations de surface.
  3. La Stratégie "Découpage" : Puisque le code de test était souvent trop long pour être lu d'un seul coup, ils l'ont découpé en morceaux se chevauchant (comme lire un long livre en lisant quelques pages à la fois). Ils ont ensuite pris la moyenne de ces tranches, en ignorant les prédictions les plus extrêmes et "bruyantes", pour prendre une décision finale.
  4. Le Réglage "Cas Difficiles" : Ils ont créé un "test difficile" spécial en utilisant des exemples qu'un simple programme informatique avait mal classés. Ils ont ajusté leur seuil de décision (la ligne entre "Humain" et "IA") sur la base de ces cas piégeux pour s'assurer qu'ils ne seraient pas trompés par les données du test.

Pour l'Énigme B (Quel Robot ?)

  1. La Technique "Sandwich" : Puisque le code était trop long pour tenir dans la mémoire du modèle, ils ne l'ont pas simplement coupé au milieu. Au lieu de cela, ils ont conservé la Tête (début) et la Queue (fin) du code et les ont empilés ensemble comme un sandwich, avec un marqueur spécial au milieu. Cela a préservé le style au début et à la fin, là où la "signature robot" se cache souvent.
  2. Le Poids "Équité" : Comme certains modèles d'IA étaient rares dans les données, l'équipe a dit au modèle : "Ne devinez pas simplement le plus courant ! Faites attention particulière aux rares." Ils ont ajusté le système de scoring afin que le modèle apprenne à repérer les robots rares, et non seulement les populaires.
  3. Le Vote "Sagesse de la Foule" : Ils ont fait passer le même code à travers le modèle plusieurs fois avec de légères variations et ont laissé les modèles voter pour la réponse. Cela a réduit les erreurs et augmenté la confiance.

Les Résultats

L'équipe "Archaeology" s'en est très bien sortie :

  • Énigme A : Ils ont obtenu un score de 0,737, se classant 6e sur 81 équipes. Leur meilleur outil était CodeBERT, qui semblait mieux comprendre la "logique" du code que les autres.
  • Énigme B : Ils ont obtenu un score de 0,422, se classant 7e sur 34 équipes. Leur meilleur outil ici était UniXcoder, qui a bénéficié de l'examen de tranches de code plus longues et de l'utilisation de la stratégie de "vote".

La Grande Leçon

L'équipe a découvert que la façon dont un modèle est entraîné compte plus que sa taille.

  • Les petits modèles (125 millions de paramètres) entraînés spécifiquement pour comprendre la logique du code ont mieux performé pour repérer l'IA.
  • Le géant (220 millions de paramètres) n'a pas gagné, ce qui suggère que pour ce travail spécifique, être un "spécialiste" est mieux que d'être un "généraliste".

En bref, l'équipe a prouvé qu'avec les bons tours d'entraînement — comme découper le code long, ignorer le bruit de surface et voter sur les réponses — on peut construire un système étonnamment efficace pour repérer le code généré par l'IA, même lorsqu'il tente de se déguiser dans de nouvelles langues.

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →