Giovedi 15 Novembre 2018
MacroambienteDeepCoder: l’intelligenza artificiale capace di generare codice sorgente

DeepCoder: l'intelligenza artificiale capace di generare codice sorgente

Bastano un input ed un output a DeepCoder per generare un codice sorgente. Come funziona questa intelligenza artificiale?


Giuseppe Petrellese
A cura di: Giuseppe Petrellese Autore Inside Marketing
DeepCoder: l'intelligenza artificiale capace di generare codice sorgente

La versatilità e i pressoché infiniti campi di utilizzi rendono l’intelligenza artificiale la tecnologia da tenere maggiormente d’occhio. Essa infatti può può essere utilizzata nel marketing, nella domotica, in ambito medico e nelle imprese. Sembra però che alcune A.I. siano in grado di progettare un sistema crittografico proprietario ed un linguaggio universale. Microsoft Research ed alcuni ricercatori dell’Università di Cambridge sono riusciti a sviluppare una rete neurale in grado di programmare senza una preliminare conoscenza di codice: si tratta di DeepCoder.

LA RETE NEURALE DEEPCODER

Tutto è partito nel novembre del 2016, quando il paper “DeepCoder: Learning To Write Programs ha iniziato ad acquisire una notevole importanza dopo essere stato accettato in una delle più importanti conferenze sull’intelligenza artificiale. Il documento, nato dalla collaborazione tra l’azienda di Redmond e l’Università Britannica, fa riferimento ad un algoritmo capace di scrivere un codice sorgente in grado di risolvere semplici problemi matematici. DeepCoder, secondo i ricercatori, sarebbe in grado di aumentare la propria abilità anche solo osservando potenziali combinazioni di parti di codice, provenienti da terzi, che potrebbero risolvere un determinato problema. Alcune testate hanno descritto la rete neurale come un sistema che “ruba” dei pezzi di istruzioni che costituiscono il programma presenti in software terzi, per poi combinarle e, infine, creare un codice sorgente nuovo. La descrizione, in realtà, si è poi rivelata errata. Quindi, cosa fa esattamente DeepCoder? «Ci siamo focalizzati sulle persone che non possono o non vogliono programmare, ma che possono spiegare qual è il loro problema», ha spiegato Marc Brockschmidt, co-autore del paper, paragonando il sistema da loro ideato alla ricerca che fa un comune utente per utilizzare le formule di Excel: invece di cercare la funzione di cui necessitiamo, la macchina legge e capisce il problema che stiamo cercando di risolvere per poi fornire la risposta.

LA PROGRAMMAZIONE AUTOMATICA

Un problema di matematica possiede degli input e degli output. All’interno di un test i ricercatori che si sono occupati di questo studio hanno scelto dei banali problemi che sono stati svolti dalla macchina con pochissime linee di codice. Una volta terminata la procedura, il dispositivo ha mostrato l’algoritmo e la parte di sorgente utilizzata per risolvere il problema.

È possibile spiegare il tutto con un esempio pratico: l’obiettivo è costruire una torre di mattoni; i ricercatori forniscono come input all’A.I. dei mattoni e un’immagine di come dovrebbe essere la torre; la macchina ha bisogno però anche di conoscere il metodo per allineare i mattoni e sistemarli uno sopra l’altro, operazione decisamente semplice per gli umani, ma più complessa per congegni e strumentazioni che non riescono a comprendere cosa sia la forza di gravità. Mostrando però al sistema in che modo possono essere sistemati i mattoni e diversi esempi di edifici completi, l’A.I. è in grado di realizzare costruzioni simili. Volendo fare quindi un paragone, in DeepCoder i mattoni sono piccole parti di software. Quando viene chiesto all’intelligenza artificiale di risolvere un problema, invece di utilizzare delle parti di codice che hanno funzionato in precedenza, essa prevede quale parte, tra quelle visualizzate in precedenza, ha risolto problemi simili. Dunque, l’utente deve solo indicare cosa vuole fare (ad esempio calcolare la tabellina del 12) e la macchina cercherà tra i numerosi programmi creati da terzi le linee di codice più indicate allo scopo.

IL FUNZIONAMENTO DELL’ALGORITMO

Ciò che auspicano i ricercatori è che in futuro il sistema possa essere in grado di scansionare le intere librerie di StackOverflow o GitHub, per permettere alla rete di selezionare diverse possibili soluzioni.

Per capire effettivamente come funziona l’algoritmo, è possibile utilizzare come esempio la teoria della scimmia instancabile: una scimmia che preme a caso i tasti di una tastiera, per un tempo infinito, riuscirà a scrivere le opere di Shakespeare; nel caso di DeepCoder i software sostituiscono le opere del poeta e drammaturgo inglese.

La rete neurale è in grado di prevedere quali parti del codice sorgente sono generalmente utilizzate per risolvere determinati problemi, per poi guardare le possibili soluzioni; quando ne trova una adatta allo scopo, l’algoritmo provvede ad effettuare un test per verificarne l’efficienza. Quando questa fase termina, il problema viene considerato risolto e la macchina apprende come deve essere scritto il blocco di istruzioni corretto. Ciò che fa la macchina somiglia molto a quello che fanno gli umani quando cercano sul web determinate parti di software, programmate da altri, per risolvere il loro problema. Se un utente si trovasse al posto della macchina, si ritroverebbe a scrivere ogni possibile combinazione da testare successivamente nell’intero programma.

In futuro il team lavorerà per rendere il sistema ancora più sensibile a tutte le sfumature dei vari linguaggi di programmazione, oltre che per migliorare il riconoscimento di un buon codice presente nella rete.

DeepCoder

Fonte: Openreview

QUALI I VANTAGGI?

Come evidenziato in precedenza, ciò che fa l’algoritmo è molto simile a quello che fa un programmatore umano. Il vantaggio principale è che la macchina può svolgere determinate operazioni ed effettuare più tentativi in un tempo decisamente minore. Come è possibile intuire dal nome dell’A.I., il sistema funziona anche ad apprendimento approfondito: ogni processo svolto con successo rende l’intelligenza più brava.

Se in altri settori lavorativi aleggiano gli spettri della robotizzazione e dell’automazione, al momento i programmatori possono stare tranquilli, poiché il sistema è ancora molto acerbo. Tuttavia, considerando lo sviluppo esponenziale dell’intelligenza artificiale non è possibile fare alcuna previsione: è sufficiente pensare a come si è evoluta negli ultimi cinque anni questa tecnologia.

© RIPRODUZIONE RISERVATA E' vietata la ripubblicazione integrale dei contenuti

Articoli sull'argomento

×

Informativa

Questo sito o gli strumenti terzi da questo utilizzati si avvalgono di cookie necessari al funzionamento ed utili alle finalità illustrate nella cookie policy. Se vuoi saperne di più o negare il consenso a tutti o ad alcuni cookie, consulta la cookie policy.
Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie.