TensorFlowとは
2015年にGoogleが開発した、機械学習のソフトウェアライブラリです。
Googleは以前より、クローズドソースでのディープラーニングフレームワーク開発を行っていました。そこで、2011年にDistBiefという音声認識、イメージ検索といったサービスの性能を上げるディープラーニング基盤を開発します。しかし、社内では一定の成果を得られたものの、凡庸性が低く、公開することができませんでした。
そこでDistBeliefを改良し、オープンソースとして公開できる凡庸性の高いディープラーニングフレームワークTensorFlowが誕生します。2017年には、TensorFlow1.0として正式版もリリースにもいたりました。
Tensorという名前は、Googleが後にAndroidや、Google Pixelに搭載したSoCであるTensorの由来でもあります。
Tensor(テンソル)とは
Tensorとは多次元配列の概念をデータに対して扱えるようにしたものです。
数学の世界では、行列の概念として、0次元の配列をスカラ(0階のTensor)、1次元をベクトル(1階のTensor)、2次元を行列(2階のTensor)と呼びます。
TensorFlowとKerasの関連性
Kerasとは、Googleが開発したニューラルネットワークライブラリの1つで、TensorFlow上で動作します。ニューラルネットワークを自由に拡張、カスタマイズすることのできるインターフェースです。
ディープラーニングのベースとなる数学的理論部分を最初から開発する必要がなく、効率的な開発が可能です。
2017年にTensorFlowがKerasのサポートを決定。TensorFlow2.0ではKerasと統合しました。
TensorFlowの特徴
・データの読み込み
・前処理
・計算
・状態
・出力
上記の処理に対してTensorを扱い、データフローグラフを構築して処理することに特化しています。
また、PythonのコアライブラリやC++のコアライブラリ、JavaScript向けのライブラリも提供されています。
モバイルやIoT向けのTensorFlow LiteではAndoroidやiOSでも利用できます。
また、効率的なデバッグを可能にするEager Executionの提供、アドオンライブラリの充実など、自由のライブラリを選択できます。
分散学習とは
データフローグラフを構築したあと、計算したものを複数に分散して並列処理を行うこと。TensorFlowはこの分散学習を行えます。
分散処理のおかげでビッグデータも扱えます。
< 欠点 >
分散学習実行時に通信の失敗や、使っている端末の故障が起こる可能性があります。
→Fault Toleranceで対処
Fault Tolerance
TensorFlowにはFault Toleranceが搭載されており、これにより障害が起こりそうになると処理を停止し、はじめから構築し直します。
TensorBoard
TensorFlowにはTensorBoardという可視化ツールが搭載されており。学習失敗時にデータを目で見て問題を発見することができます。
TensorFlowのメリット
TensorFlowがGoogleが開発するオープンソースであるため、学習時に参考情報が多く公開されています。
また、GPU操作が不要で効率的な開発が可能です。一般的なディープラーニングのライブラリには、その都度、GPUの処理が必要になるものも多いです。しかし、TensorFlowは元からGPUを使用する設定になっているため、都度、処理をする必要がありません。
TensorFlowのデメリット
TensorFlowは非常に性能が良く、元々GPUを使用する設定となっているため、TensorFlowを使用するハードウェアの性能もある程度必要となります。
データの読み込みや前処理、計算・出力などをTensorで情報管理しているため、特殊なソースコードを使用しています。そのため理解と多次元配列に関する知識の習得などに時間を要する可能性があります。
TensorFlowとPytorchの違い
Pytorchは、Facebookが開発した機械学習のフレームワークです。TensorFlowの1年後にリリースしました。
通常のニューラルネットワーク構築に使われる構築に使われるライブラリが静的な計算グラフで設計されているのに対し、Pythorchは動的な計算グラフで設計されています。そのため、柔軟性が高く、複雑なネットワークも比較的安易に実装が行えます。
研究分野でよく使用されるフレームワークです。
TensorFlow使用用途
・映像から物体検出
・画像認識
・画像検索
・音声認識
・翻訳
・アート生成
・自然言語処理
・ECサイトで購入履歴を参照し、おすすめ商品を提示
実例
・Twitter
ユーザーに関連性の高いツイートをTLの最上部に表示す
・Google
検索、翻訳、Gmail(迷惑メールの選別)、広告表示
GoogleのMagentaというプロジェクトではニューラルネットワークを使用して作曲やアートを生成。