https://aie24.pl/
Pierwsze podejście do ILP opiera się na bardzo ogólnej zasadzie i stopniowej specjalizacji jej tak, aby pasowała do danych. Tak właśnie dzieje się w przypadku uczenia się drzew decyzyjnych, gdzie drzewo decyzyjne jest stopniowo rozwijane, aż stanie się spójne z obserwacjami. Aby wykonać ILP, używamy literałów pierwszego rzędu zamiast atrybutów, a hipotezą jest zbiór klauzul zamiast drzewa decyzyjnego. Ten rozdział opisuje FOIL (Quinlan, 1990), jeden z pierwszych programów ILP. Załóżmy, że próbujemy nauczyć się definicji predykatu Dziadek(x;y), używając tych samych danych rodzinnych, co poprzednio. Podobnie jak w przypadku uczenia się drzewa decyzyjnego, przykłady możemy podzielić na przykłady pozytywne i negatywne. Pozytywnymi przykładami są

a negatywne przykłady to

Zauważ, że każdy przykład jest parą obiektów, ponieważ Dziadek jest predykatem binarnym. W sumie w drzewie genealogicznym jest 12 pozytywnych przykładów i 388 negatywnych przykładów (wszystkie pozostałe pary osób). FOIL konstruuje zestaw klauzul, z których każda ma nagłówek dziadek(x;y). Klauzule muszą klasyfikować 12 pozytywnych przykładów jako przypadki relacji Dziadek(x;y), wykluczając 388 negatywnych przykładów. Klauzule są klauzulami Horn, z rozszerzeniem, że zanegowane literały są dozwolone w treści klauzuli i są interpretowane za pomocą negacji jako niepowodzenia, jak w Prologu. Klauzula początkowa ma pustą treść:

Ta klauzula klasyfikuje każdy przykład jako pozytywny, więc musi być wyspecjalizowany. Robimy to, dodając pojedynczo literały po lewej stronie. Oto trzy potencjalne dodatki:

(Zauważ, że zakładamy, że klauzula definiująca Rodzic jest już częścią wiedzy podstawowej.) Pierwsza z tych trzech klauzul błędnie klasyfikuje wszystkie 12 pozytywnych przykładów jako negatywne i dlatego może być zignorowana. Drugi i trzeci zgadzają się ze wszystkimi pozytywnymi przykładami, ale drugi jest niepoprawny w większej części negatywnych przykładów – dwa razy więcej, ponieważ pozwala na to zarówno matkom, jak i ojcom. Dlatego preferujemy trzecią klauzulę. Teraz musimy bardziej wyspecjalizować to zdanie, aby wykluczyć przypadki, w których x jest ojcem jakiegoś z, ale z nie jest rodzicem y. Dodanie pojedynczego literału Parent(z,y) daje

który poprawnie klasyfikuje wszystkie przykłady. FOIL znajdzie i wybierze ten dosłowny, rozwiązując w ten sposób zadanie uczenia się. Ogólnie rozwiązaniem jest zestaw klauzul Horn, z których każda implikuje predykat docelowy. Na przykład, gdybyśmy nie mieli predykatu Parent w naszym słowniku, to rozwiązaniem może być:

Zauważ, że każda z tych klauzul obejmuje niektóre pozytywne przykłady, że razem obejmują wszystkie pozytywne przykłady, a NOWA KLAUZULA jest zaprojektowana w taki sposób, że żadna klauzula

Można dodać trzy rodzaje literałów:
- Literały używające predykatów: literał może być zanegowany lub niezanegowany, można użyć dowolnego istniejącego predykatu (w tym predykatu celu), a wszystkie argumenty muszą być zmiennymi. Dowolna zmienna może być użyta dla dowolnego argumentu predykatu, z jednym ograniczeniem: każdy literał musi zawierać co najmniej jedną zmienną z wcześniejszego literału lub z nagłówka klauzuli. Literały takie jak Mother(z;u), Marrried(z;z), ¬Male(y) i Grandfather(v;x) są dozwolone, podczas gdy żonaty(u;v) nie. Zauważ, że użycie predykatu z nagłówka klauzuli pozwala FOILowi uczyć się definicji rekurencyjnych.
- Literały równości i nierówności: odnoszą się do zmiennych już występujących w zdaniu. Na przykład możemy dodać z ≠ x. Te literały mogą również zawierać stałe określone przez użytkownika. Do nauki arytmetyki możemy użyć 0 i 1, a do nauki funkcji list możemy użyć pustej listy [ ].
- Porównania arytmetyczne: w przypadku funkcji zmiennych ciągłych można dodać takie literały jak x > y i y ≤ z. Podobnie jak w przypadku uczenia się drzewa decyzyjnego, można wybrać stałą wartość progową, aby zmaksymalizować moc dyskryminacyjną testu.
Wynikowy współczynnik rozgałęzienia w tej przestrzeni poszukiwań jest bardzo duży (zobacz Ćwiczenie 20.6), ale FOIL może również użyć informacji o typie, aby go zmniejszyć. Na przykład, jeśli domena zawiera zarówno liczby, jak i osoby, ograniczenia typu uniemożliwiłyby generowanie przez NEW-LITERALS literałów takich jak Parent(x;n), gdzie x to osoba, a n to liczba. CHOOSE-LITERAL używa heurystyki nieco podobnej do uzyskiwania informacji (patrz strona 680), aby zdecydować, który literał dodać. Dokładne szczegóły nie są tutaj ważne i wypróbowano wiele różnych odmian. Ciekawą dodatkową cechą FOIL jest użycie brzytwy Ockhama do wyeliminowania niektórych hipotez. Jeśli zdanie staje się dłuższe (zgodnie z pewną metryką) niż całkowita długość pozytywnych przykładów, które wyjaśnia zdanie, to zdanie nie jest uważane za potencjalną hipotezę. Ta technika zapewnia sposób na uniknięcie zbyt skomplikowanych klauzul, które dopasowują szum do danych. FOIL i jego krewni zostali wykorzystani do poznania szerokiej gamy definicji. Jedna z najbardziej imponujących demonstracji obejmowała rozwiązanie długiej sekwencji ćwiczeń dotyczących funkcji przetwarzania list z podręcznika Bratko Prolog. W każdym przypadku program był w stanie nauczyć się poprawnej definicji funkcji z małego zestawu przykładów, wykorzystując wcześniej poznane funkcje jako wiedzę podstawową.