reti neurali indice intelligenza artificiale intelligenza artificiale oggi e domani

Intelligenza e natura

 
Fig 1:
Una scena dal film Bug's life.

La natura ha sviluppato tecniche intelligenti per risolvere problemi di vario tipo. Per esempio, l'adattamento alle variazioni ambientali, la difesa dell'organismo mediante il sistema immunitario, la coordinazione tra insetti sociali (le termiti costruiscono termitai senza un progetto, le formiche muovono oggetti grandi senza un coordinatore, ecc.).
Lo studio (interdisciplinare) di questi fenomeni ha permesso di sviluppare sistemi intelligenti basati su metafora naturale, cioè basati su modelli di fenomeni e processi naturali. Questi sistemi sono, generalmente, robusti (cioè svolgono comunque la loro funzione anche in presenza di locali malfunzionamenti) e si adattano a possibili cambiamenti dell'ambiente in cui operano.

Tra i principali sistemi a metafora naturale vi sono Algoritmi GeneticiDizionario e Swarm IntelligenceDizionario.

Algoritmi genetici

Gli algoritmi genetici (e la computazione evolutiva in generale) traggono ispirazione dalla teoria dell'evoluzione naturale. Il principio fondamentale è che gli individui più adatti all'ambiente (con maggiore fitness) vivono più a lungo e hanno una prole più numerosa, quindi nel tempo gli individui con le loro caratteristiche saranno sempre più numerosi. Semplificando, si può dire che il meccanismo evolutivo permette di generare gli individui che meglio possono vivere in un particolare ambiente.

Gli individui con più alta fitness si accoppiano e il loro patrimonio genetico viene ricombinato (crossover) e trasmesso alla prole con piccole variazioni casuali (mutazione). In questo modo le caratteristiche positive degli individui sono combinate, ma introducendo anche limitati elementi di novità nel patrimonio genetico.

Un modello molto semplice di questo processo può essere simulato mediante programmi per computer che realizzano una forma di "apprendimento e ottimizzazione". Gli individui rappresentano possibili soluzioni per il problema che vogliamo risolvere. Per esempio, supponiamo di voler risolvere il problema del commesso viaggiatore: dato un insieme di città, trovare il percorso a lunghezza minima che parte da una città, visita tutte le città una e una sola volta e ritorna alla città di partenza. In questo caso, una soluzione potrebbe essere rappresentata dalla sequenza delle città. Quanto più una soluzione ha lunghezza minore, tanto più essa è buona; quindi, la fitness di una soluzione sarà data, per esempio, dall'inverso della sua lunghezza.
Possiamo scrivere un programma che simuli il processo di evoluzione naturale secondo lo schema in figura:



I primi esempi di algoritmi genetici sono stati sviluppati da John Holland negli anni '70. Si trattava principalmente del cosiddetto algoritmo genetico semplice. Sono poi state sviluppate numerose varianti, tra le quali una di particolare interesse è la programmazione genetica, nella quale si fanno evolvere programmi (per esempio, per coordinare una squadra di calcio di robot).

La computazione evolutiva è applicata in vari settori, per esempio in robotica, nella progettazione circuitale, in problemi di ottimizzazione industriali, nell'analisi dei segnali e nella previsione finanziaria.

Per saperne di più:



Swarm intelligence

"Chi è a governare? Chi è che dà ordini, che immagina cosa accadrà in futuro, elabora piani e mantiene l'equilibrio? Così scrive il poeta belga Maurice Maeterlinck in riferimento al comportamento coordinato di insetti come api, vespe, termiti e formiche. Ogni insetto sembra comportarsi secondo un piano prestabilito in modo che il sistema, nel suo complesso, abbia un comportamento organizzato e finalizzato al raggiungimento di obiettivi (per esempio, la costruzione di un termitaio). L'aspetto interessante di questi sistemi biologici è che questi comportamenti nascono (emergono) autonomamente, senza la presenza di un coordinatore/supervisore. Lo studio di modelli di questi sistemi porta allo sviluppo di algoritmi che appartengono alla classe chiamata swarm intelligence ("sciami intelligenti"). Questi algoritmi sono utilizzati per risolvere problemi di ottimizzazione, di analisi di dati ed estrazione di informazioni e sono usati in robotica per coordinare i robot.

Formiche reali e artificiali

Un tipico esempio di applicazioni di swarm intelligence è costituito dagli algoritmi a "formiche artificiali", cioè algoritmi sviluppati a partire da un modello del comportamento delle formiche in natura (il modello è semplificato e adattato alle esigenze del problema da risolvere).

Le formiche sono, infatti, capaci di trovare il percorso più breve tra il formicaio e un punto del terreno in cui vi sia del cibo. L'aspetto interessante e curioso è che sono in grado di farlo senza informazioni visive (le formiche di molte specie sono infatti cieche), ma utilizzando segnali "odorosi". Quando una formica ha trovato del cibo, ritorna al formicaio depositando sul terreno una certa quantità di una sostanza chimica detta feromone. La direzione del cammino di una formica dipende dalla quantità di feromone che essa percepisce: dove la concentrazione è più forte, è più probabile che la formica si diriga. Nel tempo le tracce di feromone sul terreno evaporano ed, eventualmente, sono rinforzate dal passaggio di altre formiche. Ora entra in gioco un meccanismo molto importante chiamato retroazione positiva: più formiche scelgono un percorso, più forte sarà la concentrazione di feromone e quindi ancora più formiche saranno richiamate sullo stesso percorso. Perciò, dopo una prima fase di transitorio in cui le formiche scelgono direzioni diverse, si arriva ad una situazione stazionaria in cui la maggior parte delle formiche segue uno stesso percorso. Siccome il feromone evapora nel tempo, il percorso più breve sarà quello scelto alla fine dal "sistema formiche".
Per esempio, si osservi la figura seguente: le formiche sono obbligate a seguire solo due percorsi alternativi e, dopo un transitorio iniziale, esse sceglieranno il ramo più corto.



E' possibile progettare algoritmi che, simulando il comportamento delle formiche reali, risolvono problemi di ottimizzazione, come il problema del commesso viaggiatore. Questi algoritmi sono chiamati ant algorithmsDizionario. Come esempio, si provi l'applet riportato di seguito che mostra come un ant algorithm risolva il problema del commesso viaggiatore. Applet del commesso viaggiatore.



Per saperne di più:

The Webweavers: Last modified Wed, 09 Mar 2005 11:05:51 GMT