Sistema di ragionamento - Reasoning system

Nella tecnologia dell'informazione un sistema di ragionamento è un sistema software che genera conclusioni dalla conoscenza disponibile utilizzando tecniche logiche come la deduzione e l' induzione . I sistemi di ragionamento svolgono un ruolo importante nell'implementazione dell'intelligenza artificiale e dei sistemi basati sulla conoscenza .

Secondo la definizione di uso quotidiano della frase, tutti i sistemi informatici sono sistemi di ragionamento in quanto tutti automatizzano un qualche tipo di logica o decisione. Nell'uso tipico nel campo dell'Information Technology , tuttavia, la frase è solitamente riservata a sistemi che eseguono tipi di ragionamento più complessi. Ad esempio, non per i sistemi che eseguono tipi di ragionamento abbastanza semplici come il calcolo di un'imposta sulle vendite o uno sconto cliente, ma fanno inferenze logiche su una diagnosi medica o un teorema matematico. I sistemi di ragionamento sono disponibili in due modalità: elaborazione interattiva e batch. I sistemi interattivi si interfacciano con l'utente per porre domande di chiarimento o altrimenti consentire all'utente di guidare il processo di ragionamento. I sistemi batch acquisiscono tutte le informazioni disponibili contemporaneamente e generano la migliore risposta possibile senza feedback o indicazioni da parte dell'utente.

I sistemi di ragionamento hanno un ampio campo di applicazione che include la pianificazione , l' elaborazione delle regole aziendali , la risoluzione dei problemi , l' elaborazione di eventi complessi , il rilevamento delle intrusioni , l' analisi predittiva , la robotica , la visione artificiale e l'elaborazione del linguaggio naturale .

Storia

I primi sistemi di ragionamento erano i dimostratori di teoremi, sistemi che rappresentano assiomi e affermazioni nella logica del primo ordine e quindi utilizzano regole logiche come il modus ponens per dedurre nuove affermazioni. Un altro primo tipo di sistema di ragionamento erano i risolutori di problemi generali. Questi erano sistemi come il General Problem Solver progettato da Newell e Simon . I risolutori di problemi generali hanno tentato di fornire un motore di pianificazione generico che potesse rappresentare e risolvere problemi strutturati. Hanno lavorato scomponendo i problemi in sottoproblemi più piccoli e più gestibili, risolvendo ogni sottoproblema e assemblando le risposte parziali in una risposta finale. Un altro esempio di risoluzione di problemi generali è stata la famiglia di sistemi SOAR .

In pratica, questi dimostratori di teoremi e risolutori di problemi generali erano raramente utili per applicazioni pratiche e richiedevano utenti specializzati con conoscenza della logica da utilizzare. La prima applicazione pratica del ragionamento automatizzato sono stati i sistemi esperti . I sistemi esperti si sono concentrati su domini molto più ben definiti rispetto alla risoluzione di problemi generali come la diagnosi medica o l'analisi dei guasti in un aereo. I sistemi esperti si concentravano anche su implementazioni più limitate della logica. Piuttosto che tentare di implementare l'intera gamma di espressioni logiche, si sono tipicamente concentrati su modus-ponens implementati tramite regole IF-THEN. Concentrarsi su un dominio specifico e consentire solo un sottoinsieme ristretto di logica ha migliorato le prestazioni di tali sistemi in modo che fossero pratici per l'uso nel mondo reale e non solo come dimostrazioni di ricerca come erano stati la maggior parte dei precedenti sistemi di ragionamento automatizzato. I motori utilizzati per il ragionamento automatizzato nei sistemi esperti erano generalmente chiamati motori di inferenza . Quelli usati per l'inferenza logica più generale sono tipicamente chiamati prover di teoremi .

Con l'aumento della popolarità dei sistemi esperti, molti nuovi tipi di ragionamento automatizzato sono stati applicati a diversi problemi nel governo e nell'industria. Alcuni, come il ragionamento basato sui casi, erano frutto della ricerca sui sistemi esperti. Altri, come gli algoritmi di soddisfazione dei vincoli, sono stati influenzati anche da campi come la tecnologia decisionale e la programmazione lineare. Estremamente produttivo è stato anche un approccio completamente diverso, non basato su un ragionamento simbolico ma su un modello connessionista. Quest'ultimo tipo di ragionamento automatizzato è particolarmente adatto alla corrispondenza dei modelli e ai tipi di rilevamento del segnale di problemi come la ricerca di testo e la corrispondenza dei volti.

Uso della logica

Il termine sistema di ragionamento può essere utilizzato per applicarsi a qualsiasi tipo di sofisticato sistema di supporto alle decisioni, come illustrato dalle aree specifiche descritte di seguito. Tuttavia, l'uso più comune del termine sistema di ragionamento implica la rappresentazione computerizzata della logica. Varie implementazioni mostrano variazioni significative in termini di sistemi di logica e formalità. La maggior parte dei sistemi di ragionamento implementa variazioni della logica proposizionale e simbolica ( predicato ). Queste variazioni possono essere rappresentazioni matematicamente precise di sistemi logici formali (es. FOL ), o versioni estese e ibride di tali sistemi (es. logica Cortese). I sistemi di ragionamento possono implementare esplicitamente tipi logici aggiuntivi (ad es . logiche modali , deontiche , temporali ). Tuttavia, molti sistemi di ragionamento implementano approssimazioni imprecise e semi-formali a sistemi logici riconosciuti. Questi sistemi tipicamente supportano una varietà di tecniche procedurali e semi- dichiarative al fine di modellare diverse strategie di ragionamento. Sottolineano il pragmatismo rispetto alla formalità e possono dipendere da estensioni e allegati personalizzati per risolvere i problemi del mondo reale.

Molti sistemi di ragionamento utilizzano il ragionamento deduttivo per trarre deduzioni dalla conoscenza disponibile. Questi motori di inferenza supportano il ragionamento in avanti o il ragionamento all'indietro per dedurre conclusioni tramite modus ponens . I metodi di ragionamento ricorsivo che impiegano sono chiamati rispettivamente " concatenamento in avanti " e " concatenamento all'indietro ". Sebbene i sistemi di ragionamento supportino ampiamente l'inferenza deduttiva, alcuni sistemi utilizzano il ragionamento abduttivo , induttivo , annullabile e altri tipi di ragionamento. L'euristica può anche essere impiegata per determinare soluzioni accettabili a problemi intrattabili .

I sistemi di ragionamento possono impiegare l' assunzione del mondo chiuso (CWA) o l'assunzione del mondo aperto (OWA). L'OWA è spesso associato alla rappresentazione ontologica della conoscenza e al Web semantico . Diversi sistemi mostrano una varietà di approcci alla negazione . Oltre al complemento logico o bit a bit , i sistemi possono supportare forme esistenziali di negazione forte e debole, inclusa la negazione come fallimento e la negazione "inflazionistica" (negazione di atomi non ground ). Diversi sistemi di ragionamento possono supportare il ragionamento monotono o non monotono , la stratificazione e altre tecniche logiche.

Ragionamento in condizioni di incertezza

Molti sistemi di ragionamento forniscono capacità di ragionamento in condizioni di incertezza . Questo è importante quando si costruiscono agenti di ragionamento situati che devono occuparsi di rappresentazioni incerte del mondo. Esistono diversi approcci comuni alla gestione dell'incertezza. Questi includono l'uso di fattori di certezza, metodi probabilistici come l'inferenza bayesiana o la teoria di Dempster-Shafer , la logica multivalore (" fuzzy ") e vari approcci connessionisti .

Tipi di sistema di ragionamento

Questa sezione fornisce una categorizzazione non esaustiva e informale dei tipi comuni di sistema di ragionamento. Queste categorie non sono assolute. Si sovrappongono in misura significativa e condividono una serie di tecniche, metodi e algoritmi .

Risolutori di vincoli

I risolutori di vincoli risolvono problemi di soddisfazione dei vincoli (CSP). Supportano la programmazione con vincoli . Un vincolo è un vincolo che deve essere soddisfatto da qualsiasi soluzione valida a un problema . I vincoli sono definiti in modo dichiarativo e applicati alle variabili all'interno di determinati domini. I risolutori di vincoli utilizzano tecniche di ricerca , backtracking e propagazione dei vincoli per trovare soluzioni e determinare soluzioni ottimali. Possono impiegare forme di programmazione lineare e non lineare . Sono spesso utilizzati per eseguire l' ottimizzazione all'interno di spazi problematici altamente combinatori . Ad esempio, possono essere utilizzati per calcolare la pianificazione ottimale, progettare circuiti integrati efficienti o massimizzare la produttività in un processo di produzione.

Dimostratori di teoremi

I dimostratori di teoremi utilizzano tecniche di ragionamento automatizzato per determinare dimostrazioni di teoremi matematici. Possono anche essere usati per verificare le prove esistenti. Oltre all'uso accademico, le applicazioni tipiche dei dimostratori di teoremi includono la verifica della correttezza di circuiti integrati, programmi software, progetti di ingegneria, ecc.

Programmi di logica

I programmi logici (LP) sono programmi software scritti utilizzando linguaggi di programmazione le cui primitive ed espressioni forniscono rappresentazioni dirette di costrutti tratti dalla logica matematica. Un esempio di linguaggio di programmazione logica generico è Prolog . I LP rappresentano l'applicazione diretta della programmazione logica per risolvere i problemi. La programmazione logica è caratterizzata da approcci altamente dichiarativi basati sulla logica formale e ha un'ampia applicazione in molte discipline.

Motori di regole

I motori delle regole rappresentano la logica condizionale come regole discrete. I set di regole possono essere gestiti e applicati separatamente ad altre funzionalità. Hanno un'ampia applicabilità in molti domini. Molti motori di regole implementano capacità di ragionamento. Un approccio comune consiste nell'implementare sistemi di produzione per supportare il concatenamento in avanti o all'indietro. Ogni regola ("produzione") lega una congiunzione di clausole predicato a un elenco di azioni eseguibili.

In fase di esecuzione, il motore delle regole confronta le produzioni con i fatti ed esegue ("attiva") l'elenco di azioni associato per ciascuna corrispondenza. Se tali azioni rimuovono o modificano dei fatti o affermano nuovi fatti, il motore ricalcola immediatamente l'insieme di corrispondenze. I motori di regole sono ampiamente utilizzati per modellare e applicare regole aziendali , per controllare il processo decisionale nei processi automatizzati e per applicare politiche aziendali e tecniche.

Classificatore deduttivo

I classificatori deduttivi sono sorti leggermente più tardi dei sistemi basati su regole ed erano un componente di un nuovo tipo di strumento di rappresentazione della conoscenza dell'intelligenza artificiale noto come linguaggi di frame . Un linguaggio per frame descrive il dominio del problema come un insieme di classi, sottoclassi e relazioni tra le classi. È simile al modello orientato agli oggetti . A differenza dei modelli orientati agli oggetti, tuttavia, i linguaggi frame hanno una semantica formale basata sulla logica del primo ordine.

Utilizzano questa semantica per fornire input al classificatore deduttivo. Il classificatore a sua volta può analizzare un dato modello (noto come ontologia ) e determinare se le varie relazioni descritte nel modello sono coerenti. Se l'ontologia non è coerente, il classificatore evidenzierà le dichiarazioni che sono incoerenti. Se l'ontologia è coerente, il classificatore può fare ulteriori ragionamenti e trarre ulteriori conclusioni sulle relazioni degli oggetti nell'ontologia.

Ad esempio, può determinare che un oggetto è effettivamente una sottoclasse o un'istanza di classi aggiuntive come quelle descritte dall'utente. I classificatori sono una tecnologia importante nell'analisi delle ontologie utilizzate per descrivere i modelli nel web semantico .

Sistemi di apprendimento automatico

I sistemi di machine learning evolvono nel tempo in base all'esperienza . Ciò può comportare il ragionamento su eventi osservati o dati di esempio forniti per scopi di formazione. Ad esempio, i sistemi di apprendimento automatico possono utilizzare il ragionamento induttivo per generare ipotesi per i fatti osservati. I sistemi di apprendimento cercano regole o funzioni generalizzate che producono risultati in linea con le osservazioni e quindi utilizzano queste generalizzazioni per controllare il comportamento futuro.

Sistemi di ragionamento basati sui casi

I sistemi di ragionamento basato sui casi (CBR) forniscono soluzioni ai problemi analizzando le somiglianze con altri problemi per i quali esistono già soluzioni note. Usano il ragionamento analogico per dedurre soluzioni basate su casi clinici. I sistemi CBR sono comunemente usati in scenari di assistenza clienti/ tecnici e call center e hanno applicazioni nella produzione industriale , agricoltura , medicina , legge e molti altri settori.

Sistemi di ragionamento procedurale

Un sistema di ragionamento procedurale (PRS) utilizza tecniche di ragionamento per selezionare i piani da una base di conoscenza procedurale . Ogni piano rappresenta una linea d'azione per il raggiungimento di un determinato obiettivo . Il PRS implementa un modello convinzione-desiderio-intenzione ragionando sui fatti (" credenze ") per selezionare piani appropriati (" intenzioni ") per determinati obiettivi ("desideri"). Le applicazioni tipiche di PRS includono sistemi di gestione, monitoraggio e rilevamento guasti .

Riferimenti