Uczenie maszynowe

Algorytmy uczenia symbolicznego

Podział algorytmów uczenia maszynowego

Algorytmy uczenia maszynowego możemy podzielić na 2 kategorie: algorytmy aproksymacji funkcji oraz uczenia symbolicznego. Te drugie polegają na uczeniu się pojęć za pomocą konstrukcji wyrażeń symbolicznych (np. drzewo decyzyjne) opisującego klasę obiektów. Najczęściej tego typu algorytmu działają w reprezentacjach równoważnych rachunkowi predykatów. Dużą zaletą takich algorytmów jest względna intuicyjność zarówno w
odniesieniu do reprezentacji, jak i otrzymanego
rezultatu.

Algorytmy te mają na celu zbudowanie jawnej reprezentacji wiedzy z konkretnych pojęć, za pomocą analizy ich przykładów i kontrprzykładów.

Tworzone reprezentacje mają postać m.in.:

  • reguł produkcji
  • wyrażeń logicznych
  • drzew decyzyjnych
  • sieci semantycznych

Cel:

Znaleźć algorytm decyzyjny, który będzie nam dobrze rozdzielać przypadki.

Strategia działania:

Bierzemy kilka sklasyfikowanych dobrze przypadków, dzielimy je na zbiory, a następnie na kilku (nie wszystkich) działamy wybranym algorytmem uczącym się. Następnie sprawdzamy, czy dobrze sklasyfikowałby te zbiory, na których nie działaliśmy.

Pojęcia wstępne

Oznaczmy przez C skończony zbiór kategorii pojęć pewnej klasy pojęć zdefiniowanej na dziedzinie.
Pojęcie oznaczamy przez c∈C. Jest ono funkcją c:X→C (to jakiś przykład). Dla pojęć pojedynczych przyjmuje się C={0,1}, dla pojęć wielokrotnych liczność zbioru C będzie większa od 2 (|C|>2).
H oznacza przestrzeń możliwych hipotez - zawiera ona wszystkie hipotezy, jakie może skonstruować uczeń. h∈H oznacza pojedynczą hipotezę: h: X→C. Należy zwrócić uwagę, że aby dokładnie nauczyć się każdego pojęcia musi być spełniony warunek C⊆H - wówczas jest pewność, że przestrzeń hipotez zawiera hipotezę identyczną z pojęciem docelowym. Nie zawsze jednak ten warunek jest spełniony w praktyce i wówczas nie można mieć pewności, że pojęcie docelowe zostanie nauczone dokładnie.

Algorytm specjalizacyjny

Algorytm ten ma na celu przekształcenie konkretnej hipotezy tak, aby zawęzić ilość przykładów reprezentowanych przez nią. Najbardziej specyficzna hipoteza to taka, która nie pokrywa żadnego z dostarczonych przykładów.

Założenia

Mamy dwa zbiory przykładów:

G - zbiór złożony z przykładów najbardziej ogólnego pojęcia w przestrzeni konceptualnej.

P - zbiór pozytywnych przykładów tej hipotezy (na początku pusty)

 

Oprócz tego na wejściu mamy zbiór przykładów już sklasyfikowanych na pozytywne i negatywne.

Algorytm specjalizujący

Jeśli przykład jest negatywny (nie należy do pojęcia, którego chcemy się nauczyć):

  1. Dla każdego przykładu g należącego do G: Jeżeli g obejmuje e, to zamień g na jego najbardziej ogólne specjalizacje, które nie obejmują e.
  2. Usuń z G wszystkie hipotezy bardziej szczegółowe od pewnych hipotez w G.
  3. Usuń z G wszystkie hipotezy, które nie obejmują przykładów z P.

Jeśli przykład jest pozytywny (należy do pojęcia, którego chcemy się nauczyć):

  1. Usuń z G wszystkie hipotezy, które nie obejmują e.
  2. Dodaj e do zbioru P.

Dla każdego przykładu e:

Przykład

Chcemy nauczyć nasz system pojęcia "Porsche"

G={<?, szybki, 3,?>, <duży, ?, 4, ?>}

P = {}

samochód(mały, szybki, 3, metal) - przykład sklasyfikowany jako pozytywny

  1. G={<?, szybki, 3,?>, <duży, ?, 4, ?>}
  2. P = {<mały, szybki, 3, metal>}

samochód(duży, szybki, 3, metal) - przykład sklasyfikowany jako negatywny

  1. G={<mały, szybki, 3, ?>, <?, szybki, 3, metal>, <?, szybki, 3, plastik>}
  2. Wszystkie hipotezy mają taki sam poziom szczegółowości, więc niczego nie usuwamy
  3. G = {<mały, szybki, 3, ?>, <?, szybki, 3, metal>, <?, szybki, 3, plastik>}

Algorytm generalizujący

Algorytm ten ma na celu przekształcenie hipotezy tak, aby poszerzyć  ilość przykładów przez nią pokrywanych. Najbardziej ogólna hipoteza to taka, która pokrywa wszystkie przykłady.

Założenia

Mamy dwa zbiory przykładów:

S - zbiór złożony z pierwszego pozytywnego przykładu

N - zbiór złożony z przykładów negatywnych poprzedzających pierwszy pozytywny przykład

Oprócz tego na wejściu mamy zbiór przykładów już sklasyfikowanych na pozytywne i negatywne.

Algorytm generalizujący

Jeśli przykład jest pozytywny (należy do pojęcia, którego chcemy się nauczyć):

  1. Dla każdego przykładu s należącego do S: Jeżeli s nie obejmuje e, to zamień s na jego najbardziej szczegółowe generalizacje, które obejmują e.
  2. Usuń z S wszystkie hipotezy bardziej ogólne od pewnych innych hipotez w S.
  3. Usuń z S wszystkie hipotezy, które obejmują negatywne przykłady należące do N.

Jeśli przykład jest negatywny (nie należy do pojęcia, którego chcemy się nauczyć):

  1. Usuń z S wszystkie hipotezy, które obejmują e.
  2. Dodaj e do zbioru N.

Dla każdego przykładu e:

Przykład

Znowu uczymy nasz system pojęcia "Porsche"

S={< Ø,Ø,Ø,...,Ø >}

samochód(duży, szybki, 3, plastik) - przykład negatywny

samochód(mały, wolny, 5, plastik) - przykład negatywny

N={<mały, wolny, 5, plastik>, <duży, szybki, 3, plastik>}

samochód(mały, szybki, 3, metal) - pierwszy przykład pozytywny

S={<mały, szybki, 3, metal>}

samochód(mały, szybki, 5, metal) - przykład pozytywny

  1. S={<mały, szybki, ?, metal>, <?, ?, ?, ?>, <?, szybki, ?, ? >, <mały, ?, ?, ?>, <?, ?, ?, metal>, <mały, szybki, ?, ?>, <mały, ?, ?, metal>, <?, szybki, ?, metal> }
  2. S={ <mały, szybki, ?, metal>, <?, ?, ?, ?>, <?, szybki, ?, ? >, <mały, ?, ?, ?>, <?, ?, ?, metal>, <mały, szybki, ?, ?>, <mały, ?, ?, metal>, <?, szybki, ?, metal> }
  3. Nie usuwamy nic, podane hipotezy nie obejmują żadnego z przykładów N

Algorytm eliminacji kandydatów

    Algorytm eliminacji kandydatów może nam posłużyć do znajdowania hipotez. Realizuje on proces uczenia się naszego systemu. Tworzy on przestrzeń wersji, która jednoznacznie mówi, czy pojęcie docelowe może być reprezentowane przez przestrzeń hipotez. Dzięki niej możemy wykryć, czy nie podaliśmy złego zbioru przykładów treningowych lub czy nasz zbiór przykładów jest niewystarczający do identyfikacji pojęcia docelowego.

Założenia

Mamy dwa zbiory przykładów:

G - zbiór złożony z najbardziej ogólnego pojęcia w przestrzeni konceptualnej

S - zbiór złożony z pierwszego pozytywnego przykładu

Na początku algorytmu inicjujemy te dwa zbiory następująco:

G = {< ?,?,?,...,? >} - najbardziej ogólna hipoteza

S = {< Ø,Ø,Ø,...,Ø >} - najbardziej specyficzna hipoteza

Znalezione zbiory S i G określają przestrzeń wersji (przestrzenią wersji nazywamy podzbiór wszystkich hipotez zgodnych (spójnych) ze zbiorem przykładów uczących) znalezioną przez algorytm: G stanowi granicę ogólną, a S granicę specyficzną. Każda hipoteza ze znalezionej przestrzeni wersji jest bardziej szczegółowa niż pewna hipoteza z G i jest bardziej ogólna niż pewna hipoteza z S.

Algorytm eliminacji kandydatów

Jeśli przykład jest pozytywny:

  1. Usuń z G wszystkie hipotezy, które nie obejmują e.
  2. Dla każdego s należącego do S: jeżeli s nie obejmuje e, to zastąp s przez jej najbardziej szczegółowe generalizacje, które obejmują e.
  3. Usuń z S wszystkie hipotezy bardziej ogólne od pewnych innych hipotez z S.
  4. Usuń z S hipotezy nie bardziej szczegółowe niż te z G.

Jeśli przykład jest negatywny:

  1. Usuń z S wszystkie hipotezy, które obejmują e.
  2. Dla każdego g należącego do G: jeżeli g obejmuje e, to zastąp g przez jej najbardziej ogólne specjalizacje, które nie obejmują e.
  3.  Usuń z G wszystkie hipotezy bardziej szczegółowe od pewnych hipotez z G.
  4. Usuń z G wszystkie hipotezy bardziej szczegółowe od tych z S.

Dla każdego przykładu e:

Przykład

L.p. Rozmiar Kolor Kształt Typ przykładu
1 duży czerwony koło pozytywny
2 mały czerwony kwadrat negatywny
3 mały czerwony koło pozytywny
4 duży niebieski koło negatywny

przedmiot(duży, czerwony, koło) - pozytywny

  1. Zbiór G się nie zmienia, bo wszystkie hipotezy obejmują nasz przykład, więc niczego nie usuwamy.
  2. Hipoteza <Ø,Ø,Ø> z S jest niezgodna z naszym pozytywnym przykładem,  musimy ją zmienić na jej minimalną specjalizację: S = {<duży, czerwony, koło>}.
  3. Nic z S nie usuwamy, bo nie ma żadnych hipotez bardziej ogólnych od jakiś innych.
  4. S= {<duży, czerwony, koło>}, G={<?,?,?>} - wszystkie hipotezy z S są bardziej szczegółowe, więc nic nie usuwamy.

przedmiot(mały, czerwony, kwadrat) - negatywny

  1. W zbiorze S nie istnieje hipoteza, która pokrywa ten przykład. Zbiór S nie zmienia się. S={<duży, czerwony, koło>}.
  2. W zbiorze G istnieje jedna hipoteza <?, ?, ?> i obejmuje ona nasz przykład. Tworzymy zbiór hipotez niezgodnych w G: { <duży, ?, ?>, <?, niebieski, ?>, <?, ?, koło>}.
  3. Wszystkie hipotezy z G są na tym samym poziomie szczegółowości, więc nie ma bardziej szczegółowych.
  4. Dla dwóch z tych hipotez istnieją bardziej szczegółowe hipotezy w S. Jedynie hipoteza <?, niebieski, ?> nie ma żadnej bardziej szczegółowej w S, zatem musi zostać usunięta. G = { <duży, ?, ?>, <?, niebieski, ?>, <?, ?, koło>}.

przedmiot(mały, czerwony, koło) - pozytywny

  1. W G naszego przykładu nie obejmuje hipoteza < duży, ?, ? > , więc ją usuwamy. G = { <duży, ?, ?>, <?, ?, koło>}.
  2. Wszystkie nasze hipotezy są niezgodne z naszym przykładem, więc każdą z nich usuwamy i dodajemy ich minimalne specjalizacje. S = {<?, czerwony, koło>}.
  3. W S nie ma bardziej hipotez bardziej ogólnych od innych, więc nie ma czego usuwać.
  4. Hipotezy z S nie są mniej szczegółowe od tych z G, więc niczego nie usuwamy.

przedmiot(duży, niebieski, koło) - negatywny

  1. Żadna z hipotez w S nie obejmuje naszego przykładu, więc niczego nie musimy usuwać.
  2. W G nasz przykład jest obejmowany przez hipotezę <?, ?, koło>, więc go usuwamy i na jego miejsce wstawiamy jak najbardziej ogólne jego specjalizacje, które nie obejmują danego przykładu: G = {<?, czerwony, koło>, <mały, ?, koło>}.
  3. W G nie ma żadnych bardziej szczegółowych ofert od innych, więc niczego nie usuwamy.
  4. W stosunku do S jedna z naszych hipotez (<mały, ?, koło>) nie ma bardziej szczegółowego odpowiednia, więc ją usuwamy.                  G = {<?, czerwony, koło>, <mały, ?, koło>}.

Podsumowanie

Zbiory S i G mają postać:
S = { < ?, czerwony, koło> }
G = { < ?, czerwony, koło> }
Są zbieżne do jednej hipotezy < ?, czerwony, koło >, która jest znalezionym rozwiązaniem.

Jeśli uzyskano pustą przestrzeń wersji, to pojęcie docelowe nie może być reprezentowane przez przestrzeń hipotez lub zbiór zawiera niepoprawne przykłady. Jeśli natomiast algorytm uzyska przestrzeń wersji zawierającą więcej niż jedną hipotezę, zbiór jest niewystarczający do identyfikacji pojęcia docelowego. Nawet jeśli proces uczenia się nie zbiegł do jednej hipotezy, uzyskana przestrzeń wersji, o ile nie jest pusta, jest użyteczna

 

 

Wady algorytmu:

  • nowy przykład (spoza przykładów trenujących) jest klasyfikowany tylko wtedy gdy jest on zgodny z wszystkimi hipotezami z przestrzeni wersji
  • istnieje obciążenie - zakładamy, że pojęcie będzie zawarte w naszej przestrzeni hipotez
  • mała odporność na zaszumione/niespójne dane
  • Nieefektywne obliczeniowo: duży wzrost rozmiarów zbiorów  i  dla dysjunkcyjnych reprezentacji hipotez (alternatyw kompleksów).

Uczenie maszynowe

By kko

Uczenie maszynowe

  • 567