How can you challenge a perfect immortal machine?

Si fa un gran parlare di Intelligenza Artificiale, e giornalisti e politici spesso usano questo termine a casaccio dandogli il più classico velo di mistero e magia che le parole di tecnologiche di moda riescono ad avere. Questa vuole essere una chiacchierata introduttiva sui temi delle IA senza avere pretese di rigore scientifico, e assolutamente non esaustiva.

Fatta questa premessa cominciamo dalle basi.

Cosa è un programma

I programmi sono delle sequenze ordinate di istruzioni attraverso le quali un calcolatore compie una determinata azione. In un programma abbiamo dei dati mangiati (input) dei dati sputati fuori (output), a livello macchina le uniche operazioni possibili all’interno di un programma sono operazioni matematiche, salti condizionati da un confronto, e salti incondizionati.

Cosa è un Agente Intelligente

Un agente intelligente è una entità che osserva l’ambiente attraverso sensori, e opera attraverso attuatori verso per raggiungere un obiettivo: l’intelligenza artificiale è quella roba che sta tra i sensori (gli input) e gli attuatori (l’output), e altro non è che un programma riconducibile alla definizione di prima.

Complicato? Vediamo un esempio: il termostato. Il termostato è un affare con un sensore e un attuatore, il sensore è il termometro e l’attuatore è quello che accende o spegne il riscaldamento.

Vediamo il programma di un termostato

inizio:
leggi la temperatura (input)
la temperatura è minore di quella impostata (salto condizionato)
...Accendi il riscaldamento (output)
altrimenti
...spegni il riscaldamento (output)
torna a inizio (salto incondizionato)

Il termostato è il nostro esempio base per una Intelligenza Artificiale: il termostato risolve un problema semplice del quale conosciamo già la soluzione; lo fa in modo automatico, e non è in grado di fare alcuna eccezione. Naturalmente potremo andare ad espandere il programma in modo che sia più “smart” come ad esempio inserire una soglia dove accendere e una dove spegnere, o integrarlo con un orologio per avere diverse temperature a diverse ore del giorno, o segnalare i guasti al sensore o all’attuatore. Tutte queste modifiche rendono il programma più utile ma rimangono disposizioni rigorose.

Il Tris

maxresdefault
Cominciamo con un gioco semplice: il Tris. Per scrivere una intelligenza artificiale che sia imbattibile a tris (quindi contro la quale si possa al massimo pareggiare) potremmo come per il termostato impostare una serie di regole che derivano dalla nostra esperienza, ma magari non siamo dei giocatori così brillanti di tris e quindi possiamo usare una strategia diversa. Il numero di mosse nel tris limitato, quindi possiamo provare a rappresentare tutte le combinazioni di una partita in un albero, e verificare quali siano le scelte vincenti. Naturalmente questo tipo di strategia richiede due fattori: che le scelte siano effettivamente limitate, e che le regole per stabilire quale sia il risultato ricercato siano certe. Una volta creato questo albero dovremo solo istruire la nostra macchina di evitare i rami che portano alla sconfitta e avremo creato una IA imbattibile nel tris.

Un approccio simile naturalmente non è applicabile per giochi più complessi come ad esempio gli scacchi: 20 mosse il bianco, 20 il nero e dopo il primo turno siamo già a 400 combinazioni. Al secondo turno siamo a 71.000 e al terzo a 9 milioni. Decisamente poco pratico.

L’euristica

Quando i problemi diventano troppo grossi per essere risolti con un approccio rigoroso è il momento di cominciare a far le cose a cazzo di cane 🙂

Con un algoritmo euristico non ci diamo più l’obiettivo di risolvere un problema in modo assoluto, ma cerchiamo una soluzione approssimativa che possa essere ottenuta in un tempo utile. L’esempio tipico è il problema del commesso viaggiatore: un commesso viaggiatore deve passare da n punti e noi siamo stati incaricati di trovare il percorso ottimale. La logica ci direbbe che dobbiamo misurare la distanza tra ciascuna città e quindi scegliere la combinazione di distanze più brevi, ma naturalmente questo può funzionare solo per un numero basso di città, ma quando questi aumentano incorriamo nello stesso problema che abbiamo visto sopra con gli Scacchi.

Una strategia potrebbe essere ad esempio misurare la distanza tra la città in cui siamo e le altre, e scegliere la più breve e quindi procedere. Questo ci da una soluzione non ottimale, ma ci risparmia di dover confrontare tutte le possibili soluzioni per trovare la più breve.

Come potrete benissimo immaginare le soluzioni euristiche vanno benissimo per il vostro navigatore satellitare, ma è meglio non applicarle ad un programma di contabilità, neppure se creativa.

Tutto quello che oggi viene discusso come “intelligenza artificiale” sui giornali o da politici rientra all’interno di queste soluzioni euristiche. A questo punto saltiamo tutta una larga fila di capitoli e andiamo direttamente a quello che va più di moda oggi

Le reti neurali

Reti neurali, machine learning, deep learning questi sono alcuni dei termini con cui viene definito l’approccio attualmente più in voga per la soluzione dei problemi. Su questo argomento ci sono introduzioni lunghe com interi libri e quindi non aspettatevi che possa spiegarveli in un paragrafo. Mi riprometto di scrivere un articolo con qualche esempio (ma in realtà ammetto che seppure abbia capito la base del funzionamento mi mancano ancora alcuni elementi e soprattutto la pratica) ma per ora limitiamoci a vedere a grandi linee come funziona e per cosa è utile.

Una rete neurale cerca di riprodurre matematicamente il funzionamento dei neuroni nel cervello umano. In che modo? ogni “neurone” ha una serie di input, moltiplicati per dei pesi variabili, sommati insieme, e confrontato con una soglia. Variando i pesi potremo fare in modo che dato un determinato input si ottenga un output positivo. I pesi verranno variati in base alla derivata della funzione in modo da ridurre l’errore.

Ok è un casino: prometto un altro articolo sul tema.

Vediamo più nella pratica quindi a cosa serve questa “scatola magica”. Una delle funzioni più semplici è quella di classificare gli input: ho una serie di foto e voglio sapere se c’è un cinghiale, calibro la mia rete neurale con una serie di foto con e senza cinghiale (magari foto di semplice immondizia) e verifico che mi dica correttamente, Si o No, e a questo punto posso passargli tutte le foto che voglio e il sistema riuscirà genericamente a capire se c’è un cinghiale o meno.

Naturalmente questa definizione apre migliaia di domande: come faccio a dare una foto di input se per ora abbiamo visto praticamente solo numeri? Come faccio a scegliere le foto per addestrare la rete?

Vediamo quindi un altro esempio pratico: siamo un supermercato e abbiamo il nostro bel sistema di carte fedeltà che ci dicono cosa compra ogni settimana ogni nostro cliente. Da bravi agenti marketing facciamo una supposizione: se il cliente comincia a comprare dei pannolini ha probabilmente avuto un bambino. Abbiamo quindi scoperto una serie di famiglie con delle neo-mamme ma per noi marketer è già troppo tardi: noi vogliamo cominciare a bombardare di pubblicità la futura mamma già dal terzo mese.

Possiamo quindi raccogliere tutti i dati sugli acquisti delle neomamme e vedere cosa compravano 6 mesi prima: passiamo questi dati alla rete neurale e la addestriamo a scoprire quali sono le variazioni dalla media che identificano una futura mamma rispetto ad un normale cliente. Una volta addestrata la rete questa potrà continuare ad analizzare i dati degli acquisti giorno per giorno e fornirci una bella lista di pancine (e tutto senza violare il GDPR).

L’utilizzo principale di una rete neurale è quindi quello di classificatore: gli fornisco tonnellate di dati (che poi altro non sono che i famosi big data) che ho precedentemente classificato e spero che impari a riconoscere degli schemi, che magari io stesso precedentemente non conosco.

Come vedete qua usciamo dalla semplice programmazione e abbiamo un sistema più universale che però ha bisogno di essere calibrato manualmente da un esperto, e richiede una buona analisi sui dati in ingresso sia per l’addestramento, sia per il funzionamento normale.

Anche qua nulla di magico insomma: non un proiettile d’argento per risolvere i nostri problemi, ma un approccio diverso alla elaborazione di grosse quantità di dati quando non abbiamo algoritmi più efficaci.

Conclusioni

Come abbiamo visto per il momento non stiamo ancora dalle parti della Artificial General Intelligence, ovvero una intelligenza sintetica in grado di affrontare qualunque problema senza bisogno di essere supervisionata dall’umano. Nonostante questo però già allo stato attuale le IA sono in grado di rivoluzionare interi settori e di fare cose che anche solo 10 anni fa non erano immaginabili neanche da previsioni ottimiste. In particolare l’analisi dei dati e delle fotografie ha fatto dei balzi in avanti, non tanto per qualche incredibile scoperta, ma quanto perché l’attuale potenza di calcolo ha reso possibile che molte più persone lavorassero su questi algoritmi, e inoltre naturalmente è ancora più facile ottenere i dati da analizzare rispetto a 10 anni fa perché abbiamo molta più memoria collettiva digitale.

I commenti sono chiusi.