TensorFlow が機械学習開発に使用できるのはなぜですか?

TensorFlow が機械学習開発に使用できるのはなぜですか?

機械学習は複雑な分野ですが、データの取得、モデルのトレーニング、予測の提供、将来の結果の改善のプロセスを簡素化する Google の TensorFlow などの機械学習フレームワークのおかげで、実装は以前よりもはるかに簡単になりました。

TensorFlow は、Google Brain チームによって作成され、2015 年に初めて一般公開された、数値計算と大規模機械学習用のオープンソース ライブラリです。 TensorFlow は、多数の機械学習およびディープラーニングのモデルとアルゴリズム (ニューラル ネットワークとも呼ばれます) をまとめ、共通のプログラミング メタファーを通じてそれらを便利なものにします。 Python または JavaScript を使用してアプリケーションを構築し、それらのアプリケーションを高性能 C++ で実行するための便利なフロントエンド API を提供します。

TensorFlow は、PyTorch や Apache MXNet などのフレームワークと競合し、手書き数字の分類、画像認識、単語の埋め込み、リカレント ニューラル ネットワーク、機械翻訳用のシーケンス間モデル、自然言語処理、PDE (偏微分方程式) ベースのシミュレーション用のディープ ニューラル ネットワークをトレーニングして実行できます。最も重要なのは、TensorFlow が同じモデルをトレーニングに使用して、大規模な生産予測をサポートしていることです。

TensorFlow には、独自のプロジェクトで使用できる事前トレーニング済みモデルの広範なライブラリもあります。 TensorFlow Model Park のコードを、独自のモデルをトレーニングするためのベスト プラクティスの例として使用することもできます。

TensorFlowの仕組み

TensorFlow を使用すると、開発者はデータフロー グラフ (データがグラフまたは一連の処理ノード内をどのように移動するかを説明する構造) を作成できます。グラフ内の各ノードは数学演算を表し、ノード間の各接続、つまりエッジは多次元データ配列、つまりテンソルです。

TensorFlow アプリケーションは、ローカル マシン、クラウド内のクラスター、iOS および Android デバイス、CPU、GPU など、最も便利なターゲットで実行できます。 Google 独自のクラウドを使用する場合は、Google のカスタム TensorFlow Processing Unit (TPU) チップ上で TensorFlow を実行し、さらに高速化することができます。ただし、TensorFlow によって作成された結果モデルは、予測を提供するためにほとんどのデバイスに展開できます。

TensorFlow 2.0 は 2019 年 10 月にリリースされ、ユーザーからのフィードバックに基づいてフレームワークにさまざまな改善が加えられ、使いやすくなり (たとえば、モデルのトレーニングに比較的シンプルな Keras API を使用するなど)、パフォーマンスが向上しました。新しい API のおかげで分散トレーニングの実行が容易になり、TensorFlow Lite のサポートにより、より幅広いプラットフォームにモデルを展開できるようになります。ただし、新しい TensorFlow 2.0 機能を最大限に活用するには、以前のバージョンの TensorFlow 用に記述されたコードを書き直す必要があります (少しだけ書き直す場合もあれば、大幅に書き直す場合もあります)。

トレーニング済みのモデルは、REST または gRPC API を使用して Docker コンテナ経由でサービスとして予測を提供するために使用できます。より高度なサービスシナリオではKubernetesを使用できます

Python で TensorFlow を使用する

TensorFlow は、Python 言語を通じてこれらすべての機能をプログラマーに提供します。 Python は習得も使用も簡単で、高レベルの抽象化を結合する方法を表現する便利な方法を提供します。 TensorFlow は Python バージョン 3.7 から 3.10 でサポートされています。以前のバージョンの Python でも動作する可能性がありますが、動作が保証されるわけではありません。

TensorFlow のノードとテンソルは Python オブジェクトであり、TensorFlow アプリケーション自体も Python アプリケーションです。ただし、実際の計算は Python では実行されません。 TensorFlow が提供する変換ライブラリは、高性能な C++ バイナリとして記述されています。 Python は、さまざまな部分間のトラフィックを単純に誘導し、それらを相互に接続するための高レベルのプログラミング抽象化を提供します。

TensorFlow での高レベルの作業 (ノードとレイヤーの作成とそれらのリンク) では、Keras ライブラリが使用されます。 Keras API は、一見するとシンプルです。3 つのレイヤーを持つ基本モデルは 10 行未満のコードで定義でき、同じモデルをトレーニングするには数行のコードしか必要ありません。しかし、「ベールを剥ぎ取り」、独自のトレーニング ループを作成するなど、よりきめ細かい作業を実行したい場合は、それを行うことができます。

JavaScript で TensorFlow を使用する

Python は、TensorFlow と機械学習を扱うための最も人気のある言語です。しかし、JavaScript は現在 TensorFlow の第一級言語でもあり、JavaScript の大きな利点の 1 つは、Web ブラウザーがあればどこでも実行できることです。

TensorFlow.js (JavaScript TensorFlow ライブラリとして知られています) は、WebGL API を使用して、システムで利用可能な任意の GPU を使用した計算を高速化します。実行に WebAssembly バックエンドを使用することもできます。これは、CPU のみで実行する場合、通常の JavaScript バックエンドよりも高速ですが、可能な場合は常に GPU を使用することをお勧めします。事前に構築されたモデルを使用すると、簡単なプロジェクトを立ち上げて実行することができ、仕組みを理解することができます。

テンソルフローライト

トレーニング済みの TensorFlow モデルは、エッジ コンピューティングや、iOS や Android システムなどのモバイル デバイスにデプロイすることもできます。 TensorFlow Lite ツールセットは、モデルのサイズと精度の間でトレードオフを可能にすることで、TensorFlow モデルを最適化し、このようなデバイスで適切に実行できるようにします。より小さいモデル(12MB 対 25MB、または 100MB 以上)は精度が低くなりますが、精度の低下は通常小さく、モデルの速度とエネルギー効率によって相殺されます。

TensorFlow を使用する理由は何ですか?

TensorFlow が機械学習開発にもたらす最大の利点は抽象化です。開発者は、アルゴリズムの実装の詳細に取り組んだり、ある関数の出力を別の関数の入力に接続する正しい方法を考え出したりするのではなく、全体的なアプリケーション ロジックに集中できます。 TensorFlow は舞台裏で詳細を処理します。

TensorFlow は、TensorFlow アプリケーションをデバッグして理解する必要がある開発者にとって、より便利な機能を提供します。グラフ全体を単一の不透明なオブジェクトとして構築し、一度に評価する代わりに、各グラフィック操作を個別に透過的に評価および変更できます。このいわゆる「Eager 実行モード」は、TensorFlow の古いバージョンではオプションとして利用可能でしたが、現在は標準となっています。

TensorBoard 視覚化スイートを使用すると、インタラクティブな Web ベースのダッシュボードを通じてグラフの動作を検査および分析できます。 Tensorboard.dev サービス (Google がホスト) を使用すると、TensorFlow で記述された機械学習の実験をホストして共有できます。最大 100M のスカラー、1GB のテンソル データ、1GB のバイナリ オブジェクト データを無料で保存できます。 (Tensorboard.dev でホストされているデータはすべて公開されているため、機密性の高いプロジェクトには使用しないでください。)

TensorFlow は、Google のトップクラスの商業組織のサポートからも多くの利点を得ています。 Google はプロジェクトの急速な発展を推進し、TensorFlow の導入と使用を容易にする多くの重要な製品を開発しました。 Google Cloud のパフォーマンスを高速化するために使用される上記の TPU チップは、ほんの一例です。

TensorFlow を使用した決定論的モデルトレーニング

TensorFlow 実装の詳細によっては、特定のトレーニング ジョブで完全に決定論的なモデル トレーニング結果を取得することが困難になります。まったく同じデータを入力した場合でも、あるシステムでトレーニングされたモデルと別のシステムでトレーニングされたモデルのパフォーマンスが若干異なる場合があります。この矛盾の理由は複雑です。1 つは乱数がシードされる方法と場所に関係しており、もう 1 つは GPU を使用する際の非決定的な動作に関係しています。 TensorFlow の 2.0 ブランチには、数行のコードでワークフロー全体で決定論を有効にするオプションがあります。ただし、この機能はパフォーマンスを犠牲にするため、ワークフローのデバッグ時にのみ使用する必要があります。

TensorFlow と PyTorch、CNTK、MXNet の比較

TensorFlow は他の多くの機械学習フレームワークと競合します。 PyTorch、CNTK、MXNet は、多くの同じニーズを満たす 3 つの主要なフレームワークです。 TensorFlow と比較して優れている点と劣っている点を簡単に見てみましょう。

  • PyTorch は Python で構築されており、内部のハードウェア アクセラレーション コンポーネント、すぐに使用できる設計作業を可能にする高度にインタラクティブな開発モデル、すでに含まれている多くの便利なコンポーネントなど、TensorFlow との類似点が数多くあります。 PyTorch は、短期間で稼働させる必要があるプロジェクトの迅速な開発に適した選択肢となることがよくありますが、TensorFlow は、より大規模なプロジェクトやより複雑なワークフローに適しています。
  • CNTK は Microsoft Cognitive Toolkit であり、グラフ構造を使用してデータ フローを記述する点で TensorFlow に似ていますが、主にディープラーニング ニューラル ネットワークの作成に重点を置いています。 CNTK は、多くのニューラル ネットワーク ジョブをより高速に処理でき、より幅広い API (Python、C++、C#、Java) を備えています。しかし、現時点では TensorFlow ほど学習やデプロイが簡単ではありません。また、TensorFlow はより自由な Apache ライセンスの下で利用できるのに対し、GNU GPL 3.0 ライセンスの下でのみ利用できます。そして、CNTK はそれほど積極的に開発されていません。最後のメジャーリリースは 2019 年でした。
  • Apache MXNet は、AWS 上の主要なディープラーニング フレームワークとして Amazon によって採用されており、複数の GPU と複数のマシンにわたってほぼ直線的に拡張できます。 MXNet は、Python、C++、Scala、R、JavaScript、Julia、Perl、Go など、幅広い言語 API もサポートしていますが、ネイティブ API は TensorFlow ほどユーザーフレンドリーではありません。また、ユーザーと開発者のコ​​ミュニティもはるかに小さくなっています。


元のタイトル: TensorFlow とは? 機械学習ライブラリの説明

<<:  AI の成功のための 10 の重要な役割

>>:  AIのリスクと安全性をどのように管理するのか?

ブログ    
ブログ    

推薦する

AutoXの完全無人タクシーが試験運用のため正式に一般公開

1月28日、深センの大手自動運転企業AutoXは自動運転の新たな段階に入り、平山区に中国初の完全自動...

ブロックチェーン技術は人工知能の欠点をどのように解決できるのでしょうか?

今年の618が終わったばかりですが、宅配業者だけでなく、JDのインテリジェント配達ロボットも忙しかっ...

体型の変化は千差万別! MIT が宇宙探査用人工物を開発 - モジュール式の自己再構成可能なマイクロロボット

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

クラウド AIGC をめぐる戦い: 最後に笑うのは Microsoft か Amazon か?

ChatGPTが11月下旬にリリースされて以来、テクノロジー業界の多くの人々は、OpenAIの資金...

Amazon Lexについて

Amazon Lex は、音声とテキストを使用してあらゆるアプリケーションに会話型インターフェースを...

2022 年のビジネス インテリジェンスの 7 つのトレンド

ビジネス インテリジェンスは AI に置き換えられることはありません。BI は今でも存在し、役立って...

TensorFlow、危険です! Google自身が放棄している

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

高校生のアルゴリズム「y-cruncher」が円周率の精度の世界記録を更新した

最近、スイスのグラウビュンデン応用科学大学のチームが、円周率の62.8兆桁の計算を101日と9時間で...

ソフトマックスを放棄した初の大規模線形アテンショントランスフォーマーモデル: 1750億のパラメータ、より優れた速度と精度

最近、上海人工知能研究所とOpenNLPLabの研究チームが、ソフトマックスベースの注意メカニズムを...

...

香港科技大学のタン・ピン氏のチームが3D生成における重要な問題を突破し、多頭モンスターの出現を防止

生成モデルは画像生成の分野で大きな成功を収めてきましたが、この技術を 3D 分野に拡張するには常に多...