Programování

Co je TensorFlow? Vysvětlení knihovny pro strojové učení

Strojové učení je složitá disciplína. Implementace modelů strojového učení je však mnohem méně skličující a obtížná než dříve, a to díky rámcům strojového učení - jako je Google TensorFlow - které usnadňují proces získávání dat, tréninkové modely, předpovědi předpovědi a vylepšování budoucích výsledků.

TensorFlow, který vytvořil tým Google Brain, je knihovna otevřeného zdroje pro numerické výpočty a rozsáhlé strojové učení. TensorFlow spojuje spoustu modelů strojového učení a hlubokého učení (neboli neuronových sítí) a algoritmů a činí je užitečnými prostřednictvím společné metafory. Používá Python k poskytnutí pohodlného rozhraní front-end API pro vytváření aplikací v rámci, zatímco tyto aplikace spouští ve vysoce výkonném C ++.

TensorFlow může trénovat a provozovat hluboké neuronové sítě pro klasifikaci ručně psaných číslic, rozpoznávání obrázků, vkládání slov, opakující se neuronové sítě, modely sekvenčních sekvencí pro strojový překlad, zpracování přirozeného jazyka a simulace založené na PDE (parciální diferenciální rovnice). Nejlepší ze všeho je, že TensorFlow podporuje predikci produkce v měřítku se stejnými modely, které se používají pro školení.

Jak funguje TensorFlow

TensorFlow umožňuje vývojářům vytvářet grafy toku dat—Struktury, které popisují, jak se data pohybují v grafu nebo v řadě uzlů zpracování. Každý uzel v grafu představuje matematickou operaci a každé spojení nebo hrana mezi uzly je vícerozměrné datové pole, nebo tenzor.

TensorFlow poskytuje toto vše pro programátora prostřednictvím jazyka Python. Python se snadno učí a pracuje s ním a poskytuje pohodlné způsoby, jak vyjádřit, jak lze kombinovat abstrakce na vysoké úrovni. Uzly a tenzory v TensorFlow jsou objekty Pythonu a aplikace TensorFlow jsou samotné aplikace v Pythonu.

Skutečné matematické operace se však v Pythonu neprovádějí. Knihovny transformací, které jsou k dispozici prostřednictvím TensorFlow, jsou psány jako vysoce výkonné binární soubory C ++. Python pouze směruje provoz mezi jednotlivými částmi a poskytuje abstrakce programování na vysoké úrovni, aby je spojil.

Aplikace TensorFlow lze spouštět na většině účelů, které jsou vhodné: místní počítač, cluster v cloudu, zařízení iOS a Android, CPU nebo GPU. Pokud používáte vlastní cloud společnosti Google, můžete pro další zrychlení spustit TensorFlow na vlastním křemíku společnosti Google TensorFlow Processing Unit (TPU). Výsledné modely vytvořené pomocí TensorFlow lze však nasadit na většině zařízení, kde budou použity k zobrazování předpovědí.

TensorFlow 2.0, vydaný v říjnu 2019, vylepšil rámec mnoha způsoby na základě zpětné vazby od uživatelů, aby se s ním snáze pracovalo (např. Pomocí relativně jednoduchého rozhraní Keras API pro trénink modelu) a výkonnější. Distribuované školení je snadnější díky novému API a podpora TensorFlow Lite umožňuje nasazovat modely na více různých platformách. Avšak kód napsaný pro dřívější verze TensorFlow musí být přepsán - někdy jen nepatrně, někdy výrazně -, aby se maximálně využily nové funkce TensorFlow 2.0.

Výhody TensorFlow

Jedinou největší výhodou, kterou TensorFlow poskytuje pro rozvoj strojového učení, je abstrakce. Místo toho, aby se vypořádal s hloupými detaily implementačních algoritmů, nebo vymyslel správné způsoby, jak zastavit výstup jedné funkce na vstup jiné, může se vývojář zaměřit na celkovou logiku aplikace. TensorFlow se stará o detaily v zákulisí.

TensorFlow nabízí další výhody pro vývojáře, kteří potřebují ladit a získat introspekci do aplikací TensorFlow. Režim dychtivého provedení vám umožňuje vyhodnotit a upravit každou operaci grafu samostatně a transparentně, místo toho, abyste celý graf vytvořili jako jeden neprůhledný objekt a vyhodnotili ho najednou. Vizualizační sada TensorBoard vám umožňuje kontrolovat a profilovat způsob běhu grafů prostřednictvím interaktivního webového řídicího panelu.

TensorFlow také získává mnoho výhod díky podpoře komerčního vybavení A-seznamu v Google. Google nejen podpořil rychlé tempo vývoje, které za projektem stojí, ale vytvořil kolem TensorFlow mnoho významných nabídek, které usnadňují jeho nasazení a použití: výše zmíněný křemík TPU pro zrychlený výkon v cloudu Google; online hub pro sdílení modelů vytvořených v rámci; inkarnace rámce v prohlížeči a pro mobilní zařízení; a mnohem víc.

Jedno upozornění: Některé podrobnosti implementace TensorFlow znesnadňují získání zcela deterministických výsledků školení modelů pro některá školení. Někdy se model trénovaný na jednom systému bude mírně lišit od modelu trénovaného na jiném, i když jsou krmena přesně stejnými daty. Důvody jsou kluzké - např. Jak jsou náhodná čísla naočkována a kde nebo určitá nedeterministická chování při použití GPU). To znamená, že je možné tyto problémy vyřešit a tým TensorFlow uvažuje o tom, že více ovládacích prvků ovlivní determinismus v pracovním toku.

Související video: Dešifrování strojového učení a AI

Náš panel prolomil humbuk kolem strojového učení a umělé inteligence a promlouvá přes definice a důsledky této technologie.

TensorFlow vs. konkurence

TensorFlow soutěží s řadou dalších rámců strojového učení. PyTorch, CNTK a MXNet jsou tři hlavní rámce, které řeší mnoho stejných potřeb. Níže jsem si všiml, kde vynikají a jsou proti TensorFlow.

  • PyTorch, kromě toho, že je postaven v Pythonu, a má mnoho dalších podobností s TensorFlow: hardwarově akcelerované komponenty pod kapotou, vysoce interaktivní vývojový model, který umožňuje práci podle návrhu, a mnoho užitečných komponent již zahrnutých. PyTorch je obecně lepší volbou pro rychlý vývoj projektů, které musí být v provozu v krátkém čase, ale TensorFlow vyhrává pro větší projekty a složitější pracovní postupy.

  • CNTK, Microsoft Cognitive Toolkit, jako TensorFlow, používá k popisu toku dat grafickou strukturu, ale nejvíce se zaměřuje na vytváření neuronových sítí s hlubokým učením. CNTK zpracovává mnoho úloh neuronové sítě rychleji a má širší sadu API (Python, C ++, C #, Java). CNTK však v současné době není tak snadné se naučit nebo nasadit jako TensorFlow.

  • Apache MXNet, který společnost Amazon přijala jako přední rámec pro hluboké učení na AWS, lze škálovat téměř lineárně na více GPU a více strojích. Podporuje také širokou škálu jazykových API - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go - i když s nativními API není tak příjemné pracovat jako s TensorFlow.