Introduzione all'Apprendimento nei Calcolatori Parte I
Di Alessandro Vullo
In questo articolo si assume che il lettore abbia un minimo di conoscenza del concetto matematico di funzione, nonché di quello di algoritmo e programma. Nessuna conoscenza specifica di argomenti strettamente tecnici èrichiesta, dal momento che la trattazione sarà impostata a livello introduttivo.
Introduzione
Da molto tempo l'essere umano si interroga su quello che definiamo con il termine apprendere. Non è azzardato affermare che esso rappresenta una delle caratteristiche fondamentali di qualunque essere vivente dotato di struttura celebrale. Risulta al tempo stesso difficile cercare di dare una definizione esaustiva e inconfutabile di ciò che rappresenta la capacità di apprendimento degli esseri terrestri. Dico in questo contesto "terrestri", perché ritengo che i biologi e tutti noi dobbiamo almeno chiederci se le definizioni e le descrizioni che forniamo sulla vita biologica sulla terra possano esattamente coincidere con una ipotetica vita al di fuori del nostro spazio vitale convenzionale (Cf. [Minsky85]).
Con l'avvento nel XX secolo dei calcolatori, l'interesse dell'uomo verso l'indagine scientifica sull'apprendimento ha subito un notevole balzo in avanti. Fin dai primordi dell'era dei calcolatori elettronici (se vogliamo i calcolatori automatici esistono sin dal XVII secolo), i padri fondatori dell'informatica teorica moderna si sono chiesti se un computer sarebbe mai stato in grado di apprendere. E` quella che si definisce una bella domanda, in quanto fonte di centinaia di altri interrogativi tutti ugualmente complessi. Il perché di questa difficoltà risiede proprio nel tentativo di colmare un (potremmo dire apparente) divario fra un'attività squisitamente privilegio di esseri "pensanti" e il comportamento da "velocissimo stupido" del computer. Non mi dilungo ulteriormente in questa direzione, poiché si spazia in campi di indagine piˆ estesi che coinvolgono l'intera disciplina dell'Intelligenza Artificiale e annesse.
Torniamo alla domanda fondamentale: può un calcolatore apprendere? Possiamo, con le dovute cautele, affermare che la risposta è positiva. Rispondere affermativamente alla domanda significa dare una definizione "operativa" (proprio quello che ci vuole con i computers) al concetto che stiamo indagando (l'apprendimento nel mondo artificiale). In aggiunta occorre rinunciare a paragonare in modo brutale l'apprendimento nell'uomo con quello nelle macchine. Ancora non sappiamo esattamente come programmare i calcolatori in modo che apprendano in modo identico agli esseri viventi. Va comunque detto che una conoscenza dettagliata degli algoritmi di elaborazione dell'informazione tipici del Machine Learning (Apprendimento Automatico) potrebbe portare ad una migliore conoscenza delle abilità (e incapacità) di apprendimento umane.
Il contesto disciplinare dell'evoluzione dell'apprendimento automatico è ciò che definiamo con il termine generico "Intelligenza Artificiale" (IA). Risulta quantomeno estremamente difficile dare una definizione di cosa sia effettivamente l'IA. Basta dare un'occhiata ad alcuni volumi introduttivi sulla materia e ci accorgiamo che essi non danno una definizione univoca del termine. Nel nostro caso diremo, in un modo brutalmente semplificato, e con ciò mi avvicino al trend disciplinare moderno:
IA ha a che fare con la costruzione di agenti artificiali in grado di esibire un comportamento "corretto" nell'ambiente in cui si trovano.
Per agente intendiamo qualunque cosa in grado di percepire il suo habitat attraverso sensori ed agire nello stesso attraverso degli apparati particolari (effettori). Abbiamo aggiunto il termine artificiale, in quanto, secondo la definizione data anche l'essere umano puû essere visto come un agente: i sensori sono gli organi dell'apparato visivo, uditivo, olfattivo etc. ed ha mani, gambe ed altre parti del corpo per interagire attivamente con l'ambiente circostante. Per fare esempi nel mondo dell'artificiale, un agente potrebbe essere un robot, il quale può avere video camere e ricetrasmettirori ad infrarosso come sensori e motori elettromeccanici come effettori. Ma non ci fermiamo qui. Un programma eseguito su un calcolatore non sfugge alla definizione fornita. L'ambiente di un programma può essere la memoria interna della macchina in cui viene eseguito, oppure una rete che connette piˆ calcolatori fra loro (per esempio Internet od una rete locale). Sia i sensori che gli effettori possono essere rappresentati dalle funzioni (routines) primitive di un sistema operativo (S.O.) tramite le quali il microprocessore accede sia in lettura che scrittura ai dati di ingresso e di uscita nella memoria centrale.
Ma cosa significa veramente comportamento corretto dell'agente? Significa, in prima approssimazione, che l'agente esegue azioni considerate ottimali in base ad un determinato criterio di successo. Questo impone l'esistenza di un giudice esterno (sia esso un essere umano od un altro agente) che valuta la misura delle prestazioni offerte. Si osservi che non esiste un criterio univoco per misurare le performances. Il criterio viene scelto in base al tipo di problema in esame.
Giunti a questo punto alcune riflessioni vengono in mente. L'agente esibisce un comportamento corretto ("intelligente") solamente in base alla conoscenza che il progettista ha dell'ambiente operativo e che codifica entro ciò che costruisce. L'artifatto in questo modo viene "gettato nell'arena" e cerca di fare il meglio possibile in base a come è stato programmato. Ma spesso il mondo esterno è molto più complesso di come lo si immagina o si modella. Il creatore dell'agente è molto probabile che abbia una conoscenza solamente parziale dell'ambiente in cui l'agente è inserito. In aggiunta l'ambiente è soggetto a frequenti mutamenti, è come si dice dinamico, in continua evoluzione. Non tenere conto di questo aspetto significa introdurre una pericolosa semplificazione del problema che si vuole risolvere. L'agente ha effettivamente la necessità di apprendere dall'esterno ciò di cui ha bisogno per continuare ad esibire correttezza comportamentale. Questa è la prospettiva in cui viene visto l'apprendimento automatico, disciplina branca della IA che si occupa di programmi in grado di imparare a migliorare dall'esperienza. L'obiettivo è quello di fornire all'agente autonomia, capacità di adattamento a nuove circostanze ambientali per risolvere i compiti piˆ difficili che semplici algoritmi non sarebbero in grado di affrontare. L'idea che sta alla base dell'apprendimento è che le percezioni non dovrebbero essere usate solamente per agire nel presente, ma anche per migliorare l'abilità dell'agente di agire nel fututo piˆ o meno prossimo.
Machine Learning è un campo di indagine della IA molto speciale. Abbiamo di fronte una materia intrinsecamente multidisciplinare. Esso ha ricevuto e continua a ricevere contributi dalla statistica, teoria del controllo, teoria dell'informazione, filosofia, psicologia, neurobiologia ed altri campi ancora.
Problema generale dell'apprendimento
Proviamo a dare una definizione abbastanza formale di ciò che viene indicato in letteratura come "problema di apprendimento ben posto"
Un programma per calcolatore viene detto che apprende dall'esperienza E rispetto ad una classe di compiti T ed una misura di prestazioni P, se le sue prestazioni nei compiti di T, misurate da P, aumentano con l'esperienza E.
Facciamo osservare che la definizione non riesce completamente nell'intento di distinguere con sufficiente precisione la classe dei programmi che effettivamente apprendono da quella dei programmi che non apprendono. Un componente dell'apprendimento ¿ l'acquisizione di nuova conoscenza. In questo senso non è irragionevole pensare che un calcolatore che semplicemente acquisisce nuovi dati ( memorizzazione brutale di conoscenza) manifesti capacità di apprendimento. Un esempio è fornito da un sistema di archiviazione che riceve nuovi dati e aggiorna dati esistenti. Il sistema aumenta in questo caso le sue prestazioni sia in termini di velocità che di esaustività nel rispondere a domande poste da utenti esterni, ma non per questo ci sentiamo di dire che esso manifesta capacità di apprendimento.
Anche se vi sono difficoltà del tipo descritto, all'atto pratico la definizione funziona in quanto all'interno della classe descritta rientrano molti tipi di problemi che richiedono soluzioni più o meno sofisticate. L'intento della ricerca in Machine Learning non è indagare sul significato della parola di uso comune "apprendere", bensì descrivere forme non convenzionali di elaborazione dell'informazione che aiutino a impiegare le macchine in compiti difficili. Se poi nella definizione rientrano anche problemi più banali, è la loro stessa descrizione e l'esperienza del progettista che li esclude da essere risolti tramite apprendimento automatico.
Per dare un'idea di quelli che consideriamo compiti difficili possiamo immaginare computers che imparano da diagnosi mediche quali trattamenti sono più efficaci per nuove malattie, abitazioni automatizzate che apprendono in base all'esperienza e al modo di utilizzo degli inquilini come ottimizzare i costi di energia, assitenti software che apprendono dagli interessi degli utenti quali informazioni rilevanti visualizzare, sistemi che imparano a classificare nuove strutture astronomiche (oggetti celesti) mediante dati inviati da sonde od osservatori astronomici. Sono poi sotto gli occhi di tutti applicazioni di riconoscimento oppure di sintesi vocale, sistemi di riconoscimento della scrittura, computers in grado di competere a livello internazionale con i migliori giocatori di scacchi (ma anche backgammon e tanti altri giochi). Tutti gli esempi fatti includono una qualche forma di apprendimento automatico.
Per fare un esempio di traduzione concreta della definizione data, consideriamo il problema dell'apprendimento del classico gioco degli scacchi. Lo stesso schema può applicarsi a tutti i giochi in cui possono cimentarsi i computers. Vediamo in cosa si traducono gli elementi definiti:
Compito T: giocare a scacchi
Misura di prestazioni: percentuale di giochi vinti contro nuovi avversari;
Esperienza E: giocare contro un insieme di avversari.
Consideriamo invece una macchina senza guidatore che deve imparare a muoversi sulle strade autonomamente:
Compito T: guidare sulle autostrade pubbliche usando sensori ottici;
Misura di prestazioni P: distanza media percorsa prima di compiere un errore;
Esperienza E: una sequenza di immagini assieme ai relativi comandi di sterzata, accelerazioni, frenate etc. eseguiti da un guidatore umano esperto.
Tanti altri esempi possono essere fatti, provate a immaginarvene alcuni anche se avete poca esperienza.
Gli elementi di un Sistema di Apprendimento Automatico
Un agente in grado di apprendere si compone di due elementi fondamentali: il primo, Sistema Prestazionale, è responsabile della selezione delle azioni che l'agente deve effettuare nell'ambiente esterno. Il secondo, Sistema di Apprendimento, è invece responsabile del miglioramento della scelta delle azioni intraprese dal primo. Il Sistema Prestazionale è composto da una o più parti fra le quali citiamo, per esempio, le seguenti:
Una mappatura fra stati e relative azioni. In pratica dato lo stato corrente in cui l'agente si trova, il sistema è in grado automaticamente di scegliere l'azione corrispondente che lo porta in un nuovo stato.
Una descrizione del modo in cui il mondo esterno evolve.
Una descrizione dei risultati delle possibili azioni che l'agente è in grado di intraprendere.
Una serie di obiettivi (goals) rappresentati da classi di stati che rendono massime le performance dell'agente.
Senza entrare nei dettagli, basti sapere che ciascuna di queste parti può essere descritta matematicamente da una funzione secondo un determinato schema o linguaggio di rappresentazione. Possiamo considerare descrizioni deterministiche come polinomi lineari a coefficienti costanti, oppure formule ben formate del calcolo predicativo del primo ordine, nonch¿ descrizioni probabilistiche del mondo come le cosidette rete bayesiane. Un goal, per fare un esempio, può essere descritto come una funzione da uno stato ad un valore booleano (0 o 1) che indica se lo stato soddisfa il goal. Le oramai famose reti neurali sono praticamente un modo elegante per rappresentare funzioni numeriche non lineari. Gli alberi di decisione rappresentano enunciati del calcolo proposizionale.
Ciascuno dei componenti del Sistema Prestazionale può essere oggetto di apprendimento. Il punto fondamentale ¿ che l'apprendimento è visto in ogni caso come la scelta di una particolare funzione descritta da un determinato schema di rappresentazione.
L'apprendimento automatico è una disciplina molto articolata. Con questo voglio dire che esistono molti paradigmi di apprendimento, ciscuno dei quali è più adatto di altri a risolvere una determinata classe di problemi. Con questo voglio dire che ogni paradigma di apprendimento ha alla base un certo linguaggio di rappresentazione del mondo (il mondo definito anche spazio del problema) e gli algoritmi (le soluzioni) che vengono sviluppati si avvantaggiano o vengono penalizzati dalla potenza espressiva del linguaggio stesso con cui sono definiti. La scelta del tipo di rappresentazione di una determinata funzione da apprendere è probabilmente l'aspetto piˆ importante che il progettista di learning agents deve considerare, anche perché influenza drasticamente la natura degli algoritmi di apprendimento. Come in tutto ciò che tocca l'informatica teorica, esiste un preciso bilanciamento fra espressività (la funzione da apprendere è rappresentabile nel linguaggio scelto?) ed efficienza (il problema è trattabile, cio¿ risolvibile con risorse di tempo e spazio macchina ragionevoli attraverso il linguaggio scelto?). Quanto più il linguaggio è espressivo tanto più è probabile ci si debba rassegnare a pagare a caro prezzo questa libertà attraverso un frustrante tempo di computazione.
Finisce qui la prima parte introduttiva sull'Apprendimento Automatico. Nelle seguenti cominceremo a entrare nel dettaglio di alcuni paradigmi di apprendimento, base di partenza per comprendere molti dei concetti che stanno alla base del Machine Learning. Cercheremo anche di dare risposta al perché effettivamente l'apprendimento automatico funziona, domanda apparentemente banale, ma effettivamente impegnativa e affascinante.
Bibliografia
Mitch97 Mitchell T.M. Machine Learning. Mc Graw Hill, 1997.
NR95 Norvig P., Russel S. Artificial Intelligence: A Modern Approach. Prentice Hall International Editions, 1995.
Minsky85 Minsky M. Extraterrestrials: Science and Alien Intelligence. Cambridge University Press, 1985.
About this document ...
Introduzione all'Apprendimento nei Calcolatori Parte I
This document was generated using the LaTeX2HTML translator Version 99.2beta6 (1.42)
Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University ofLeeds.Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.
The command line arguments were:latex2html mlipartone.tex
The translation was initiated by Alessandro Vullo: Debian Linux User on 2000-08-17