TensorFlowとは何ですか?機械学習ライブラリの説明

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

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

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

TensorFlowの仕組み

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

TensorFlowは、Python言語を介して、これらすべてをプログラマーに提供します。Pythonは習得と操作が簡単で、高レベルの抽象化をどのように組み合わせることができるかを表現する便利な方法を提供します。TensorFlowのノードとテンソルはPythonオブジェクトであり、TensorFlowアプリケーション自体がPythonアプリケーションです。

ただし、実際の数学演算はPythonでは実行されません。TensorFlowを介して利用できる変換のライブラリは、高性能のC ++バイナリとして記述されています。Pythonは、ピース間のトラフィックを転送するだけで、それらをフックするための高水準プログラミングの抽象化を提供します。

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

2019年10月にリリースされたTensorFlow2.0は、ユーザーフィードバックに基づいてフレームワークをさまざまな方法で刷新し、操作を容易にし(たとえば、モデルトレーニングに比較的単純なKeras APIを使用することにより)、パフォーマンスを向上させました。新しいAPIのおかげで分散トレーニングの実行が簡単になり、TensorFlow Liteのサポートにより、さまざまなプラットフォームにモデルをデプロイできるようになりました。ただし、TensorFlow 2.0の新機能を最大限に活用するには、以前のバージョンのTensorFlow用に記述されたコードを、場合によってはわずかに、場合によっては大幅に書き直す必要があります。

TensorFlowのメリット

TensorFlowが機械学習開発に提供する最大のメリットは抽象化です。開発者は、アルゴリズムの実装の本質的な詳細を扱ったり、ある関数の出力を別の関数の入力につなげる適切な方法を考え出す代わりに、アプリケーションの全体的なロジックに集中できます。 TensorFlowは、舞台裏で詳細を処理します。

TensorFlowは、TensorFlowアプリをデバッグしてイントロスペクションを取得する必要がある開発者に追加の便利さを提供します。イーガー実行モードでは、グラフ全体を単一の不透明なオブジェクトとして作成して一度に評価するのではなく、各グラフ操作を個別に透過的に評価および変更できます。 TensorBoard視覚化スイートを使用すると、インタラクティブなWebベースのダッシュボードを使用してグラフの実行方法を検査およびプロファイルできます。

TensorFlowは、GoogleのAリストの商業服の支援からも多くの利点を得ることができます。 Googleは、プロジェクトの背後にある開発の急速なペースを促進しただけでなく、TensorFlowを中心に、展開と使用を容易にする多くの重要な製品を作成しました。フレームワークで作成されたモデルを共有するためのオンラインハブ。フレームワークのブラウザ内およびモバイルフレンドリーな化身。とはるかに。

1つの注意点:TensorFlowの実装の詳細により、一部のトレーニングジョブで完全に決定論的なモデルトレーニング結果を取得することが困難になっています。あるシステムでトレーニングされたモデルは、まったく同じデータが供給されている場合でも、別のシステムでトレーニングされたモデルとわずかに異なる場合があります。この理由は滑りやすいためです。たとえば、乱数のシード方法と場所、またはGPUを使用する場合の特定の非決定論的動作などです。とはいえ、これらの問題を回避することは可能であり、TensorFlowのチームは、ワークフローの決定論に影響を与えるために、より多くのコントロールを検討しています。

関連ビデオ:機械学習とAIの解読

機械学習と人工知能に関する誇大宣伝を打ち破り、私たちのパネルはテクノロジーの定義と意味について話します。

TensorFlowと競合他社

TensorFlowは、他の多くの機械学習フレームワークと競合します。PyTorch、CNTK、およびMXNetは、同じニーズの多くに対応する3つの主要なフレームワークです。以下に、それらがどこで際立っていて、TensorFlowに対して不足しているのかを示しました。

  • PyTorchは、Pythonで構築されていることに加えて、TensorFlowと他の多くの類似点があります。内部でハードウェアアクセラレーションされたコンポーネント、作業に応じた設計を可能にする高度にインタラクティブな開発モデル、およびすでに含まれている多くの便利なコンポーネントです。PyTorchは通常、短時間で稼働する必要のあるプロジェクトを迅速に開発するためのより良い選択ですが、TensorFlowはより大きなプロジェクトやより複雑なワークフローに勝ちます。

  • TensorFlowのようなMicrosoftCognitive ToolkitであるCNTKは、グラフ構造を使用してデータフローを記述しますが、ディープラーニングニューラルネットワークの作成に最も重点を置いています。CNTKは、多くのニューラルネットワークジョブをより高速に処理し、幅広いAPIセット(Python、C ++、C#、Java)を備えています。しかし、CNTKは現在、TensorFlowほど簡単に習得または展開することはできません。

  • AWSで最高のディープラーニングフレームワークとしてAmazonによって採用されたApacheMXNetは、複数のGPUと複数のマシンにわたってほぼ直線的に拡張できます。また、Python、C ++、Scala、R、JavaScript、Julia、Perl、Goなどの幅広い言語APIもサポートしていますが、ネイティブAPIはTensorFlowほど快適ではありません。