ARPA Publishing


di: Oscar Bettelli

I PROCESSI INTELLIGENTI

È possibile a questo punto generalizzare alcuni aspetti presenti nei diversi approcci per costruire macchine intelligenti:
sistemi esperti, reti neurali, algoritmi genetici.
Il lettore scuserà le semplificazioni concettuali che utilizzeremo, il problema è infatti complesso e i differenti approcci cercano di cogliere singoli aspetti utilizzando tecniche particolari che affrontano di volta in volta "mondi" diversi.

In un sistema esperto la base di conoscenza è espressa con regole del tipo:
xn :- x1,x2,...,xk
dove ogni xi rappresenta un fatto che può essere vero o falso. La risposta del sistema esperto consiste in un insieme di fatti deducibile da un insieme di fatti inizialmente noto. Se sostituiamo "fatto vero" con "fatto attivato" otteniamo uno schema che può essere paragonato alle reti neurali. In altri termini ogni fatto corrisponde ad un nodo della rete e un'attivazione iniziale di determinati "fatti", ovvero nodi della rete, determina l'attivazione di altri fatti, risultato dell'elaborazione. Possiamo dire che l'elaborazione consiste in una "trasformazione" da una certa configurazione iniziale ad una determinata configurazione finale.

Negli algoritmi genetici possiamo parlare di una trasformazione da una generazione iniziale ad una determinata generazione finale. Esiste quindi una relazione tra la configurazione di partenza e la configurazione "risposta". Tale relazione è il risultato di una elaborazione che può essere pensata come una sequenza di attivazioni di "fatti" rappresentati:
x1,x2,x3 --> x2,x3,x6,x7 --> x2,x6,x8 --> x2,x
Possiamo allora definire un processo astratto, che chiameremo "sequenza associativa", definito come una successiva attivazione di "associazioni" tra "fatti"

Poiché in un elaboratore si memorizzano solo numeri binari, una prima associazione elementare consiste nella codifica dei numeri e dei caratteri. Un elaboratore manipola stringhe di caratteri (e numeri), perciò, nel nostro schema concettuale, utilizzeremo dei "simboli" codificati in stringhe di caratteri: "nomi". Codificando i "fatti" con "nomi", una sequenza associativa inizierà con un certo insieme di nomi e si concluderà con un determinato insieme di nomi. Il concetto di "vero" viene sostituito con il concetto di "attivato", anzi nel colloquio uomo macchina esso diviene: "selezionato". Riassumendo, una catena associativa consiste in un colloquio uomo-macchina in cui, a partire da certi nomi selezionati si procede verso un insieme di nomi "risultato".

Occorre, evidentemente, definire cosa si intende per associazione; anche per questo aspetto effettueremo una semplificazione concettuale: definiamo associazione elementare una relazione binaria simmetrica non transitiva. Denotiamo con A - B il fatto che A è associato a B. Una prima osservazione: una associazione così definita è di tipo 'tutto o niente'. Definiamo una associazione composta come una successione di associazioni elementari: A - B - C - ... - E, per cui A è associato ad E tramite B,C,... . Anche una associazione composta è di tipo 'tutto o niente'.

Cercheremo, quindi, di definire i processi "intelligenti", in altri termini, sequenze associative che mostrino un comportamento intelligente. Per far questo analizziamo, in questo caso specifico, cosa si intende per "intelligente" quando si fa riferimento ad una macchina e ad una sequenza associativa.

Un primo aspetto, tutt'altro che trascurabile, è l'intelligenza come memoria; un sistema che non ricorda non può essere intelligente. In relazione a questo aspetto si può sostenere che il calcolatore è in grado di memorizzare una mole considerevole di dati, (forse troppo pochi rispetto alla mente umana?) ma l'aspetto determinante è che il calcolatore memorizza i dati esattamente come sono, e li ricorda tutti perfettamente. Considerando la differenza con il cervello umano, si potrebbe pensare che un sistema che non dimentica non può essere intelligente. Molto più verosimilmente, un sistema che non elabora i dati in ingresso ma che si limita a memorizzarli così come sono non può essere intelligente. Una domanda interessante è la seguente, quanta memoria è necessaria per memorizzare tutte le conoscenze di un uomo di media cultura? (compresa la capacità di farsi il caffè!)

Ulteriore aspetto dell'intelligenza consiste nella capacità di eseguire delle elaborazioni. Il calcolatore è in grado di eseguire delle elaborazioni sequenziali (la programmazione parallela presenta ancora notevoli problemi di realizzazione pratica) in maniera molto veloce rispetto alla velocità di trasmissione degli impulsi al cervello. Di sicuro le modalità di funzionamento di un calcolatore sono estremamente diverse rispetto ai processi che avvengono nel cervello, si può dire comunque che il calcolatore è in grado di elaborare dati in maniera efficiente, veloce e precisa. In particolare, quando i dati sono certi, univoci (relativamente al significato) e "formali" allora il calcolatore mostra una notevole "intelligenza" (potenza computazionale). Esistono comunque problemi ben definiti in cui il calcolatore incontra serie difficoltà di risoluzione: i problemi ad elevato grado di complessità.

Il problema dell' orario scolastico è un esempio in cui esiste un numero enorme di configurazioni possibili che l'elaboratore dovrebbe esplorare per trovare in maniera deterministica una soluzione accettabile. Per questo problema, molto spesso un bravo insegnante riesce a trovare una soluzione migliore rispetto a quella che un buon programma fornisce dopo ore di elaborazione. Un programma, per affrontare questo problema, deve poter incorporare delle strategie "euristiche" del tipo di quelle utilizzate da un essere umano che inserisce contestualmente, mentre stende l'orario, una serie di considerazioni di vario livello logico (ed estetico), oltre che tener conto dei vincoli principali.

Un ulteriore aspetto dell'intelligenza consiste nella capacità di riconoscere il significato di una frase. Senza addentrarci nei problemi della comprensione del linguaggio, a cui accenneremo nel seguito, è utile analizzare cosa si intende con "significato" quando ci si riferisce ad un computer. Come fa un calcolatore a comprendere il significato di un dato? Probabilmente può fornire una risposta pertinente. Per esempio, registriamo (usando una funzione nota al calcolatore) il nome MARIO, possiamo chiedere al calcolatore di visualizzare il nome memorizzato (utilizzando un'altra funzione nota al calcolatore). In realtà noi facciamo dei riferimenti impliciti al contenuto della memoria e a "funzioni" eseguibili dal calcolatore; il calcolatore sa cosa contiene la sua memoria e "conosce" le funzioni che può eseguire, ma nulla più.

Il calcolatore non sa nulla del nostro mondo, ma ricorda le relazioni logiche che abbiamo inserito nella sua memoria. Eseguiamo a questo punto una ulteriore semplificazione concettuale: il calcolatore può dare significato solo a "nomi" (zone di memoria) e a "funzioni" che può eseguire; in particolare un nome rappresenta se stesso e, se è un nome di una funzione eseguibile, eventualmente la funzione. In altre parole, un nome "significa", per il calcolatore, una funzione che può eseguire.

Oscar Bettelli


Pag.successiva|Torna al sommario


© 1997 Oscar Bettelli - © 1998 ARPA Publishing. Tutti i diritti riservati. Riproduzione vietata.
La violazione del copyright e/o la copia illecita del materiale riprodotto in queste pagine, la diffusione non autorizzata dello stesso in qualunque forma contravviene alle normative vigenti sui diritti d'autore e sul copyright.
Per inserire i tuoi testi nel sito ARPANet, clicca qui!