Uczenie maszynowe – co trzeba wiedzieć?

Obecnie uczenie maszynowe z powodzeniem stosuje się bardzo powszechnie. Chociaż nam zdaje się, że komputery coś wiedzą, nie jest to prawda – one nie wiedzą, one liczą. Ich działania w pełni opierają się tylko na liczbach. My zaś uczymy je, jak zdobywać wiedzę, wskazując na to, co mają obliczyć.

Co to jest uczenie maszynowe?

Wciąż zastanawiasz się, o co chodzi z tym całym uczeniem maszynowym? Otóż jest to system składający się z algorytmu (funkcji) służącego do przekształcania (klasyfikacji) danych wejściowych w odpowiednie etykiety/klasy (dane wyjściowe).
Jak działa ta klasyfikacja od wewnątrz? Gdy system uczenia maszynowego otrzymuje próbkę danych wejściowych, pobiera wektor cechy (czyli wektor liczbowy) i sprawdza, do których zdefiniowanych klas (etykiet) należy ten wektor.
Chciałbym poglądowo omówić to, jak wygląda lub jak może wyglądać proces opracowywania systemu uczenia maszynowego (ML), ze szczególnym uwzględnieniem uczenia nadzorowanego. Przede wszystkim chcę pokazać kilka pomysłów na to, jak można pobawić się uczeniem maszynowym.

Uczenie maszynowe – definicja

Zacznijmy od omówienia podstawowych definicji.
Grupa ucząca (treningowa) – grupa artefaktów (obrazów, próbek dźwiękowych, statystyk – zależnie od Twoich zamiarów wobec ML) zawierających przykłady prawdziwie pozytywne i prawdziwie negatywne. Zestaw ten zostanie wykorzystany do „wyszkolenia” systemu poprzez przekazanie wektora cechy (o tym później) dla każdego artefaktu oraz spodziewanego rezultatu. W ten sposób system uczy się wartości cech i odpowiadających im danych wyjściowych.
Grupa walidacyjna – grupa artefaktów zawierających prawdziwie pozytywne i prawdziwie negatywne przykłady. Grupa ta wykorzystywana jest do dopracowywania hiperparametrów szkolonego modelu. Nie jest potrzebna dla wszystkich metod.
Grupa testowa – grupa artefaktów zawierających prawdziwie pozytywne i prawdziwie negatywne przykłady. Ta grupa służy do weryfikacji jakości przeszkolenia systemu poprzez zlecanie zadań polegających na klasyfikacji obrazów i sprawdzanie, czy jego dane wyjściowe są prawidłowe.
Wektor cechy – wektor zawierający cechy artefaktu – liczby lub wartości określające każdy artefakt.
Deskryptor cechy (lub ekstraktor cechy) – metoda służąca do ekstrakcji cech z artefaktów. Odnosi się do metody, która opisze artefakt jako wektor cechy, przekładając zatem artefakty w wektory.
Algorytm klasyfikacji – algorytm określający zależności wektorów cech i etykiet (klas danych wyjściowych).

Jak działa uczenie maszynowe?

Na samym początku musimy zebrać odpowiednie próbki do grupy uczącej i testowej. Ważne jest, by próbki te były jak najbardziej zbliżone do artefaktów, które będą wykorzystywane w systemie produkcyjnym. Jeśli chcesz „nauczyć” swój system rozpoznawania mowy w połączeniach telefonicznych, musisz nagrać próbki z rozmów telefonicznych. Jeśli chcesz stworzyć system, który będzie rozpoznawał zachowania grup ludzi, musisz nagrać te zachowania w grupie (nie zaś u pojedynczych osób). Oczywiście zebrane próbki muszą zawierać przykłady tego, co chcemy wykrywać, a także przykłady bez takich rzeczy.
Po zebraniu próbek możemy przejść do ich przetwarzania. Tu zaczyna się „zabawa”. Na czym polega ta „zabawa”? Na testowaniu, odkrywaniu, eksperymentowaniu z różnymi kombinacjami deskryptorów i algorytmów, które mogą dać nam pożądane efekty. Trzeba znaleźć taki sposób, który umożliwi nam otrzymanie pożądanych rezultatów. Oczywiście możemy opierać się na badaniach opisujących różnorakie podejścia i rozwiązania, ale konieczne będzie dostosowanie ich do naszego przypadku.
Pierwszym krokiem będzie znalezienie, policzenie i zebranie różnych cech. Istnieje ogromna różnorodność możliwych cech, które mogą być używane w ML, w tym bardzo prostych (np. dla obrazów):

  • liczba czarnych i białych pikseli
  • współczynnik pikseli czarnych do białych
  • liczba rogów
  • długość krawędzi
  • maksymalna/minimalna/średnia szerokość/wysokość

Istnieją również bardziej skomplikowane deskryptory cech, takie jak HOG (histogram zorientowanych gradientów), LBP (lokalne wzorce binarne), GLCM (matryca współwystępowania poziomów szarości) i wiele, wiele innych. Wszystko zależy od tego, jak skomplikowany jest nasz problem. Oczywiście możemy też połączyć kilka cech w jednym wektorze. Jest to kwestia wyników i czasu potrzebnego na wykonanie kalkulacji.
Przed wyodrębnieniem cech z próbek można wykonać etap przetwarzania wstępnego, taki jak redukcja szumów (dźwięk) lub konwersja do skali szarości (obrazy). To Ty tutaj decydujesz, czy chcesz w taki sposób obrobić swoje próbki, czy nie.
Oprócz deskryptorów będzie też potrzebny algorytm klasyfikacji. Niektóre z nich są proste (np. K najbliższych sąsiadów), inne zaś bardzo złożone (jak sztuczna sieć neuronowa lub głębokie sieci konwolucyjne). Sprawdzaj, próbuj i wyciągaj własne wnioski, które z nich będą najlepsze. Oto kilka przykładów, z którymi można zacząć:

Warto też napomknąć o tym, że odpowiednio rozwinięty model nie powinien osiągać 100% prawidłowych detekcji na danych testowych. Zawsze powinny występować jakieś nieprawidłowe rozpoznania. Jeśli precyzyjność modelu wyniesie 100%, zbadałbym, czy obrana metodologia opracowania modelu była właściwa, ponieważ taki wynik świadczy o nadmiernym dopasowaniu.
Termin ten opisuje sytuacje, gdy model perfekcyjnie dopasowuje się do zestawu danych, na których został nauczony. Niestety ten sam model spisze się o wiele gorzej podczas pracy na danych, których nigdy nie klasyfikował.

Gotowi, do biegu, start!

Rozpoczęcie zabawy wcale nie jest takie trudne. Istnieje kilka frameworków obsługujących tworzenie systemu ML, które można pobrać i rozpocząć na nich pracę.
TensorFlow (https://www.tensorflow.org/) – jeden z najlepszych frameworków do uczenia maszynowego. Jest open sourcowy i obsługuje języki C++, Python i R. Działa w pakiecie z TensorBoard, narzędziem wizualizacyjnym służącym do rozwoju ML.
Caffe (http://caffe.berkeleyvision.org/) – popularny framework dla systemów wizualnych oparty na sieciach konwolucyjnych sieciach neuronowych. Ten framework zawiera interfejsy dla C, C++, Pythona i Matlab. Jego ogromną zaletą jest to, że użytkownicy mają dostęp do uprzednio przeszkolonych sieci (modele zoo), co znacznie ułatwia programowanie.
Deeplearning4j (https://deeplearning4j.org/) – platforma ML oparta na JVM. Ten framework obsługuje wiele algorytmów klasyfikacji opartych na sieciach neuronowych. Podobnie jak Caffe, Deeplearning4j udostępnia modele zoo, co stanowi znaczne ułatwienie na początku.

Podsumowanie

Uczenie maszynowe to potężny zestaw narzędzi, który może pomóc w podejmowaniu decyzji lub automatyzowaniu wielu procesów. Trzeba jednak zapamiętać, że jakość wyników ML zależeć będzie od jakości danych treningowych i odpowiednich algorytmów.


Źródła:
https://www.marutitech.com/top-8-deep-learning-frameworks/
https://www.kdnuggets.com/2017/10/top-10-machine-learning-algorithms-beginners.html
Drożdż M., Kryjak T., FPGA Implementation of Multi-scale Face Detection Using HOG Features and SVM Classifier
Grabska-Chrząstowska J., Kwiecień J., Drożdż M., Bubliński Z., Tadeusiewicz R., Szczepaniak J., Walczyk J., Tylek P., Comparison of Selected Classification Methods in Automated Oak Seed Sorting (czytaj)

Poznaj mageek of j‑labs i daj się zadziwić, jak może wyglądać praca z j‑People!

Skontaktuj się z nami