DeepMind afferma che il suo nuovo sistema di generazione di codice è competitivo con i programmatori umani
 
 
L’anno scorso, il laboratorio di ricerca OpenAI di San Francisco ha rilasciato Codex , un modello di intelligenza artificiale per tradurre i comandi del linguaggio naturale in codice dell’app. Il modello, che alimenta la funzione Copilot di GitHub , è stato annunciato all’epoca come uno degli esempi più potenti di programmazione delle macchine, la categoria di strumenti che automatizza lo sviluppo e la manutenzione del software.

Per non essere da meno, DeepMind, il laboratorio di intelligenza artificiale supportato dalla società madre di Google Alphabet, afferma di aver migliorato Codex in aree chiave con AlphaCode, un sistema in grado di scrivere codice “a livello di concorrenza”. Nelle competizioni di programmazione ospitate su Codeforces, una piattaforma per la programmazione di concorsi, DeepMind afferma che AlphaCode ha ottenuto una classifica media tra i primi 54,3% in 10 recenti concorsi con oltre 5.000 partecipanti ciascuno.

 
“Dai dati alla conoscenza”. In che modo l’organizzazione dei dati mediante LC:NC può ridurre drasticamente la complessità tecnica della derivazione della conoscenza dai dati._
 
Il principale ricercatore di DeepMind, Oriol Vinyals, afferma che è la prima volta che un sistema informatico raggiunge un livello così competitivo in tutte le competizioni di programmazione. “AlphaCode [può] leggere le descrizioni in linguaggio naturale di un problema algoritmico e produrre codice che non solo si compila, ma è corretto”, ha aggiunto in una dichiarazione. “[Esso] indica che c’è ancora del lavoro da fare per raggiungere il livello dei migliori risultati e far progredire le capacità di risoluzione dei problemi dei nostri sistemi di intelligenza artificiale. Ci auguriamo che questo benchmark porti a ulteriori innovazioni nella risoluzione dei problemi e nella generazione di codice”.

Imparare a programmare con l’IA
La programmazione della macchina è stata potenziata dall’IA negli ultimi mesi. Durante la  conferenza degli sviluppatori Build  del maggio 2021, Microsoft ha descritto in dettaglio una  nuova funzionalità in Power Apps che sfrutta il modello linguistico GPT-3  di OpenAI per assistere le persone nella scelta delle formule. ControlFlag di Intel   può rilevare autonomamente gli errori nel codice. E  TransCoder di Facebook  converte il codice da un linguaggio di programmazione in un altro.

 
Le applicazioni sono di vasta portata, spiegando perché c’è fretta di creare tali sistemi. Secondo uno studio dell’Università di Cambridge, almeno la metà degli sforzi degli sviluppatori viene spesa per il debug, che costa all’industria del software circa 312 miliardi di dollari all’anno. Gli strumenti di suggerimento e revisione del codice basati sull’intelligenza artificiale promettono di ridurre i costi di sviluppo consentendo ai programmatori di concentrarsi su attività creative e meno ripetitive, supponendo che i sistemi funzionino come pubblicizzato.

Come Codex, AlphaCode, la cui versione più grande contiene 41,4 miliardi di parametri, circa il quadruplo delle dimensioni di Codex, è stato addestrato su uno snapshot di repository pubblici su GitHub nei linguaggi di programmazione C++, C#, Go, Java, JavaScript, Lua, PHP, Python, Ruby, Rust, Scala e TypeScript. Il set di dati di addestramento di AlphaCode era di 715,1 GB, circa le stesse dimensioni di Codex, che OpenAI stimava essere “oltre 600 GB”.

Un esempio dell’interfaccia utilizzata da AlphaCode per rispondere alle sfide di programmazione.
Nell’apprendimento automatico, i parametri sono la parte del modello appresa dai dati di addestramento cronologici. In generale, la correlazione tra il numero di parametri e la sofisticatezza ha retto molto bene.

Dal punto di vista architettonico, AlphaCode è ciò che è noto come un modello di linguaggio basato su Transformer , simile al CodeT5 di generazione del codice di Salesforce . L’architettura Transformer è composta da due componenti principali: un encoder e un decoder. Il codificatore contiene livelli che elaborano i dati di input, come testo e immagini, in modo iterativo strato per strato. Ogni livello di codificatore genera codifiche con informazioni su quali parti degli input sono rilevanti l’una per l’altra. Passano quindi queste codifiche al livello successivo prima di raggiungere il livello del codificatore finale.

Creazione di un nuovo benchmark
I trasformatori in genere subiscono un apprendimento semi-supervisionato che prevede un pre-addestramento non supervisionato, seguito da una messa a punto supervisionata. Rimanendo tra l’apprendimento supervisionato e non supervisionato, l’apprendimento semi-supervisionato accetta dati che sono parzialmente etichettati o in cui la maggior parte dei dati manca di etichette. In questo caso, i Trasformatori vengono prima sottoposti a dati “sconosciuti” per i quali non esistono etichette precedentemente definite. Durante il processo di messa a punto, i Transformer si allenano su set di dati etichettati in modo da imparare a svolgere compiti particolari come rispondere a domande, analizzare i sentimenti e parafrasare documenti.

 
Nel caso di AlphaCode, DeepMind ha messo a punto e testato il sistema su CodeContests, un nuovo set di dati creato dal laboratorio che include problemi, soluzioni e casi di test estratti da Codeforces con set di dati di programmazione pubblica mescolati. DeepMind ha anche testato la versione di AlphaCode con le migliori prestazioni — un insieme del modello da 41 miliardi di parametri e un modello da 9 miliardi di parametri — sui test di programmazione effettivi su Codeforces, eseguendo AlphaCode live per generare soluzioni per ogni problema.

Su CodeContests, dato fino a un milione di campioni per problema, AlphaCode ha risolto il 34,2% dei problemi. E su Codeforces, DeepMind afferma di rientrare nel 28% dei migliori utenti che hanno partecipato a un concorso negli ultimi sei mesi in termini di prestazioni complessive.

“L’ultimo documento di DeepMind è ancora una volta un’impressionante prodezza di ingegneria che mostra che ci sono ancora notevoli vantaggi da ottenere dai nostri attuali modelli basati su Transformer con” il giusto “campionamento e modifiche di addestramento e nessun cambiamento fondamentale nell’architettura del modello”, Connor Leahy, un membro dello sforzo di ricerca sull’IA aperta EleutherAI, ha detto a VentureBeat via e-mail. “DeepMind mette in evidenza l’intera gamma degli strumenti di ritocchi e best practice utilizzando dati puliti, modelli di grandi dimensioni, un’intera suite di trucchi di addestramento intelligenti e, naturalmente, molto calcolo. DeepMind ha spinto le prestazioni di questi modelli molto più velocemente di quanto mi sarei aspettato. Il risultato della programmazione competitiva del 50° percentile è un enorme balzo in avanti, e la loro analisi mostra chiaramente che questa non è “solo memorizzazione”.

Limitazioni alla generazione del codice
La programmazione delle macchine non è affatto una scienza risolta e DeepMind ammette che AlphaCode ha dei limiti. Ad esempio, il sistema non produce sempre codice sintatticamente corretto per ogni linguaggio, in particolare in C++. AlphaCode ha anche prestazioni peggiori nella generazione di codice impegnativo, come quello richiesto per la programmazione dinamica, una tecnica per risolvere problemi matematici complessi.

 
AlphaCode potrebbe essere problematico anche in altri modi. Sebbene DeepMind non abbia sondato il modello per individuare eventuali bias, è stato dimostrato che i modelli di generazione di codice, incluso Codex, amplificano i contenuti tossici e difettosi nei set di dati di addestramento. Ad esempio, Codex può essere invitato a scrivere “terrorista” quando viene nutrito con la parola “Islam” e generare codice che sembra essere superficialmente corretto ma rappresenta un rischio per la sicurezza invocando software compromesso e utilizzando configurazioni non sicure.

Sistemi come AlphaCode – che, va notato, sono costosi da produrre e mantenere – potrebbero anche essere utilizzati in modo improprio, come hanno esplorato studi recenti . I ricercatori di Booz Allen Hamilton ed  EleutherAI hanno addestrato un modello di linguaggio chiamato GPT-J per generare codice in grado di risolvere esercizi introduttivi di informatica, aggirando con successo un software di rilevamento del plagio di programmazione ampiamente utilizzato. All’Università del Maryland, i ricercatori hanno scoperto che è possibile che gli attuali modelli linguistici generino falsi rapporti sulla sicurezza informatica  abbastanza convincenti  da ingannare i maggiori esperti.

È una domanda aperta se gli attori malintenzionati utilizzeranno questi tipi di sistemi in futuro per automatizzare la creazione di malware su larga scala. Per questo motivo, Mike Cook, un ricercatore di intelligenza artificiale presso la Queen Mary University di Londra, contesta l’idea che AlphaCode avvicini il settore a “un’intelligenza artificiale per la risoluzione dei problemi”.

“Penso che questo risultato non sia troppo sorprendente, dato che la comprensione del testo e la generazione del codice sono due dei quattro grandi compiti in cui l’IA ha mostrato miglioramenti negli ultimi anni… Una sfida con questo dominio è che gli output tendono ad essere abbastanza sensibili ai guasti. Una parola, un pixel o una nota musicale sbagliati in una storia, un’opera d’arte o una melodia generati dall’intelligenza artificiale potrebbero non rovinarci tutto, ma un singolo test case mancato in un programma può far crollare le navette spaziali e distruggere le economie”, ha detto Cook a VentureBeat Via Posta Elettronica. “Quindi, sebbene l’idea di dare il potere della programmazione a persone che non possono programmare sia eccitante, abbiamo molti problemi da risolvere prima di arrivarci”.

 
Se DeepMind è in grado di risolvere questi problemi – e questo è un grande se – è in grado di realizzare un buon profitto in un mercato in costante crescita. Tra i domini pratici che il laboratorio ha recentemente affrontato con l’intelligenza artificiale, come  le previsioni meteorologiche ,  la modellazione dei materiali ,  il calcolo dell’energia atomica ,  i consigli sulle app e  l’ottimizzazione del raffreddamento dei data center , la programmazione è tra le più redditizie. Anche la migrazione di una base di codice esistente a un linguaggio più efficiente come Java o C++ comporta una somma principesca. Ad esempio, la Commonwealth Bank of Australia  ha speso  circa 750 milioni di dollari nel corso di cinque anni per convertire la sua piattaforma da COBOL a Java.

“Posso tranquillamente affermare che i risultati di AlphaCode hanno superato le mie aspettative. Ero scettico perché anche in semplici problemi competitivi è spesso richiesto non solo di implementare l’algoritmo, ma anche (e questa è la parte più difficile) di inventarlo”, ha affermato in una nota il fondatore di Codeforces Mike Mirzayanov. “AlphaCode è riuscito a esibirsi al livello di un nuovo promettente concorrente. Non vedo l’ora di vedere cosa ci aspetta”.

Di ihal