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のリスクと安全性をどのように管理するのか?

ブログ    
ブログ    
ブログ    

推薦する

顔認証で支払うのはリスクがあります! CCTVは、自分の顔をスキャンして数万元のローンを組んだ女性を暴露した。

顔スキャン決済は私たちの生活に入り込んでいます。普通のスマートフォンのカメラに顔を向けるだけで、本人...

Transformerは画像を生成することも可能で、新しいViTGANのパフォーマンスはCNNベースのGANに匹敵する。

[[412196]]トランスフォーマーはさまざまな自然言語タスクに急速な進歩をもたらし、最近ではコ...

世の中に人工知能は存在しないのか?私たちはディープラーニングに騙されているのでしょうか?

著者のJean-Christophe Baillie氏は、Novaquarkの創設者兼社長であり、「...

AI の応用分野トップ 10 を調べて、自分の専攻分野が含まれているかどうか確認してください。

人工知能や脳の研究を考えるとき、人々はターミネーターマシンが世界を破壊するイメージを思い浮かべます。...

...

...

2021 年のデジタル トランスフォーメーションの 10 大トレンド

2020 年に私たちがどうなるかは誰も予測できませんでした。過去 6 か月だけでも、過去 10 年間...

データが増えるほど、AIの意思決定モデルは脆弱になる

データは人工知能システムを構築するために必要な重要なインフラストラクチャです。データは、AI システ...

世界の自動運転事故を比較することで、そのデータと真実が明らかになった。

最近起きた自動車事故は、被害者の身元が明らかになったこと、運転支援技術の台頭と普及、中国の有名自動車...

国境を越えた大企業よ、安易に「自社開発チップ」を主張しないでほしい

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

...

...

AIの次の大きな課題:言語のニュアンスを理解すること

それは非常に奥深く、微妙なことです。同じ文でも、文脈によって意味が変わることがよくあります。人間でさ...

...

...