I sistemi esperti sono applicazioni tecnologiche che appartengono al grande alveo dell’intelligenza artificiale e possono essere identificati come programmi software che riproducono le prestazioni di una o più persone esperte in un determinato campo di attività (dominio). Si tratta di sistemi ormai abbastanza maturi che trovano quindi ampia applicabilità in molti contesti; uno, a titolo di esempio, quello delle vendite di prodotti complessi per i quali è fondamentale affidarsi ad un configuratore di prodotto.
In questo servizio, che terremmo aggiornato con periodicità, analizziamo in dettaglio cosa sono, come funzionano, come vengono applicati i sistemi esperti e dove possono produrre vantaggi per le aziende.
Ultimo aggiornamento: 23 settembre 2019
Cosa sono i sistemi esperti
Come già accennato, i sistemi esperti riproducono artificialmente le prestazioni di una persona esperta di un determinato dominio di conoscenza o campo di attività (motivo per il quale rientrano nella branca dell’Ai – Artificial Intelligence).
Un sistema esperto è in grado di mettere in atto autonomamente procedure di inferenza [ossia di logica: con un processo induttivo o deduttivo si giunge ad una conclusione a seguito dell’analisi di una serie di fatti o circostanze – ndr] adeguate alla risoluzione di problemi particolarmente complessi. Problemi che se risolti da un essere umano richiederebbero l’intervento di un esperto con competenze specifiche sulla materia o la disciplina da cui è sorto il problema.
Un sistema esperto è infatti un programma informatico che, dopo essere stato adeguatamente istruito, è capace di dedurre informazioni (output) da un insieme di dati e da informazioni di partenza (input).
Usando parole più semplici, un sistema esperto aiuta le persone a trovare la soluzione ottimale ad un problema specifico senza dover far intervenire una persona esperta sul tema oggetto del problema. Una procedura che il sistema esperto può compiere anche con dati incompleti, lavorando su dati qualitativi anziché quantitativi, sfruttando la cosiddetta fuzzy logic, ossia ragionamenti “approssimativi” che portano a risultati altamente probabili.
Intelligenza artificiale e sistemi esperti
E’ dunque facile intuire perché i sistemi esperti rientrino nel grande mondo dell’intelligenza artificiale anziché essere classificati come “normali” programmi software: dati una serie di fatti, i sistemi esperti riescono a dedurre nuovi fatti.
Una peculiarità dei sistemi esperti riguarda la “spiegazione” delle decisioni cui giunge il sistema (Glass Box): un sistema esperto è sempre in grado di esibire i passaggi logici che sottendono le decisioni prese (aspetto molto importante se si confrontano questi sistemi con le più moderne reti neurali e il deep learning per i quali si parla infatti di Black Box, sistemi con i quali non è possibile risalire al processo induttivo e deduttivo che li porta ad un output, che sia un’azione o una decisione).
Per approfondimenti consigliamo la lettura del servizio dedicato alle reti neurali, in particolare la sezione “I sistemi esperti e le reti neurali”
Classificazione dei sistemi esperti
Due sono le categorie principali entro le quali possiamo oggi suddividere i sistemi esperti:
1) sistemi esperti basati su regole: si tratta di sistemi basati su regole classiche e ben note al mondo dell’informatica nella forma IF (condizione) e THEN (azione). Dati una serie di fatti i sistemi esperti, grazie alle regole di cui sono composti, riescono a dedurre nuovi fatti.
Facciamo un esempio molto chiaro che spiega bene il funzionamento delle regole: abbiamo un problema di salute e per giungere alla risposta al quesito “qual è il mio problema di salute?” forniamo al sistema esperto una serie di informazioni (ho mal di testa, sono raffreddato, ho la febbre). Il sistema esperto arriverà alla conclusione in questo modo:
IF mal di testa + IF raffreddore + IF temperatura corporea a 38 gradi centrigradi… THEN influenza.
In pratica il sistema analizza se ci sono tutte le condizioni (mal di testa AND raffreddore AND febbre) per dedurre con ampia probabilità che la conclusione (la risposta al problema) sia l’influenza.
2) sistemi esperti basati su alberi: in questo caso, dato un insieme di dati ed alcune deduzioni, il sistema esperto crea un albero (delle possibili alternative) che classifica i vari dati. Di fronte ad un problema nuovi dati vengono analizzati dall’albero e il nodo finale rappresenta la soluzione.
Un sistema esperto basato su alberi è, in sostanza, un software esperto in grado di riconoscere un problema in base a una sequenza di fatti, decisioni o azioni. A partire da una situazione iniziale, tutte le scelte possibili (le condizioni IF, ossia le alternative possibili AND/OR) si ramificano in situazioni e azioni fino a giungere alla conclusione.
Come funzionano i sistemi esperti
I sistemi esperti sono strutturati su tre differenti livelli tecnologici:
1) base di conoscenza (knowledge base): potremmo identificarlo come il database delle informazioni che servono al sistema per fornire una risposta ad un determinato problema (come farebbe l’essere umano esperto che ha la conoscenza specifica della materia da applicare alla risoluzione del problema). Si tratta del repository dove vengono memorizzate informazioni e regole che permettono al sistema di mettere in atto una ragionamento;
2) motore inferenziale: la knowledge base alla base di un sistema esperto contiene anche le informazioni specifiche di una serie di regole di tipo If-Then (se-allora): se si verifica una certa condizione – per esempio viene posta una certa domanda – si applica una specifica regola – per esempio viene fatta una seconda domanda oppure viene data una precisa risposta o avviata una determinata azione, ecc.
Questo “rule engine” è di fatto la componente software che, analizzando ed elaborando le informazioni contenute nella base di conoscenza, capisce il problema e propone una soluzione.
3) interfaccia utente: è la parte del software che permette all’utente di sfruttare il motore inferenziale; solitamente si tratta di una interfaccia web, a volte molto semplificata (una pagina dove l’utente inserisce una domanda in forma scritta e riceve a video la risposta elaborata dal sistema esperto) a volte più strutturata (oggi integrabile anche con altri sistemi basati sull’intelligenza artificiale come il riconoscimento e la comprensione del linguaggio naturale).
EXTRA >> Il funzionamento della logica fuzzy (i sistemi di supporto alle decisioni) |
Ciò che differenzia i sistemi esperti dai normali programmi software sono i dati che costituiscono la knowledge base: anziché “appoggiarsi” ad una struttura decisionale predefinita, i sistemi esperti riescono a proporre all’utente la migliore delle alternative possibili trovando la soluzione ottimale al problema tra tutte quelle disponibili (sfruttando la logica fuzzy). La fuzzy logic è un una teoria matematica che si occupa di modellizzare l’incertezza ed è una estensione della logica classica. In quest’ultima un concetto è vero o falso, non sono accettate “sfumature” (se la si analizza nell’ambito della teoria degli insiemi, se non qualcosa non appartiene all’insieme A deve per forza appartenere all’insieme B). Nella realtà umana le cose non funzionano in modo binario (la nostre stessa mente non funziona definendo tutto sulla base di vero/falso, bianco/nero, sì/no, ecc.), un concetto può essere parzialmente vero o parzialmente falso. Ed è proprio qui che entra in gioco la fuzzy logic. La fuzzy logic risulta particolarmente utile per affrontare l’incertezza e l’approssimazione presenti nella realtà, ecco perché risulta particolarmente utile nei sistemi esperti. La fuzzy logic è capace di rappresentare le situazioni tipiche in cui si trova ad operare un essere umano e quindi può essere usata in applicazioni software come quelle dei sistemi esperti in grado di rispondere come farebbe un esperto umano. La logica fuzzy è quella che di fatto caratterizza la terza generazione dei sistemi esperti. I sistemi esperti di prima generazione, nati tra la fine degli anni ’60 e l’inizio degli anni ‘70 del secolo scorso, sfruttavano la logica booleana (vero/falso) e il ragionamento logico in condizioni di certezza tramite un modello deterministico (causa-effetto). Questi sistemi mostrarono presto il loro limite più grande: il ragionamento artificiale si scontrava con la logica per cui l’esperto umano risultava di gran lunga superiore al sistema esperto artificiale. I sistemi esperti di seconda generazione sono quelli che hanno introdotto il modello probabilistico superando così i limiti della logica che interruppero l’evoluzione dei sistemi esperti di prima generazione. Il modello probabilistico, a differenza di quello deterministico, ragiona su “causa-possibili effetti”. Seguendo questo modello i sistemi esperti fecero un bel passo in avanti ma dovettero però scontrarsi con il fatto che non sempre la risposta più probabile può essere quella più utile. Un problema non da poco se si devono risolvere problemi complessi. Ecco perché negli anni ’80 e ’90 nei processi inferenziali venne introdotta la logica sfumata e approssimata (fuzzy logic), dando così vita ai sistemi esperti di terza generazione. Ed è proprio da questa generazione di sistemi esperti che si è cominciato a parlare di sistemi di supporto alle decisioni (DSS). A differenza dei sistemi esperti classici, capaci di fornire risposte a domande specifiche, grazie all’introduzione e all’utilizzo delle reti bayesiane e delle reti di decisione, questi sistemi si sono evoluti non proponendo più “semplici” risposte ma informazioni utili ad un processo decisionale. |
A cosa servono i sistemi esperti: esempi ed ambiti di applicazione
Come abbiamo spiegato nei paragrafi precedenti, i sistemi esperti servono per trovare risposte a problemi complessi che, se delegati all’essere umano, richiederebbero l’intervento di esperti di un determinato tema o dominio.
Proprio per queste loro caratteristiche, i sistemi esperti vengono impiegati in tutti i processi di problem solving. Per esempio svolgendo compiti/azioni come:
– interpretazione: i sistemi esperti analizzano dati complessi e potenzialmente “rumorosi” per determinare il loro significato (il sistema esperto può essere applicato in casi dove è necessario avere descrizioni di situazioni da dati provenienti da varie fonti, per esempio in ambito IoT con i dati rilevati da sensori);
– diagnosi: in alcuni casi i sistemi esperti analizzato i dati per determinare una malattia e quindi “suggerire” una diagnosi, in altri il sistema esperto deduce anomalie o malfunzionamenti attraverso l’osservazione (utile per esempio nel campo della predictive maintenance);
– monitoraggio: i sistemi esperti analizzano i dati per definire se sussistano condizioni di allarme e quindi se diventa necessario creare alert in tempo reale in situazioni critiche (ciò che fa il sistema esperto è confrontare osservazioni in tempo reale per identificare situazioni di allarme);
– pianificazione e programmazione: in quest’ambito i sistemi esperti vengono impiegati perché determinano una sequenza intelligente di azioni per raggiungere un determinato obiettivo;
– previsione: in questo caso il sistema esperto diventa l’elemento attraverso il quale, applicando un appropriato modello del passato e del presente, si riescono a prevedere modelli futuri (per esempio in campo economico o politico);
– progettazione e configurazione: in questo caso i sistemi sono in grado di progettare e configurare delle soluzioni/risposte partendo da determinate specifiche (il sistema esperto configura “oggetti”, proposte, soluzioni rispettando dei vincoli).
Dai sistemi esperti agli algoritmi di intelligenza artificiale
Per capire meglio dove e come vengono impiegati i sistemi esperti abbiamo intervistato Gianbattista Schieppati, CEO di Myti che ci ha spiegato come la società capitalizza oggi la solida esperienza nell’ambito dei sistemi esperti e guarda al futuro verso machine learning e computer vision.
Sistemi esperti applicati alla progettazione e alla vendita
Per capire più da vicino come funzionano i sistemi esperti abbiamo scelto l’ambito applicativo delle vendite, soprattutto quelle “complesse” (quelle dove l’offerta dipende dalla scelta, la dimensione e la configurazione di un prodotto “varabile” e complesso, che si struttura sulla base di diverse componenti e molteplici listini prezzi diversificati).
I sistemi esperti applicati a questa particolare area di business rientrano nell’ambito della progettazione e configurazione. In particolare, collocati all’interno di soluzioni come i configuratori commerciali di prodotto (soluzioni utilizzate dalle vendite in business model dove la proposta risulta particolarmente complessa per la natura stessa dei prodotti commercializzati, per le combinazioni possibili delle soluzioni, per le variabili che incidono sul risultato finale e, quindi, sulla realizzazione stessa del prodotto ed il suo prezzo), i sistemi esperti rappresentano l’anello tecnologico che permette la definizione dei criteri di configurazione.
In generale, un configuratore di prodotto deve assolvere il compito di semplificazione nella scelta di un bene da acquistare; processo non sempre immediato quando le variabili in gioco sono numerose (dimensionamento, numero elevato di componenti, utilizzo di materiali particolari, combinazione tra materie prime e materiali vari con conseguenti impatti sulle proprietà fisiche, meccaniche o chimiche, ecc.). Quando a dover essere configurati sono prodotti che vanno calati in progetti complessi (pensiamo agli impianti manifatturieri oppure a sistemi e macchinari che devono operare in particolari condizioni climatiche o ambienti industriali “critici”), i configuratori di prodotto devono essere “esperti ed intelligenti” al punto da mettere gli utenti in condizioni di cercare, individuare, valutare e richiedere in autonomia quello che serve, senza ricorrere all’esperto tecnico.
Questo è forse uno degli ambiti più maturi dove l’intelligenza artificiale, attraverso l’impiego dei sistemi esperti, può dimostrare gli enormi benefici di business che derivano dalla tecnologia. I sistemi esperti applicati ai configuratori commerciali di prodotto possono fungere sia da strumenti di progettazione sia da strumenti di vendita:
1) Se utilizzato internamente all’azienda, il sistema esperto inserito in un configuratore di prodotto può fungere da strumento di progettazione (per esempio per configurare impianti secondo regole o grandezze fisiche non necessariamente predeterminate in un ambiente complesso).
2) Se utilizzato per le vendite, il sistema esperto all’interno del configuratore di prodotto diventa l’elemento che abilita gli utenti a configurare prodotti esistenti da cataloghi molto vasti, dimensionare prodotti non a listino, capire le specifiche per la progettazione di prodotti non ancora a catalogo.