Programowanie statystyczne w uczeniu maszynowym: kontrast między Pyro a TFP

Opublikowany: 2021-01-29

W uczeniu maszynowym programowanie statystyczne lub probabilistyczne odbywa się przy użyciu 2 języków programowania, jak pokazano poniżej. Krótko mówiąc, programowanie probabilistyczne jest narzędziem do modelowania statystycznego. Zasadniczo oznacza to rozwiązywanie problemów za pomocą języka, za pomocą którego możemy tworzyć i projektować modele statystyczne jako rozwiązanie.

Chodzi o zastosowanie pojęć statystyki za pomocą języków programowania komputerowego. Korzystając z modeli probabilistycznych, można wywnioskować, w jaki sposób nasze przekonania dotyczące hiperparametrów modelu mogą zmienić wynik.

Spis treści

Słynne probabilistyczne języki programowania

1. Pyro

Pyro to probabilistyczny język programowania (PPL), napisany w Pythonie i obsługiwany przez Pytorch na zapleczu. Dzięki Pyro mamy dostęp do głębokiego modelowania probabilistycznego, modelowania bayesowskiego i łączymy najlepsze z nowoczesnych algorytmów głębokiego uczenia. Można go zainstalować w następujący sposób:

pip3 Zainstaluj Pyro-ppl

lub zainstalować go ze źródła użyj następujących poleceń:

klon git https://github.com/pyro-ppl/pyro.git

cd Pyro

pip zainstalować .[dodatki]

Importuj Pyro za pomocą prostej linii kodu:

importuj piro

2. Prawdopodobieństwo przepływu tensora (TFP)

TFP to biblioteka Pythona zbudowana na TensorFlow, która umożliwia łączenie modeli probabilistycznych i modeli głębokiego uczenia na GPU i TPU. Może być używany przez każdego, kto chce wykorzystać wiedzę o domenie, aby zrozumieć i dokonać odpowiednich prognoz. Aby zainstalować TFP, wpisz następujące polecenie w wierszu polecenia lub anakondy.

pip install – uaktualnienie tensorflow-prawdopodobieństwo

TFP można używać w kodzie za pomocą następującego wiersza polecenia:

importuj tensorflow_probability jako tfp

Dołącz do internetowego kursu sztucznej inteligencji z najlepszych światowych uniwersytetów — studiów magisterskich, programów podyplomowych dla kadry kierowniczej oraz zaawansowanego programu certyfikacji w zakresie uczenia się maszynowego i sztucznej inteligencji, aby przyspieszyć swoją karierę.

Kontrast między Pyro a TFP

1. Dokumentacja

Dokumentacja dla Pyro i TFP jest doskonała i obfita, podczas gdy jest mniej wyjaśnień TFP z perspektywy sieci neuronowych. W pyro moduł pyro.nn prezentuje implementacje modułów sieci neuronowych, które są przydatne w kontekście głębokiego programowania probabilistycznego. W TFP, tfp.layers reprezentują warstwy sieci neuronowych z niepewnością co do funkcji, które reprezentują, rozszerzając warstwy TensorFlow.

2. Język

Użytkownicy zarówno TFP, jak i Pyro piszą w Pythonie. Jednak interfejs API zaangażowany w przypadku TFP jest bardzo szczegółowy. Mam na myśli to, że czasami musimy napisać więcej linii kodu, aby znaleźć rozwiązanie. Czasami może to być dobre, ponieważ mamy większą kontrolę nad całym programem, a złe, gdy jest on dostępny w krótszej formie w Pyro.

3. Czas rozpędzania

Dzięki Pyro kod jest wykonywany szybciej i wydajniej, a do nauki nie będziesz potrzebować nowych koncepcji. Z drugiej strony TFP wymaga pojęć, takich jak symbole zastępcze, zakres zmiennych, a także sesje, dzięki czemu wykonanie zajmuje więcej czasu.

4. Wdrożenie

Zarówno TFP, jak i Pyro można łatwo wdrożyć po stronie małego serwera. W przypadku wdrożeń mobilnych i mikrokomputerowych lub wbudowanych TensorFlow działa wydajnie, w przeciwieństwie do Pytorcha. Wdrożenie TensorFlow w systemach Android i IOS wymaga mniejszego wysiłku w porównaniu z Pytorch.

5. Wykresy

Tensorflow ma lepsze wizualizacje wykresów obliczeniowych, które są rodzime w porównaniu z innymi bibliotekami, takimi jak Torch i Theano. Edward jest zbudowany na TensorFlow i udostępnia takie funkcje, jak wykresy obliczeniowe, szkolenie rozproszone, integracja procesora/GPU, automatyczne różnicowanie i wizualizacja za pomocą TensorBoard. Pyro nie zapewnia jednak żadnej funkcjonalności demonstracyjnej ani wizualizacyjnej.

Ingerencja Edwarda w TensorBoard, Źródło: Edward

6. Łańcuch Markowa Monte Carlo

TFP implementuje mnóstwo algorytmów Monte Carlo łańcucha Markowa (MCMC) (takich jak Metropolis, Gibbs, Hamiltonian), których użycie polega na próbkowaniu rozkładu prawdopodobieństwa i kilku algorytmów iteracji wartości w TensorFlow. Do 2018 roku Pyro nie wykonał Monte Carlo łańcucha Markowa. Został zaktualizowany i ma pełną obsługę MCMC, HMC i NUTS.

7. Optymalizatory

Tak jak TFP implementuje kilka optymalizatorów TensorFlow, w tym Nelder-Mead, BFGS i L-BFGS (do określania nieograniczonych problemów optymalizacji nieliniowej), Pyro implementuje optymalizatory obecne w PyTorch. Moduł pyro.optim zapewnia obsługę optymalizacji w Pyro . Można powiedzieć, że oba PPL są zależne od swoich podstawowych modułów (TensorFlow i PyTorch).

Źródło

8. Bijektory

W TFP bijectors uwzględnia zmianę zmiennych dla gęstości prawdopodobieństwa. Kiedy mapujemy z jednej przestrzeni do drugiej, wpływamy również na mapę od gęstości prawdopodobieństwa w przestrzeni początkowej do gęstości w przestrzeni docelowej.

Ale ponieważ mapujemy do innej przestrzeni, musimy śledzić te konta mapowania w obliczeniach gęstości prawdopodobieństwa w tej drugiej przestrzeni. Dlatego do płynnego mapowania stosuje się bijektory. W pyro dokumentacja nie wspomina nic o bijectorach, więc zakładam, że ich nie mają.

9. Szeregi czasowe

Moduł pyro.contrib.timeseries udostępnia kolekcję bayesowskich modeli szeregów czasowych przydatnych w zastosowaniach prognostycznych. Można to osiągnąć, wykorzystując istniejący obiekt Forecaster w Pyro. Po podaniu danych wejściowych do modelu, po prostu mówimy modelowi, jak dokonać świadomej prognozy.

To takie proste, tylko dane i ramy probabilistyczne. TFP korzysta jednak z modeli szeregów czasowych Tensorflow, takich jak CNN i RNN, wraz z ramami dla modeli strukturalnych szeregów czasowych Bayesa (tfp.sts). Bayesowskie strukturalne szeregi czasowe to interfejs wysokiego poziomu do dopasowywania modeli szeregów czasowych, który nie został jeszcze wydany.

Źródło

10. Dystrybucje

Jest to klasa bazowa do konstruowania i organizowania własności (np. średnia, wariancja) zmiennych losowych (np. Bernoulliego, Gaussa). Jednym z przykładów może być rozkład normalny. Większość dystrybucji w Pyro to cienkie nakładki na dystrybucje PyTorch. Aby uzyskać szczegółowe informacje na temat interfejsu dystrybucji PyTorch, możesz sprawdzić torch.distributions.distribution.Distribution. TFP ma jednak swój moduł tfp.distributions.

Źródło

Źródło

11. Uogólnione modele liniowe (GLM)

W statystyce uogólniony model liniowy jest elastycznym uogólnieniem zwykłej regresji liniowej, która pozwala na zmienne odpowiedzi, które mają modele rozkładu błędów inne niż rozkład normalny. W TFP moduł tfp.glm zawiera interfejs wysokiego poziomu do dopasowywania modeli regresji z efektami mieszanymi. Pyro nie posiada jednak takiego modułu dla GLM.

Źródło

Wniosek

Korzystając z tych czynników, można bezpiecznie stwierdzić, że Pyro nie różni się tak bardzo od TFP. Oba są oparte na języku programowania Python. Interfejsy API Pythona są dobrze udokumentowane. Jednak Pytorch ma dobry czas narastania i dlatego jest znacznie szybszy niż TensorFlow. Wybór spośród tych dwóch struktur będzie zależeć od tego, jak dostępna jest metoda uczenia się dla każdego z nich. Twój wybór będzie również zależał od wymagań Twojej organizacji.

Jeśli chcesz dowiedzieć się więcej o uczeniu maszynowym, zapoznaj się z programem IIIT-B i upGrad Executive PG w zakresie uczenia maszynowego i sztucznej inteligencji , który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 450 godzin rygorystycznych szkoleń, ponad 30 studiów przypadków i zadań, IIIT Status -B Alumni, ponad 5 praktycznych praktycznych projektów zwieńczenia i pomoc w pracy z najlepszymi firmami.

Bibliografia

Pierwsze kroki – Dokumentacja Pyro

Moduł: tfp | Prawdopodobieństwo przepływu Tensor

Jak uczenie maszynowe wiąże się ze statystykami i odwrotnie?

Statystyka służy do budowy modelu statystycznego w celu reprezentacji danych i wyciągania z nich wniosków lub wniosków. Podczas gdy uczenie maszynowe korzysta z tego modelu statystycznego, aby uzyskać zrozumienie danych i dokonać dokładnych prognoz. Dlatego statystyki są wykorzystywane do budowania modeli statystycznych, aby pomóc w prawidłowym i łatwym uczeniu maszynowym.

Czy mogę znać uczenie maszynowe bez znajomości statystyki?

Statystyki i uczenie maszynowe są ze sobą powiązane. Jeśli znasz statystyki, możesz przedstawić dane w postaci modelu statystycznego, a następnie analizować i przewidywać za pomocą uczenia maszynowego. Dlatego znajomość statystyk przed uczeniem maszynowym będzie bardzo pomocna. Tak więc, jeśli znasz tylko podstawy statystyki, dobrze jest iść. Nie musisz być profesjonalistą w statystykach, aby dobrze radzić sobie z uczeniem maszynowym.

Czy TensorFlow jest łatwy do nauczenia dla początkującego?

TensorFlow to platforma uczenia maszynowego typu open source, która działa od początku do końca. TensorFlow sprawia, że ​​tworzenie modeli uczenia maszynowego jest proste zarówno dla początkujących, jak i profesjonalistów. Jeśli chcesz pracować w uczeniu maszynowym, musisz poświęcić od sześciu do dwunastu miesięcy na naukę i doskonalenie swoich umiejętności TensorFlow. Jeśli jednak znasz podstawy języków programowania, takich jak R i Python, nie będziesz miał większych problemów.