L’acronimo I.A. (o anche semplicemente IA) sta per Intelligenza Artificiale (in inglese invece è più nota come AI Artificial Intelligence).
Ma cos’è realmente questa IA che ormai riempie la bocca di molti (soprattutto degli esperti di informatica dell’ultimo minuto, che si sono appena comprati un nuovo PC in un grande magazzino nel reparto tra le asciugatrici e i forni a microonde)?
La definizione che ho trovato sul sito inglese di Wikipedia (e che mi piace molto) è la seguente:
In computer science, artificial intelligence (AI), sometimes called machine intelligence, is intelligence demonstrated by machines, in contrast to the natural intelligence displayed by humans and animals. Leading AI textbooks define the field as the study of “intelligent agents”: any device that perceives its environment and takes actions that maximize its chance of successfully achieving its goals. Colloquially, the term “artificial intelligence” is often used to describe machines (or computers) that mimic “cognitive” functions that humans associate with the human mind, such as “learning” and “problem solving”.
Molte implementazioni in realtà si “fregiano” del’acronimo “IA” ma in realtà non sono altro che programmi contenenti una infinità di cicli “IF… THEN… ELSE” o di costrutti “CASE”.
Ma questo, il mangiatore di Quiche, non lo sa e si impressiona e pensa che ci siano software miracolosi che, se utilizzati, ci proietteranno nel futuro e porteranno l’umanità verso una società utopistica e fantascientifica, dove saranno le macchine a dirci come comportarci per raggiungere il successo e gli obiettivi che l’uomo si prefigge (a qualsiasi dimensione e in qualsiasi campo). E questo è una dato di fatto, perché altrimenti non si spiegherebbe tutto questo pseudo-interesse verso l’IA e il proliferare di applicazioni (funzionanti???) che adottano questo prodigio della tecnica.
L’intelligenza artificiale, come definizione, era nata per indicare un tipo di intelligenza diversa e disgiunta da quella tipica dell’uomo. Con il passare del tempo e delle evoluzioni tecnologiche l’IA si è ampliata e ha, al momento, delle interessanti sotto categorie di analisi e applicazione come, ad esempio, l’apprendimento automatico (o machine learning) e l’elaborazione del linguaggio naturale (o NLP Natural Language Processing). Esistono delle librerie (o API) per molti linguaggi di programmazione rivolte proprio a questi particolari aspetti dell’IA. Aspetti che, proprio per la loro complessità, non sono facili da realizzare, nè tanto meno la loro applicazione trova sbocchi concreti e attendibili. Ad esempio, un sistema basato sul machine learning, tanto più è sofisticato, tanto più dovrà essere testato su una mole sempre crescente di dati (i famosi Big Data). Se un sistema complesso apprende su un set limitato di informazioni, il rischio è che il sistema impari “a memoria” e non sia poi in grado di fornire output di qualità quando sarà messo alla prova in una situazione reale e complessa.
All’inizio ho detto che, al momento, uno dei rami principali dell’IA è rappresentato dalle tecniche di Machine Learning; proprio su questo argomento vorrei aprire due parentesi ad hoc.
Parentesi 1) L’altro giorno ho sentito dire che sui siti internet è possibile mettere dei banner che, grazie agli algoritmi di machine learning, è possibile visualizzare delle pubblicità “ritagliate” sul profilo del visitatore (che si è preventivamente loggato). Ottimo. Allora forse è meglio spiegare come stanno le cose: Quando un utente si logga su un sito internet viene creato un oggetto “sessione” che può contenere i dati più disparati e che generalmente vengono recuperati dal database sui cui si trovano le informazioni dell’utente (nome, lingua, valuta, preferenze in generale) e “attaccate” all’oggetto “sessione” per tutta la durata della sessione (o comunque entro un tempo massimo stabilito per motivi di sicurezza). Ipotizziamo che nell’oggetto “sessione” vengano anche memorizzate (ad esempio sotto forma di variabili booleane) le informazioni sui servizi attivi sul cliente. A questo punto, nel banner delle pubblicità ci sarà un blocco di codice simile (ovviamente declinato in un determinato linguaggio di programmazione server side):
SE il cliente NON HA il SERVIZO_1 attivo, ALLORA mostra la pubblicità del SERVIZIO_1 altrimenti mostra pubblicità “standard”
IF
cliente.SERVIZO_1 = false
THEN
mostra pubblicità SERVIZIO_1
ELSE
mostra pubblicità “standard”
END IF
A questo punto possiamo avere le seguenti opzioni:
1) dietro il banner non c’è nessun algoritmo di Machine Learning e quindi hanno usato dei termini impropri per essere “cool” e alla moda
2) l’intelligenza umana è definita tale perché il cervello umano ha la capacità di gestire i “SE”. Grandissimo tassello nell’evoluzione umana. Beh vorrebbe dire sottovalutare enormemente i ragionamenti e l’intelligenza dell’uomo e non voglio certo credere che sia questo aspetto a denotare e classificare la nostra intelligenza.
E se parliamo dei banner pubblicitari personalizzati per noi, il merito è da attribuire unicamente ai cookies che vengono scaricati sul nostro durante la navigazione e che poi vengono utilizzati dai banner per “pescare” le pubblicità che meglio si adattano al nostro profilo. Ma gli algoritmi in sé non contengo blocchi di IA, anche se sicuramente sono programmati molto bene e con grande precisione. La prova è molto semplice… basta collegarsi ad un sito pieno di pubblicità con un browser normale e uno in modalità anonima (meglio un buon browser tipo Mozilla Firefox settato con parametri da paranoico) per notare che le pubblicità non sono più “profilate” sul nostro profilo commerciale.
Parentesi 2) il Machine Learning è in realtà l’applicazione degli algoritmi di Regressione Lineare (LR – Linear Regression), non a caso quando si scrive un programma di ML la prima cosa da fare è importare una o più librerie matematiche che contengono le funzioni utilizzate nella RL.
Il concetto di ML chiama, in modo molto naturale, un altro termine molto abusato, che è quello di Big Data. Cosa sono i Big Data? Tantissimi dati (strutturati e non strutturati) che esistono più o meno da quando sono nati i database relazionali.
Ma perchè i Big Data sono così importanti? Vediamolo.
Se scrivo un programma di ML, per avere un output “ragionato” dovrò fornirgli dei dati per poter arrivare alla risposta. Più il programma “ragione bene”, più è necessario fornire una quantità enorme di dati, altrimenti è probabile che il programma fornisca una risposta”a memoria”, come fanno alcuni studenti quando imparano a memoria un tema e poi lo ripetono senza capire le sfumature e le peculiarità, e quindi rischiando anche di dare un risultato errato.
Quindi scrivo il programma, formulo una domanda, il programma analizza una mole incredibile di dati e poi formula una risposta.
Voglio porre al programma una nuova domanda, il programma analizza ancora una mole incredibile di dati e poi formula una risposta.
Approccio non molto “intelligente”, considerando che il concetto di memoria, di esperienza, di “attitudine” al rischio intrinseche in ogni decisione sono ancora ben lontane dall’essere raggiunte… ma un approccio basato sulla regressione lineare può essere un ottimo surrogato (il più è riconoscerlo e non abusare del concetto di Machine Learning e di Intelligenza Artificiale).
Ultima cosa: da dove deriva la seconda parte del titolo di questo post, ovvero ITS (the Incompatible Timesharing System)?
Nel testo “The GNU Project” pubblicato all’interno del libro “Open Sources”, Stallman inizia a descrivere il suo inizio di carriera nel 1971 all’interno del MIT nel laboratorio di Intelligenza Artificiale. La veloce descrizione è la seguente:
The AI Lab used a timesharing operating system called ITS (the Incompatible Timesharing System) that the lab’s staff hackers (*) had designed and written in assembler language for the Digital PDP-10, one of the large computers of the era. As a member of this community, an AI lab staff system hacker, my job was to improve this system. Richard Stallman, The GNU Project
Dalle prime righe del testo si può quindi dedurre che già nel 1971 si parlava di IA e che all’epoca l’IA era programmata in assembler e lo scopo ultimo di Stallman (in quanto “AI lab staff system hacker”) era quello di migliorare il sistema.
Come ultima chicca, dalla nota evidenziata con l'(*), è possibile trarre una bellissima definizione del termine hacker:
(*) The use of “hacker” to mean “security breaker” is a confusion on the part of the mass media. We hackers refuse to recognize that meaning, and continue using the word to mean, “Someone who loves to program and enjoys being clever about it.” Richard Stallman, The GNU Project
Leggi il testo in inglese sul sito del Progetto GNU
Leggi il testo in italiano sul sito del Progetto GNU
Cercando di identificare un intervallo temporale all’interno del quale racchiudere l’evoluzione del concetto di Intelligenza Artificiale, possiamo dire che:
Il punto -1 è riconducibile all’anno 1950 quando, sulla rivista Mind, viene pubblicato un articolo di Alan Turing denominato Computing machinery and intelligence. Nell’articolo, partendo dal gioco denominato “gioco dell’imitazione”, Turing teorizza quello che poi diventerà noto come Test di Turing (TT) che rappresenta un criterio per determinare se una macchina sia in grado di mostrare un comportamento intelligente ad un osservatore umano.
Scarica il PDF del testo originale di Turing, “Computing machinery and intelligence”
Il punto 0 si colloca temporalmente nell’anno 1956 quando, in un seminario presso il Dartmouth College di Hanover nel New Hampshire, si sono riuniti i principali esponenti informatici per raccogliere i risultati e le opinioni degli studi condotti negli anni precedenti e per delineare le linee guida degli sviluppi futuri.
Il punto di arrivo è il matrix creato dall’IA per utilizzare gli uomini come batterie per alimentare il sistema (cit. Matrix).
Diciamo che tra il punto 0 il punto di arrivo, siamo ancora nettamente nella prima parte del percorso. Oltretutto non sono convinto, IMHO, che l’attuale tecnologia basata sul silicio sia condizione sufficiente per lo sviluppo di una vera e propria IA.