← Ultimi articoli
💬 NLP

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

Il documento presenta il sistema del team "Archaeology" per il Task 13 di SemEval-2026, che sfrutta modelli di codice pre-addestrati affinati e strategie specializzate come la convalida incrociata leave-one-language-out e il packing a sandwich dei token per ottenere prestazioni di livello superiore nel rilevamento del codice generato dall'intelligenza artificiale e nell'attribuzione della sua fonte.

Autori originali: Jany-Gabriel Ispas, Sergiu Nisioi

Pubblicato 2026-05-05
📖 5 min di lettura🧠 Approfondimento

Autori originali: Jany-Gabriel Ispas, Sergiu Nisioi

Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo

Immaginate un'agenzia investigativa digitale chiamata Archaeology. Il loro compito non è scavare antiche ceramiche, ma setacciare mucchi di codice informatico per rispondere a due grandi domande:

  1. Chi ha scritto questo? È stato un programmatore umano o un robot (AI)?
  2. Quale robot l'ha scritto? Se è stato un robot, quale specifico modello di AI lo ha creato?

Questo team ha partecipato a una competizione ad alto rischio chiamata SemEval-2026 Task 13 per dimostrare le proprie abilità. Ecco come ce l'hanno fatta, spiegato in modo semplice.

La Sfida: Un Mistero in Due Parti

La competizione presentava due enigmi distinti, ognuno richiedente una strategia investigativa diversa.

Enigma A: Il Test "Umano vs Robot" (Classificazione Binaria)

  • L'Obiettivo: Osservare un pezzo di codice e dire "Umano" o "AI".
  • La Trappola: Il team è stato addestrato principalmente su codice Python (il 91% dei dati di pratica), ma il test finale includeva linguaggi che non avevano mai visto prima, come JavaScript, Go e C#. È come insegnare a uno chef a cucinare solo cibo italiano, per poi chiedergli di identificare se un piatto è fatto in casa o industriale quando in realtà è un curry thailandese.
  • L'Indizio: Il codice AI tende ad essere più lungo e uniforme, mentre il codice umano è più corto e caotico. Tuttavia, questa regola si inverte a seconda del linguaggio (ad esempio, in C++, gli umani scrivono effettivamente codice più lungo rispetto all'AI).

Enigma B: Il Test "Quale Robot?" (Attribuzione Multi-Classe)

  • L'Obiettivo: Se il codice è generato dall'AI, identificare esattamente quale dei 11 diversi modelli di AI lo ha scritto.
  • La Trappola: I dati erano estremamente sbilanciati. Una categoria (codice scritto da umani) costituiva l'88% dei dati, mentre alcuni modelli AI specifici avevano meno di 2.000 esempi. È come cercare un ago in un pagliaio, dove il pagliaio è per il 99% paglia e gli aghi sono di colori diversi, ma avete solo un ago rosso e un milione di aghi blu.
  • L'Indizio: Diversi modelli AI hanno sottili stili di "scrittura", ma questi stili sono difficili da individuare in codice lungo e complesso.

Il Corredo dell'Investigatore

Il team non ha solo indovinato; ha utilizzato quattro diversi "super-occhi" (modelli AI pre-addestrati) e ha fornito loro tecniche di addestramento speciali per ogni enigma.

Per l'Enigma A (Umano vs Robot)

  1. L'Esercizio "Scambio di Lingua": Per prepararsi alle lingue a sorpresa nel test, hanno addestrato i modelli nascondendo una lingua alla volta. Hanno insegnato al modello a riconoscere i pattern senza affidarsi a trucchi specifici del linguaggio (come il fatto che Python usa # per i commenti).
  2. L'Allenamento "Pulisci e Maschera": Hanno rimosso i commenti e sostituito i numeri con segnaposto durante l'addestramento. Questo ha costretto i modelli a guardare la logica del codice, non solo le decorazioni superficiali.
  3. La Strategia "A Fette" (Chunking): Poiché il codice di test era spesso troppo lungo per essere letto tutto in una volta, lo hanno tagliato in pezzi sovrapposti (come leggere un libro lungo leggendo poche pagine alla volta). Hanno poi preso la media di queste fette, ignorando le ipotesi più estreme e "rumorose", per prendere una decisione finale.
  4. La Calibrazione "Casi Difficili": Hanno creato un apposito "test difficile" utilizzando esempi che un semplice programma informatico aveva sbagliato. Hanno tarato la loro soglia decisionale (la linea tra "Umano" e "AI") basandosi su questi casi insidiosi per assicurarsi di non essere ingannati dai dati di test.

Per l'Enigma B (Quale Robot?)

  1. La Tecnica "Panino": Poiché il codice era troppo lungo per entrare nella memoria del modello, non hanno semplicemente tagliato via la parte centrale. Invece, hanno mantenuto la Testa (inizio) e la Coda (fine) del codice e le hanno accostate come un panino, con un marcatore speciale nel mezzo. Questo ha preservato lo stile all'inizio e alla fine, dove spesso si nasconde la "firma del robot".
  2. Il Peso "Equità": Poiché alcuni modelli AI erano rari nei dati, il team ha detto al modello: "Non indovinare solo quello più comune! Presta attenzione extra a quelli rari." Hanno aggiustato il sistema di punteggio in modo che il modello imparasse a individuare i robot rari, non solo quelli popolari.
  3. Il Voto della "Saggezza della Folla": Hanno eseguito lo stesso codice attraverso il modello più volte con lievi variazioni e hanno lasciato che i modelli votassero per la risposta. Questo ha ridotto gli errori e aumentato la fiducia.

I Risultati

Il team "Archaeology" ha ottenuto risultati molto buoni:

  • Enigma A: Hanno ottenuto un punteggio di 0.737, piazzandosi 6° su 81 team. Il loro miglior strumento è stato CodeBERT, che sembrava comprendere la "logica" del codice meglio degli altri.
  • Enigma B: Hanno ottenuto un punteggio di 0.422, piazzandosi 7° su 34 team. Il loro miglior strumento qui è stato UniXcoder, che ha beneficiato dell'osservazione di pezzi di codice più lunghi e dell'uso della strategia di "voto".

La Grande Lezione

Il team ha scoperto che come un modello è stato addestrato conta più di quanto sia grande.

  • I modelli più piccoli (125 milioni di parametri) che sono stati addestrati specificamente per comprendere la logica del codice hanno funzionato meglio nell'individuare l'AI.
  • Il modello gigante (220 milioni di parametri) non ha vinto, suggerendo che per questo lavoro specifico, essere uno "specialista" è meglio che essere un "generalista".

In breve, il team ha dimostrato che con i giusti trucchi di addestramento — come tagliare il codice lungo, ignorare il rumore superficiale e votare sulle risposte — è possibile costruire un sistema sorprendentemente bravo a catturare il codice generato dall'AI, anche quando cerca di mascherarsi in nuovi linguaggi.

Sommerso dagli articoli nel tuo campo?

Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.

Prova Digest →