Design System è uno di quei termini che i designer, soprattutto dell’ambito digitale, coniano per definire parti del loro lavoro. Di cosa si tratta? Un Design System vuole essere un po’ l’antidoto all’incoerenza visiva (e anche grafica) e di interazione all’interno di sistemi complessi.
Provo a semplificare ancora: immaginate di avere una serie di ingredienti di un’interfaccia, scomponendola. I titoli, le immagini, i link, i bottoni, i form di inserimento dati… ciascun elemento con le proprie caratteristiche e proprietà visive e di interazione. Ciascuno ricombinabile secondo le diverse esigenze. In fondo con gli stessi ingredienti quante ricette diverse saremmo in grado di cucinare?
Questo è il presente delle interfacce al punto che, ad esempio, Spotify ha recentemente sentito il bisogno di fare coerenza tra le miriadi di Design System che sono stati sviluppati negli anni, presentando Encore.
Cosa c’entra questo con l’intelligenza artificiale? A pensarci bene, se ci sono piattaforme che usano i dati di comportamento per proporre contenuti adatti ai propri gusti (content recommendation), perché non usare quegli ingredienti visivi per comporre un’interfaccia che sia adatta alla persona che la usa, esattamente a lei? Questa interfaccia, esattamente come nella definizione, può essere qualsiasi cosa: dalla pulsantiera dell’auto che stiamo guidando, al tipo di interazione vocale con un’assistente vocale, fino a un visore di Augmented Reality. Certo, anche un sito, un’app, ma non solo.
È un terreno sperimentale che ha tanti punti di domanda e tanti elementi oscuri ancora ma che ha anche grandissimo potenziale.
La sfida per i designer: costruire ecosistemi che siano in grado di sfruttare l’AI
Non c’è dubbio che esisteranno sempre più soluzioni applicative che faranno uso della Artificial Intelligence. La stessa AI si raffinerà sempre di più con il tempo, aprendo scenari ora ignoti e risolvendo problemi o assolvendo compiti che, al momento, non riusciamo a immaginare. Avremo a disposizione strumenti incredibilmente più potenti di quelli che abbiamo ora, basti pensare al Quantum Computing, al momento comparabile agli albori dell’informatica binaria. Come già in passato, sistemi (sempre più) complessi saranno messi a disposizione e al lavoro su un’infinità di campi di applicazione. Sistemi il cui confine tra fisico, digitale, online e offline sarà sempre più impalpabile. Sistemi, o meglio ecosistemi. Che andranno progettati, come in passato si sono progettati artefatti “di design” e, più recentemente, prodotti digitali.
È qui che potremo incidere, come designer e come progettisti. Costruire e congegnare ecosistemi sani che siano in grado di sfruttare al massimo le potenzialità dell’Artificial Intelligence, avendo come faro l’aspetto olistico nei progetti e allo stesso modo, senza discriminare o escludere nessuno. E come progettisti di sistemi complessi, fatti di mattoncini sempre più sofisticati, dovremo avere comprensione non solo di come funzionino i mattoncini stessi, imprescindibile, ma anche come questi possano essere resi armoniosamente per fare in modo che il sistema stesso lo risulti.
Chi potrà prendere la decisione finale? Non i designer da soli. Chi potrà aiutare a scegliere i parametri utili a prendere le decisioni giuste, se non gli stessi che tuttora svolgono questo compito? Sarà certo un lavoro di squadra che i designer potranno facilitare.
Qual è lo stato dell’AI a oggi
Diciamo subito che l’intelligenza artificiale, allo stato attuale, non è quella che vediamo al cinema, in film come “The Matrix”. In quasi tutti i film, l’AI ha in comune una peculiarità tecnologica: applicazioni di macchine che possono vantare un’intelligenza quasi umana, benché artificiale. Nella realtà siamo ancora molto distanti da tutti questi scenari.
Quella che possiamo vedere applicata sempre più spesso, detta comunemente – a volte erroneamente – Artificial Intelligence, non è – ancora – comparabile con quello che la cinematografi citata vuole raccontarci. Parliamo piuttosto di reti neurali, algoritmi di machine learning o strumenti affini a tutto questo. Anzi, per capirci ancora meglio: quando si parla di Intelligenza Artificiale, oggi, probabilmente ci si sta riferendo a un qualche tipo di algoritmo di machine learning, ovvero quella serie di operazioni e modelli matematici che servono a migliorare, ad esempio, il riconoscimento di pattern ricorrenti, all’interno di una gran mole di dati, facendo uso della capacità di computazione che solo una macchina è in grado di possedere. Non si tratta, sia ben chiaro, o almeno non ancora, di macchine che sono in grado di riprodurre la capacità degli esseri umani più peculiare: il pensiero associativo. Insomma, queste macchine sanno riconoscere cose che hanno già computato (anche con variazioni rispetto al passato), ma non sono in grado di sintetizzare concetti nuovi e autoconsistenti a partire da altri. In altre parole, riusciremmo facilmente a riconoscere un algoritmo di machine learning da un essere umano.
Torniamo al cinema e al film “The Imitation Game”, ispirato alla vita di Alan Turing. Il titolo è riferito proprio al famoso “Test di Turing”. Cos’è? Un test che secondo il padre dell’informatica e crittografo inglese sarebbe stato sufficiente a determinare se una macchina sia in grado di pensare.
Come funziona il test? Si tratta di un gioco “… a tre partecipanti: un uomo A, una donna B, e una terza persona C. Quest’ultima è tenuta separata dagli altri due e tramite una serie di domande deve stabilire qual è l’uomo e quale la donna. Dal canto loro anche A e B hanno dei compiti: A deve ingannare C e portarlo a fare un’identificazione errata, mentre B deve aiutarlo. Affinché C non possa disporre di alcun indizio (come l’analisi della grafia o della voce), le risposte alle domande di C devono essere dattiloscritte o similarmente trasmesse.”
È vero però che l’affinamento e il perfezionamento di questi strumenti sta già influenzando grandemente il panorama lavorativo, anche nel campo del design. La maggior parte degli smartphone usciti nel corso del 2019 vantavano (o forse millantavano) l’applicazione di approccio e variazioni di machine learning e Artificial Intelligence, alla generazione del miglior scatto possibile, tanto per fare un esempio.
D’altronde, i professionisti della progettazione sono generalmente chiamati per individuare opportunità a partire da bisogni o risolvere problemi e ottimizzare soluzioni. Come tutte le attività dell’ingegno, queste eccellono quando si tratta di fare leva su capacità di associazioni disruptive ma, ovviamente, non possono competere con la soluzione di problemi quantitativi per cui, magari, ci sono a disposizione moltissimi dati: in quest’ultimo caso niente può battere una macchina nella sua capacità di computazione a grandissima velocità. In questi casi si parla di FLOPS (Floating Point Operations Per Seconds) e gli ultimi supercomputer presentati sono quasi alla soglia degli exaFLOPS (1018 FLOPS).
Una enormità di operazioni al secondo insomma. Non è un caso, infatti, che i primi problemi di intelligenza artificiale che le macchine sono state chiamate a risolvere sono quelli per cui è più facile scrivere un algoritmo (ovvero una serie di passi codificati) per il quale la capacità di computazione è il fattore determinante.
Non si tratta solo di far di conto velocemente ma anche comparare in pochissimi istanti una mole ingestibile per un solo essere umano e poter restituire risultati a una persona. In alcuni casi quest’approccio è stato ad esempio applicato per determinare se un particolare mix di chemioterapia fosse adatto al tipo di paziente e la sua manifestazione tumorale: data la tossicità per l’organismo è importantissimo esporre il meno possibile un paziente a queste sostanze per trattare con efficacia il cancro. Quindi potremo avere un determinante aiuto alle nostre decisioni, certo, ma arriveremo alla sostituzione? Proviamo a spacchettare il problema.
Imparare dai pattern d’uso
L’Anticipatory Design è una tecnica che consiste nel poter proporre contenuti (o scelte) adatti alle persone, anticipando le loro possibili decisioni. Siano esse scelte predeterminate o consigli su successivi acquisti, contenuti o percorsi. È del tutto evidente che per avere una certa precisione e attendibilità, per chi la scelta se la vede proposta, c’è bisogno di avere aderenza ai comportamenti attesi dalle stesse persone.
Dal punto di vista strettamente tecnico, però, questo tipo di strumenti funziona bene quando è in grado di macinare grandi quantità di dati (i big data, appunto) per poter riconoscere pattern d’uso emergenti dai comportamenti. Ma per macinarli questi dati, bisogna prima averli.
È quindi necessario cominciare a raccogliere dati sull’uso che si fa di una certa piattaforma e cominciare ad analizzarli per avere informazioni utili per le successive scelte.
Ma cos’è un pattern d’uso? Proviamo a spiegarlo con un esempio. Preparare il caffè (o qualunque altra cosa per la colazione) implica ripetere ogni mattina gesti rituali, prendendo cose dagli stessi posti, replicando azioni per poi cominciare a svegliarvi ed essere finalmente coscienti?
Questo è chiaramente un pattern. Gli esseri umani tendono a essere abitudinari, e abbastanza ripetitivi, in molte attività che compiono. Peraltro, non sono così distanti tra loro i tipi di comportamento che hanno gli uni dagli altri. Questo ci permette di costruire dei modelli mentali che ciascuno tipo di utente può avere rispetto all’approccio o la soluzione di un problema, finanche la preparazione di un caffè.
Si dà il caso che la definizione di algoritmo sia “un procedimento che risolve un determinato problema attraverso un numero finito di passi elementari, chiari e non ambigui”.
Possiamo facilmente descrivere l’algoritmo della preparazione di un caffè. Più specificamente possiamo dare istruzioni a un amico che ci è venuto a trovare a casa per la prima volta su come si prepari il caffè a casa nostra. Attraverso un numero finito di passi elementari, chiari e non ambigui. In questo modo lui sarà in grado di prepararsi il caffè che desidera.
Se, con un salto pindarico piuttosto ardito, torniamo a pensare all’interazione di un essere umano con un’altra interfaccia (che non sia la macchina del caffè) possiamo far emergere evidentemente anche i suoi altri pattern d’uso. Se diamo in pasto a una macchina la capacità di apprendere e registrare questi molti comportamenti diversi per poterli poi comparare in futuro, possiamo avere indietro una serie di potenziali previsioni di quel che verosimilmente farebbe il nostro amico utente dinanzi a un nuovo problema.
Questo perché la capacità intellettiva – per così dire – di una macchina è quella di comparare, con una velocità impensabile per la mente umana, moltissime casistiche diverse. La somma di queste operazioni può essere rappresentata come un bouquet di risultati con valori di confidenza diversi.
Cos’è un valore di confidenza? È, in buona sostanza, la probabilità che la macchina ci abbia azzeccato.
Sono generalmente espresse in percentuali perché, in quanto probabilità, sono valori compresi tra 0 e 1 e tutti i decimali compresi, oppure per semplicità tra 0 e 100, superando i decimali. Niente panico: 0,94 probabile equivale al 94% di probabilità (vedi immagine).
A cosa servono gli intervalli di confidenza
Quando è che il 94% è una quantità che ci fa essere soddisfatti nel definire che quella sia, in effetti, la nostra risposta? Cos’è che governa davvero il tipo di sistema che stiamo vivendo o ancora meglio progettando? Chiaramente dipenderà dal contesto e dalla delicatezza della decisione, per esempio.
Se si trattasse di un sistema di autenticazione biometrica attraverso il riconoscimento del volto, non sarei troppo felice di sapere che fallisce 6 volte su 100. È davvero troppo. Se fosse solo un sistema per riconoscere la natura della fotografia, sarebbe persino un onorevole risultato il 94%.
Quindi, tanto per cambiare, dipende. In fondo, se Netflix usa questo meccanismo, ovvero raccomandare contenuto compatibile al 98% con i nostri gusti, sulla base di comportamenti e cronologia, ma poi non ci azzecca, il danno è piuttosto limitato. No?
A cosa servono questi intervalli di confidenza? Perché ci siamo infilati in questo tunnel di probabilità e statistiche? Proprio perché, a oggi, le intelligenze artificiali a cui stiamo puntando sono in grado di essere allenate attraverso una mole di dati piuttosto grande e rappresentativa di un qualcosa (un modello) per poi poter continuare la loro attività su tutta un’altra serie di dati raccolti e, soprattutto, ancora da raccogliere sullo stesso tipo di struttura.
Banalizzando: immaginate una vostra qualunque telefonata a un qualunque Customer Service. È ovvio che deterministicamente l’operatore non sarà in grado di sapere prima cosa gli dovete chiedere. Ma è stato formato per riconoscere e provare a incanalare la richiesta all’interno dei domini che il servizio tratta. Migliore è il training, maggiore è l’esperienza dell’operatore, migliore sarà il tipo di soluzione che potrà fornire rispetto alla vostra esigenza, nell’ambito di quelle che materialmente il servizio offre.
Ecco, in un certo modo, pensate al training di un modello di machine learning in questo modo: far allenare il proprio modello su un set di dati di training per poi, raggiunti risultati soddisfacenti – ovvero con una buona confidenza – buttarlo nella mischia.
Allenare le macchine: da Tay.ai a Sketch2Code di Microsoft
Alcuni anni fa Microsoft lanciò su Twitter un chatbot mosso da Artificial Intelligence chiamato Tay.ai. L’obiettivo era chiaramente quello di utilizzare l’interazione su Twitter con il bot per allenarlo a essere più smart nelle conversazioni casuali e quotidiane. Per farlo, invitavano gli utenti a interagire con Tay. Come è facile immaginare da questi due screenshot catturati nel giro di poco più di 12 ore, il risultato non fu proprio quello sperato.
Complice un’intensa attività di trolling, il malcapitato algoritmo si trasformò da bot di conversazione casuale e empatica, a neonazista e razzista in pochissimo tempo e in modo molto efficiente.
Perché ne parlo? La più delicata delle fasi, anche da questo esempio, risulta la fase di training.
In questa fase l’algoritmo impara dalle interazioni con i dati di ingresso e affina le sue risposte sulla base di quello. Un’educazione mirata a farlo diventare razzista e nazista lo rende particolarmente efficace nel riprodurre quel comportamento. Questo apre, chiaramente, uno scenario completamente diverso rispetto all’espressione di opinioni a cui siamo abituati nel dibattito quotidiano. Ovvero: quanto è controproducente per gli esseri umani avere un taglio mirato alla discriminazione?
Immaginate che questo algoritmo sia utilizzato per restituire un qualunque elenco di informazioni pertinenti per aiutare i vostri figli a realizzare una ricerca scolastica. Come è possibile essere certi che la confidenza e l’affidabilità del risultato sia tale? I risultati restituiti da Tay, trollato da Twitter, sarebbero stati diversi rispetto a quelli che avrebbe tirato fuori se allenato con un set di dati di partenza diverso e più equilibrato? Con tutta probabilità sì.
Ovviamente non voglio aprire solo dubbi, né tanto meno rendervi scettici su queste tecnologie. La stessa Microsoft ha, infatti, presentato qualche giorno fa uno strumento online molto interessante per chi progetta e sviluppa siti web o interfacce digitali: Sketch2Code.
Si tratta di una piattaforma web a cui, se diamo in pasto degli schizzi di interfaccia rozzi (carta e penna per capirci), protowireframe, restituisce direttamente il codice HTML che implementa quell’interfaccia.
Questo perché l’operazione di tradurre questo tipo di attività in codice, fatta manualmente, è terribilmente ripetitiva e fallace. È molto sensato trasformare e automatizzare queste attività, perché sono oggettivamente sempre piuttosto simili tra loro.
Sta sostituendo qualche figura professionale? Non proprio, nel senso che i cosiddetti Frontend Engineer difficilmente portano un grande contributo nel tradurre questi schizzi in codice HTML, viceversa sono più utili nel risolvere problemi ben più complessi e architetturali. È già successo nella storia che alcune mansioni, che prima venivano svolte direttamente dalle persone, siano state sostituite da una macchina. Tra tutte, pensate al centralino per mettere in connessione un utente telefonico con l’altro.