Migliorare l'intelligenza artificiale nella risoluzione dei problemi nelle competizioni di programmazione

Migliorare l'intelligenza artificiale nella risoluzione dei problemi nelle competizioni di programmazione

Colloquio Le capacità dei modelli linguistici commerciali di risolvere problemi di programmazione competitivi possono essere notevolmente potenziate guidandone attentamente i processi attraverso un'ingegneria tempestiva e intelligente.

Per dimostrarlo, Codium AI, con sede in Israele, ha costruito AlphaCodium e rilasciato il software su GitHub questo mese. AlphaCodium non è un grande modello linguistico di per sé. Si tratta invece di un metodo che migliora le capacità di risoluzione dei problemi degli strumenti di intelligenza artificiale generativa come GPT-4 utilizzando ciò che il CEO Itamar Friedman chiama "ingegneria del flusso".

Innanzitutto, una domanda di programmazione viene inserita nel modello linguistico di grandi dimensioni sottostante e gli viene chiesto di descrivere e riassumere il problema. Tali informazioni quindi guidano come dovrebbe iniziare a risolvere il problema. AlphaCodium definisce le cose, come quali dovrebbero essere gli input e gli output, quando trova una soluzione. Tutto questo è specificato in linguaggio naturale.

Il modello inizia quindi a generare codice in linea con le specifiche appena descritte. Le competizioni di programmazione che chiedono ai contendenti di codificare secondo le specifiche in genere forniscono test che mostrano cosa dovrebbe produrre uno script per un dato input. AlphaCodium genera più di questi casi di test e quindi esamina le possibili soluzioni per verificare se il codice funziona come previsto.

Se non riesce a soddisfare nessuno degli output definiti in uno qualsiasi dei test, il modello genera soluzioni diverse finché non superano tutti i test o falliscono. Possono verificarsi errori quando il codice non viene compilato o è semplicemente sbagliato.

Puoi vedere i diversi passaggi del processo di ingegneria del flusso nel diagramma seguente. È in gran parte suddiviso in una fase di pre-elaborazione, in cui il sistema analizza il problema in linguaggio naturale, e una fase di iterazione del codice, in cui esegue possibili soluzioni rispetto a test pubblici e generati dall’intelligenza artificiale.

alfacodio

Tutti i passaggi generali che guidano AlphaCodium nella generazione di codice per risolvere i problemi

"Non prendiamo il problema e andiamo al modello e gli diciamo: 'Ehi, per favore, genera la soluzione finale'", ha detto Friedman Il registro. "Chiediamo al modello di ridefinire questo problema in punti elenco." Semplificarlo e suddividere le cose in blocchi rende più semplice per il modello generare successivamente codice per diverse parti di un algoritmo.

In sostanza, l'ingegneria del flusso è una procedura che guida il processo di risoluzione dei problemi del modello suddividendolo in passaggi ben definiti. Chiedergli di "dividere il codice generato in piccole sottofunzioni, con nomi e funzionalità significativi", ci viene detto, porta a meno bug e rende il codice più facile da testare e correggere.

"Fondamentalmente abbiamo dedicato il 95% del nostro tempo all'ingegneria del flusso e solo il 5% all'ingegneria dei prompt e non abbiamo modificato i prompt per ogni [passaggio]", ha aggiunto Friedman.

Gli ingegneri di Codium hanno testato le prestazioni del loro modello su centinaia di problemi utilizzati nelle parti di verifica e test del set di dati CodeForces compilato da Google DeepMind due anni fa. Affermano che AlphaCodium era migliore nel risolvere i problemi di codifica rispetto ai modelli AlphaCode e AlphaCode2 di Google DeepMind.

Nei risultati riportati in un arXiv carta [PDF], AlphaCodium è stato in grado di rispondere correttamente al 44% delle domande rispetto al 24% di AlphaCode, generando solo cinque soluzioni rispetto alle dieci soluzioni scelte da AlphaCode per 107 problemi di convalida. È interessante notare che il divario si è ridotto quando si è arrivati ​​a 165 problemi di test, con AlphaCodium che ha risolto il 29% rispetto al 28% di AlphaCode.

AlphaCode seleziona le dieci soluzioni più promettenti tra decine di migliaia, o centinaia di migliaia, di possibili script che genera, rendendone l'esecuzione computazionalmente impegnativa.

"Ci siamo concentrati molto di più sull'intero flusso dei test", ha affermato Friedman. “Per [Google], hanno lavorato moltissimo sulla generazione. Provano a generare centinaia di altre opzioni e noi generiamo pochissime soluzioni, ma le testiamo molto bene per guidare il miglioramento del codice."

AlphaCodium è leggermente migliore dell'ultimo modello AlphaCode2 di Google DeepMind che è 10,000 volte più efficiente del suo predecessore AlphaCode, ha aggiunto.

alfacodio_2

Come AlphaCodium si confronta con altri modelli all'avanguardia in termini di precisione ed efficienza

Friedman si è detto fiducioso che le prestazioni di AlphaCodium non siano dovute alla fuga di dati, laddove il modello sottostante è stato addestrato e testato sugli stessi problemi. La versione GPT-4 che alimenta AlphaCodium è stata addestrata su testo recuperato da Internet fino a settembre 2021, mentre i problemi su cui ha testato il suo sistema sono stati presi dal già citato set di dati CodeForces che è stato rilasciato molto più tardi.

Un confronto migliore che valuti il ​​processo di ingegneria del flusso, tuttavia, sta esaminando la capacità di GPT-4 di risolvere quelle stesse domande con e senza l'applicazione di AlphaCodium. Il vecchio GPT-4 poteva rispondere correttamente solo al 19 e al 12% dei problemi rispettivamente nei set di validazione e di test, rispetto al 44 e al 29% della variante alimentata da AlphaCodium.

In breve, sembra che implementare un’attenta pipeline che generi dati aggiuntivi per guidare la generazione del codice e migliorare il processo di test possa essere più efficace che provare ad addestrare da zero un modello linguistico di grandi dimensioni.

Codium ha recentemente rilasciato un nuovo strumento per supportare gli sviluppatori Python, che ora possono chiamare AlphaCodium per risolvere direttamente un problema di codifica nel loro IDE. Puoi giocarci Qui. ®

Timestamp:

Di più da Il registro