La divisione DeepMind AI di Google ha gestito tutto da Astronave per me proteina pieghevole. Quindi probabilmente non sorprende che i creatori alla fine si siano rivolti a quello che è senza dubbio un interesse personale: la programmazione per computer. Nell’edizione di giovedì di Science, l’azienda descrive un sistema che ha sviluppato che produce codice in risposta alla programmazione tipica di quella utilizzata nelle competizioni di programmazione umana.
Nella sfida media, il sistema AI può segnare vicino alla metà superiore dei partecipanti. Ma aveva alcune difficoltà con il ridimensionamento, poiché era meno probabile che producesse un programma che funzionasse su problemi che di solito richiedevano più codice. Tuttavia, il fatto che funzioni senza avere alcuna informazione strutturale su algoritmi o linguaggi di programmazione è una sorpresa.
Accettare la sfida
Le sfide di programmazione per computer sono abbastanza semplici: alle persone viene assegnato un compito da completare e produrre codice che deve eseguire l’attività richiesta. Nell’esempio del nuovo documento, ai programmatori sono state fornite due stringhe e gli è stato chiesto di determinare se la più corta delle due potesse essere prodotta sostituendo i backspace per alcune delle sequenze di tasti necessarie per digitare la stringa più grande. I programmi inviati vengono quindi controllati per vedere se forniscono una soluzione generale al problema o falliscono quando vengono testati esempi aggiuntivi.
Dati un numero sufficiente di esempi di software in grado di risolvere un singolo problema, dovrebbe probabilmente essere possibile per un sistema di intelligenza artificiale dedurre la struttura algoritmica necessaria per il successo. Ma questa non sarà una soluzione generale per affrontare eventuali problemi; Un’intelligenza artificiale addestrata su una categoria di sfida fallirà quando gli verrà chiesto di affrontare una sfida non correlata.
Per rendere qualcosa di più generalizzabile, il team di DeepMind lo ha trattato più come un problema linguistico. In una certa misura, la descrizione della sfida è un’espressione di ciò che l’algoritmo dovrebbe fare, mentre il codice è un’espressione della stessa cosa, solo in una lingua diversa. Quindi l’intelligenza artificiale in questione è stata progettata per avere due parti: una parte ha preso la descrizione e l’ha trasformata in una rappresentazione interna, e la seconda ha utilizzato la rappresentazione interna per generare codice funzionale.
Anche l’addestramento del sistema è stato un processo in due fasi. Nella prima fase, al sistema è stato semplicemente richiesto di elaborare uno snapshot del materiale su GitHub, per un totale di oltre 700 GB di codice. (In questi giorni in cui puoi inserirlo su una pen drive, potrebbe non sembrare molto, ma ricorda che il codice è solo testo non elaborato, quindi ottieni molte righe per gigabyte.) Nota che questi dati includeranno anche commenti, che dovresti usare Un linguaggio naturale per spiegare cosa fa il codice vicino, e quindi dovrebbe aiutare sia con le attività di input che con quelle di output.
Una volta che il sistema è stato addestrato, passa attraverso un periodo di adattamento. DeepMind imposta i propri quiz di programmazione e quindi inserisce i risultati nel sistema: descrizione del problema, codice funzionante, codice non riuscito e casi di test utilizzati per verificarlo.
Approcci simili sono stati provati in precedenza, ma DeepMind riferisce di essere stato in grado di dedicare più risorse alla formazione. Il documento afferma che “un fattore chiave delle prestazioni di AlphaCode è venuto dall’aumento del numero di campioni di modelli a ordini di grandezza superiori rispetto al lavoro precedente”.
“Giocatore. Aspirante evangelista della birra. Professionista della cultura pop. Amante dei viaggi. Sostenitore dei social media.”