La contamination arrive de plusieurs façons. Inclusion directe : les données de benchmark apparaissent textuellement dans le corpus d'entraînement (souvent via le scraping de sites qui hébergent les questions de benchmark). Fuite indirecte : les données d'entraînement incluent des discussions sur les questions de benchmark, des solutions générées par des modèles ou du contenu dérivé. Fuite temporelle : un modèle est évalué sur un « nouveau » benchmark, mais la coupure des données d'entraînement inclut des versions antérieures de ce benchmark.
Détecter la contamination n'est pas simple. Tu peux chercher des correspondances exactes des questions de test dans les données d'entraînement, mais les correspondances paraphrasées ou partielles sont plus difficiles à repérer. Certains chercheurs utilisent des attaques d'inférence d'appartenance — vérifiant si la confiance du modèle sur les exemples de test est suspicieusement plus élevée que sur des exemples similaires non vus. Mais ces méthodes ont des faux positifs et négatifs, et l'accès aux données d'entraînement est souvent limité.
La communauté répond de plusieurs façons : des benchmarks privés avec des données retenues qui ne sont pas publiées (comme certaines évaluations internes des labos d'IA), des benchmarks dynamiques qui génèrent régulièrement de nouvelles questions, Chatbot Arena (qui utilise de vraies préférences d'utilisateurs plutôt que des ensembles de test statiques), et l'analyse de contamination comme partie obligatoire des rapports d'évaluation de modèles. Le virage vers l'évaluation humaine et les benchmarks en direct est en partie motivé par le problème de contamination.