Co to jest TensorFlow? Wyjaśnienie biblioteki uczenia maszynowego

Uczenie maszynowe to złożona dyscyplina. Jednak wdrażanie modeli uczenia maszynowego jest znacznie mniej zniechęcające i trudne niż kiedyś, dzięki platformom uczenia maszynowego - takim jak Google TensorFlow - które ułatwiają proces pozyskiwania danych, modeli szkoleniowych, obsługi prognoz i udoskonalania przyszłych wyników.

Stworzona przez zespół Google Brain, TensorFlow to biblioteka typu open source do obliczeń numerycznych i uczenia maszynowego na dużą skalę. TensorFlow łączy w sobie mnóstwo modeli i algorytmów uczenia maszynowego i uczenia głębokiego (zwanego też sieciami neuronowymi) i czyni je użytecznymi za pomocą wspólnej metafory. Używa Pythona, aby zapewnić wygodny front-end API do tworzenia aplikacji za pomocą frameworka, podczas wykonywania tych aplikacji w wydajnym języku C ++.

TensorFlow może trenować i uruchamiać głębokie sieci neuronowe do ręcznej klasyfikacji cyfr, rozpoznawania obrazów, osadzania słów, powtarzających się sieci neuronowych, modeli sekwencyjnych do tłumaczenia maszynowego, przetwarzania języka naturalnego i symulacji opartych na cząstkowych równaniach różniczkowych. Co najważniejsze, TensorFlow obsługuje prognozowanie produkcji na dużą skalę, z tymi samymi modelami, które są używane do szkolenia.

Jak działa TensorFlow

TensorFlow umożliwia programistom tworzenie wykresów przepływu danych - struktur opisujących sposób, w jaki dane przechodzą przez wykres lub serię węzłów przetwarzania. Każdy węzeł na wykresie reprezentuje operację matematyczną, a każde połączenie lub krawędź między węzłami jest wielowymiarową tablicą danych lub tensorem .

TensorFlow zapewnia to wszystko programiście za pośrednictwem języka Python. Python jest łatwy do nauczenia i pracy, a także zapewnia wygodne sposoby wyrażania, w jaki sposób można łączyć abstrakcje wysokiego poziomu. Węzły i tensory w TensorFlow są obiektami języka Python, a aplikacje TensorFlow same są aplikacjami w języku Python.

Jednak rzeczywiste operacje matematyczne nie są wykonywane w Pythonie. Biblioteki transformacji, które są dostępne za pośrednictwem TensorFlow, są zapisywane jako wysokowydajne pliki binarne C ++. Python po prostu kieruje ruchem między częściami i zapewnia wysokopoziomowe abstrakcje programistyczne, aby połączyć je ze sobą.

Aplikacje TensorFlow można uruchamiać na niemal każdym dogodnym celu: na komputerze lokalnym, klastrze w chmurze, urządzeniach z systemem iOS i Android, procesorach lub procesorach graficznych. Jeśli korzystasz z własnej chmury Google, możesz uruchomić TensorFlow na niestandardowym krzemie TensorFlow Processing Unit (TPU) firmy Google w celu dalszego przyspieszenia. Powstałe modele stworzone przez TensorFlow można jednak wdrożyć na większości urządzeń, na których będą wykorzystywane do prognozowania.

TensorFlow 2.0, wydany w październiku 2019 r., Na wiele sposobów ulepszył framework w oparciu o opinie użytkowników, aby ułatwić pracę (np. Używając stosunkowo prostego interfejsu API Keras do szkolenia modeli) i zwiększyć wydajność. Rozproszone szkolenie jest łatwiejsze do przeprowadzenia dzięki nowemu API, a obsługa TensorFlow Lite umożliwia wdrażanie modeli na większej różnorodności platform. Jednak kod napisany dla wcześniejszych wersji TensorFlow musi zostać przepisany - czasami tylko nieznacznie, czasami znacząco - w celu maksymalnego wykorzystania nowych funkcji TensorFlow 2.0.

Zalety TensorFlow

Największą korzyścią, jaką TensorFlow zapewnia w rozwoju systemów uczących się, jest abstrakcja. Zamiast zajmować się drobiazgowymi szczegółami implementacji algorytmów lub wymyślać właściwe sposoby łączenia danych wyjściowych jednej funkcji z danymi wejściowymi drugiej, programista może skupić się na ogólnej logice aplikacji. TensorFlow dba o szczegóły za kulisami.

TensorFlow oferuje dodatkowe udogodnienia dla programistów, którzy muszą debugować i uzyskać introspekcję w aplikacjach TensorFlow. Tryb przyspieszonego wykonywania pozwala oceniać i modyfikować każdą operację wykresu osobno i w sposób przejrzysty, zamiast konstruowania całego wykresu jako pojedynczego nieprzezroczystego obiektu i oceniania go od razu. Pakiet wizualizacji TensorBoard umożliwia przeglądanie i profilowanie sposobu działania wykresów za pomocą interaktywnego, internetowego pulpitu nawigacyjnego.

TensorFlow zyskuje również wiele korzyści dzięki wsparciu komercyjnej firmy z listy A w Google. Google nie tylko przyspieszył szybkie tempo rozwoju projektu, ale stworzył wiele znaczących ofert wokół TensorFlow, które ułatwiają wdrażanie i użytkowanie: wyżej wymieniony krzem TPU do przyspieszenia działania w chmurze Google; centrum online do udostępniania modeli utworzonych w ramach; inkarnacje frameworka w przeglądarce i na urządzeniach mobilnych; i wiele więcej.

Jedno zastrzeżenie: niektóre szczegóły implementacji TensorFlow utrudniają uzyskanie całkowicie deterministycznych wyników uczenia modelu dla niektórych zadań szkoleniowych. Czasami model trenowany w jednym systemie różni się nieznacznie od modelu trenowanego w innym, nawet jeśli otrzymują dokładnie te same dane. Przyczyny tego są śliskie - np. W jaki sposób i gdzie są rozmieszczane liczby losowe lub niektóre niedeterministyczne zachowania podczas korzystania z procesorów graficznych). To powiedziawszy, można obejść te problemy, a zespół TensorFlow rozważa więcej kontrolek wpływających na determinizm w przepływie pracy.

Powiązany film: Odszyfrowanie systemów uczących się i sztucznej inteligencji

Przełamując szum wokół uczenia maszynowego i sztucznej inteligencji, nasz panel omawia definicje i implikacje tej technologii.

TensorFlow a konkurencja

TensorFlow konkuruje z wieloma innymi platformami uczenia maszynowego. PyTorch, CNTK i MXNet to trzy główne frameworki, które zaspokajają wiele takich samych potrzeb. Poniżej zauważyłem, gdzie wyróżniają się i przegrywają z TensorFlow.

  • PyTorch , oprócz tego, że jest zbudowany w Pythonie i ma wiele innych podobieństw do TensorFlow: komponenty akcelerowane sprzętowo pod maską, wysoce interaktywny model rozwoju, który umożliwia projektowanie na bieżąco i wiele użytecznych komponentów już zawartych. PyTorch jest ogólnie lepszym wyborem do szybkiego opracowywania projektów, które muszą zostać uruchomione w krótkim czasie, ale TensorFlow wygrywa w przypadku większych projektów i bardziej złożonych przepływów pracy.

  • CNTK , Microsoft Cognitive Toolkit, podobnie jak TensorFlow, wykorzystuje strukturę wykresu do opisu przepływu danych, ale koncentruje się głównie na tworzeniu sieci neuronowych uczenia głębokiego. CNTK szybciej obsługuje wiele zadań sieci neuronowych i ma szerszy zestaw interfejsów API (Python, C ++, C #, Java). Jednak CNTK nie jest obecnie tak łatwe do nauczenia się i wdrożenia jak TensorFlow.

  • Apache MXNet , przyjęty przez Amazon jako czołowy framework do głębokiego uczenia się w AWS, może skalować się prawie liniowo na wiele procesorów graficznych i wiele maszyn. Obsługuje również szeroką gamę interfejsów API języków - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go - chociaż jego natywne interfejsy API nie są tak przyjemne w obsłudze, jak te z TensorFlow.