Le Voci dell’AI – Episodio 69: Algoritmi genetici: come creare agenti intelligenti tramite l‘evoluzione simulata

Ciao a tutti, sono Vincenzo Lomonaco ricercatore all’Università di Pisa.

Nella puntata di oggi parliamo di una serie di metodologie classiche e utilissime nel contesto dell’intelligenza artificiale. Parliamo di algoritmi genetici. O meglio, come creare agenti intelligenti tramite processi di evoluzione simulata.

Funziona questa idea di replicare il processo evoluzionistico della natura per portarci ad agenti sempre più intelligenti? Scopriamolo insieme in questa puntata di Le Voci dell’AI.

L’evoluzionismo è una teoria scientifica che spiega come le specie viventi si siano sviluppate e diversificate nel corso del tempo attraverso un processo graduale di cambiamento, basata su principalmente gli studi di Charles Darwin edAlfred Russel Wallace nel XIX secolo.

Questa teoria postula che le variazioni genetiche casuali all’interno di una popolazione siano soggette alla selezione naturale, dove gli individui con le caratteristiche più adatte all’ambiente nel quale sono immerse hanno maggiori probabilità di sopravvivere e quindi di riprodursi.

Col tempo, quindi, queste caratteristiche più vantaggiose diventano predominanti nella popolazione, portando all’evoluzione della specie in senso positivo.

L’evoluzionismo, contrariamente a teorie più statiche come il creazionismo, sostiene che la vita sulla Terra si sia evoluta da antenati comuni attraverso meccanismi come la mutazione, la deriva genetica e la migrazione.

Le prove a sostegno della teoria evolutiva provengono da diverse discipline come la genetica, l’anatomia comparata e la biogeografia.

Oggi, quindi, l’evoluzione è considerata come una delle teorie fondanti della biologia moderna, essendo accettata dalla stragrande maggioranza della comunità scientifica come spiegazione del processo che ha portato alla creazione anche della specie umana e quindi anche dell’intelligenza migliore conosciuta.

Ad oggi gli algoritmi genetici sono una classe di algoritmi ispirati ai processi evolutivi della selezione naturale, utilizzati per risolvere problemi complessi di ottimizzazione.

Questi algoritmi imitano quindi il processo biologico dell’evoluzione.

Una popolazione iniziale di soluzioni candidate, cromosomi, viene generata casualmente e poi evolve attraverso operazioni come la selezione, il crossover e la mutazione.

La selezione premia quindi le soluzioni migliori, eliminando individui o soluzioni che invece non riescono a competere attivamente, mentre il crossover e la mutazione combinano e modificano i cromosomi degli individui migliori per creare nuove soluzioni.

Col tempo, quindi, le soluzioni migliori emergono e si avvicinano all’ottimo globale del problema.

La relazione con l’evoluzionismo sta nel fatto che gli algoritmi genetici si basano sullo stesso principio del meccanismo evolutivo proposto da Darwin: il miglioramento progressivo attraverso la sopravvivenza dei più adatti.

In questo contesto, le caratteristiche o geni che aumentano la fitness o appropriatezza di una soluzione sono preservati e passati alle generazioni successive.

Quindi, come nell’evoluzione naturale, gli algoritmi genetici sfruttano la diversità delle soluzioni e la casualità dei cambiamenti per esplorare spazi di ricerca, spazi di possibili soluzioni, trovandole quelle ottimale in problemi complessi che potrebbero essere difficili da risolvere con metodi deterministici tradizionali.

In questa immagine vediamo un diagramma di flusso classico per l’implementazione di un algoritmo genetico.

Si tratta di un algoritmo iterativo, quindi basato sull’idea di compiere ripetutamente una serie di passi fino a che non siamo soddisfatti del risultato.

Questo significa anche che l’algoritmo è molto flessibile circa la definizione di un compromesso tra efficienza ed efficacia a seconda del dominio applicativo del compito specifico che vogliamo risolvere.

Per ogni algoritmo genetico che si rispetti parte dalla definizione di una popolazione di individui o soluzioni di AI composte da un’espressione genetica casuale.

Sulla destra vediamo un esempio di tre individui che posseggono quattro geni per ciascuno, sulle righe.

Questi geni, seguendo una similitudine biologica, diciamo con l’espressione genetica, regolano un certo comportamento, per esempio la probabilità che a una certa situazione possa rispondere una determinata azione.

Il secondo step riguarda la misurazione delle performance di ciascun individuo.

Ci chiediamo quindi come se la cavano questi tre individui, con geni molto differenti tra loro, a risolvere il nostro compito di interesse? Vediamo che in questo esempio l’individuo 3. in verde, è quello migliore perché nel 33% dei casi riesce a risolverlo.

Il terzo step riguarda la selezione, ossia il sotto-campionamento della popolazione iniziale in funzione della loro performance o fitness.

Tenderemo dunque a scartare individui che non si sono comportati troppo bene.

Il quarto step riguarda la riproduzione, ossia la possibilità di creare nuovi individui a partire dalla combinazione ed eventuale mutazione di sequenze di una o più geni.

Alla fine di questo processo, quello che abbiamo è una nuova popolazione composta da una serie di individui che ereditano il codice genetico dei genitori più performanti.

Ecco, questo semplice algoritmo, se ripetuto un numero sufficiente di volte, può portare a risultati molto interessanti con individui di soluzioni di AI capaci di risolvere anche compiti complessi.

Gli algoritmi genetici trovano infatti applicazioni concrete in campi come l’ingegneria, la robotica, l’ottimizzazione finanziaria e molto altro.

Sono particolarmente utili per risolvere problemi di ottimizzazione combinatoria come la pianificazione, il design di circuiti e la ricerca operativa.

L’articolo Evolution Strategies as a Scalable Alternative to Reinforcement Learning di OpenAI mostra anche come gli algoritmi genetici o anche chiamati evolutivi possano competere con il reinforced learning quindi con l’addestramento automatico tramite rinforzo su compiti complessi.

E gli algoritmi genetici hanno vantaggi in termini di semplicità, scalabilità e parallelizzazione.

Infatti, essi non richiedono la propagazione, ossia la metodologia classica alla base dell’apprendimento delle reti neurali, e funzionano molto bene, quindi con reti o soluzioni non differenziabili, prestandosi anche alla parallelizzazione su migliaia di core su CPU, accelerando quindi il processo di ottimizzazione e di rilevamento e creazione di una soluzione di intelligenza artificiale competitiva.

In questi video vediamo umanoidi 3D addestrati – in simulazione – a camminare da zero con algoritmi genetici.

Poiché gli algoritmi genetici, come abbiamo detto, richiedono una comunicazione trascurabile tra i processi paralleli, quindi tra diversi individui, utilizzando – pensate – 1440 CPU su 80 macchine differenti, ricercatori di OpenAI hanno potuto dimostrare che è possibile completare l’addestramento, il processo di ottimizzazione, in soli 10 minuti.

Per confronto, una configurazione tipica con 32 processi paralleli tra la soluzione di reinforcement learning e learning risolverebbero questo compito in circa 10 ore.

In questa puntata abbiamo discusso di algoritmi genetici o evolutivi che si ispirano al processo evolutivo della natura per creare agenti intelligenti e utili a risolvere compiti di nostro interesse.

Questi algoritmi, come per le reti neurali, non ci danno garanzie di completezza e ottimalità nel trovare una soluzione, ma spesso sono utili in pratica per risolvere compiti complessi per i quali non esistono algoritmi noti e di facile implementazione.

Sebbene gli algoritmi genetici non siano sufficientemente potenti per generare soluzioni di intelligenza artificiale generale, essi vengono usati estensivamente per problemi pratici, vista la loro semplicità implementativa e facilità di parallelizzazione.

Con il miglioramento degli ambienti simulati e con l’iniezione di qualche componente di apprendimento durante la vita degli individui all’interno di queste popolazioni nel processo di selezione naturale, chissà se nel futuro non potremo simulare meglio il processo evolutivo che ha portato noi esseri umani a sviluppare l’intelligenza che oggi cerchiamo di riprodurre in silicio.

Ciao! Alla prossima puntata di Le Voci dell’AI.

 

Se questo articolo ti è piaciuto e vuoi rimanere sempre informato sulle novità tecnologiche

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome