Search

Rss Post

Rss Comments

Login

 

L’Intelligenza Composita degli Assistenti Virtuali

Friday 28 March 2008

Già nel 1968, influenzati da film visionari come 2001: Odissea nello spazio di Stanley Kubrick, con il computer HAL 9000, immaginavamo macchine onniscienti ed intelligenti che avrebbero potuto contenere tutto lo spettro dello scibile umano. In seguito, nel 1987, il video dello Knowledge Navigator di Apple colpì la nostra immaginazione e sostanzialmente impresse una spinta considerevole alle aspettative di quello che i computer sarebbero stati capaci di fare nel giro di pochi anni.

Sono oramai passati 20 anni, ma la tecnologia è tuttora assai lontana dal potere esaudire le speranze relative agli Assistenti Virtuali:

  • Il riconoscimento vocale non è immediato.
  • Le persone si adattano al lessico delle macchine, e non il contrario.
  • I computer non possono trascendere facilmente lo scopo per il quale sono stati programmati.
  • Macchine autoapprendenti sono ancora sperimentali.
  • La generazione di grafica di alta qualità che permetta la rappresentazione di 3-D avatar emotivi è lontana dall’essere in tempo reale, economica, o ampiamente disponibile.

La tecnologia per esaudire queste aspettative semplicemente non esiste ancora. Ciononostante, aspettando che la tecnologia si metta al passo con i nostri sogni, la distanza fra essi e la realtà di quanto possa in effetti essere realizzato ha portato a due importanti tendenze nello sviluppo degli Assistenti Virtuali.

  • Simulazione di conversazioni generiche
  • Assistenti Virtuali per applicazioni specifiche

Dal generico alle applicazioni specifiche

Sfortunatamente, il primo tipo di approccio - un computer capace di simulare una conversazione generica con una persona reale - rimane un sogno irrealizzato. Ciononostante, una serie di esperimenti dediti alla simulazione di intelligenza è culminata nel Premio Loebner in Intelligenza Artificiale - “La prima istanza di un Test di Turing“, che dimostra l’intelligenza di un computer e che aggiudicherebbe una medaglia d’oro ed un premio di $100,000 al “primo computer le cui risposte siano indistinguibili da quelle di un umano”. Ogni anno, Hugh Loebner aggiudica una medaglia di bronzo al software che meglio riesce a simulare una conversazione generica con una persona. E’ interessante notare che Marvin Minsky, co-founder del laboratorio di Intelligenza Artificiale (IA) del MIT e autore di svariati testi sulla IA, è uno dei principali critici del Premio Loebner. Egli ha anche provocatoriamente offerto una ricompensa monetaria a chiunque riesca a convincere Loebner a revocare il suo premio.

Dall’altra parte, le applicazioni degli Assistenti Virtuali stanno gradualmente trasformandosi in applicazioni specifiche, aventi lo scopo di rispondere appropriatamente a bisogni specifici degli utenti fornendo informazioni rilevanti e precise.

Sebbene l’approccio alla “Test di Turing” possa offrire i migliori risultati nel simulare conversazioni umane generiche, in realtà queste simulazioni spesso altro non sono che escamotaggi che non permettono di ottenere una reale comprensione dei bisogni degli utenti. Questi esperimenti si concentrano sull’uso di svariati trucchi per indurre gli utenti a credere che un assistente virtuale li abbia compresi, mentre in realtà si tratta soprattutto di:

  • Rivolgere le domande degli utenti verso essi stessi, come farebbe uno psichiatra, ad esempio.
  • Variare l’umore dell’assistente virtuale repentinamente per creare sorpresa - coprendo il fatto che in realtà l’input dell’utente non era stato compreso.
  • Cambiare l’argomento di conversazione verso uno che l’applicativo conosce meglio - fingendo di non essere interessato in quanto avesse asserito l’utente
  • Costruire personalità forti che dominino con il loro volere - pertanto ottenendo il controllo del flusso della conversazione per assicurarsi di rimanere in acque sicure.

D’altra parte, il secondo approccio - gli Assistenti Virtuali per applicazioni specifiche - è un processo ad evoluzione più lenta, che richiede investimenti considerevoli e l’utilizzo di svariate tecnologie. Il suo scopo è però quello di cercare di costruire applicazioni che possano davvero capire gli input degli utenti. Il circoscrivere un contesto applicativo semplifica la comprensione dei bisogni degli utenti, riducendo pertanto la quantità di intelligenza necessaria per capire e comunicare effettivamente. Questo porta al doppio effetto di ridurre le necessità tecnologiche ad un livello che può essere realisticamente tentato, e di accrescere il livello di specializzazione che ogni Assistente Virtuale può raggiungere. Possiamo quindi concentrare tutti i nostri sforzi sullo scopo principale di un’applicazione invece di diluire gli sforzi per coprire la vastità di conoscenza richiesta per rispondere a discussioni generiche. Poiché questo approccio, paragonato ai vasti contesti del primo approccio, limita il campo applicativo, è generalmente meno attraente per l’immaginazione degli utenti, essendo però allo stesso tempo in realtà molto più efficace nel rispondere alle loro richieste.

Mentre i trucchi del primo approccio sono decisamente da tenere sempre a mente, con il loro scopo di aumentare il livello di interazione human-like che gli Assistenti Virtuali possono avere, credo che soltanto il secondo approccio ci porti a costruire applicazioni che davvero rispondano ai bisogni degli utenti. Tipicamente, gli utenti si abituano assai in fretta ad un Assistente Virtuale, ed altrettanto si trovano infastiditi di fronte ad un inutile “macchina per chattare”, pertanto l’abilità di potere intrattenere discussioni generiche potrebbe non essere utile in ogni caso. Inoltre, lo scopo del secondo approccio è quello di costruire applicazioni commerciali, pertanto secondo me questo sarà l’approccio che ci porterà verso la creazione di Assistenti Virtuali intelligenti.

L’intelligenza del software

Quello che ci si immagina, parlando di Assistenti Virtuali intelligenti, spesso fa direttamente appello alla nostra definizione di Intelligenza Artificiale. Ognuno di noi ha una percezione di cosa l’IA sia, ma se cerchiamo di definirla in modo non ambiguo, cadremo rapidamente in una serie di concetti senza confini che rimbalzano da ricordi fantascientifici - l’abilità di HAL 9000 di percepire le emozioni dei suoi interlocutori e capire tutte le loro richieste - a macchine pragmatiche - capaci di automatizzare mansioni che richiedono decisioni complesse - a tecnologie avanguardiste - macchine autoapprendenti - oppure ancora alle impressioni ricevute la prima volta che si è visto un computer rispondere ad una nostra richiesta. Pertanto, come è facile rendersene conto, è più una questione di percezione di cosa l’intelligenza in realtà sia. Quando un’applicazione di IA riesce nei suoi scopi, è comune sentire commenti dello stile “Non era così duro dopotutto”, oppure “Non è vera IA tutto sommato”. Secondo il pioniere in IA Raymond Kurzweil, queste risposte sono interenti alla natura stessa dell’IA.

Come dice lui stesso in un’intervista a c|net:

Ci stiamo rendendo conto che è facile replicare la maggiore parte di risultati ottenibili da uomini adulti, come il giocare a scacchi o il guidare missili, eccetera. Perlomeno molti di essi possono essere replicati dalle macchine. Ogni volta che una macchina fa qualcosa di simile, è nella natura dell’Intelligenza Artificiale dire, “Non era così duro dopotutto”. Le cose difficili sono quelle che fanno i bambini, riconoscere i genitori o giocare con un cane“.

E’ facile immaginarsi, quindi, perché la definizione di IA è da decenni originaria di varie discussioni.

Ciononostante, non è lo scopo di questo post discutere cosa sia l’IA oppure come possiamo emulare l’intelligenza umana. Piuttosto, il mio intento è quello di capire come gli Assistenti Virtuali possano avvicinarsi all’intelligenza - strettamente da un punto di vista pragmatico.

Siccome il software è il fattore primario nel permettere ad una macchina di comportarsi intelligentemente, preferisco usare il termine Intelligenza Software invece di Intelligenza Artificiale. Questo evita che i miei interlocutori siano ingannati dalle attese che circondano quest’ultima, permettendoci di concentrarci sulle considerazioni pragmatiche relative alla creazione di Assistenti Virtuali Intelligenti.

Ho raggruppato l’Intelligenza Software di cui necessitiamo per costruire Assistenti Virtuali in 5 diversi livelli di intelligenza, che insieme compongono un’intelligenza che gli utenti percepiscono come monolitica entro il contesto della loro esperienza (da cui, l’utilizzo del termine Intelligenza Composita nel titolo di questo post).

I 5 livelli di Intelligenza Software sono:

  • Intelligenza di Input
  • Intelligenza Emozionale
  • Intelligenza Logica
  • Intelligenza Conoscitiva
  • Intelligenza di Output

Intelligenza di Input

Ci sono vari dispositivi di input che abilitano un utente ad immettere le sue richieste ad un Assistente Virtuale - ad esempio, tastiere, touch screens, microfoni, o anche dispositivi di motion capture. Vari tipi di intelligenza di input - il primo livello della Intelligenza Software - permettono ad un Assistente Virtuale di interpretare immediatamente detti input. Alcuni esempi includono:

  • Intelligenza Semantica - Un motore semantico può immediatamente analizzare il testo che un utente ha immesso attraverso una tastiera ed identificare i suoi bisogni disambiguando il significato semantico delle parole usate, evitando così le incomprensioni di richieste ambigue.
  • Intelligenza nel Riconoscimento Vocale - Il software può interpretare il cambiamento di velocità o di tono di una frase pronunciata da un utente come espressione di contenuti emotivi che gli altri livelli di intelligenza possono quindi usare per adattarsi più appropriatamente ai bisogni dell’utente. Pertanto, il riconoscimento vocale comprende non solo l’abilità di capire le nostre parole mentre parliamo, bensì l’intelligenza che abilita il software a percepire ed interpretare cambiamenti di velocità e di tono di voce.
  • Intelligenza nel Riconoscimento Facciale - Il software può anche percepire, ad esempio, i sorrisi di un utente ed assegnare quindi valori emotivi che gli altri livelli di intelligenza possono utilizzare.

L’Intelligenza di Input è, quindi, capace di aggiungere metadata alla comprensione di un software degli input di un utente - quel tipo di metadata che tipicamente arricchisce le comunicazioni fra umani.

Intelligenza Emozionale

L’Intelligenza di Input può capire sia la comunicazione effettiva di un utente che il metadato relativo alla sua richiesta, il quale ha un valore emotivo intrinseco che l’Intelligenza Emozionale può interpretare. Ad esempio, se un utente scuotesse rabbiosamente le sue braccia pronunciando la frase “Già, mi hai proprio aiutato”, l’Intelligenza Emozionale disambiguerebbe il significato della comunicazione, che verrebbe quindi percepita non di natura positiva e soddisfatta, come le parole da sole sembrerebbero indicare, bensì capirebbe che in realtà l’utente è insoddisfatto della sua esperienza.

Inoltre, mantenendo la traccia dell’evoluzione di una discussione, software con Intelligenza Emozionale può ottenere una migliore comprensione della direzione nella quale il dialogo sta evolvendosi - sia essa soddisfacente o insoddisfacente per l’utente.

Per finire, l’Intelligenza Emozionale può anche comunicare lo stato emozionale di un Assistente Virtuale, cosa che pone le fondamenta per un tipo di interazione più human-like.

Pertanto, l’Intelligenza Emozionale può disambiguare input confusi, e fornisce nel contempo una dimensione emozionale all’esperienza dell’utente tenendo traccia dello stato emotivo sia dell’utente che dell’Assistente Virtuale.

Intelligenza Logica

Il software che fornisce Intelligenza Logica valuta tutta l’informazione disponibile e analizza le richieste dell’utente. Continua poi il flusso della discussione, procurando all’Assistente Virtuale il suo commento o domanda successiva, oppure la risposta alla richiesta dell’utente una volta raccolta tutta l’informazione necessaria per rispondere.

L’Intelligenza Logica comprende quell’insieme di tecnologie che un Assistente Virtuale usa per realizzare il troubleshooting necessario e per gestire il flusso della discussione - quali motori rule-based, case-based reasoning, e reti bayesiane o neurali.

Intelligenza Conoscitiva

Mentre l’Intelligenza Logica realizza tutte le principali mansioni di troubleshooting e gestione del dialogo, spesso necessita di ottenere dei dati per finalizzare queste sue mansioni. Non è sufficiente analizzare i bisogni dell’utente e identificarne la soluzione, è importante che i dati che un Assistente Virtuale raccoglie dalla sua base di conoscenza corrispondano alle informazioni che l’Intelligenza Logica richiede.

Per esempio, se l’Intelligenza Logica ha identificato che un utente desidera saperne di più a proposito del “gusto della pesca” - ovvero, il piacere di andare a pescare - se l’Intelligenza Logica dovesse rispondere con informazioni sul sapore della pesca - il frutto - avrebbe ovviamente fallito nel fornire una risposta intelligente alla richiesta dell’utente. In questo caso, l’integrazione di un motore semantico di ricerca con l’Intelligenza Logica avrebbe invece fornito l’informazione corretta.

L’Intelligenza Conoscitiva permette ad un Assistente Virtuale di raccogliere correttamente dati dalla sua base di conoscenza. L’Intelligenza Conoscitiva non è necessaria in ogni interazione con un utente. Ad esempio, un input singolo di un utente potrebbe essere solo un saluto, che l’Intelligenza Logica da sola potrebbe gestire molto bene.

Intelligenza di Output

L’Intelligenza di Output determina il modo in cui un Assistente Virtuale presenta le sue risposte ad una richiesta di un utente. Essa ha a disposizione sia le informazioni generata dall’Intelligenza Logica che quelle raccolte dall’Intelligenza Conoscitiva. Queste informazioni possono essere relative a qualcosa che l’Assistente Virtuale deve dire, ma anche a documenti o video che l’utente deve vedere. L’Intelligenza di Output inoltre conosce lo stato emozionale sia dell’utente che dell’Assistente Virtuale.

Pertanto, l’Intelligenza di Output integra ogni pezzo di informazione e metadato che gli altri livelli di Intelligenza Software hanno calcolato, con il fine di generare la migliore rappresentazione possibile di detta informazione. Questo include rappresentazioni grafiche di espressioni facciali e di gesti, schemi vocali - che possono rispecchiare, ad esempio, la fretta di un utente o lo stato emozionale di un Assistente Virtuale - nonché tutte quelle problematiche di interface design relative all’ottimizzazione di questa rappresentazione.

Usare l’Intelligenza Software

I lettori attenti avranno già capito che questi 5 livelli di Intelligenza Software occorrono sequenzialmente. La progressiva elaborazione sull’input di un utente si arricchisce attraverso tappe successive, finché l’Intelligenza Software trova le informazioni che corrispondono a quanto richiesto dall’utente, e gliele presentano. Tutti i livelli necessari di intelligenza processano ogni richiesta degli utenti, per identificare progressivamente quale dato l’utente stia ricercando. E’ un processo di targetizzazione degli input, relativo all’identificazione e disambiguazione delle richieste degli utenti, mentre avviene gradualmente un processo di targetizzazione degli output, ovvero il calcolo della risposta informativa ed emozionale che il software presenta per soddisfare una richiesta di un utente.

Questi 5 livelli di Intelligenza Software possono, a mio avviso, realizzare il sogno degli Assistenti Virtuali Intelligenti. Collettivamente, costituiscono il concetto di Intelligenza Composita, che comprende varie componenti software - ognuna dotata con un grado moderato di intelligenza. In appropriate condizioni creative e tecnologiche, questa Intelligenza Composita potrebbe fornire una soluzione coerente che permetta un grado di intelligenza addirittura superiore alla somma delle sue componenti. Per soddisfare il potenziale di una simile soluzione, le componenti individuali richiedono un mezzo di comunicazione comune - che include quindi un protocollo di comunicazione - che possa ottimizzare e dare una sostanziale spinta a tutta la prestazione.

Spero che il mio tentativo di classificare le componenti software che insieme realizzano la percezione di intelligenza degli Assistenti Virtuali contribuisca a fare comprendere i diversi domini professionali toccati dalla realizzazione di queste applicazioni. La maggioranza delle persone capisce ed accetta con facilità che il software in grado di calcolare e rispondere razionalmente alle richieste di un utente sia una componente vitale di un Assistente Virtuale. Tuttavia, diventa rapidamente apparente che è possibile ottenere queste capacità solo capendo profondamente la natura dei bisogni di un utente attraverso:

  • L’utilizzo di una combinazione di tecnologie di input e algoritmi emozionali.
  • Un’appropriata integrazione tra tecnologie e basi di conoscenza.
  • Un’esperienza utente ricca che susciti un senso di fiducia nell’utilizzo di Assistenti Virtuali.

Per finire, se riusciamo a realizzare tutto questo, gli utenti raggiungeranno il livello di familiarità necessario che permetterà, alla fine, di aprirsi all’utilizzo degli Assistenti Virtuali.

Originariamente pubblicato con il titolo “The Composite Intelligence of Virtual Assistants” su UXmatters, l’8 Ottobre 2007.

Nota postuma

Vorrei segnalare, in relazione a questo mio articolo, la tesi di Davide “Folletto” Casali, preziosissimo membro del team della divisione tecnologica del lab di Kallideas che ho gestito nel 2007. In essa è possibile vedere un esempio concreto di applicazione di alcuni dei principi qui enunciati. Consiglio vivamente la lettura a tutti coloro che intendono approfondire l’argomento con la concretezza che Davide ha saputo esplicitare.

1 Comment

Add your comment

  1. […] sono interessato per tanti motivi. Uno fra tutti, il mio recente coinvolgimento nella creazione di Assistenti Virtuali. Riassumo brevemente quanto discusso a […]

Post a comment

* Required.