Müller Thomas

Intelligenza artificiale e algoritmica

Autore: 
Müller Thomas
Abbiamo discusso in un articolo precedente il principio di funzionamento di un algoritmo.
Sappiamo che esistono numerose applicazioni, in svariati settori, che fanno uso di algoritmi. Una delle applicazioni più interessanti dell’algoritmica consiste nella risoluzione di problemi matematici e in particolare trova applicazioni nello sviluppo di sistemi di software e hardware capaci di operare in modo “intelligente”, le così dette intelligenze artificiali.
Occorrono alcune premesse: è chiaro che il termine intelligenza non ha una interpretazione unilaterale. Esistono vari modi di pensare l’intelligenza e generalmente associamo all’aggettivo “intelligente” un’ampia gamma di significati.
Sono state proposte diverse interpretazioni di cosa una macchina debba saper fare per essere considerata “intelligente”; alcuni ritengono unilateralmente che non sia possibile creare un’intelligenza artificiale in quanto essa avrebbe sede nella mente o nell’anima di cui una macchina non è certo provvista.
 
I sostenitori dello sviluppo di intelligenze artificiali si sono negli anni scontrati a innumerevoli difficoltà: l’operazione elementare “va in cucina a prendere le uova”, si rivela di una complessità mostruosa per una macchina.
Immaginiamola al lavoro: la macchina, ammesso che abbia compreso il messaggio, deve essere in grado di identificare la propria posizione e quella della cucina, sapersi muovere fino ad essa, superare una serie di ostacoli come eventuali porte chiuse, oggetti che possono trovarsi sul percorso, sempre diversi ogni qual volta l’ordine gli viene impartito.
Un’operazione semplice come quella presentata richiede di superare innumerevoli ostacoli e difficoltà, e ci presenta il primo chiaro limite da superare.
La programmazione “classica” di una macchina, in cui una serie di istruzioni predefinite sono associate all’esecuzione di un compito è inadatta.
 
La situazione non appare migliore se riflettiamo sulla struttura del pensiero, eliminando il compito locomotorio.
Cosa distingue il pensiero umano “intelligente” da quello di un computer?
Esistono probabilmente una serie di condizioni necessarie affinché l’uomo sviluppi dell’intelligenza, tra cui certamente il linguaggio, la possibilità di interagire con l’ambiente (quindi la percezione), l’apprendimento.
Tutte queste funzioni possono essere simulate, anche se siamo ancora distanti da risultati paragonabili a quelli umani.
 
L’imitazione della mente umana appare come una direzione possibile, ma anche come un limite. Oggi possiamo costruire computer che giocano a scacchi o a dama (un compito che richiede intelligenza) meglio dei grandi campioni umani. È chiaro che il processo con cui arrivano a questo risultato però non ha nulla a che vedere con quanto fatto dall’uomo.
L’uomo non calcola nel modo fatto dal computer e il computer non giudica con la profondità dell’osservazione umana.
 
La discussione può protrarsi a lungo, ma già abbiamo le chiavi del problema. Come permettere a una macchina di imparare senza l’intervento esterno?
 
Le due operazioni fondamentali in matematica, il linguaggio base che sottostà ad ogni operazione effettuata da un computer, sono l’integrazione, cioè il calcolo di una superficie o di un volume, e la derivazione che permette di trovare massimo e minimo (altezza,valore, altro) di un insieme di dati.
Ad esempio, se dovessi risolvere meccanicamente il problema delle uova e del frigo, potrei inserire delle piccole telecamere nel mio robot (simulando la percezione visiva).
A questo punto resterebbe necessario trovare un modo di comprendere  l’informazione ricevuta, ad esempio “il percorso è ostruito da un ostacolo di piccola taglia”. La scelta è quindi tra scavarlo, evitarlo, spostarlo, oppure interagire con esso nel caso in cui si tratti di un vivente, con sottocompiti come parlare, emettere un rumore, cercare un altro percorso.
Una simile gamma di scelte dovrebbe essere legata ad una “funzione di valutazione” in grado di decidere quale scelta presenta i requisiti ideali ad essere considerata ottimale. Questa funzione dovrà sostanzialmente descrivere l’insieme delle possibili scelte come una figura multidimensionale in cui i vari imput sono i valori in entrata, e la risposta in uscita è un valore numerico.
 
Torniamo al caso di una partita a scacchi. Il computer avrà in memoria un database con le centomila migliori partite giocate, schedate posizione per posizione. Avrà anche un suo programma che valuta singolarmente ogni posizione e calcola in modo brutale le possibili conseguenze a qualche mossa di distanza, poche data la quantità di memoria richiesta valutando il guadagno in pezzi.
 
A questo punto la valutazione complessiva sarà ad esempio:
- la miglior mossa calcolata dal computer cui attribuiamo un peso
- le tre migliore scelte del database a cui viene attribuito un peso in funzione di
        - il risultato medio della partita dopo quella mossa
        - il numero di partite in memoria con quella mossa (se ce ne sono poche il computer scarterà la scelta per eccessiva “ignoranza”)
Ad ogni partita giocata il computer potrà inoltre assegnare una posizione nel database, e usarla per giudicare il valore delle posizioni in memoria rispetto alla sua capacità di gioco.
 
La mossa giocata sarà quella che ha ricevuto il punteggio migliore.
 
Come comportarsi quando però la ricerca del “punto migliore” (il massimo o il minimo) diventa eccessivamente complessa per un algoritmo? Questa situazione può presentarsi se ci troviamo ad affrontare un problema di valutazione visiva. Il computer dispone di una fotografia e deve decidere su di un problema molto articolato, con funzioni di decisione complicatissime, con un database creato in precedenza (apprendimento) che comprende innumerevoli situazioni simili, e deve farlo in un tempo ragionevolmente breve.
 
Di seguito presenterò due algoritmi, basati su due idee molto diverse, ma con in comune una capacità di adattamento enorme. Il loro punto comune è come vedremo di grande interesse.
 
Metodo di Monte Carlo
 
Si tratta di un algoritmo che calcola la superficie di una porzione di spazio. Tutto quello di cui l’algoritmo ha bisogno per funzionare è “vedere” la superficie.
A questo punto la proietta su un grafico e la inscatola; costruisce, altrimenti detto, un rettangolo che “contiene” la superficie richiesta (vedi figura). Calcolare l’area di un rettangolo è elementare.
 
Quindi l’algoritmo “inventa” a caso un punto che si trovi all’interno del quadrato. Deve cioè originare una coppia di numeri all’interno del quadrato, in modo casuale.
Ora valuta (visivamente, o analiticamente, o in altro modo) dove si trova il punto creato rispetto alla figura, sopra oppure sotto.
Salva in memoria il risultato (u per up o d per down) e ricomincia con un altro punto.
 
La conclusione dell’algoritmo sarà, dopo un ragionevole numero di iterazioni qualcosa come
-         area del quadrato 18
-         1387 volte up
-         2562 volte down
 
L’area della figura sarà approssimativamente rispetto al quadrato, la stessa proporzione che i “down” rispetto al totale dei punti up e down.
 
La chiave del ragionamento sta nel possedere un metodo capace di creare davvero in modo casuale dei punti su un grafico.
 
Algoritmo genetico
 
Si tratta di un algoritmo che trova il massimo o il minimo di una superficie.
Limitiamoci al caso tridimensionale (ma questo algoritmo è ideale per figure a molte dimensioni) in cui a due coordinate è associato un terzo valore.
È il caso di una cartina geografica in cui a latitudine e longitudine possiamo associare l’altezza sul livello del mare. Ecco come l’algoritmo procede per cercare una vetta molto alta:
1) Scegliere (con un criterio qualunque, anche non casuale) dei punti sulla mappa. Diciamo venti.
2) Valutarne l’altezza. Selezionare i cinque migliori risultati
3) Effettuare una piccola fluttuazione casuale intorno ai cinque punti, la nostra mutazione genetica. Significa ad esempio che ci spostiamo di dieci metri a destra e sette a sinistra. L’idea chiave è nel termine casuale.
4) Crossing over: mischio le coordinate “mutate” dei cinque migliori risultati in venti combinazioni possibili. Ad esempio se avevo le coordinate (2 nord 7 est) e (5 nord 3 est) otterrò (2 3) (5 7 ) (5 3) (2 7).
5)Ritorno al punto 2
 
Dopo aver effettuato un certo numero di iterazioni disporrò di cinque punti che saranno tutti concentrati vicino a picchi imponenti.
È chiaro che l’algoritmo non converge per forza sulla vetta dell’Everest, ma empiricamente ci accorgiamo che converge verso un risultato molto buono.
 
Potremmo adattare il ragionamento in versione semplice (senza crossing over) ad una ricerca bibliografica. Diciamo che in biblioteca vogliamo documentarci sulla caduta del muro di Berlino, ma che non sappiamo nulla su autori connessi, o sull’ordine con cui è strutturata la biblioteca.
Possiamo ben inteso sperare che la biblioteca abbia un ordine (anche le montagne hanno un ordine; se la posizione (5,5) è una vetta, è ragionevole supporre che immediatamente a fianco non ci sia la fossa delle Marianne, altrimenti l’algoritmo non funziona), ma noi non abbiamo un metodo di ricerca.
Procediamo così:
-         selezioniamo venti libri dalle scansie.
-         Diamo una sbirciatina. Selezioniamo quelli che ci sembrano essere più legati al soggetto desiderato. Ad esempio dovrò riconoscere che tra “Giovanni Gentile” e “Ludovico Ariosto” conviene puntare su Giovanni Gentile, per via della data, più vicina a quello che cerco.
    Al contempo tra “Dov’è Spotty?” e “Il signore degli anelli” mi conviene “Il signore degli anelli” perché ci sono meno figure, anche se la data di        edizione favorirebbe Spotty. Devo quindi avere un criterio vagamente intelligente di valutazione.
-         Adesso tra venti libri ne ho scelti tre. Sono “Giovanni Gentile”, una biografia di Gorbaciov e un libro sulla filosofia di Lakatos.
-         Effettuo uno spostamento a caso lungo le scansie, a partire dai tre libri. È ragionevole aspettarsi che Gentile e la biografia di Gorbaciov siano vicini ad altri libri che parlano di storia di filosofia e di politica, mentre con Lakatos andiamo fuori pista, per quanto si tratti sempre di filosofia è più "distante". La prossima generazione favorirà quindi il settore storia e politica, avvicinandomi alla soluzione.
 
Questo secondo esempio è valido solo in parte, in quanto io non posso fare un “crossing over” di libri, dato che essi hanno una coordinata unica, la pertinenza al soggetto.
È anche evidente che il criteterio di scelta può non essere ovvio, in quanto spiegare a una macchina come raffinare la scelta fino a un punto ragionevole non è semplice.
 
È chiaro che esistono dei prerequisiti indispensabili alla convergenza (cioè al fatto di giungere a una soluzione) di questo algoritmo. Una ad esempio è l’esistenza di un qualche tipo di ordine tra i dati passati allo scandaglio. Un secondo è l’esistenza di qualche criterio capace di decidere tra i caratteri. Ad esempio devo essere capace di capire che “Ludovico Ariosto” è meno pertinente di “Giovanni Gentile”, ma comunque meglio di “Spotty” per la mia ricerca. Non è per nulla scontato che una macchina riesca a fare la differenza.
 
Rispetto ad un algoritmo normale però questo sistema è più robusto, più adattabile e permette di trovare una soluzione anche se si conosce pochissimo del sistema studiato. Un algoritmo classico andrebbe probabilmente in tilt davanti ad una ricerca in cui più risposte sono possibili e tra loro quasi equivalenti. Un algoritmo genetico invece mi assicura una soluzione, magari non perfetta , ma comunque ottima.
 
Discussione e critica
 
Abbiamo costruito due algoritmi che sono capaci di effettuare le due operazioni base della matematica, derivate e integrali. Sono sistemi efficaci e sicuri, che trovano sempre una soluzione, indipendentemente dalla forma del problema studiato o dalla sua complessità.
L’interesse di questi sistemi è la possibilità di ottenere un sistema che si comporta in modo apparentemente intelligente, capace cioè dalla semplice osservazione, senza possedere istruzioni particolari adatte al caso, di trovare soluzioni a problemi che gli sono proposti.
Curiosamente la chiave del funzionamento di questo genere di intelligenza risiede nella possibilità di generare numeri aleatori, privi di qualunque correlazione tra loro, in altre parole assolutamente casuali.
 
Ovviamente questo è impossibile per un computer canonico; solitamente essi hanno in memoria lunghe sequenze di numeri che sembrano casuali, ma che essendo finite in realtà non lo sono.
Metodi ispirati al comportamento quantistico sarebbero però capaci di superare questo ostacolo.
 
Il suggerimento sorprendente, che è anche l’ipotesi forte di questo articolo, è che l’intelligenza per presentarsi ha un assoluto bisogno di imprevidibilità.
Non c’è intelligenza senza casualità.

tm

ISBN/EAN: 
00000

Commenti

"Abbiamo discusso in un articolo precedente il principio di funzionamento di un algoritmo.
Sappiamo che esistono numerose applicazioni, in svariati settori, che fanno uso di algoritmi."

> Nuovo articolo di Thomas. Segnalo...

L'articolo mi stimola fin troppo, ed è un peccato (o quasi un delitto) trovarsi ad affrontarlo in un solo articolo o, meglio, spaziare tra argomenti così importanti quali intelligenza artificiale, algoritmi genetici, visione tridimensionale...
"Non c?è intelligenza senza casualità."
Su questo non sono d'accordo, e cercherò di dimostrarlo.

New entry?
Benvenuto!

L'articolo è un'infarinatura su un argomento che esula dalla mia specialità. Conosco benino l'algoritmica come analisi numerica, meno come programmazione.

Sulla relazione tra casualità e intelligenza la discussione glissa sul pensiero filosofico e ho buttato lì la provocazione viste le passate discussioni sul determinismo.
Se conosci esempi di simulazione intelligente senza algoritmi genetici sono curioso.

(new entry? E' LAMASE!)

Non lo sapevo!

Non dico che non deve essere un algoritmo genetico, dico solo che non amo il legame intelligenza-casualità. La casualità è quello che appare a noi se non capiamo "il meccanismo". Una foglia che cade finirà in una posizione casuale?

Ma la casualità è un requisito indispensabile al funzionamento di un algoritmo genetico.

Peraltro la domanda sulla casualità è profonda. Tu pensi giustamente al caos come a un problema deterministico ma insufficientemente preciso. Quindi impossibilità di prevedere e di calcolare, ma determinismo, non casualità.
Ma se guardi il dettaglio entrano in gioco problemi quantistici; il caos quantistico è aleatorio.

Nel mio intimo penso che anche i "giochi" quantistici non siano aleatori - solo che non siamo al punto di conoscerli. A me non convince neanche il modello atomico attualmente utilizzato, per dire, e la chimica su esso basato. Posizione legittima o c'è qualche dimostrazione che ignoro?
Per l'intelligenza artificiale comunque credo (come una questione di religione) che non serva l'assoluta randomicità per realizzare (non simulare!) una macchina intelligente, perchè sarebbero sufficienti le pseudo-randomicità attuali. Ma se riesco a dimostrarlo ti invito al premio Turing e forse anche al Nobel ;)

L'idea che il comportamento quantistico sia regolato da variabili nascoste che lo rendono deterministico esiste, ma c'èun teorema di Belle che dimostra che è errata.
Se ci sono variabili nascoste, allora sono non-locali, in pratica sono proprietà di un sistema di più particelle, olistico.

Se vinci il premio Nobel prometto di passare; io penso ch la casualità simulata adesso senza computer quantistico sia efficace solo per sistemi semplici; se l'algoritmo diventa complesso e il numerodi cifre casuali richiesto aumenta, allora la non randomicità si farà sentire.

super chicca: http://maurogarofalo.nova100.ilsole24ore.com/2009/02/

intervista a ZIPARO di MAURO GAROFALO