L'azienda DeepMind, nota per le sue innovazioni nel campo dell'intelligenza artificiale e nello sviluppo di reti neurali in grado di giocare a giochi per computer e da tavolo a livello umano, ha presentato il progetto AlphaCode, che sviluppa 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. La caratteristica principale dello sviluppo è la capacità di generare codice in linguaggi Python o C++, accettando come input un testo con la formulazione del problema in lingua inglese.
Per testare il sistema sono stati selezionati 10 nuovi concorsi Codeforces con oltre 5000 partecipanti, svolti dopo il termine del training del modello di apprendimento automatico. I risultati delle attività hanno permesso al sistema AlphaCode di posizionarsi circa a metà classifica dei concorsi citati (54,3%). Il punteggio totale previsto per AlphaCode è di 1238 punti, che garantisce un ingresso nel Top 28% tra tutti i partecipanti a Codeforces che hanno partecipato almeno una volta a competizioni negli ultimi 6 mesi. Si osserva che il progetto è attualmente in fase iniziale di sviluppo e si prevede di migliorare la qualità del codice generato, oltre a sviluppare AlphaCode verso sistemi che assistono nella scrittura di codice o strumenti di sviluppo di applicazioni utilizzabili da persone senza competenze di programmazione.
Il progetto utilizza un'architettura di rete neurale "Transformer" in combinazione con metodi di campionamento e filtraggio, che consentono di generare diverse varianti imprevedibili di codice, corrispondenti a testi in linguaggio naturale. Dopo il filtraggio, la clustering e il ranking, dal flusso generato di varianti viene selezionato il codice funzionante più ottimale, che viene poi verificato per accertare l'ottenimento del risultato corretto (in ogni compito delle competizioni sono forniti un esempio di dati di input e il corrispondente risultato atteso che deve essere ottenuto dopo l'esecuzione del programma).

Per il training preliminare del sistema di machine learning è stata utilizzata una base di codice disponibile nei repository pubblici di GitHub. Dopo la preparazione del modello iniziale, si è passati alla fase di ottimizzazione, realizzata sulla base di una collezione di codice con esempi di problemi e soluzioni proposti ai partecipanti delle competizioni Codeforces, CodeChef, HackerEarth, AtCoder e Aizu. In totale, per l'allenamento sono stati impiegati 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, in cui sono stati esclusi tutti gli elementi superflui e sono rimaste solo le parti significative.

Fonte: opennet.ru
