# Rappresentazione della conoscenza

La rappresentazione della conoscenza è una branca dell'intelligenza artificiale che studia il modo in cui avviene il ragionamento umano, e si preoccupa di definire dei simbolismi o dei linguaggi che permettano di formalizzare la conoscenza al fine di renderla comprensibile alle macchine, per potervi fare dei ragionamenti automatici (inferendo le informazioni presenti) ed estrarre così nuova conoscenza.
Quindi un punto chiave della rappresentazione della conoscenza è la definizione di linguaggi che siano sufficientemente espressivi da permettere di descrivere il dominio di interesse, ma non troppo ricchi di espressività, in quanto richiederebbero troppe risorse e/o troppo tempo per applicarvi i meccanismi inferenziali.
In linea generale, i linguaggi di rappresentazione della conoscenza forniscono sia una serie di costrutti per definire la sintassi del dominio di interesse (le regole sulle quali costruire delle asserzioni accettabili), sia una serie di operatori (quantificatori, operatori modali, etc.) che permettano di dare un significato, un valore di verità alle asserzioni rispetto al modello di riferimento.
Attraverso il linguaggio scelto si andranno ad effettuare una serie di asserzioni sul mondo, che andranno insieme a costituire una base di conoscenza (KB, Knowledge Base). È inoltre importante che il linguaggio scelto per fare le asserzioni sia anche in grado di operare sulla KB per estrarre nuova conoscenza e per aggiungerne di nuova.
Esistono principalmente due metodologie per rappresentare la conoscenza:
* I linguaggi formali
* Gli alberi di decisione.

## Panoramica

La rappresentazione della conoscenza è un campo dell'intelligenza artificiale che si concentra sulla progettazione di rappresentazioni informatiche che catturano informazioni sul mondo che possono essere utilizzate per risolvere problemi complessi.
La giustificazione per la rappresentazione della conoscenza è che il codice procedurale convenzionale non è il miglior formalismo da utilizzare per risolvere problemi complessi. La rappresentazione della conoscenza rende il software complesso più facile da definire e mantenere rispetto al codice procedurale e può essere utilizzato in sistemi esperti.
Ad esempio, parlare con esperti in termini di regole aziendali piuttosto che di codice riduce il divario semantico tra utenti e sviluppatori e rende più pratico lo sviluppo di sistemi complessi.
La rappresentazione della conoscenza va di pari passo con il ragionamento automatizzato perché uno degli scopi principali della rappresentazione esplicita della conoscenza è essere in grado di ragionare su tale conoscenza, fare inferenze, asserire nuove conoscenze, ecc. Praticamente tutti i linguaggi di rappresentazione della conoscenza hanno un motore di ragionamento o inferenza come parte del sistema.
Un compromesso chiave nella progettazione di un formalismo di rappresentazione della conoscenza è quello tra espressività e praticità. Il formalismo di rappresentazione della conoscenza per eccellenza in termini di potenza espressiva e compattezza è la Logica del Primo Ordine(FOL). Non c'è formalismo più potente di quello usato dai matematici per definire proposizioni generali sul mondo. Tuttavia, FOL ha due svantaggi come formalismo di rappresentazione della conoscenza: facilità d'uso e praticità di implementazione. La logica del primo ordine può intimidire anche molti sviluppatori di software. I linguaggi che non hanno il potere formale completo di FOL possono ancora fornire quasi la stessa potenza espressiva con un'interfaccia utente che è più pratica da comprendere per lo sviluppatore medio. La questione della praticità dell'attuazione è che FOL in qualche modo è troppo espressivo. Con FOL è possibile creare istruzioni (es. Quantificazione su insiemi infiniti) che farebbero sì che un sistema non terminasse mai se tentasse di verificarli.
Pertanto, un sottoinsieme di FOL può essere sia più facile da usare che più pratico da implementare. Questa era una motivazione trainante alla base dei sistemi esperti basati su regole. Le regole IF-THEN forniscono un sottoinsieme di FOL ma molto utile e anche molto intuitivo. La storia della maggior parte dei primi formalismi di rappresentazione della conoscenza dell'IA; dai database alle reti semantiche ai dimostratori di teoremi e ai sistemi di produzione possono essere visti come varie decisioni di progettazione sull'opportunità di enfatizzare la potenza espressiva o la computabilità e l'efficienza.
In un articolo chiave del 1993 sull'argomento, Randall Davis del MIT ha delineato cinque ruoli distinti per analizzare un quadro di rappresentazione della conoscenza:
* Una rappresentazione della conoscenza (KR) è fondamentalmente un surrogato, un sostituto della cosa stessa, utilizzato per consentire a un'entità di determinare le conseguenze pensando piuttosto che agendo, cioè ragionando sul mondo piuttosto che agire in esso.
* È un insieme di impegni ontologici, cioè una risposta alla domanda: in che termini dovrei pensare al mondo?
* È una teoria frammentaria del ragionamento intelligente, espressa in termini di tre componenti: (i) la concezione fondamentale della rappresentazione del ragionamento intelligente; (ii) l'insieme delle deduzioni delle sanzioni di rappresentanza; e (iii) la serie di inferenze che raccomanda.
* È un mezzo per un calcolo pragmaticamente efficiente, cioè l'ambiente computazionale in cui si realizza il pensiero. Un contributo a questa efficienza pragmatica è fornito dalla guida fornita da una rappresentanza per organizzare le informazioni in modo da facilitare la formulazione delle inferenze raccomandate.
* È un mezzo di espressione umana, cioè una lingua in cui diciamo cose sul mondo.
La rappresentazione della conoscenza e il ragionamento sono una tecnologia abilitante chiave per il Web semantico. I linguaggi basati sul modello Frame con classificazione automatica forniscono un livello di semantica in cima a Internet esistente. Piuttosto che cercare tramite stringhe di testo come è tipico oggi, sarà possibile definire query logiche e trovare pagine che mappano a quelle query. Il componente di ragionamento automatizzato in questi sistemi è un motore noto come classificatore. I classificatori si concentrano sulle relazioni di sussunzione in una base di conoscenza piuttosto che sulle regole. Un classificatore può dedurre nuove classi e modificare dinamicamente l'ontologia man mano che nuove informazioni diventano disponibili. Questa capacità è ideale per lo spazio delle informazioni in continua evoluzione ed evoluzione di Internet.
Il Semantic Web integra concetti dalla rappresentazione della conoscenza e dal ragionamento con linguaggi di markup basati su XML. Il Resource Description Framework (RDF) fornisce le funzionalità di base per definire oggetti basati sulla conoscenza su Internet con funzionalità di base come le relazioni Is-A e le proprietà degli oggetti. Il Web Ontology Language (OWL) aggiunge semantica aggiuntiva e si integra con i ragionatori di classificazione automatica.

## Caratteristiche

Nel 1985, Ron Brachman ha classificato le questioni fondamentali per la rappresentazione della conoscenza come segue:
* Primitivi. Qual è il framework sottostante utilizzato per rappresentare la conoscenza? Le reti semantiche furono una delle prime primitive di rappresentazione della conoscenza. Inoltre, strutture dati e algoritmi per la ricerca rapida generale. In quest'area vi è una forte sovrapposizione con la ricerca sulle strutture dati e sugli algoritmi in informatica. Nei primi sistemi, il linguaggio di programmazione Lisp, che è stato modellato dopo il lambda calcolo, è stato spesso utilizzato come forma di rappresentazione della conoscenza funzionale. Frames and Rules erano il prossimo tipo di primitivo. I linguaggi dei frame avevano vari meccanismi per esprimere e imporre vincoli sui dati dei frame. Tutti i dati nei frame vengono memorizzati negli slot. Gli slot sono analoghi alle relazioni nella modellazione entità-relazione e alle proprietà degli oggetti nella modellazione orientata agli oggetti. Un'altra tecnica per le primitive consiste nel definire linguaggi modellati sulla logica del primo ordine(FOL). L'esempio più noto è Prolog, ma ci sono anche molti ambienti speciali per la dimostrazione di teoremi. Questi ambienti possono convalidare modelli logici e dedurre nuove teorie da modelli esistenti. Essenzialmente automatizzano il processo che un logico attraverserebbe nell'analisi di un modello. La tecnologia per la dimostrazione di teoremi aveva alcune applicazioni pratiche specifiche nei settori dell'ingegneria del software. Ad esempio, è possibile dimostrare che un programma software aderisce rigidamente a una specifica logica formale.
* Meta-rappresentazione. Questo è anche noto come il problema della riflessione in informatica. Si riferisce alla capacità di un formalismo di avere accesso alle informazioni sul proprio stato. Un esempio potrebbe essere il protocollo meta-oggetto in Smalltalk e CLOSche offre agli sviluppatori l'accesso in fase di esecuzione agli oggetti classe e consente loro di ridefinire dinamicamente la struttura della knowledge base anche in fase di esecuzione. Meta-rappresentazione significa che il linguaggio di rappresentazione della conoscenza è esso stesso espresso in quel linguaggio. Ad esempio, nella maggior parte degli ambienti basati su Frame, tutti i frame sarebbero istanze di una classe di frame. Quell'oggetto classe può essere ispezionato in fase di esecuzione, in modo che l'oggetto possa comprendere e persino modificare la sua struttura interna o la struttura di altre parti del modello. Negli ambienti basati su regole, le regole erano generalmente anche istanze di classi di regole. Parte del meta protocollo per le regole erano le meta regole che davano priorità all'attivazione delle regole.
* Incompletezza. La logica tradizionale richiede assiomi e vincoli aggiuntivi per affrontare il mondo reale rispetto al mondo della matematica. Inoltre, è spesso utile associare gradi di fiducia a un'affermazione. Vale a dire, non semplicemente dire "Socrate è umano" ma piuttosto "Socrate è umano con fiducia al 50%". Questa è stata una delle prime innovazioni dalla ricerca sui sistemi esperti che è migrata verso alcuni strumenti commerciali, la capacità di associare fattori di certezza a regole e conclusioni. La ricerca successiva in questo settore è nota come "logica fuzzy".
* Definizioni e universali contro fatti e valori predefiniti. Gli universali sono affermazioni generali sul mondo come "Tutti gli esseri umani sono mortali". I fatti sono esempi specifici di universali come "Socrate è umano e quindi mortale". In termini logici, le definizioni e gli universali riguardano la quantificazione universale mentre i fatti e le impostazioni predefinite riguardano le quantificazioni esistenziali. Tutte le forme di rappresentazione della conoscenza devono occuparsi di questo aspetto e la maggior parte lo fa con qualche variante della teoria degli insiemi, modellando gli universali come insiemi e sottoinsiemi e le definizioni come elementi di quegli insiemi.
* Ragionamento non monotono. Il ragionamento non monotono consente vari tipi di ragionamento ipotetico. Il sistema associa i fatti asseriti con le regole e i fatti usati per giustificarli e quando questi fatti cambiano aggiorna anche la conoscenza dipendente. Nei sistemi basati su regole questa capacità è nota come "sistema di mantenimento della verità".
* Adeguatezza espressiva. Lo standard che Brachman e la maggior parte dei ricercatori di intelligenza artificiale utilizzano per misurare l'adeguatezza espressiva è solitamente la logica del primo ordine (FOL). I limiti teorici significano che una piena implementazione di FOL non è pratica. I ricercatori dovrebbero essere chiari su quanto espressiva (quanto del pieno potere espressivo di FOL) intendono che sia la loro rappresentazione.
* Efficienza nel ragionamento. Questo si riferisce all'efficienza del tempo di esecuzione del sistema. La capacità della knowledge base di essere aggiornata e il ragionatore di sviluppare nuove inferenze in un periodo di tempo ragionevole. In un certo senso, questo è il rovescio della medaglia dell'adeguatezza espressiva. In generale, più una rappresentazione è potente, più ha un'adeguatezza espressiva, meno efficiente sarà il suo motore di ragionamento automatizzato. L'efficienza era spesso un problema, soprattutto per le prime applicazioni della tecnologia di rappresentazione della conoscenza. Di solito venivano implementati in ambienti interpretati come Lisp, che erano lenti rispetto alle piattaforme più tradizionali dell'epoca.

## Ingegneria ontologica

Nei primi anni dei sistemi basati sulla conoscenza le basi della conoscenza erano piuttosto piccole. Le basi di conoscenza che dovevano effettivamente risolvere problemi reali piuttosto che fare dimostrazioni di prova erano necessarie per concentrarsi su problemi ben definiti. Quindi, ad esempio, non solo la diagnosi medica come un intero argomento, ma la diagnosi medica di alcuni tipi di malattie.
Con l'aumento della tecnologia basata sulla conoscenza, è diventata evidente la necessità di basi di conoscenza più ampie e di basi di conoscenza modulari che potessero comunicare e integrarsi tra loro. Ciò ha dato origine alla disciplina dell'ingegneria ontologica, progettando e costruendo ampie basi di conoscenza che potrebbero essere utilizzate da più progetti. Uno dei principali progetti di ricerca in questo settore è stato il Cycprogetto. Cyc è stato un tentativo di costruire un'enorme base di conoscenza enciclopedica che contenesse non solo conoscenze specialistiche ma conoscenze di buon senso. Nella progettazione di un agente di intelligenza artificiale, ci si è presto resi conto che rappresentare la conoscenza del buon senso, la conoscenza che gli esseri umani semplicemente danno per scontata, era essenziale per creare un'IA che potesse interagire con gli esseri umani usando il linguaggio naturale. Cyc avrebbe dovuto affrontare questo problema. Il linguaggio che hanno definito era noto come CycL.
Dopo CycL, sono stati sviluppati numerosi linguaggi ontologici. La maggior parte sono linguaggi dichiarativi e sono linguaggi frame o si basano sulla logica del primo ordine. La modularità - la capacità di definire i confini attorno a domini specifici e spazi problematici - è essenziale per queste lingue perché, come affermato da Tom Gruber, "Ogni ontologia è un trattato, un accordo sociale tra persone con motivazioni comuni nella condivisione". Ci sono sempre molti punti di vista contrastanti e diversi che rendono impossibile qualsiasi ontologia generale. Un'ontologia di scopo generale dovrebbe essere applicabile in qualsiasi dominio e le diverse aree della conoscenza dovrebbero essere unificate.
C'è una lunga storia di lavoro nel tentativo di costruire ontologie per una varietà di domini di compiti, ad esempio, un'ontologia per liquidi, il modello di elementi concentrati ampiamente utilizzato nella rappresentazione di circuiti elettronici, così come le ontologie per il tempo, la fede e persino la programmazione stessa. Ognuno di questi offre un modo per vedere una parte del mondo.
Il modello a elementi concentrati, ad esempio, suggerisce di pensare ai circuiti in termini di componenti con connessioni tra loro, con segnali che fluiscono istantaneamente lungo le connessioni. Questa è una vista utile, ma non l'unica possibile. Un'ontologia diversa sorge se dobbiamo prestare attenzione all'elettrodinamica nel dispositivo: qui i segnali si propagano a velocità finita e un oggetto (come un resistore) che in precedenza era visto come un singolo componente con un comportamento di I/O potrebbe ora essere pensato come un mezzo esteso attraverso il quale scorre un'onda elettromagnetica.
Le ontologie possono ovviamente essere scritte in un'ampia varietà di linguaggi e notazioni (ad esempio, logica, LISP, ecc.); l'informazione essenziale non è la forma di quel linguaggio ma il contenuto, cioè l'insieme di concetti offerti come modo di pensare il mondo. In poche parole, la parte importante sono nozioni come connessioni e componenti, non la scelta tra scriverli come predicati o costrutti LISP.
L'impegno assunto selezionando l'una o l'altra ontologia può produrre una visione nettamente diversa del compito da svolgere. Considerare la differenza che sorge nella selezione della vista a elementi concentrati di un circuito piuttosto che la vista elettrodinamica dello stesso dispositivo. Come secondo esempio, la diagnosi medica vista in termini di regole (es. MYCIN) appare sostanzialmente diversa dallo stesso compito visto in termini di frame (es. INTERNIST). Laddove MYCIN vede il mondo medico come composto da associazioni empiriche che collegano sintomo a malattia, INTERNIST vede una serie di prototipi, in particolare malattie prototipiche, da confrontare con il caso in questione.