L'azienda DeepMind, nota per le sue innovazioni nel campo dell'intelligenza artificiale e nello sviluppo di reti neurali in grado di competere in giochi per computer e da tavolo al livello umano, ha presentato il progetto AlphaCode, un sistema di apprendimento automatico per la generazione di codice, capace di partecipare a competizioni di programmazione sulla piattaforma Codeforces e di mostrare risultati medi. Una delle caratteristiche chiave di questa innovazione è la capacità di generare codice in linguaggi come Python o C++, a partire da una descrizione del problema in lingua inglese.
Per testare il sistema, sono stati selezionati 10 nuovi concorsi di Codeforces con oltre 5000 partecipanti, tenutisi dopo la conclusione dell'addestramento del modello di machine learning. I risultati ottenuti hanno permesso al sistema AlphaCode di posizionarsi approssimativamente a metà classifica di questi concorsi (54,3%). Il punteggio totale previsto per AlphaCode è di 1238 punti, che garantisce l'ingresso nel Top 28% di tutti i partecipanti di Codeforces che hanno partecipato a concorsi negli ultimi 6 mesi. Va notato che il progetto è ancora nelle fasi iniziali di sviluppo e in futuro si prevede di migliorare la qualità del codice generato, oltre a sviluppare AlphaCode verso sistemi che assistano nella scrittura di codice o strumenti di sviluppo di applicazioni utilizzabili da utenti senza competenze di programmazione.
Nel progetto viene utilizzata l'architettura di rete neurale "Transformer" in combinazione con metodi di campionamento e filtraggio, che consentono di generare diverse varianti imprevedibili di codice, corrispondenti al testo in linguaggio naturale. Dopo il filtraggio, la clusterizzazione e il ranking, viene selezionato il codice di lavoro ottimale dal flusso di varianti generato, che viene poi verificato per garantire che produca il risultato corretto (in ciascun compito di gara viene fornito un esempio di dati di input e il risultato corrispondente che deve essere ottenuto dopo l'esecuzione del programma).

Per l'addestramento intensivo del sistema di apprendimento automatico è stato utilizzato un codice sorgente disponibile in repository pubblici su GitHub. Dopo la preparazione del modello iniziale, è stata effettuata una fase di ottimizzazione, effettuata sulla base di una raccolta di codice contenente esempi di problemi e soluzioni proposte ai partecipanti delle competizioni Codeforces, CodeChef, HackerEarth, AtCoder e Aizu. In totale, sono stati utilizzati 715 GB di codice da GitHub e oltre un milione di esempi di soluzioni a problemi tipici delle competizioni. Prima di passare alla generazione del codice, il testo del problema ha attraversato una fase di normalizzazione, durante la quale è stato rimosso tutto ciò che era superfluo, mantenendo solo le parti significative.

Fonte: opennet.ru
