L’Intelligenza artificiale (AI dalla denominazione inglese) è un concetto decisamente datato, più o meno in tutte le sue declinazioni: Sistema Esperto, Reti Neurali, Machine Learning. Si è iniziato a parlarne (a ragion veduta!) intorno agli anni ‘50 dello scorso secolo e non sono mancate nel tempo le applicazioni, alcune delle quali hanno fatto “storia”.

Un esempio eclatante è il caso di Eliza (pronuncia Ilaisa) un sistema di elaborazione del linguaggio naturale che permetteva di comunicare (scrivendo: la sintesi vocale era ancora lungi a venire) con un elaboratore che apparentemente partecipava alla conversazione.

Si trattava di un software scritto da Joseph Weizenbaum al MIT di Boston, che simulava una sorta di parodia di una seduta con uno psicoterapeuta Rogersiano (scuola terapeutica americana) utilizzando le parole e le frasi precedenti della persona per produrre costrutti che avevano apparentemente “senso”. C’è stato chi, all’epoca, ha inneggiato alla “automatizzazione della psicoterapia”, ma l’autore stesso ha smontato la cosa dicendo che si trattava di poco più di uno scherzo. Ricordo che la provai (negli anni ‘80) ed era abbastanza semplice portarla a dire qualsiasi fesseria.

Sui Sistemi Esperti si è lavorato moltissimo: ricordo la prima (storica per l’Italia!) edizione italiana dell’IJCAI (International Joint Conference on Artificial Intelligence), tenuta a Milano nel 1987: era la decima conferenza ma per l’Italia una novità assoluta. Io c’ero: giovane universitario spaesato in mezzo a tutti quei guru americani e giapponesi… Quello era all’epoca l’argomento principe, quantomeno nel campo applicativo: sistemi che sulla base di regole del tipo “SE… ALLORA…” potevano navigare grandissime basi di dati organizzate come un grafo per arrivare da un problema noto ad una soluzione (nota anch’essa).

Per capire come funzionavano immaginatevi una visita medica: si inizia dai sintomi evidenti, poi il medico chiede “ma sente male qui?” ed a seconda della risposta fa una nuova domanda. Arrivato ad una diagnosi, prima di prescrivere un farmaco chiederà se sono presenti certe patologie, oppure se si stanno utilizzando altri farmaci. Il Sistema Esperto lavora allo stesso modo: un input che presenta una serie di alternative, tra le quali si può scegliere disponendo di un nuovo input, e così via fino all’output che è la soluzione.

Sistemi che hanno rappresentato una notevole (ed importante oltre che utile) evoluzione, ad esempio accelerando scelte cruciali. Immaginatevi un’ambulanza che soccorra una persona svenuta avendo a disposizione un sistema di questo tipo: l’infermiere risponde alle domande poste ed ha a disposizione le competenze di un medico (o quasi). E’ evidente che questi sistemi di intelligente avevano poco o nulla: strutture fisse valide tanto quanto la base di dati che era stata registrata.

In quello stesso periodo (1987), avevano fatto la loro prima apparizione le Reti Neurali, ovvero il Machine Learning: la macchina che apprende. Questa tecnologia ha iniziato a cambiare i paradigmi del software: non più un insieme di regole strutturate in modo da portare automaticamente (ed in modo prevedibile) da una condizione (input) ad un’altra (output); bensì un insieme di regole che dettavano come doveva modificarsi il loro peso in base all’input ed al feedback che derivava dall’output.

Detto così può sembrare astruso, ma non lo è così tanto. Immaginate una serie di nodi (in realtà parliamo di software: nulla di materiale, anche se…) collegati gli uni agli altri da dei canali a creare un grafo. Dunque il primo nodo sarà collegato ad X nodi del secondo livello, ciascuno dei quali sarà collegato ad X nodi del terzo livello, e così via. Ogni nodo può inviare un segnale ai nodi del livello successivo sulla base della capienza del canale che li collega. Ogni nodo può dare un feedback a quello del livello superiore che deciderà come modificare la capienza del canale che li collega.

Ogni nodo contiene solo due regole: in base a cosa decidere se aumentare o diminuire la capienza di questo canale e come farlo.

Ora immaginiamo di immettere la terzina (1;2;3) e di dare questa regola a ciascun nodo dell’ultimo livello: se il numero che esprimi è uguale al terzo (della nostra terzina)  di di aumentare la portata del canale, se è diverso di diminuirla. Lasciamo pur perdere (per semplicità) le regole dei nodi intermedi.

Al primo inserimento di dati ci sarà un certo numero di nodi finali che produce 3 e dunque aumenta la portata del loro canale ed un certo numero che produce qualcos’altro e dunque la diminuisce. In base a cosa? Diciamo solo al caso!

Procediamo con una seconda terzina: (4;3;7) e la situazione si ripeterà. Ovviamente il comportamento dei nodi intermedi, che non abbiamo precisato, sarà comunque dipendente da quello dei nodi di ultimo livello; dunque l’esito dell’output si propagherà con gradazioni maggiori o minori  risalendo l’intero grafo.

Con la terza terzina (2;3;5) a noi probabilmente risulterà ormai ovvio che il terzo numero è sempre la somma dei primi due: per la nostra rete neurale questa condizione aumenterà di probabilità. Se continuiamo a caricarle terzine di questo tipo per un numero sufficiente di volte (alla velocità di un computer: milioni al secondo!), alla fine avremo un software assolutamente incomprensibile (nessuno sa più come funziona!) che è in grado di restituire la somma di due numeri… Si fa prima a mente o al massimo con una calcolatrice, vero?!

Solo che la prima notizia che ne ho avuto (all’epoca) era su un sistema di questo genere che imparava a guidare un’auto in un videogame che andava di moda: senza fare incidenti con le altre, guidando in maniera apparentemente spericolata e vincendo le gare! E l’hadware (i computer) di quell’epoca non avevano la velocità e la potenza di calcolo che ormai troviamo anche in un frigorifero o in una lavatrice.

Quando parliamo di Deep Learning i concetti base non si allontanano molto da quelli visti per le reti neurali: aumenta la specializzazione dell’hardware, aumentano enormemente nodi e livelli ed aumentano i circuiti di feedback, ovvero i collegamenti di ritorno tra livelli più bassi e quelli più alti; migliorano gli algoritmi che gestiscono la forza dei collegamenti. Ma per il nostro livello di trattazione è più che sufficiente così.

Bene. Ora che ho un po’ chiarito su cosa si basa l’Intelligenza Artificiale (spero almeno!) vi do appuntamento al prossimo articolo, dove entreremo nel merito dei suoi rapporti con il Pollo Naturale e dunque di alcune attuali applicazioni.

Francesco Valotto
Veneziano di nascita (nel ‘61 dell’altro secolo), moglianese d’adozione (da sempre: il ‘64 dell’altro secolo!), con una laurea in Psicologia ed una carriera al limite dell’informatica, mi dedico a talmente tante cose da non riuscire ad elencarle quando me le chiedono, sempre alla ricerca di cosa farò da grande.

LEAVE A REPLY

Please enter your comment!
Please enter your name here