www.thinkmagazine2.org
tmag arte scienza contributi dalla rete annotazioni

 

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