La logica del calcolatore nei linguaggi procedurali

Le complesse procedure a calcolatore si riducono a pochissimi passi logici di base e rispettano le regole di deduzione stabilite dalla logica formale

Una macchina “intelligente”, ovvero un calcolatore, dovrebbe essere in grado di districarsi tra questi concetti che sembrano paradossali.

Vediamo più da vicino quali strumenti di base abbiamo a disposizione per costruire un calcolatore. In particolare analizziamo il funzionamento di un calcolatore, la macchina che è maggiormente candidata al raggiungimento di un simile obiettivo.

La logica del computer, nei linguaggi procedurali soliti, si basa su tre paradigmi:

1) sequenza - le istruzioni vengono eseguite in successione;

2) IF condizione THEN azione - Se si verifica una certa condizione allora viene eseguita una determinata azione;

3) salto - la sequenza delle operazioni passa ad un certo punto del programma antecedente o successivo all'istruzione corrente.

Come si vede le complesse procedure a calcolatore si riducono a pochissimi passi logici di base e da un certo punto di vista i programmi scritti per calcolatore sono logici, nel senso che rispettano le regole di deduzione stabilite dalla logica formale. Anche il neurone, costituente di base del cervello, funziona con un meccanismo di tutto o niente; ciascun neurone scarica un unico impulso elettrico, se eccitato sopra un determinato livello di soglia oppure non scarica affatto. I neuroni però sono collegati tra di loro in maniera molto complessa e, mentre si può isolare quale istruzione di programma viene eseguita in un determinato momento in un calcolatore, non è possibile determinare quale neurone possa essere responsabile di una determinata risposta in un particolare momento nel cervello. L'informazione nel cervello non è localizzata e probabilmente si diffonde in maniera olografica per aree molto vaste del cervello stesso.

Se l'approccio neuronale non ci è di grande aiuto per comprendere la logica del cervello vivente possiamo tentare con la psicologia cognitiva per trovare qualche suggerimento che ci aiuti nella comprensione delle somiglianze e delle differenze tra il procedere umano e l'esecuzione di algoritmi programmati a calcolatore.

La mente umana sembra essere eccezionalmente propensa a costruire modelli completi e coerenti a partire da piccoli insiemi di fatti o conoscenze. A partire da un dato, la mente sembra capace di scegliere, tra un gran numero di condizioni, quelle che sono rilevanti rispetto a quel dato. Queste condizioni divengono il modello entro cui vengono spiegati i risultati ottenuti. Questa operazione è sicuramente un aspetto importante della comprensione; infatti comprendere perché un evento ha avuto luogo richiede l'isolamento dei fattori che lo hanno provocato. Ma ciò non è sufficiente: equivale infatti a una mera estensione della elaborazione iniziale. Si supponga che in una situazione ci siano diversi esiti possibili, mutuamente esclusivi, ma tutti più o meno egualmente probabili, e tutti dipendenti da un ampio numero di fattori non banali. Se spieghiamo semplicemente che cosa è accaduto senza anche spiegare perché, in questa occasione, non si sono verificati gli altri possibili esiti, non accresciamo minimamente il nostro potere di predire che cosa accadrà in circostanze analoghe. Probabilmente esiste una legge di ottimizzazione dell'efficienza che premia questo modo di procedere anziché la logica stringentemente rigorosa; una informazione primaria, anche se non sicura al cento per cento, è sempre meglio che nessuna informazione. Interessante è analizzare come, con informazioni di per se stesse insufficienti, la mente umana riesca a correggere il giudizio e ad ottenere buone prestazioni.

Consideriamo le seguenti proposizioni:

a) Se gli extraterrestri atterrassero gli uomini avrebbero paura.

b) Gli extraterrestri sono atterrati.

c) Gli uomini hanno paura.

Se le proposizioni a) e b) sono vere allora è vera anche la c), secondo la logica classica, anche se nessuno vi crederebbe così facilmente. Consideriamo la seguente proposizione:

d) Giorgio ha paura.

Come esempio di ragionamento errato ma incredibilmente usato si considerino le seguenti congetture in successione:

1) Giorgio è un uomo.

2) Gli uomini hanno paura.

3) Gli extraterrestri sono atterrati.

L'errore nel ragionamento è evidente ma i meccanismi che ad esso sottendono non lo sono altrettanto chiaramente, per esempio:
e) Se gli uomini hanno male ai denti vanno dal dentista.

f) Giorgio è dal dentista.

g) Giorgio ha male hai denti.

È facile dedurre da e) e da f) la g) in tal caso, però, si commetterebbe un errore logico del tipo illustrato poco sopra. Il linguaggio è pieno di induzioni di questo tipo:

4) Giorgio vuole andare a Cuba.

5) Egli ha preso l'aereo.

Non è possibile stabilire che Giorgio è andato a Cuba in aereo se non si sottintendono alcune implicazioni non esplicitate dal contesto del discorso. Letteralmente l'affermazione 5) dice che qualcuno ha preso un aereo e l'affermazione 4) esprime solo una volontà più o meno remota senza specificare con quale mezzo Giorgio intenda andare a Cuba. Consideriamo un altro esempio:

h) Tutti i corvi sono neri.

L'affermazione h) è indecidibile oppure è falsa poiché per verificarla occorrerebbe osservare tutti i corvi e si può affermare che non è possibile sapere se qualche corvo non nero, non ancora osservato possa esistere sulla terra o su un altro pianeta nella galassia, il che confuterebbe la frase h); viceversa un corvo bianco sarebbe sufficiente a confutare l'ipotesi. Di questo passo tutti gli universali sarebbero indecidibili oppure di nessuna utilità. Nel confrontarsi con la realtà è probabile che la natura si sia discostata dalla logica pura per determinare quale realtà rappresentare seguendo percorsi non esatti ma sufficientemente efficaci. La mente umana produce continue congetture soggettive sul mondo e solo il fallimento dell'interpretazione del reale consente un miglioramento della corrispondenza dell'immagine del mondo soggettiva e il mondo reale stesso. Sostanzialmente la mente si fida delle sensazioni che riceve e considera affidabili i propri sensi. Sono stati scritti innumerevoli testi sulla inaffidabilità dei dati sensoriali, ma la mente utilizza questi dati come proprio input particolare da un proprio punto di vista particolare ed è necessario un notevole sforzo intellettuale e logico per poterne trascendere. Quando si percepisce il mondo lo si percepisce “qui” ed “ora” e questa percezione è considerata certa, anzi è considerata la base per tutta la costruzione di conoscenza che la mente si fa del mondo. Una visione particolare e parziale da cui trascendere per cogliere l'universale. Per un calcolatore questo aspetto non esiste (ancora) e la corrispondenza tra i dati di ingresso e i dati di uscita è puramente elaborata sulla base di connessioni strettamente determinate. Un calcolatore non ha uno scopo, non vuole comprendere il mondo e ancor meno vuole riprodursi o mangiare od ottenere qualche risultato particolare, egli semplicemente computa. Programmare un calcolatore per uno scopo non è estremamente difficile, per esempio per vincere a scacchi; il difficile è rendere questo scopo reale e non fittizio: uno scopo che sia vitale per l'elaboratore e non per chi lo utilizza. In altri termini vorremmo che l'elaboratore fosse vivo. Essere vivi come prerequisito per essere intelligenti. La richiesta appare però eccessiva ad una prima indagine. “Essere vivi in che senso?”, viene da chiedersi. Un essere che si riproducesse autonomamente potrebbe essere considerato vivo? Oppure un essere che lottasse per la propria esistenza?

Oggigiorno esistono fabbriche completamente automatiche, non è impensabile concepire una macchina in grado di riprodurre se stessa costruendosi pezzo per pezzo da sola; sarebbe, questa macchina intelligente? Certamente avrebbe un obiettivo proprio, almeno all'apparenza, quello di riprodursi; potrebbe sviluppare da sola tecniche sempre più sofisticate per riprodursi sempre meglio e più velocemente.

Personalmente la riterrei intelligente ma certamente non viva!

Ritorna in campo, di nuovo, il solito spinoso problema: come possiamo definire l'intelligenza?

In particolare un aspetto del problema è il seguente: può esistere l'intelligenza senza vita?

Turing cercò di aggirare questi interrogativi con un famoso esperimento mentale: il test di Turing. Nel test di Turing si mettono a confronto una macchina opportunamente programmata e un essere umano; se un esperto intervistatore tramite telescrivente non riesce a riconoscere la macchina dall'essere umano allora la macchina è considerata intelligente a tutti gli effetti. Nonostante questo test sia particolarmente significativo non tutti sono concordi nel ritenerlo definitivo; alcuni ritengono che il modo in cui una macchina supera il test sia pertinente rispetto al fatto di essere una macchina intelligente: alcuni hanno sostenuto che una macchina del genere potrebbe superare il test di Turing utilizzando un linguaggio - per esempio, il cinese - senza “capire” una sola parola di cinese, semplicemente manipolando secondo certe “regole” simboli formali senza significato per la macchina stessa.

A questo punto, se dubitiamo che la macchina, che pur ci risponde in modo sensato e pertinente, possa “realmente” comprendere il linguaggio con cui colloquiamo, siamo di nuovo in alto mare rispetto al problema dell'intelligenza. Vien da pensare che la macchina non può capire perché non c'è nessuno che possa capire “dentro” la macchina, mentre dentro ciascuno di noi c'è l'impressione vi sia qualcuno che comprende il linguaggio e che risponde in maniera conseguente: manca il punto terminale, la nostra personale coscienza di noi stessi. Questo aspetto nella macchina non lo troviamo in nessun posto: la macchina, per come la conosciamo attualmente, si compone di un microprocessore che elabora sequenzialmente semplici istruzioni registrate in memoria ed elabora simboli formali. Anche se analizzassimo il funzionamento di un neurone alla volta troveremmo che ciascuno periodicamente è percorso da uno stimolo elettrico e non troveremmo nessuna connessione con quel senso dell'io che tanto ci preme connettere alla nostra medesima identità di esseri umani.

Forse non siamo soddisfatti di una intelligenza che non abbia il senso di sé stessa; ancora una volta non è difficile programmare una macchina affinché ci risponda: “Cogito ergo sum”. Noi vorremmo però che questa consapevolezza di sé fosse reale e non fittizia, non una risposta meccanica ad un particolare comando ma qualcosa di più sostanziale. Probabilmente il compito di fornire una identità propria ad una macchina supera le possibilità tecnologiche e concettuali di cui disponiamo al momento, anche se alcuni tentativi in questo senso sono stati fatti. Può anche darsi che tale requisito risulti impossibile da raggiungere per una macchina, dovremo perciò rinunciare, a causa di tale carenza, a macchine intelligenti? Macchine intelligenti ma senza anima.

Un sistema operativo di un grande elaboratore è un processo molto complesso nelle sue parti ed è in grado di rispondere in maniera corretta e logica alle sollecitazioni degli utenti; d'altra parte un sistema operativo non fa altro che attendere degli input esterni, di propria iniziativa non fa nulla, non prende nessuna decisione, accoda i propri processi interni suddividendo il tempo del microprocessore a disposizione e aspetta le richieste degli utenti, reagisce e basta, non ha volontà. Seguendo il filo di questi ragionamenti la ricerca volta ad emulare il ragionamento umano con il calcolatore dovrebbe essere abbandonata: non sarà mai possibile costruire macchine intelligenti, o meglio con lo stesso tipo di intelligenza umana. Occorre perciò suddividere il concetto di intelligenza almeno in due parti: intelligenza umana ed intelligenza artificiale. Resta il fatto che l'intelligenza umana è l'esempio di intelligenza che guida la ricerca dell'intelligenza artificiale ed è quando alcune caratteristiche tipiche dell'intelligenza umana vengono simulate efficacemente con l'elaboratore che si ottengono i progressi maggiori nel campo dell'intelligenza artificiale.

Abbandoniamo perciò i nostri tentativi di definire l'intelligenza umana e concentriamo la nostra attenzione sugli aspetti dell'intelligenza che desideriamo simulare a calcolatore. In particolare la capacità della mente di generare concetti. Definiamo perciò intelligenza artificiale un'intelligenza diversa dall'intelligenza umana, ma non rinunciamo alla possibilità di simulare buona parte (se non tutte) delle caratteristiche dell'intelligenza umana almeno fino al livello del test di Turing; ovvero fino al livello di comportamento indistinguibile. La macchina non è “intelligente” ma si comporta come se lo fosse?

Autore: Oscar Bettelli