Oltre le apparenze
Ad ogni utente sarà certamente capitato di provare quella sensazione di frustrazione mista a rabbia quando si vuole fare qualcosa con un certo software e non ci si riesce. Diversi progressi sono stati fatti negli ultimi anni e i produttori di software, in competizione tra loro, in particolare con l’avvento degli smartphone e dei tablet, hanno messo al centro delle loro agende il tema “esperienza utente” (dall’inglese User eXperience) pensando proprio a come rispondere alle difficoltà riscontrate dagli utenti nell’uso dei software.
Generalmente la User eXperience si declina nel costruire delle interfacce utente di bell’aspetto che catturino l’utilizzatore e lo orientino nella scelta del software. Sfortunatamente, sebbene l’aspetto grafico sia importante, un’interfaccia graficamente gradevole non coincide necessariamente con una buona esperienza utente. Da circa due anni il reparto Ricerca e Sviluppo di Eurosystem si sta interrogando su quale sia la ricetta per produrre della buona esperienza utente. Uno degli ingredienti più interessanti e meno scontati su cui porre l’attenzione è l’intelligenza (o pro-attività) che il software dovrebbe possedere. Infatti, ben diverso sarebbe per un utente avere a disposizione un software che suggerisce azioni e contenuti, semplifica il modo di lavorare e previene la possibilità di commettere errori, a differenza di quanto esiste oggi.
Con questo intento parte dell’industria del software ha concentrato la sua attenzione sulla tecnologia sviluppata da una branca dell’intelligenza artificiale, nota come apprendimento automatico (dall’inglese machine learning), fortemente attiva da più di vent’anni. Il suo scopo è quello di sviluppare tecniche che automaticamente ricavano informazioni interessanti (in gergo pattern) da dati in un qualsiasi formato elettronico. Così, operando silenziosamente dietro le quinte, gli esperti lavorano su soluzioni software che nascondono al loro interno sempre un pò di intelligenza. Oggigiorno l’utilizzo di tecniche di apprendimento automatico è più diffuso di quanto si possa immaginare. I campi di applicazione più noti sono internet (big data) mining, database mining, motori di ricerca, visione artificiale, medicina, bioinformatica, finanza, robotica, domotica, automazione industriale, sicurezza, difesa, automotive, mobile app, videogiochi, cinema, commercio elettronico, e molti altri. Non è un caso che brand noti come Microsoft®, Google®, IBM®, EMC® e Oracle® investano consistentemente su questo tipo di tecnologia.
Una caratteristica affascinante e rivoluzionaria introdotta dalle tecniche di apprendimento automatico è quella di fornire nuove funzionalità al software senza programmarle esplicitamente. Infatti è il programma stesso ad adattarsi (o personalizzarsi) alle esigenze dell’utilizzatore evolvendo con il suo uso. In quest’ottica è interessante scoprire come la stessa tecnica di apprendimento supervisionato predittivo, unita alla relativa implementazione, possa esser utilizzata per costruire un sistema di guida automatica di un’autovettura o un sistema che predice l’andamento del mercato o di un’azienda nel futuro prossimo oppure un sistema che ottimizza i consumi di un abitazione. Per far funzionare il sistema è necessario poter fornire alla soluzione software un insieme di dati “etichettati”, per i quali l’output del sistema è già noto, da utilizzare per l’addestramento. Questo è il motivo per il quale le tecniche che risolvono questo tipo di problemi sono dette supervisionate. L’unico vincolo degno di nota per rendere davvero indipendente la soluzione software dal problema affrontato è che i dati forniti al software devono trovarsi in un formato standardizzato. Tipicamente il formato adottato è quello vettoriale; ad esempio, per la guida automatica di una vettura l’input del sistema di apprendimento può esser composto da una serie di vettori contenenti la posizione della macchina, la velocità corrente, l’accelerazione e l’angolo di sterzo delle ruote, mentre l’output potrebbe essere la posizione che deve assumere il volante in un dato istante. Nonostante questo tipo di formato sia largamente diffuso è possibile utilizzare oggetti ben più complessi, come intere tabelle di un software gestionale, immagini, spezzoni di tracce audio, messaggi email, grafi, forme molecolari ecc.
Un’altra classe di problemi ai quali l’apprendimento automatico dà soluzione è nota come apprendimento supervisionato categorico (di categorie). Anche in questo caso è quasi incredibile scoprire come un sistema di eliminazione della posta indesiderata di archiviazione automatica di documenti, di riconoscimento automatico dei volti possano condividere la stessa soluzione software. L’ultima (macro-)classe di problemi che le tecniche di apprendimento automatico sanno affrontare è quella di apprendimento non supervisionato (o knowledge discovery). Essa è in grado di dare soluzione automatica a problemi come la costruzione di un sistema di analisi di dati astronomici, di raggruppamento delle notizie per i giornali online, di analisi del genoma umano, di segmentazione del mercato, di distribuzione automatica del calcolo in una rete di calcolatori, di analisi delle reti sociali, di raccomandazione di prodotti commerciali. Per completezza va detto che esiste un’altra classe di metodi di apprendimento che va sotto il nome di apprendimento rinforzato, tuttavia di essa non verranno riportati esempi perché di uso meno comune.
Quanto scritto fin ora potrebbe far pensare che in un futuro prossimo sia possibile costruire l’algoritmo di apprendimento automatico universale, in grado di affrontare qualsiasi problema gli sia posto. Ciò è falso, infatti già nel 1987 Box e Draper dicevano al riguardo “all models are wrong, but some models are useful”, vale a dire che non è possibile costruire la miglior tecnica di apprendimento automatico per tutti i problemi possibili. Quanto asserito in precedenza è generalmente riconducibile al celebre “no free lunch theorem” (Wolpert 1996), il cui nome folkloristico descrive intuitivamente il significato. La ragione di ciò è che un insieme di assunzioni che si possono fare per risolvere un problema di apprendimento in un particolare dominio applicativo non funziona bene per tutti gli altri. La conseguenza più importante del teorema è che, se le stesse tecniche di apprendimento possono esser utilizzate nei domini applicativi più svariati, lo stabilire quale sia la migliore è un problema che richiede un lavoro ingegneristico attento. La ricerca scientifica nel tempo ha dato via via indicazioni sempre più certe sul tipo di problemi e sulle relative tecniche da applicare per gli specifici domini applicativi.
Eurosystem ha deciso di sfruttare tale bacino di conoscenze per porsi una domanda fondamentale: è possibile sfruttare le tecniche di apprendimento automatico per migliorare l’esperienza utente nell’utilizzo del software gestionale Freeway® Skyline? L’appuntamento con l’utente è quindi rimandato nel prossimo futuro, al giorno in cui il software reagirà in modo inequivocabile allo stimolo dell’utente.