In informatica, una regola di produzione (o semplicemente regola) è un formalismo per la rappresentazione della conoscenza e per la trasformazione di strutture simboliche. Originariamente introdotte dal matematico Emil Post per descrivere sistemi formali di manipolazione di stringhe, le regole di produzione sono successivamente divenute l'elemento centrale dei sistemi a regole e dei sistemi esperti nell'intelligenza artificiale, oltre che delle grammatiche formali descritte da Noam Chomsky.
In termini generali, una regola formalizza una relazione d'inferenza o una trasformazione condizionata nella forma:
SE ALLORA oppure anche
dove rappresenta la condizione (o antecedente) e rappresenta l'azione o la nuova informazione prodotta (o conseguente).
Formalizzazione logica e sintattica
Nell'ambito dell'ingegneria della conoscenza, l'antecedente è generalmente formato da una congiunzione () o disgiunzione () di condizioni o pattern da riscontrare nello stato corrente del sistema:
Quando lo stato attuale soddisfa le condizioni stabilite nell'antecedente, la regola diventa attivabile. L'esecuzione del conseguente determina la modifica dello stato, mediante l'asserzione di nuovi fatti, la cancellazione di dati esistenti o la produzione di azioni verso l'esterno.
In logica matematica una teoria (o base di conoscenza) può essere composta da assiomi in forma di fatti e regole ossia clausole definite (o di Horn) costruite a partire da formule atomiche (atomi). In informatica questo formalismo è alla base dei programmi della programmazione logica.
Nelle grammatiche formali, una regola di produzione esprime la sostituzione di simboli alfabetici nella forma , definendo la derivazione delle stringhe di un linguaggio formale.
Ciclo di esecuzione e motori inferenziali
Nei sistemi basati su regole, la gestione e l'applicazione del corpo di regole sono affidate a un algoritmo denominato motore inferenziale. L'esecuzione avviene tipicamente all'interno di un ciclo a tre fasi (Match-Resolve-Act):
Match (confronto): Il motore confronta i fatti presenti nella memoria di lavoro con gli antecedenti di tutte le regole per individuare quelle applicabili. Conflict Resolution (risoluzione dei conflitti): Se più regole risultano contemporaneamente attive, esse formano un insieme di conflitto (conflict set). Il motore applica euristiche (come la specificità, la salienza o una forma di priorità, anche al livello temporale) per selezionare un'unica regola da eseguire. Act (esecuzione): Viene applicato il conseguente della regola scelta, modificando lo stato della memoria.
Per ottimizzare la fase computazionalmente onerosa di match, si fa largo uso dell'algoritmo Rete sviluppato da Charles Forgy, che costruisce un grafo aciclico orientato per valutare in modo efficiente le relazioni tra regole e fatti dinamici.
Strategie di ragionamento
L'elaborazione delle regole di produzione può seguire due direzioni logiche fondamentali:
Concatenazione in avanti: approccio guidato dai dati (data-driven). Parte dalle informazioni disponibili nella memoria di lavoro e applica iterativamente le regole per derivare nuove conoscenze finché non si raggiunge un obiettivo o un punto fisso. Concatenazione all'indietro: approccio guidato dagli obiettivi (goal-driven). Parte da un'ipotesi o obiettivo e ricerca a ritroso le regole il cui conseguente contiene , traducendo le relative premesse in sotto-obiettivi da verificare.
Trattamento dell'incertezza
I sistemi a regole avanzati integrano meccanismi per gestire la conoscenza incerta, vaga o probabilistica. Tra questi, il modello dei fattori di certezza (certainty factors, CF) associa uno scalare sia alle premesse che alle regole stesse:
SE (con ) ALLORA (con )
Il fattore di certezza risultante per la conclusione è dato da:
Tale approccio è stato reso popolare da sistemi storici come MYCIN per la diagnosi medica in presenza di incertezza, oltre che dall'applicazione della logica fuzzy.
Note
Voci correlate Clausola di Horn Regola di inferenza Grammatica formale
Categoria:Intelligenza artificiale Categoria:Ingegneria della conoscenza Categoria:Logica matematica Categoria:Teoria dei linguaggi formali