Programmazione logica induttiva

La programmazione logica induttiva si basa sul metodo induttivo e sulla logica del primo ordine. E' anche conosciuta come ILP (Inductive Logic Programming). Si tratta di una disciplina dell'apprendimento automatico.

Come funziona?

Data una conoscenza di base (background) e un insieme di esempi, il sistema ILP produce delle ipotesi e un criterio di classificazione dei dati.

Gli esempi consistono in due insiemi

  • Descrizioni. Questo insieme contiene alcune caratteristiche degli elementi.
  • Classificazione. In questo insieme sono inclusi alcuni esempi di classificazione positivi e negativi. E' il concetto oggettivo (conoscenza) che il sistema deve approfondire.

Pertanto il vincolo di consequenzialità è

Background ∧ Ipotesi ∧ Descrizioni |= Classificazioni

Dove le Ipotesi sono un'incognita da scoprire.

La macchina formula un'ipotesi di classificazione in base al proprio background e verifica se classifica correttamente gli esempi positivi e negativi.

    Un esempio pratico

    La macchina deve individuare un'ipotesi in grado di capire se una persona è il nonno di un'altra persona.

    Prendo in considerazione queste relazioni di parentela.

    le relazioni di parentela

    Nell'insieme delle Classificazioni fornisco alla macchina solo alcuni esempi positivi

    Nonno(A,D)
    Nonno(A,E)

    e alcuni esempi negativi

    ¬Nonno(A,B)
    ¬Nonno(A,C)

    Nell'insieme delle Descrizioni descrivo alcune caratteristiche degli elementi.

    Genitore(A,B)
    Genitore(A,C)
    Genitore(B,D)
    Genitore(B,E)
    Genitore(C,F)
    Genitore(C,G)

    Da questi vincoli di consequenzialità il programma di apprendimento formula delle ipotesi e verifica se soddisfano gli esempi positivi e negativi.

    Ipotesi 1

    La macchina formula un'ipotesi

    Genitore(x,y) ⇒ Nonno(x,y)

    Poi verifica il risultato rispetto alla conoscenza in suo possesso

    Genitore(A,B) ⇒ Nonno(A,B)
    Genitore(A,C) ⇒ Nonno(A,C)
    Genitore(B,D) ⇒ Nonno(B,D)
    Genitore(B,E) ⇒ Nonno(B,E)
    Genitore(C,F) ⇒ Nonno(C,F)
    Genitore(C,G) ⇒ Nonno(C,G)

    Questa ipotesi viola due esempi negativi, quindi è poco efficace.

    Ipotesi 2

    La macchina formula un'ipotesi

    Genitore(x,y) ∧ Genitore(y,z) ⇒ Nonno(x,z)

    In pratica se x è il genitore di y e y è il genitore di z, allora x è il nonno di z.

    Poi verifica il risultato rispetto alla conoscenza in suo possesso

    Genitore(A,B) ∧ Genitore(B,D) ⇒ Nonno(A,D)
    Genitore(A,B) ∧ Genitore(B,E) ⇒ Nonno(A,E)
    Genitore(A,C) ∧ Genitore(C,F) ⇒ Nonno(A,F)
    Genitore(A,C) ∧ Genitore(C,G) ⇒ Nonno(A,G)

    Questa ipotesi soddisfa i due esempi positivi e non viola nessun esempio negativo.

    Pertanto, l'ipotesi ha una buona probabilità d'essere vera.

    Nota. La macchina non sa nulla sulle relazioni Nonno(A,G) e Nonno(A,G) ma, visti i buoni risultati dell'ipotesi, può considerarle vere.

    E così via

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Libri di approfondimento

    Machine Learning (ML)