L’Intelligenza Artificiale ti conferma che sei co****ne

Daniele Gentili
8 min readMay 23, 2020

--

L’ho chiamato Q-LO (per i nerd ecco il codice su github). Q-LO è un piccolo cervello artificiale che, dalla descrizione di una situazione, sa decidere abbastanza bene se sei il co****ne della storia o no .

Ma come fa a decidere? Quanto decide bene? …Come si permette?!

Per rispondere a queste domande bisogna guardare a cosa voglia dire in pratica intelligenza artificiale (parola abusata un po’ da tutti), come venga costruita, quali sono i suoi limiti e anche alcune questioni etiche.

Ma come fa?

Q-LO è una rete neurale di 501 neuroni esatti, quindi diciamo non proprio un premio nobel considerando che un moscerino ne ha circa 300 volte tanti. L’idea consiste nell’imitare il funzionamento di un cervello biologico nel prendere decisioni, per applicarlo a risolvere problemi in un ambito ben definito.

Oggi le reti neurali sono il top dello sviluppo di intelligenza artificiale, da AlphaZero alle self-driving cars, ma il concetto non è nuovo: fu sviluppato già negli anni ’50 , ma siccome all’epoca i computer avevano molta meno potenza di calcolo di un frigo moderno l’idea fu abbandonata.

In cosa consiste questa idea? Eccola:

In questa immagine ho disegnato una rete neurale a 8 neuroni che cerca di approssimare come decidiamo di comprare online. Supponiamo che ci siano 3 input principali per la nostra decisione:

  • feedback (in stelline)
  • costo (in euro)
  • tempo di consegna (in ore)

Avremo 3 neuroni di input, ognuno dei quali ha il potere di far passare un segnale in base alla sua funzione di attivazione (ad es. probabilmente il neurone per il feedback non reagirà positivamente o negativamente per 3 stelline su 5).

Il segnale passato sarà l’input moltiplicato per un peso specifico (che rappresenta se l’influenza di quel fattore è positiva o negativa sull’acquisto), a cui viene aggiunto un bias arbitrario (predisposizione del neurone a passare il segnale).

Lo stesso processo viene ripetuto in livelli successivi (chiamati layer nascosti) tra neuroni che prendono come input l’output di quelli precedenti (qui è dove avviene la magia di questi modelli). Nell’immagine ci sono due layer nascosti di 2 neuroni ciascuno.

Infine l’ultimo neurone produce un output che indica la previsione finale sull’acquisto. L’apprendimento dell’intelligenza artificiale avviene quando quest’ultima misura lo scarto tra la propria decisione e la nostra sugli stessi input (apprendimento supervisionato): se io ho comprato, allora il valore “bersaglio” sarà 1; poniamo che la macchina dica 0.76 — a quel punto prenderà la differenza di 0.24 e la userà per cambiare il proprio modo di pensare aggiustando i pesi e i bias dei propri neuroni.

Questo processo si chiama retropropagazione dell’errore (o backpropagation in Inglese) e spesso avviene ogni tot di previsioni del modello (in “batch”) invece che ogni volta .

Tutto molto bello ma quindi i co****ni?

Qui le cose si fanno piu complesse. Ovviamente sembra una buona intuizione che il prezzo possa essere usato per approssimare le nostre decisioni negli acquisti. Ma come calcolare chi è co****ne?

Un approccio possibile è dato dall’Elaborazione del linguaggio naturale o NLP (dall’Inglese: Natural Language Processing). In breve l’NLP ci permette di rappresentare le parole in maniera comprensibile per Q-LO (il nostro modello), mantenendo le loro relazioni semantiche.

Questo viene fatto dividendo un Corpus linguistico in uno spazio a piu dimensioni e usando un valore in ogni dimensione per rappresentare una parola. In sintesi, un vettore della parola.

(immagine non proprio accurata tecnicamente ma rende l’idea)

Con questi vettori si riesce a fare matematica con le parole in maniera sensata, ottenendo come risultato un nuovo vettore, per esempio: regina — donna + uomo = re

Con questo approccio addirittura interi testi possono essere rappresentati come la media dei vettori delle loro parole!

“Troppa tramaaa”! Quindi i co****ni?!

Ormai ci siamo. L’intuizione è che se si raccontasse una situazione ad un modello predittivo (ad es. rete neurale) in termini ad esso comprensibili (ad es. vettori di parole), si potrebbero approssimare le decisioni umane sul se il protagonista della storia sia il co****ne di turno o meno.

Ma dove trovare abbastanza dati per addestrare Q-LO?…Internet ovviamente! Una ricercatrice quantitativa molto gentile ha pubblicato un dataset di circa 100.000 post da lei raccolti sul thread Reddit /r/amitheasshole nel quale sconosciuti chiedono “Sono un co****ne per aver fatto X (e.g. a persona Y)?”. La comunità puo rispondere: co****ne, non-co****ne, tutti co****ni o nessun co****ne.

Ecco un esempio (tradotto dall’inglese, originale):

Sono un co****ne perchè mangio piu’ del 50% del cibo che io e la mia compagna cuciniamo?

Io sono un uomo di 100kg e lei una donna di 50kg, penso che dovrei avere piu’ cibo di lei a cena ma lei pensa che non sia giusto. Io dico che siccome sono un uomo ho bisogno di piu’ calorie ma lei pensa solo che 50/50 sia equo.

Voi che ne pensate?

E’ tempo di giudicare

La creatrice del dataset stessa ha provato a testare l’intuizione con un suo modello che ha totalizzato un’accuratezza verificata del 62% nel classificare i co****ni e non. Non male! Specialmente considerando che il suo modello è un modello di regressione logistica (poco potente su problemi non lineari) basato sulla frequenza di utilizzo delle parole (che non riesce a rappresentare molte informazioni semanticamente rilevanti).

A questo punto non resta che realizzare Q-LO e cercare di battere il suo risultato:

  • Preparazione:

Dopo aver ottenuto i post e il giudizio finale su ognuno (semplificato in co****ne e non-co****ne, bisogna pulirli e prepararli per essere convertiti in vettori (rimuovendo parole inutili, punteggiatura strana, etc). A questo punto, siccome ci sono più post di non-co****ni che di co****ni bisogna bilanciarli artificialmente.

  • NLP:

Adesso è tempo di trasformare i post in vettori. Invece di usare un modello già pronto, per esempio basato su articoli Wikipedia, ne ho generato uno apposito usando Doc2Vec, dato che il linguaggio di questi post è molto specifico. Ho scelto 200 dimensioni per i vettori dato che è pratica comune scegliere un valore tra 100 e 300 per la dimensionalità. Dopodichè bisogna dividere i dati in set di allenamento e set di test per valutare il modello, un po’ come un esame finale.

  • Rete Neurale:

Ora bisogna capire che forma dare al “cervello” di Q-LO. Ho lasciato il mio computer acceso per qualche decina di ore (con GPU GTX 1070 8GB), mentre provava automaticamente diverse combinazioni di parametri come il numero di neuroni, numero di ripetizioni, batch prima della backpropagation dell’errore, etc.

Per ognuna di queste combinazioni Q-LO ha effettuato 5 tentativi di imparare da gruppi di post diversi (in Inglese: 5-fold cross-validation), misurando la deviazione standard nella propria accuratezza. Questo passaggio viene effettuato, insieme allo spegnere casualmente dei neuroni (in Inglese: dropout), per evitare che il modello impari “a memoria” (in Inglese: overfitting).

Per i curiosi tra di voi, i parametri migliori trovati con questo processo sono: 100 epoche, 150 nodi per i layer nascosti, backpropagation ogni 64 post, e Adam come ottimizzatore.

Qui Q-LO raggiunge il primo successo, accuratezza media: 70.4%, deviazione standard 0.2%!

  • Validazione del modello:

Il momento della verità. Bisogna testare Q-LO su dati mai visti prima (il set di test). Se la sua accuratezza fosse più bassa di quella ottenuta in training vuol dire che non è in grado di generalizzare e che ha imparato a memoria a distinguere I co****ni (in Inglese: Overfitting).

L’accuratezza sul campione di test è 71.44% addirittura meglio che in allenamento e molto meglio del nostro punto di riferimento di 62%! Q-LO ce l’ha fatta!

Ma quindi ci fidiamo?

Ecco la pagella:

rapporto di classificazione
matrice di confusione

Cosa vogliono dire questi numeri? Per entrambe le categorie prese in considerazione, co****ni e non-co****ni, due metriche in particolare sono interessanti per capire quanto è bravo Q-LO: Precisione e Recupero (in Inglese: Precision e Recall).

Prendendo ad esempio la categoria “co****ne”, la precisione indicherà quanti veri co****ni Q-LO considera tali, diviso lo stesso numero più i non-co****ni che Q-LO giudica male.

Il recupero invece indica sempre quanti veri co****ni Q-LO considera tali, ma stavolta diviso lo stesso numero più quelli che non ha “beccato”.

Questo ci permette di dire che Q-LO si aggira intorno a un 71% a tutto tondo ma magari è un pelo troppo gentile con alcuni co****ni (vedi: recall co****ne), e pur essendo ingiusto con alcuni non-co****ni lo è in misura minore (vedi: precision non-co****ne).

Vediamo cosa pensa dell’esempio dell’uomo che vuole mangiare piu’ della compagna:

(il post numero 923 è quello raccontato sopra, questo)

Proviamo ora con un esempio mio:

Sono un co****ne per aver studiato scienze politiche e relazioni interazionali e dopo passare il tempo scrivendo articoli sull’AI per divertimento. Tra l’altro dovrei aggiungere che ho in programma di pubblicare l’ultimo su un AI per beccare i co****ni anche in Inglese!

(almeno qualcuno!)

Tutto bene allora, ora mi sento autorizzato a condividere con voi questa storia!

Ma che succede? Dobbiamo accettare Q-LO ad occhi chiusi basandoci sui numeri?

Spero che questo articolo possa contribuire a de-mitizzare un po’ i soliti discorsi banali sull’Intelligenza Artificiale di gente che, di solito, ripete parole nella convinzione che siano “alla moda”.

Q-LO non è un robot antropomorfo con intelligenza generalizzata. La maggior parte della ricerca e produzione di AI è come Q-LO.

Inoltre spero questo articolo aiuti a illustrare alcuni dei limiti dell’AI e spunti di discussione, nel nostro caso Q-LO:

  • Formula dei giudizi basandosi su una ligua specifica e concetti a volte molto culturalmente determinati (es. vivere con i genitori). E’ specifico e non generale
  • Approssima volutamente i bias inconsci delle persone con i propri bias e pesi. Questo dipende anche da come sono selezionati i dati, un punto di vista Italiano su cosa vuol dire essere co****ne potrebbe non essere incluso. Potrebbe propagare ingiustizie.
  • E’ possibile verificare che decisione prenderà di fronte a un input ma non sapere il perchè questa decisione venga presa. Manca osservabilità
  • Non c’è uno standard di misurazione della performance (ognuno segue le sue “best practices”)
  • Anche ammettendo che esista un modo “appropriato” di presentare risultati in numeri, questi non renderebbero gli esiti decisionali oggettivi, o necessariamente desiderabili.

Spero abbiate trovato questo articolo interessante. Alla prossima e non fate i co****ni o, se dovete, fate in modo che non vi scopra Q-LO!

--

--

Daniele Gentili
Daniele Gentili

Written by Daniele Gentili

Science’s neutrality must be questioned when it affects people. The Qs we seek to answer show our interests. Knowledge isn’t accumulated but surfaced/submerged

No responses yet