TensorFlow (G検定)

TensorFlow

1. 定義と概要

TensorFlowとは、Google Brainチームが開発した、数値計算・機械学習向けのフレームワークです。2015年11月に、Apache 2.0ライセンス(商用利用も含め比較的自由に使える代表的なオープンソースライセンスの一種)のオープンソースソフトウェアとして公開されました。

内部では、多次元配列であるテンソル(数値を多次元の配列として表す、AIが扱うデータの基本形)に対する演算を、データフローグラフ(計算の手順をデータの流れとして図で表したもの)として表現します。画像認識・自然言語処理(人間の言葉をコンピュータに扱わせる技術分野)・音声認識など幅広いディープラーニングのタスクで、モデルの構築・学習・推論(学習済みモデルを使って答えを出す処理)に使われています。

Google内部では以前、「DistBelief」という社内向けの機械学習ツールが使われていましたが、汎用性や使いやすさに課題を抱えていました。その開発で得た知見を引き継ぎ、様々な領域へ柔軟に適用できる形へ整えたうえで、2015年にオープンソース公開されたのがTensorFlowという流れです。

公開後は研究用途にとどまらず、本番運用まで見据えたエコシステムの拡充が進みました。外部の高水準API(モデルを組み立てやすくする一段上の道具)として使われていたKeras(モデルの構築を簡潔に書けるようにした高水準のAPI。詳細は別記事で解説)を統合したのも、その一つです。

2019年公開のTensorFlow 2.0では、コードを書いた順にその場で計算を実行するEager Execution(動的実行)を標準の動作とするなど、使いやすさを高める改良が重ねられてきました。研究者向けの計算基盤から、幅広い開発者が扱える道具へと性格を広げてきた歩みといえます。

2. 試験対策ポイント

まず押さえておきたいのは、TensorFlowの開発元です。Google Brainチームが開発を主導し、Apache 2.0ライセンスのオープンソースとして提供されています。対抗馬であるPyTorch(Meta〈旧Facebook〉が開発を主導する、TensorFlowと並ぶディープラーニングフレームワーク)との開発元の違いは、あわせて確認しておきたいところです。

計算グラフの扱いはバージョンによって異なります。2019年公開のTensorFlow 2を境に、既定の実行方式が入れ替わった経緯があり、両者を並べると次のように整理できます。

版 既定の実行方式 計算の進み方
TensorFlow 1系 define-and-run(静的グラフ) 先に計算の手順をすべて組み立ててから、まとめて実行する
TensorFlow 2以降 Eager Execution(動的実行) コードを書いた順に、その場で計算を実行する

define-by-run(コードを書きながらその場で計算を実行していく方式)という方式区分そのものの説明は姉妹記事に譲りますが、TensorFlowが版によって採用する実行方式を変えてきた経緯は取り違えやすい点です。

Kerasとの関係も中心的な論点です。2017年公開のTensorFlow 1.4でtf.keras(TensorFlowに組み込まれた高水準の道具)として同梱され、2019年公開のTensorFlow 2.0では標準の高水準APIとなりました。

加えて、学習から本番運用までを支える周辺ツール群が揃っている点も特徴です。代表的なものと使いどころを並べると、エコシステムの広がりが見えてきます。

ツール 使いどころ
TensorBoard(学習の進み具合を見える化するツール) 学習中の指標や推移の確認
TensorFlow Lite(スマートフォンでも動かせる軽量版) モバイル・組み込み機器での推論
TensorFlow.js(JavaScript言語から使えるTensorFlow) ブラウザやNode.js上での実行
TensorFlow Serving(学習済みモデルをAPIとして配信する仕組み) 本番環境でのモデル配信

フレームワークという枠組みそのものの定義は姉妹記事に譲り、本記事ではTensorFlowという個別の実装が持つ開発元・成り立ち・エコシステムに絞って扱います。

3. 関連概念との比較・相違点

TensorFlowとPyTorchの最大の違いは、開発元と計算グラフの成り立ちにあります。PyTorchは開発当初から動的な実行方式を採用してきたのに対し、TensorFlowは1系の静的グラフから2系のEager Execution方式へ移行した経緯を持ちます。

傾向として、研究やプロトタイピング(試作品を素早く作って検証する段階)の場面ではPyTorchが、本番運用やモバイル・Web展開まで見据える場面ではTensorFlowが選ばれやすいとされています。得意な場面の違いが、そのまま使い分けの目安になっています。

Kerasとの最大の違いは抽象度にあります。Kerasはtf.keras形式でTensorFlowなどの基盤の上に乗る高水準API(モデルの層を直感的に組み立てる記述に特化した仕組み)です。対してTensorFlowは、低水準の演算からエコシステム全体までを含む基盤側のフレームワークです。両者の関係の詳細は姉妹記事に譲ります。

4. ビジネス・実務での活用シナリオ

検索の分野では、Google自身が検索ランキングのモデル改善にTensorFlowを内製活用しています。自社の大規模データでの学習・運用実績が積み重なっていることが、フレームワークとしての信頼性を裏付ける材料になっています。

モバイルアプリや組み込み機器の分野では、TensorFlow Lite導入により、スマートフォンや組み込み機器の上で画像認識・音声認識モデルを軽量な形で動かす取り組みが進んでいます。通信を介さずに端末単体で推論できるため、通信環境に左右されないオフライン動作が可能になります。

Webサービスの分野では、TensorFlow.jsにより、ブラウザ上でJavaScript言語からモデルを直接実行する仕組みが取り入れられています。サーバーへ画像や音声のデータを送らずにその場で推論できるため、通信量を抑えながら利用者の手元で完結する処理を実現できます。

5. 要点まとめ

  • TensorFlowはGoogle Brainチームが開発し2015年にオープンソース公開したディープラーニング向けフレームワークで、Apache 2.0ライセンスで提供されています。
  • 計算グラフの扱いはバージョンで異なり、1系はdefine-and-run(静的グラフ)が基本、2系以降はEager Execution(動的実行)が既定になっています。
  • TensorBoard・TensorFlow Lite・TensorFlow.js・TensorFlow Serving等を含むエコシステムの広さと、tf.keras形式でのKeras統合が、実務での使いやすさを支えています。

6. 確認問題

問1TensorFlowは、Google Brainチーム(Googleの研究チーム)によって開発され、2015年にオープンソースとして公開されたフレームワークである。

解答・解説をみる

○ 正しい

TensorFlowはGoogle Brainチームが開発し、2015年11月にApache 2.0ライセンスのオープンソースソフトウェアとして公開されました。開発元と公開時期はセットで整理しておきたい事実です。

問2TensorFlow 2以降では、計算グラフを先にすべて定義してから実行するdefine-and-run方式が既定の実行方式になっている。

解答・解説をみる

× 誤り

正しくは、TensorFlow 2以降はコードを書いた順にその場で実行するEager Execution(動的実行)が既定になっています。define-and-run(静的グラフ)が基本だったのはTensorFlow 1系であり、版による違いを取り違えやすい点です。

問3Kerasは2017年公開のTensorFlow 1.4からtf.keras形式で同梱されるようになり、TensorFlow 2.0では標準の高水準APIと位置づけられた。

解答・解説をみる

○ 正しい

2017年公開のTensorFlow 1.4からKerasがtf.keras形式で同梱され、2019年公開のTensorFlow 2.0ではtf.keras形式が標準の高水準APIとされた経緯があります。