TensorFlowは、機械学習と人工知能のためのソフトウェア ライブラリです。さまざまなタスクに使用できますが、主にニューラル ネットワークのトレーニングと推論に使用されます。[ 3 ] [ 4 ] PyTorchなどと並んで、最も人気のあるディープ ラーニングフレームワークの 1 つです。[ 5 ] Apache License 2.0の下でリリースされた無料のオープンソース ソフトウェアです。
これは、 Google Brainチームによって、Googleの研究開発および生産における社内利用のために開発されました。[ 6 ] [ 7 ] [ 8 ]初期バージョンは2015 年にApache License 2.0の下でリリースされました。 [ 1 ] [ 9 ] Google は、2019 年 9 月に更新版の TensorFlow 2.0 をリリースしました。[ 10 ]
TensorFlowは、 Python、JavaScript、C++、Javaなど、さまざまなプログラミング言語で使用でき、[ 11 ]多くの分野のさまざまなアプリケーションでの使用を容易にします。
2011 年、Google Brain はディープラーニングニューラル ネットワークに基づく独自の機械学習システムとして DistBelief を構築しました。その使用は、研究と商用アプリケーションの両方でAlphabet のさまざまな企業で急速に拡大しました。 [ 12 ] [ 13 ] Google は、 Jeff Deanを含む複数のコンピュータ サイエンティストを派遣し、 DistBelief のコード ベースを簡素化およびリファクタリングして、より高速で堅牢なアプリケーション グレードのライブラリにしました。これが TensorFlow になりました。[ 14 ] 2009 年に、 Geoffrey Hintonが率いるチームは、一般化バックプロパゲーションなどの改善を実装し、大幅に高い精度のニューラル ネットワークを生成できるようになりました。たとえば、音声認識のエラーが 25% 削減されました。[ 15 ]
TensorFlow は Google Brain の第 2 世代システムです。バージョン 1.0.0 は 2017 年 2 月 11 日にリリースされました。[ 16 ]リファレンス実装は単一のデバイスで実行されますが、TensorFlow は複数のCPUとGPUで実行できます(グラフィックス処理ユニットでの汎用コンピューティングのためのオプションのCUDAおよびSYCL拡張機能付き)。[ 17 ] TensorFlow は、64 ビットLinux、macOS、Windows 、およびAndroidやiOSなどのモバイルコンピューティングプラットフォームで利用できます。[ 18 ] [ 19 ]
その柔軟なアーキテクチャにより、さまざまなプラットフォーム(CPU、GPU、TPU)にわたって、またデスクトップからサーバークラスター、モバイルデバイス、エッジデバイスまで、容易にコンピューティングを展開できます。
TensorFlow の計算は、ステートフルなデータフローグラフとして表現されます。TensorFlow という名前は、このようなニューラルネットワークが多次元データ配列に対して実行する操作に由来しており、この配列はテンソルと呼ばれます。[ 20 ] 2016 年 6 月に開催された Google I/O カンファレンスで、ジェフ・ディーンは、 GitHub上の 1,500 のリポジトリがTensorFlow に言及しており、そのうち Google のものは 5 つだけだったと述べました。[ 21 ]
2018年3月、GoogleはJavaScriptでの機械学習のためのTensorFlow.jsバージョン1.0を発表した。[ 22 ]
2019年1月、GoogleはTensorFlow 2.0を発表しました。[ 23 ] 2019年9月に正式に利用可能になりました。[ 10 ]
2019年5月、Googleはコンピュータグラフィックスにおける深層学習のためのTensorFlow Graphicsを発表した。[ 24 ]
2016 年 5 月、Google は、機械学習専用に構築され、TensorFlow に合わせて調整されたアプリケーション固有集積回路( ASIC 、ハードウェア チップ) であるTensor Processing Unit (TPU)を発表しました。TPU は、低精度演算( 8 ビットなど) の高スループットを提供するように設計されたプログラマブルAI アクセラレータであり、モデルをトレーニングするのではなく、使用または実行することに重点を置いています。Google は、1 年以上データ センター内で TPU を運用しており、機械学習においてワットあたりの最適化されたパフォーマンスが1 桁向上していることを発見したと発表しました。[ 25 ]
2017年5月、Googleは第2世代TPUとGoogle Compute EngineでのTPUの利用開始を発表しました。[ 26 ]第2世代TPUは最大180テラフロップスの性能を発揮し、64個のTPUをクラスタにまとめると最大11.5ペタフロップスの性能を発揮します。
2018年5月、Googleは最大420テラフロップスの性能と128GBの高帯域幅メモリ(HBM)を提供する第3世代TPUを発表しました。Cloud TPU v3 Podは100ペタフロップス以上の性能と32TBのHBMを提供します。 [ 27 ]
2018年2月、GoogleはGoogle Cloud PlatformでTPUをベータ版として提供すると発表した。[ 28 ]
2018年7月、Edge TPUが発表されました。Edge TPUは、スマートフォンなどの小型クライアントコンピューティングデバイス上でTensorFlow Lite機械学習(ML)モデルを実行するために設計されたGoogleの専用ASICチップで、エッジコンピューティングとして知られています[ 29 ]。
2017 年 5 月、Google はモバイルおよび組み込みデバイス向けの機械学習モデルをサポートするソフトウェア スタックとして TensorFlow Lite を発表し、2017 年 11 月には開発者プレビューを提供しました。[ 30 ] [ 31 ] 2019 年 1 月、TensorFlow チームは Android デバイスでは OpenGL ES 3.1 Compute Shaders、iOS デバイスでは Metal Compute Shaders を使用したモバイル GPU 推論エンジンの開発者プレビューをリリースしました。[ 32 ] 2019 年 5 月、Google は TensorFlow Lite Micro (TensorFlow Lite for Microcontrollers としても知られています) とARM のuTensor が統合されることを発表しました。[ 33 ] 2024 年に LiteRT に名称変更されました。[ 34 ]
TensorFlow の研究論文における市場シェアがPyTorchに取って代わられつつあったため、[ 35 ] TensorFlow チームは 2019 年 9 月にライブラリの新しいメジャーバージョンのリリースを発表しました。TensorFlow 2.0 では多くの変更が導入されましたが、最も重要なのは TensorFlow eager で、自動微分スキームを静的計算グラフから、Chainerや後にPyTorchによって普及した「Define-by-Run」スキームに変更しました。[ 35 ]その他の主な変更には、古いライブラリの削除、異なるバージョンの TensorFlow でトレーニングされたモデル間の相互互換性、および GPU のパフォーマンスの大幅な改善が含まれます。[ 36 ]
AutoDifferentiation は、モデルの各パラメータに対する勾配ベクトルを自動的に計算するプロセスです。この機能により、TensorFlow はモデル内のパラメータの勾配を自動的に計算できます。これは、パフォーマンスを最適化するために勾配を必要とするバックプロパゲーションなどのアルゴリズムに役立ちます。[ 37 ]そのためには、フレームワークはモデル内の入力テンソルに対して行われた操作の順序を追跡し、適切なパラメータに対する勾配を計算する必要があります。[ 37 ]
TensorFlowには「即時実行」モードがあり、これは演算が計算グラフに追加されて後で実行されるのではなく、即座に評価されることを意味します。[ 38 ]即時実行されるコードは、計算グラフで後からではなく、コードの各行でデータが追加されるため、デバッガを使用してステップごとに調べることができます。[ 38 ]この実行パラダイムは、ステップごとの透明性があるため、デバッグが容易であると考えられています。[ 38 ]
TensorFlow は、Eager 実行とグラフ実行の両方において、さまざまな分散戦略で複数のデバイスに計算を分散するための API を提供します。[ 39 ]この分散コンピューティングは、TensorFlow モデルのトレーニングと評価の実行を高速化できることが多く、AI 分野では一般的な手法です。[ 39 ] [ 40 ]
モデルのトレーニングと評価のために、TensorFlow は損失関数(コスト関数とも呼ばれる)のセットを提供します。[ 41 ]一般的な例としては、平均二乗誤差(MSE) やバイナリクロスエントロピー(BCE) などがあります。[ 41 ]
機械学習モデルのパフォーマンスを評価するために、TensorFlow は一般的に使用される指標への API アクセスを提供します。例としては、さまざまな精度指標 (バイナリ、カテゴリカル、スパースカテゴリカル) のほか、Precision、Recall、Intersection-over-Union (IoU) などの他の指標があります。[ 42 ]
TensorFlow.nn は、モデルに対して基本的なニューラルネットワーク演算を実行するためのモジュールです。[ 43 ]これらの演算には、畳み込みのバリエーション(1/2/3D、アトラス、深層)、活性化関数( Softmax、RELU、GELU、シグモイドなど) とそのバリエーション、およびその他の演算 (最大プーリング、バイアス加算など) が含まれます。[ 43 ]
TensorFlow は、 ADAM、ADAGRAD、および確率的勾配降下法(SGD)など、ニューラルネットワークのトレーニング用のオプティマイザのセットを提供しています。 [ 44 ]モデルをトレーニングする際、異なるオプティマイザは異なるパラメータ調整モードを提供し、多くの場合、モデルの収束とパフォーマンスに影響を与えます。[ 45 ]
TensorFlow は機械学習の中核となるプラットフォームおよびライブラリとして機能します。TensorFlow の API はKerasを使用して、ユーザーが独自の機械学習モデルを作成できるようにします。[ 36 ] [ 46 ]モデルの構築とトレーニングに加えて、TensorFlow はモデルのトレーニング用のデータの読み込みや、TensorFlow Serving を使用したデプロイも支援します。[ 47 ]
TensorFlow は、安定したPythonアプリケーション プログラミング インターフェイス( API ) [ 48 ]を提供するほか、JavaScript [ 49 ] 、C++ [ 50 ]、Java [ 51 ] の後方互換性保証のない API も提供しています。 [ 11 ]サードパーティの言語バインディングパッケージは、C# [ 52 ] [ 53 ]、Haskell [ 54 ]、Julia [ 55 ]、MATLAB [ 56 ] 、 Object Pascal [ 57 ]、R [ 58 ]、Scala [ 59 ] 、Rust [ 60 ]、OCaml [ 61 ]、Crystal [ 62 ]にも利用可能です。現在アーカイブされサポートされていないバインディングには、Go [ 63 ]とSwift [ 64 ]があります。
TensorFlowには、JavaScriptで機械学習を行うためのライブラリもあります。TensorFlow.jsは、提供されているJavaScript APIを使用することで、ユーザーがTensorflow.jsモデルまたはTensorFlowやTFLiteから変換されたモデルを使用したり、指定されたモデルを再トレーニングしたり、Web上で実行したりすることを可能にします。[ 47 ] [ 65 ]
LiteRT(旧称 TensorFlow Lite)[ 66 ]は、モバイルアプリや組み込みデバイスが TensorFlow モデルを生成およびデプロイするための API を備えています。[ 67 ]これらのモデルは、より効率的で、容量の小さいデバイスでもより高いパフォーマンスを発揮できるように圧縮および最適化されています。[ 68 ]
LiteRTは、ネットワークモデルのデータシリアル化フォーマットとしてFlatBuffersを使用し、標準的なTensorFlowモデルで使用されるProtocol Buffersフォーマットは使用しません。 [ 68 ]
TensorFlow Extended (略称 TFX) は、エンドツーエンドのプロダクションに必要なすべての操作を実行するための多数のコンポーネントを提供します。[ 69 ]コンポーネントには、データのロード、検証、変換、機械学習モデルのチューニング、トレーニング、評価、およびモデル自体のプロダクションへのプッシュが含まれます。[ 47 ] [ 69 ]
Numpy は最も人気のあるPythonデータ ライブラリの 1 つであり、TensorFlow はそのデータ構造との統合と互換性を提供しています。[ 70 ]ライブラリのネイティブ データ型である Numpy NDarray は、TF 操作で自動的に TensorFlow Tensor に変換されます。逆の場合も同様です。[ 70 ]これにより、ユーザーが明示的なデータ変換を記述する必要なく、2 つのライブラリが連携して動作できます。さらに、統合はメモリ最適化にも及び、可能な限り TF Tensor が Numpy NDarray の基となるメモリ表現を共有します。[ 70 ]
TensorFlow は、使用するモデルやメソッドを高度化および拡張するためのさまざまなライブラリと拡張機能も提供しています。 [ 71 ]例えば、TensorFlow Recommenders と TensorFlow Graphics は、それぞれの機能のためのライブラリです。 [ 72 ]その他のアドオン、ライブラリ、フレームワークには、TensorFlow Model Optimization、TensorFlow Probability、TensorFlow Quantum、TensorFlow Decision Forests などがあります。[ 71 ] [ 72 ]
Google は、セットアップが不要なTensorFlow Jupyter ノートブック環境であるCollaboratoryもリリースしました。 [ 73 ]これは Google Cloud 上で動作し、ユーザーは GPU に無料でアクセスでき、ノートブックをGoogle Driveに保存して共有できます。[ 74 ]
Google JAX は、数値関数を変換するための機械学習フレームワークです。 [ 75 ] [ 76 ] [ 77 ]これは、 autograd (関数の微分による勾配関数の自動取得)の改良版と TensorFlow のXLA (加速線形代数)を組み合わせたものとして説明されています。NumPy の構造とワークフローにできるだけ近いように設計されており、TensorFlow やPyTorchなどの他のフレームワークと連携します。JAX の主な機能は次のとおりです。[ 75 ]
GEヘルスケアは、特定の身体部位を識別する際のMRIの速度と精度を向上させるためにTensorFlowを使用しました。 [ 78 ] Googleは、ユーザーが自分の肌の写真を撮って潜在的な健康上の問題を特定できる無料のモバイルアプリケーションであるDermAssistを作成するためにTensorFlowを使用しました。[ 79 ] Sinovation Venturesは、光干渉断層撮影(OCT)スキャンから眼疾患を識別および分類するためにTensorFlowを使用しました。[ 79 ]
Twitter はTensorFlow を導入し、特定のユーザーにとっての重要度に基づいてツイートをランク付けし、このランキング順にツイートを表示するようにプラットフォームを変更しました。[ 80 ]以前は、ツイートは単に逆時系列順に表示されていました。[ 80 ]写真共有アプリのVSCO はTensorFlow を使用して、写真にカスタムフィルターを提案するのに役立てています。[ 79 ]
Googleは2015年10月26日にTensorFlowを基盤としたRankBrainを正式にリリースした。 [ 81 ]
仮想学習プラットフォームであるInSpaceは、TensorFlowを使用して教室内の有害なチャットメッセージをフィルタリングしました。[ 82 ]オンライン英語学習プラットフォームであるLiulishuoは、TensorFlowを使用して各生徒に合わせた適応型カリキュラムを作成しました。[ 83 ] TensorFlowは、生徒の現在の能力を評価するために使用され、その能力に基づいて表示するコンテンツを決定するのにも役立ちました。[ 83 ]
eコマースプラットフォームのCarousellは、 TensorFlowを使用して顧客にパーソナライズされたおすすめ情報を提供しました。[ 79 ]化粧品会社のModiFaceは、TensorFlowを使用して、顧客がさまざまな色のメイクアップを顔で試せる拡張現実体験を作成しました。[ 84 ]
TensorFlowは、自動画像キャプションソフトウェアDeepDreamの基盤となっている。[ 85 ]
{{cite web}}: CS1 maint: タイトルとしてアーカイブされたコピー (リンク)sin、* (行列乗算)、.* (要素ごとの乗算) などの演算 [..]。tf.matmul のような特殊な名前空間付き関数を学習する必要がある Python と比較してください。