6 narzędzi do Machine Learning w Pythonie
Python to jeden z najczęściej używanych języków programowania przez mistrzów danych. W ostatnim raporcie firmy Anaconda "State of Data Science in 2021", aż 63% ankietowanych specjalistów Data Science stwierdziło, że zawsze lub bardzo często używa Pythona.
Popularność tego języka w społeczności zajmującej się Data Science wynika po części z dobrze obsługiwanych narzędzi typu open-source do uczenia maszynowego i głębokiego (Deep Learning).
Obecnie nie istnieje jedno uniwersalne narzędzie do obsługi sztucznej inteligencji (AI) lub jej podgrup obejmujących uczenie maszynowe czy głębokie. W rezultacie w open-source’owym ekosystemie Pythona istnieje kilka podstawowych bibliotek, z których każda obsługuje określony zestaw przypadków użycia lub problemów w tym zakresie.
Bardzo często samo zrozumienie, jakich narzędzi używać i kiedy ich używać, może okazać się kłopotliwe. W tym artykule przedstawię krótkie wprowadzenie do sześciu najczęściej używanych pakietów dostępnych dla uczenia maszynowego. Omówię podstawowe cele każdej z bibliotek oraz kiedy należy z nich korzystać.
1. Scikit-learn
Scikit-learn jest jednym z najpowszechniej używanych pakietów Pythona do implementacji algorytmów uczenia maszynowego. Udostępnia on czyste, jednolite API, które umożliwia interakcję z szeroką gamą modeli w sposób znormalizowany.
Znacząco upraszcza rozwój modeli uczenia maszynowego, a dodatkowo dostarcza wielu narzędzi do wstępnego przetwarzania danych, wyboru modelu, dostrajania i ewaluacji, a wszystko to za pomocą uniwersalnego interfejsu poleceń transform, fit i predict.
Interfejs ten sprawia, że Scikit-learn jest bardzo łatwy w użyciu dla początkujących, a także ułatwia odtwarzanie kodu w Data Science. Scikit-learn jest szeroko wykorzystywany w branży i obecnie stanowi najlepszą bibliotekę do uczenia maszynowego z danymi tabelarycznymi.
2. Pycaret
Pycaret jest biblioteką uczenia maszynowego typu low-code, której celem jest udostępnienie uczenia maszynowego szerszemu gronu użytkowników. Podobnie jak Sckit-learn, zapewnia ona spójny i łatwy w użyciu interfejs do interakcji z algorytmami uczenia maszynowego.
Dodatkowo jednak Pycaret upraszcza ten proces, włączając w to aspekty AutoML, takie jak automatyczne wstępne przetwarzanie danych i wybór modelu.
Jest również kompletnym rozwiązaniem typu end-to-end zawierającym narzędzia do deploymentu uczenia maszynowego oraz możliwości MLOps, poprzez integrację z dostawcami usług w chmurze, takimi jak AWS oraz pakietami MLOps, takimi jak mlflow.
3. PyTorch
Podczas gdy Scikit-learn jest świetną biblioteką do rozwiązywania problemów uczenia maszynowego opartych na danych tabelarycznych, nie nadaje się ona tak dobrze do obsługi ogromnej ilości danych wymaganych w przypadku języka naturalnego lub przypadków użycia opartych na systemach wizyjnych. Do takich aplikacji niezbędne jest uczenie maszynowe.
PyTorch zapewnia funkcjonalność, która w dużej mierze koncentruje się na budowaniu i szkoleniu sieci neuronowych — kręgosłupa Deep Learningu. PyTorch oferuje skalowalne, rozproszone szkolenie modeli na pojedynczych lub wielu procesorach i procesorach graficznych. Posiada również własny ekosystem, który zapewnia integrację ze Scikit-learn (skorch), serwowanie modeli (TorchServe) i szeregowanie (AdaptDL).
Jest on stosunkowo nowszy niż TensorFlow, pierwsze wydanie miało miejsce we wrześniu 2016 r., ale szybko został przyjęty przez szerokie grono odbiorców w branży, zarówno Tesla Autopilot, jak i Pyro Ubera, które zostały zbudowane na PyTorch.
4. TensorFlow
TensorFlow został pierwotnie opracowany przez zespół Google Brain i po raz pierwszy udostępniony jako open-source w 2015 r. I to, jak na bibliotekę uczenia głębokiego, czyni ją stosunkowo dojrzałą.
Od momentu wydania jest powszechnie uważany za najlepsze narzędzie do tworzenia sieci neuronowych. Można go używać w różnych językach programowania, również poza Pythonem, takich jak Javascript, C++ czy Java.
Ma również elastyczną architekturę, co oznacza, że może być wdrażany na wielu różnych platformach, od procesorów i procesorów graficznych po serwery na urządzeniach przenośnych.
To właśnie ta elastyczność sprawia, że narzędzie to sprawdza się w wielu różnych branżach i przypadkach użycia, i dlatego właśnie pozostaje jednym z najpopularniejszych narzędzi do Deep Learningu.
5. Keras
TensorFlow, choć jest wysoce skalowalną i bardzo dobrą biblioteką Deep Learningu, nie posiada szczególnie przyjaznego interfejsu dla użytkownika. Keras reklamuje się jako „API zaprojektowane dla ludzi, nie dla maszyn” i jest wysokopoziomowym wrapperem do interakcji z TensorFlow.
API Keras ma uniwersalny interfejs, który jest podobny do interfejsu Scikit-learn. Posiadając spójne polecenia, takie jak compile, fit, czy predict, został zaprojektowany w taki sposób, aby umożliwić szybkie eksperymentowanie z biblioteką TensorFlow, a jednocześnie udostępnić uczenie głębokie szerszemu gronu użytkowników.
6. FastAI
FastAI to kolejna biblioteka, której celem jest uczynienie Deep Learningu bardziej dostępnym dla użytkowników, przy jednoczesnym dostarczeniu rozwiązań dla badaczy.
Posiada ona wysokopoziomowe API, które eliminuje znaczną część złożoności i umożliwia użytkownikom szybkie uzyskanie najnowocześniejszych wyników Deep Learningu. Jednocześnie udostępnia komponenty niższego poziomu, które mogą być wykorzystywane przez badaczy do odkrywania nowych podejść.
Pod maską FastAI wykorzystuje PyTorch. Oferuje ona zasadniczo prostszą warstwę abstrakcji, a jednocześnie wprowadza wiele nowych funkcji, takich jak wizualizacje danych oraz nowe sposoby dzielenia i ładowania danych.
Które narzędzie wybierasz?
W tym artykule przedstawiłam sześć najpopularniejszych pakietów Pythona do uczenia maszynowego i głębokiego. W całym ekosystemie Pythona dostępnych jest wiele innych narzędzi, m.in Theano, Chainer czy Spark ML.
Jak wspomniałam wcześniej w artykule, że tak naprawdę nie ma jednej uniwersalnej biblioteki do uczenia maszynowego i jest to raczej kwestia doboru odpowiedniego narzędzia do danego zadania.
Każde z narzędzi opisanych w tym artykule stanowi rozwiązanie dla określonego zestawu problemów lub przypadków użycia. Poniżej streściłam najważniejsze cele każdej z bibliotek.
- Scikit-learn— sprawdzona biblioteka do uczenia maszynowego, oferująca przyjazny dla użytkownika, spójny interfejs.
- Pycaret— obniża próg wejścia do uczenia maszynowego dzięki rozwiązaniom typu low code, zautomatyzowanym i kompleksowym.
- PyTorch— buduj i wdrażaj potężne, skalowalne sieci neuronowe dzięki ich bardzo elastycznej architekturze.
- TensorFlow— jedna z najbardziej dojrzałych bibliotek Deep Learningu, bardzo elastyczna i nadająca się do różnego rodzaju aplikacji.
- Keras— TensorFlow w prostej formie.
- FastAI— ułatwia dostęp do Deep Learningu za pomocą wysokopoziomowego API zbudowanego na PyTorch.
Dzięki za przeczytanie!
Oryginał tekstu w języku angielskim przeczytasz tutaj.