← Últimos artigos
💬 NLP

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

O artigo apresenta o sistema da equipe "Archaeology" para a Tarefa 13 do SemEval-2026, que aproveita modelos de código pré-treinados ajustados finamente e estratégias especializadas, como validação cruzada leave-one-language-out e empacotamento de tokens sanduíche, para alcançar desempenho de alto nível na detecção de código gerado por IA e na atribuição de sua origem.

Autores originais: Jany-Gabriel Ispas, Sergiu Nisioi

Publicado 2026-05-05
📖 5 min de leitura🧠 Leitura aprofundada

Autores originais: Jany-Gabriel Ispas, Sergiu Nisioi

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine uma agência de detetives digitais chamada Arqueologia. Seu trabalho não é desenterrar cerâmicas antigas, mas sim vasculhar pilhas de código de computador para responder a duas grandes perguntas:

  1. Quem escreveu isso? Foi um programador humano ou um robô (IA)?
  2. Qual robô escreveu? Se foi um robô, qual modelo de IA específico o criou?

Esta equipe entrou em uma competição de alto risco chamada SemEval-2026 Task 13 para provar suas habilidades. Aqui está como eles se saíram, explicado de forma simples.

O Desafio: Um Mistério em Duas Partes

A competição tinha dois quebra-cabeças distintos, cada um exigindo uma estratégia de detetive diferente.

Quebra-Cabeça A: O Teste "Humano vs. Robô" (Classificação Binária)

  • O Objetivo: Olhar para um trecho de código e dizer "Humano" ou "IA".
  • A Armadilha: A equipe foi treinada principalmente com código em Python (91% de seus dados de prática), mas o teste final incluiu linguagens que eles nunca tinham visto antes, como JavaScript, Go e C#. É como ensinar um chef a cozinhar apenas comida italiana e, em seguida, pedir que ele identifique se um prato é caseiro ou de fábrica quando, na verdade, é um curry tailandês.
  • A Pista: O código de IA tende a ser mais longo e uniforme, enquanto o código humano é mais curto e caótico. No entanto, essa regra inverte dependendo da linguagem (por exemplo, em C++, os humanos na verdade escrevem código mais longo do que a IA).

Quebra-Cabeça B: O Teste "Qual Robô?" (Atribuição Multiclasse)

  • O Objetivo: Se o código for gerado por IA, identificar exatamente qual um dos 11 modelos de IA diferentes o escreveu.
  • A Armadilha: Os dados estavam extremamente desbalanceados. Uma categoria (código escrito por humanos) compunha 88% dos dados, enquanto alguns modelos de IA específicos tinham menos de 2.000 exemplos. É como tentar encontrar uma agulha em um palheiro, onde o palheiro é 99% palha e as agulhas são de cores diferentes, mas você tem apenas uma agulha vermelha e um milhão de azuis.
  • A Pista: Diferentes modelos de IA têm estilos de "caligrafia" sutis, mas esses estilos são difíceis de detectar em código longo e complexo.

A Caixa de Ferramentas do Detetive

A equipe não apenas chutou; eles usaram quatro "super-olhos" diferentes (modelos de IA pré-treinados) e deram a eles técnicas de treinamento especiais para cada quebra-cabeça.

Para o Quebra-Cabeça A (Humano vs. Robô)

  1. O Exercício "Troca de Linguagem": Para se preparar para as linguagens surpresa no teste, eles treinaram os modelos escondendo uma linguagem de cada vez. Eles ensinaram o modelo a reconhecer padrões sem depender de truques específicos de linguagem (como o uso de # para comentários no Python).
  2. O Treino "Limpeza e Máscara": Eles removeram comentários e substituíram números por espaços reservados durante o treinamento. Isso forçou os modelos a olhar para a lógica do código, não apenas para as decorações superficiais.
  3. A Estratégia "Fragmentação": Como o código de teste era frequentemente longo demais para ser lido de uma só vez, eles o cortaram em pedaços sobrepostos (como ler um livro longo lendo algumas páginas de cada vez). Em seguida, eles tiraram a média desses pedaços, ignorando as previsões mais extremas e "ruidosas", para tomar uma decisão final.
  4. A Calibração "Casos Difíceis": Eles criaram um "teste especial difícil" usando exemplos que um programa de computador simples errou. Eles ajustaram seu limiar de decisão (a linha entre "Humano" e "IA") com base nesses casos complicados para garantir que não fossem enganados pelos dados de teste.

Para o Quebra-Cabeça B (Qual Robô?)

  1. A Técnica "Sanduíche": Como o código era longo demais para caber na memória do modelo, eles não apenas cortaram o meio. Em vez disso, mantiveram a Cabeça (início) e a Cauda (fim) do código e os juntaram como um sanduíche, com um marcador especial no meio. Isso preservou o estilo no início e no fim, que é frequentemente onde a "assinatura do robô" se esconde.
  2. O Peso "Justiça": Como alguns modelos de IA eram raros nos dados, a equipe disse ao modelo: "Não adivinhe apenas o mais comum! Preste atenção extra nos raros." Eles ajustaram o sistema de pontuação para que o modelo aprendesse a identificar os robôs raros, não apenas os populares.
  3. O Voto "Sabedoria da Multidão": Eles executaram o mesmo código através do modelo várias vezes com pequenas variações e deixaram os modelos votarem na resposta. Isso reduziu erros e aumentou a confiança.

Os Resultados

A equipe "Arqueologia" se saiu muito bem:

  • Quebra-Cabeça A: Eles obtiveram uma pontuação de 0,737, ficando em 6º lugar entre 81 equipes. Sua melhor ferramenta foi o CodeBERT, que parecia entender a "lógica" do código melhor do que os outros.
  • Quebra-Cabeça B: Eles obtiveram uma pontuação de 0,422, ficando em 7º lugar entre 34 equipes. Sua melhor ferramenta aqui foi o UniXcoder, que se beneficiou de olhar para pedaços de código mais longos e usar a estratégia de "votação".

A Grande Conclusão

A equipe descobriu que como um modelo foi treinado importa mais do que o seu tamanho.

  • Os modelos menores (125 milhões de parâmetros) que foram treinados especificamente para entender a lógica do código se saíram melhor na detecção de IA.
  • O modelo gigante (220 milhões de parâmetros) não venceu, sugerindo que, para este trabalho específico, ser um "especialista" é melhor do que ser um "generalista".

Em resumo, a equipe provou que, com os truques de treinamento certos — como cortar código longo, ignorar ruídos superficiais e votar nas respostas — você pode construir um sistema que é surpreendentemente bom em pegar código gerado por IA, mesmo quando ele tenta se disfarçar em novas linguagens.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →