Questa tesi dell’IA svela le ultime scoperte di Amazon sull’apprendimento automatico riguardanti il codice con bug nei modelli di linguaggio di grandi dimensioni

Le ultime rivelazioni dell'IA di Amazon sullo machine learning svelano il bug nei modelli di linguaggio di grandi dimensioni

La programmazione può essere complessa e scrivere codice senza errori è talvolta possibile. Sono stati sviluppati grandi modelli di linguaggio del codice (Code-LLMs) per aiutare con il completamento del codice, ma a volte possono trascurare i bug nel contesto del codice. Per affrontare questo problema, ricercatori dell’Università del Wisconsin-Madison e di Amazon Web Services hanno condotto uno studio per migliorare le prestazioni dei LLMs nel rilevare potenziali bug durante la generazione del codice.

La ricerca nella riparazione automatica del programma, sfruttando i Code-LLMs, mira ad alleviare l’onere dell’individuazione e della correzione dei bug di programmazione. Simili agli esempi avversari in altri domini, piccole trasformazioni di codice semanticamente conservanti possono degradare le prestazioni dei modelli di apprendimento del codice. Gli attuali benchmark come CodeXGLUE, CodeNet e HumanEval sono stati fondamentali per lo studio del completamento del codice e della riparazione dei programmi. Per migliorare la disponibilità dei dati, i metodi sintetizzano bug artificiali attraverso mutanti di codice o imparano a creare bug.

Il completamento del codice, una funzione cruciale negli ambienti di sviluppo integrati, ha visto miglioramenti con modelli di linguaggio basati su Transformer del codice. Tuttavia, questi modelli spesso trascurano la presenza di bug, un evento comune nello sviluppo del software. La ricerca introduce il concetto di completamento del codice con bug (bCC), in cui sono presenti potenziali bug nel contesto del codice, esplorando il comportamento dei Code-LLMs in tali scenari. Sono introdotti set di dati di benchmark, buggy-HumanEval e buggy-FixEval, per valutare i Code-LLMs in presenza di bug sintetici e realistici, rivelando una significativa degradazione delle prestazioni. Sono esplorati metodi di mitigazione per affrontare questo problema.

I metodi di mitigazione proposti includono la rimozione e quindi il completamento, eliminando frammenti di codice difettosi; il completamento e quindi la riscrittura, correggendo i bug dopo il completamento con modelli come RealiT; e la riscrittura e quindi il completamento, risolvendo i bug riscrivendo le linee di codice prima del completamento. Le prestazioni, misurate da tassi di superamento, favoriscono il completamento e quindi la riscrittura e la riscrittura e quindi il completamento. I Code-LLMs come RealiT e INCODER-6B funzionano come riparatori di codice, riempiendo i modelli di linguaggio in questi metodi.

La presenza di bug potenziali degrada notevolmente le prestazioni di generazione dei Code-LLMs, con una diminuzione delle percentuali di superamento di oltre il 50% per un singolo bug. Con la conoscenza della posizione del bug, l’oracolo euristico mostra una nota differenza di prestazioni tra buggy-HumanEval e buggy-FixEval, sottolineando l’importanza della posizione del bug. I metodi basati sulla probabilità mostrano prestazioni diverse sui due set di dati, suggerendo che la natura del bug influenzi la scelta del metodo di aggregazione. I metodi di mitigazione successivi, tra cui la rimozione e quindi il completamento e la riscrittura e quindi il completamento, offrono miglioramenti delle prestazioni. Tuttavia, esiste ancora una discrepanza, che indica la necessità di ulteriori ricerche per migliorare il completamento del codice con bug potenziali.

In sintesi, la ricerca condotta può essere presentata nei seguenti punti:

  • La ricerca introduce un nuovo task chiamato bCC.
  • Il bCC genera implementazioni funzionali a partire da un contesto di codice con bug potenziali.
  • Lo studio è valutato su due set di dati chiamati buggy-HumanEval e buggy-FixEval.
  • Le prestazioni dei Code-LLMs decadono significativamente, con tassi di superamento dei casi di test inferiori al 5%.
  • Sono proposti metodi di mitigazione, tra cui la rimozione e quindi il completamento e la riscrittura e quindi il completamento, ma le differenze di prestazioni persistono.
  • Questo lavoro migliora la comprensione dei Code-LLMs nel bCC.
  • La ricerca suggerisce modi per migliorare il completamento del codice in presenza di bug potenziali.