diff --git a/Podstawy teoretyczne.tex b/Podstawy teoretyczne.tex new file mode 100644 index 0000000..9d5af15 --- /dev/null +++ b/Podstawy teoretyczne.tex @@ -0,0 +1,71 @@ +\section{Podstawy teoretyczne} +\subsection{Uczenie maszynowe i jego rodzaje} +\subsubsection{O uczeniu maszynowym} +Jedną z definicji, dobrze oddającą charakter uczenia maszynowego możemy znaleźć w pracy "An overview of Machine Learning and its Applications": "Machine learning, by its definition, is a field of computer science that evolved from studying pattern recognition and computational learning theory in artificial intelligence. It is the learning and building of algorithms that can learn from and make predictions on data sets."\cite{Overview} + +Uczenie maszynowe (ang. machine learning) to jednym z najważniejszych współcześnie działów informatyki. Wykorzystuje ono dostarczane dane empiryczne do tworzenia modeli predykcyjnych. Modele uczenia maszynowego stają się integralną częścią otaczającego nas świata, są wykorzystywane w coraz szerszej gamie aplikacji. Wraz ze wzrostem użytku uczenia maszynowego, wzrasta potrzeba tworzenia coraz lepiej działających i szybciej uczących się modeli. + +\subsubsection{Podział na uczenie nadzorowane, nienadzorowane i ze wzmacnianiem} +Algorytmy uczenia maszynowego możemy wyróżnić według różnych kryteriów. Jednym ze sposobów jest dzielenie biorąc pod uwagę rodzaj wykorzystywanych danych i informacji, jakie są w nich zawarte. Biorąc pod uwagę to kryterium możemy wyszczególnić trzy typy: + +\subsubsection{Uczenie nadzorowane} +W uczeniu nadzorowanym dane treningowe składają się z par - wejściowego obiektu uczącego (wektora X) i pożądanej odpowiedzi (etykiety) Y. Celem nauki jest znalezienie takiej reguły, która odpowiednio mapuje wejścia do wyjść. + + +Y = f(X) + + +Na podstawie takiej funkcji mapującej, kiedy otrzymamy nowe dane jesteśmy w stanie przewidzieć ich etykietę. + +Typowymi problemami dla uczenia nadzorowanego są: +\begin{itemize} +\item regresja - przewidywana odpowiedź (etykieta) przedstawiana jest za pomocą liczby rzeczywistej. Przykładowym zadaniem regresji może być np. przewidywanie ceny akcji na giełdzie (za wektor cech przyjmując ceny pozostałych akcji), przewidywana odpowiedź +\item klasyfikacja - przewidywana jest klasa danego obiektu w postaci wartości dyskretnej. Typowym zadaniem klasyfikacji jest wykrywanie spamu. +\end{itemize} +Przykładami algorytmów reprezentujących uczenie nadzorowane są: +\begin{itemize} +\item regresja logistyczna, +\item drzewa decyzyjne, +\item regresja liniowa, +\item maszyna wektorów nośnych. +\end{itemize} + + + +\subsubsection{Uczenie nienadzorowane} +W uczeniu nienadzorowanym dostarczone dane są nieetykietowane, a zadaniem algorytmów jest wyszukiwanie wzorców i struktur wśród danych. Model próbuje się wyuczyć bez żadnej metody nadzorującej. Przykładowymi zadaniami takiego modelu mogą być analiza skupień czy analiza składowych głównych. + +\subsubsection{Uczenie ze wzmacnianiem} +W uczeniu ze wzmacnianiem (w odróżnieniu od uczenia nadzorowanego i nienadzorowanego) modelowi nie przygotowuje się danych. Zamiast tego, przygotowywane jest (potecjalnie złożone) środowisko, z którego model automatycznie pobiera dane. Takie podejście oparte jest na metodzie prób i błędów. Zadaniem programisty tworzącego model, jest utworzenie systemu nagród i kar, na podstawie których model będzie podejmował decyzje (jego celem jest zmaksymalizowanie nagród). Poza tym człowiek nie daje żadnych wskazówek ani sugestii jak wykonać zadanie. To zadaniem modelu jest wymyślenie, jak wykonywać zadanie, aby otrzymywać jak największe nagrody; zaczynając od całkowicie losowych prób po bardzo złożone rozwiązania. + +\subsubsection{Podział na uczenie wsadowe i strumieniowe} +Innym sposobem klasyfikacji algorytmów uczenia maszynowego jest podział na uczenie wsadowe i strumieniowe. + +Podczas trenowania wsadowe model uczony jest na wszystkich dostępnych w danej chwili danych (ang. batch learning). Zwykle trenowanie modelu w taki sposób, zajmuje dużo czasu i pochłania olbrzymie ilości zasobów - z tego powodu takie modele są zwykle trenowane w trybie offline. W przypadku gdybyśmy chcieli przystosować model do nowych danych (np. przystosować do rozpoznawania nowego typu spamu), musimy wyczuć nowy model, a następnie umieścić go w systemie w miejsce starego. + +W dużym skrócie możemy więc powiedziec, że przy uczeniu wsadowym, żeby douczyć model, należy go trenować w całości od nowa. + +Przeciwnym podejściem do uczenia wsadowego jest uczenie strumieniowe (zwane także inkrementalnym). Algorytmy strumieniowe pozwalają na douczanie już wytrenowanego modelu, stąd znacznie częściej wykorzystywane są w one podczas uczenia w trybie online. + +W algorytmach strumieniowych model uczony jest na każdej próbce po kolei, a wagi poszególnych cech uaktualniane są na każdym kroku. Pośrednim rozwiązaniem pomiędzy oboma trybami jest uczenie na mniejszych grupkach danych (ang. mini batches), jednak z powodu możliwości douczania takich modeli, rozwiązanie to może być zaliczane do trybu strumieniowego. + +Uczenie strumieniowe doskonale nadaje sie do systemów, w których dane dostarczane są w sposób ciągły, a ten musi adaptować się do zmieniającej się sytuacji. Dodatkową zaletą jest brak potrzeby przetrzymywania danych, z których model już się nauczył. Algorytmy takie uczą się zwykle szybciej - aktualizacja modelu następuje po każdej próbce. + +Warto jednak zwrócić uwagę, że niektóre algorytmy uczenia maszynowego można zakwalifikować do jednego z dwóch trybów zależnie od użytej funkcji straty. Przykładowo regresja logistyczna działa w trybie strumieniowym, gdy użyty jest stochastyczny spadek gradientu, natomiast w trybie wsadowym używamy spadku gradientu (optymalizacji dla wszystkich próbek). Podobna sytuacja występuje w przypadku Drzew Hoeffdinga, będących inkrementalną odmianą Drzew Decyzyjnych. + + + + +\subsection{Wsadowe algorytmy uczenia maszynowego} +\subsubsection{Regresja logistyczna} +Regresja logistyczna jest jedną z metod statystycznych, skupiającą się na analizie niezależnych zmiennych. Za pomocą funkcji sigmoidalnej (logistycznej), model oblicza prawdopodobieństwo, że próbka należy do jednej z klas. Trening modelu, polega na wyznaczeniu sigmoidy, która najlepiej odzwierciedlałaby dane. Regresja logistyczna zwykle jest głównie używana analizy zmiennych, które determinują wynik znajdujący się na skali dychotomicznej, ale może być także używana do rozwiązywania problemów wieloklasowych. + +% Z założenia funkcja logistyczna może być trenowana zarówno w trybie wsadowym i strumieniowym. + +\subsubsection{Drzewa decyzyjne} +% Podobnie do modelu regresji logistycznej, drzewa decyzyjne wykorzystywane są zarówno w trybie wsadowym jak i strumieniowym. Ze wzg + + + + + diff --git a/Wstep.tex b/Wstep.tex new file mode 100644 index 0000000..cd63b33 --- /dev/null +++ b/Wstep.tex @@ -0,0 +1,21 @@ +\section{Problematyka} +Podczas tworzenia systemów uczenia maszynowego, kluczowym jest dobranie odpowiednich algorytmów nauki takich, które najlepiej nadają się do konkretnych zadań, a także nie spowodują przeciążania zasobów. Z tego powodu, porównanie skuteczności algorytmów jest częstym i szeroko opisywanym tematem w pracach i tekstach badawczych. + +W tradycyjnych systemach uczenia maszynowego najczęściej trzeba dokonać wyboru, w jaki sposób model będzie trenowany. Wybór pomiędzy trybem wsadowym (batch) a strumieniowym (streaming) może być kluczowy dla optymalnego działania modelu, a tym samym osiągania najlepszych wyników. O ile algorytmy działające w tym samym trybie są często porównywane między sobą, brak jest wystarczających i prawidłowych badań porównujących między sobą algorytmy wsadowe i strumieniowe. + +Algorytmy strumieniowe często oceniane są jako skuteczniejsze, gdy w danych występuje duży concept drift. Nie wymagają one trenowania modelu od nowa, czym oszczędzają czas i zasoby. Problemem takich porównań jest trudność wybrania odpowiedniego sprzętu do testów. Zbyt silne i pojemne zasoby będą faworyzowały algorytmy wsadowe (wytrenowanie modelu od nowa potrwa bardzo krótko), natomiast w przeciwnym wypadku to algorytmy strumieniowe otrzymają nieuczciwą przewagę (wyuczenie wsadowego modelu będzie trwało zbyt długo). Z tego powodu, testy takie można przeprowadzać tylko dla konkretnych sytuacji. + +W tej pracy skupiono się na porównaniu strumieniowych i wsadowych algorytmów uczenia maszynowego, niezależnie od concept driftu (brak porównania potrzeby retrenowania modelów wsadowych z ciągłym działaniem strumieniowych). Algorytmy zostały poddane testom na różnych typach danych (syntetycznych, tradycyjnych i NLP). Następnie za pomocą ustalonych metryk została porównanana ich szybkość i skuteczność nauki. + +\section{Cel i zakres pracy} + +Celem niniejszej pracy jest porównanie strumieniowych i wsadowych algorytmów uczenia maszynowego. Porównane zostało parę najczęściej używanych klasyfikatorów. Dla zwalidowania wyników - użyte zostały różne rodzaje danych - zarówno rzeczywiste jak i syntetyczne. + +Rozdział drugi zawiera podstawy teoretyczne niezbędne do zrozumienia porównywanych algorytmów. Zostały w nim opisane różnice pomiędzy różnymi typami algorytmów, a także przedstawione algorytmy użyte później w eksperymentach. + +Rodział trzeci dotyczy dokonanych eksperymentów i porównań przez inne osoby i grupy badawcze. Zostały tutaj przedstawione najistotniejsze prace, a także pokazane zostały błędy w rozumowaniu podczas przeprowadzania eksperymentów. + +Rozdział czwarty zawiera opis przeprowadzanego eksperymentu w ramach tej pracy. Przedstawia on zastosowane technologie, implementację systemu porównującego oraz przebieg eksperymentów. Na końcu dokonano przedstawienia wyników w formie wykresów oraz przedstawiono wnioski z nich płynące. + +Rozdział piąty jest podsumowaniem, pozwalającym na przedstawienie kluczowych rezultatów płynących z porównania algorytmów. + diff --git a/autozoil-via-docker.sh b/autozoil-via-docker.sh old mode 100755 new mode 100644 diff --git a/bibliography.bib b/bibliography.bib index eacc8bf..fec0fc4 100644 --- a/bibliography.bib +++ b/bibliography.bib @@ -26,4 +26,22 @@ pages = "13-20" } +@article{Overview, +author = {Simon, Annina and Deo, Mahima and Selvam, Venkatesan and Babu, Ramesh}, +year = {2016}, +month = {01}, +pages = {22-24}, +title = {An Overview of Machine Learning and its Applications}, +volume = {Volume}, +journal = {International Journal of Electrical Sciences & Engineering} +} +@inproceedings{inproceedings, +author = {Read, Jesse and Bifet, Albert and Pfahringer, Bernhard and Holmes, Geoff}, +year = {2012}, +month = {10}, +pages = {313-323}, +title = {Batch-Incremental versus Instance-Incremental Learning in Dynamic and Evolving Data}, +isbn = {978-3-642-34155-7}, +doi = {10.1007/978-3-642-34156-4_29} +} diff --git a/build.sh b/build.sh old mode 100755 new mode 100644 diff --git a/extract-score-files.pl b/extract-score-files.pl old mode 100755 new mode 100644 diff --git a/helpers/flatten-structure.pl b/helpers/flatten-structure.pl old mode 100755 new mode 100644 diff --git a/helpers/generate-pdf-from-arxiv-package.sh b/helpers/generate-pdf-from-arxiv-package.sh old mode 100755 new mode 100644 diff --git a/helpers/get-sentences.sh b/helpers/get-sentences.sh old mode 100755 new mode 100644 diff --git a/helpers/pdf-to-plain-text.sh b/helpers/pdf-to-plain-text.sh old mode 100755 new mode 100644 diff --git a/helpers/prepare-arxiv-package.sh b/helpers/prepare-arxiv-package.sh old mode 100755 new mode 100644 diff --git a/helpers/stats.sh b/helpers/stats.sh old mode 100755 new mode 100644 diff --git a/helpers/strip-references.pl b/helpers/strip-references.pl old mode 100755 new mode 100644 diff --git a/helpers/synchro.sh b/helpers/synchro.sh old mode 100755 new mode 100644 diff --git a/install-hooks.sh b/install-hooks.sh old mode 100755 new mode 100644 diff --git a/msc-michal-maciaszek.tex b/msc-michal-maciaszek.tex index f592847..f88c0ed 100644 --- a/msc-michal-maciaszek.tex +++ b/msc-michal-maciaszek.tex @@ -41,7 +41,9 @@ \input{abstract} \end{abstract} -\input{main} +\input{Wstep} + +\input{Podstawy teoretyczne} \bibliographystyle{unsrt} \bibliography{bibliography} diff --git a/run-gitlab-runner.sh b/run-gitlab-runner.sh old mode 100755 new mode 100644