Lo scopo di questo tipo di apprendimento e' di produrre un'ipotesi h
consistente con una conoscenza di fondo B, che fornisca una spiegazione
sufficiente agli esempi ei=<xi,f(xi)>
contenuti nell'insieme E.
In particolare, l'ipotesi h deve poter essere deducibile dalla
base di conoscenza unita con gli esempi dati.
Diversamente dal caso dell'apprendimento induttivo, descritto successivamente dove viene richiesta la sola consistenza di h rispetto alla conoscenza di fondo B', oltre alla necessarieta' nella spiegazione degli esempi(per ogni ei=<xi,f(xi)> in E) h, xi |- f(xi) (sufficienza)B, E |- h (deducibilita')
Nell'apprendimento deduttivo, le ipotesi di spiegazioni spesso vengono vincolate ad essere espresse utilizzando un numero ristretto di predicati, rispetto alla conoscenza di fondo B. Questi predicati vengono definiti "operazionali", in accordo con l'utilizzo per problemi di pianificazione, in cui la spiegazione h viene interpretata in termini di operazioni da svolgere.B', xi not |- f(xi) B', h, xi |- f(xi) (necessarieta')B' not |- not h (consistenza)
Spesso i metodi EBL sfuttano la possibilita' del linguaggio Prolog di
definire "meta-interpreti", in grado di semplificare il procedimento
deduzione automatica.
Un esempio di "meta-interprete" Prolog puo' essere il seguente (da [Sterling,Shapiro-86])
% solve(+Goal )dove con "ancestor-cut" viene indicata la possibilita' di applicare il "cut" ad un nodo antenato rispetto alla clausosa considerata.solve( true ).
solve( (A,B) ) :- solve( A ),solve( B ).
solve( ! ) :- !(reduce( A )). /* ancestor cut */
solve( not A ) :- not solve( A ).
solve(setof( X, Goal, Xs )) :- setof( X, solve(Goal), Xs ).
solve( A ) :- system( A ), A.
solve( A ) :- reduce( A ).reduce( A ) :- clause( A,B ), solve( B ).
Un esempio semplificato di "meta-interprete" in grado di spiegare i
fatti utilizzati dal procedimento di dimostrazione:
% solve1(+Goal, -Expl )L'estensione del "meta-interprete" per il trattamento del concetto di operazionalita' richiede l'aggiunta alle clausole di un parametro di output, che riporti, in caso di successo, l'ipotesi trovata. Inoltre occorre introdurre un trattamento diversificato per i predicati operazionali, arrestando l'analisi del processo di deduzione.solve1( A, A ) :- clause( A, true ), !.
solve1( (A,B), (EA,EB) ) :- solve1( A,EA ),solve1( B, EB ).
solve1( A, E ) :- clause( A,B ), solve1( B, E ).
Il procedimento indicato, viene chiamato EBG (explanation based generalization)
:
% ebg(+Goal, -Expl )operational( pred_1(_, ... ,_) ).ebg( A, A ) :- operational(A), !, not not call( A).ebg( A, A ) :- clause( A, true ), !.
ebg( (A,B), (HA,HB) ) :- ebg( A,HA ),ebg( B, HB ), !.
ebg( A, H ) :- clause( A,B ), ebg( B, H ), !.
Un modo alternativo di considerare l'EBL, interpreta questo tipo di apprendimento come una forma di "compilazione della conoscenza", vale a dire una riformulazione di quanto espresso nella conoscenza di fondo, ai fini di renderne piu' efficiente l'utilizzo (operazionale) in problemi pratici.
Sia, un esempio di E, e h
essere venire dedotta
deduzione (sound) MP, risoluzione
meta-dimostrazione operazionalita' complilazione della conoscenza