W mediach społecznościowych, w tym na LinkedIn, toczy się zażarta debata o tym, czy najlepsi inżynierowie uczenia maszynowego są tylko po matematyce, czy też ile matematyki potrzebuje data scientist. Ten post nie ma na celu rozstrzygnięcia tego sporu, ale bardziej to, jak przygotować się matematycznie do przygód w świecie sztucznej inteligencji.
Zacznę sentymentalnie, tzn. zawsze na każdym etapie mojej edukacji (szkoła podstawowa czy technikum i studia) moim ulubionym przedmiotem była matematyka. Dodatkowo ukończyłem Politechnikę Wrocławską na kierunku automatyka i robotyka, gdzie otrzymałem potężną dawkę matematyki. Dlatego nigdy nie miałem problemu z wejściem w świat programowania, uczenia maszynowego czy zaawansowanego przetwarzania danych. Jednak wspomniane wcześniej gorące dyskusje praktyków i teoretyków AI o tym, czy i ile matematyki jest wymagane wśród inżynierów AI sprawiły, że postanowiłem „odkurzyć” swoje matematyczne kompetencje. No, a że należę do starej szkoły czytelników książek, postanowiłem przeczytać coś na ten temat.
O tyle fajnie się złożyło (dziękujemy Helion.pl), że nie trzeba wypożyczać kilkunastu książek z różnych działów matematyki, a można sięgnąć po jedną pozycję, w której autorzy Marc Peter Deisenroth, A. Aldo Faisal, Cheng Soon Ong opisali matematyczne podstawy uczenia maszynowego. Książka „Matematyka w uczeniu maszynowym” (bo o niej mowa) była moją lekturą do poduszki (ale nie tylko) przez kilka jesiennych weekendów.
Chciałbym w kilku słowach podzielić się z Wami moją opinią na temat tej „gorącej” (od tych dyskusji w necie) publikacji książkowej oraz moją metodą pracy z nią. Tak pracy, ponieważ, jak już wspomniałem, chciałem „odkurzyć” i poprawić swoje podstawy matematyczne przy pracy z danymi i modelami AI/ML.
Recenzji czas zacząć „Matematyka w uczeniu maszynowym”
Przede wszystkim bardzo fajna struktura książki tzn. część I to podstawy matematyki przydatne w uczeniu maszynowym. Czyli moim zdaniem lektura obowiązkowa dla wszystkich osób, które nie są po wydziałach matematycznych, a myślą o data science lub inżynierii AI. Dokładnie takie kompedium wiedzy w moim przypadku było tym czego szukałem. Część II to już wyjaśnione matematycznie najpopularniejsze techniki uczenia maszynowego np. redukcja wymiarów, regresja czy klasyfikacja SVM tj. maszyna wektorów nośnych. Jest to więc rozdział dla praktyków stosujących poszczególne algorytmy ML np. korzystających z gotowych pakietów jak scikit-learn. No i chcących zobaczyć dokładnie jak działa lub zaimplementować samodzielnie dany algorytm. Na pewno rzecz niezbędna do efektywniejszej pracy przy doborze hiperparametrów czy przygotowaniu danych do uczenia maszynowego. Oczywiście część II wymaga już mocniejszego przygotowania matematycznego, więc nie polecam przeskakiwania do niej bez dokładnego zgłębienia części I.
Część I Podstawy matematyczne
Pierwszą rzeczą, którą polecam zrobić, to wydrukować sobie „Listę symboli” znajdującą się na pierwszych stronach książki. Jeśli masz wersję drukowaną, to zrób zdjęcie i wydrukuj ją (mam nadzieję, że nie namawiam Cię do złamania prawa). Sami autorzy mówią, że książka jest napisana w stylu naukowym i jest w niej sporo wzorów matematycznych. Oczywiście każdy powinien pamiętać notację skalarów, wektorów czy macierzy, ale z np. kwantyfikatorami może być różnie. W moim przypadku nie było źle ze względu na cykliczne przeglądanie arxiv.org, jednak dzięki ściągawce nie musiałem dla pewności wertować kartek do początku książki. Oczywiście po kilku pracowitych wieczorach nie było mi to już potrzebne.
Wracając jednak do stwierdzenia autorów we wstępie, że jest to książka w matematyczno-naukowym stylu. To prawda, ale w tym dobrym stylu, tzn. autorzy wyjaśniają pojęcie (teoria, notacje naukowe) i podają kilka praktycznych przykładów. Co ważne, przykłady są wyróżnione, że można nawet przeglądać tylko je i np. rozwiązywać sobie dla praktyki.
Dodatkowo polecam pracę z tą częścią książki w ten sposób:
przeanalizuj teoretyczny opis pojęcia matematycznego lub techniki. Następnie przeanalizuj przykłady. Spróbuj obliczyć dla siebie używając analogowego zestawu urządzeń, czyli ołówka i kartki papieru. Na koniec spróbuj zaimplementować to w czystym Pythonie lub przy użyciu pakietów NumPy i Pandas.
Tips & Tricks by Sebastian Kondracki
Jeśli chodzi o zawartość tej części, to mamy tu wszystko, co tygrysy AI lubią od algebry liniowej, geometrii analitycznej, rozkładów macierzy, rachunku wektorowego, rachunku prawdopodobieństwa, a kończąc na metodach optymalizacyjnych. Super przydatne (ukłon dla autorów) jest rozpoczęcie każdego rozdziału w tej sekcji od mapy myśli pojęć w danym obszarze tematycznym wraz ze wskazaniem technik AI, w których dane pojęcie matematyczne jest wykorzystywane. Duży plus dla autorów i powiem szczerze, że kopiuję ten pomysł do swoich przyszłych publikacji. Ostatnią rzeczą, choć trochę trącącą testem, jest to, że każdy rozdział kończy się pokaźnym zestawem ćwiczeń do samodzielnego utrwalania wiedzy.
Część II. Centralne problemy uczenia maszynowego
W tej części już potrzebujemy spokoju i skupienia oraz dobrze przyswojonego materiał z części I. Naprawdę nad niektórymi rozdziałami się mocno namęczyłem dopóki nie dokonałem przełomowego odkrycia.
Otóż wstępnie zajrzałem do książki i zauważyłem brak kodów źródłowych. Szczególnie brakowało mi ich w części II. Stąd przy przerabianiu części I, oprócz papieru i ołówka, korzystałem z Google Colaboratory, gdzie zaimplementowałem dla siebie niektóre przykłady i ćwiczenia.
Dopiero podczas drugiej uważnej lektury zauważyłem w książce adres strony z oficjalnymi tutorialami w postaci notatników Jupytera do niemal każdego rozdziału w części II. Oprócz tego, który interesował mnie najbardziej, czyli klasyfikatora SVM (według autorów – work in progress).
Nigdy nie pomijaj wstępu i czytaj każdy nawet niepozorny rozdział typu „Ćwiczenia i opinie”. Bo tam mogą kryć się prawdziwe skarby.
Tips & Tricks by Sebastian Kondracki
Podsumowanie „Matematyka w uczeniu maszynowym”
Recenzowaną książkę czyta się naprawdę przyjemnie. Teoria jest przystępnie opisana, a duża ilość przykładów robi swoje. Mimo naukowego i matematycznego stylu, zwłaszcza przykłady są naprawdę „user friendly”. Gdy dodamy do tego oficjalne notatniki Jupytera, jest to pozycja dla niemal każdego. Czego dla mnie zabrakło? Odpowiedzi do ćwiczeń na końcu każdego rozdziału w części I, wystarczy jednak trochę poszukać w Internecie i można je znaleźć na profilu pewnego Self-Taught Hackera na Githubie 😉
Obserwuj mnie