スマートフォン版で表示

現在、お知らせはありません。

TensorFlow 入門のイメージ

TensorFlow入門|特徴や仕組み、学び方を解説

TensorFlowはGoogleが開発したオープンソースのディープラーニングフレームワークです。世界中で多くのユーザーに使われており、開発のスピードも速く、新しい機能も次々と実装されています。ここでは、TensorFlowの特徴と概要について紹介します。

エンジニアとしての市場価値を知るために

年収査定を受ける(無料)
シェアする
このエントリーをはてなブックマークに追加

TensorFlowとは

TensorFlowは、機械学習/ディープラーニングのためのオープンソースのフレームワークです。Googleの社内で使われていた数値計算ライブラリが元となって開発されたもので、2015年11月にオープンソースとして公開されました。その後はGoogleを中心としたコミュニティ(tensorflow.org)により開発、配布、情報共有などが行われています。

2019年10月には、大幅な機能強化が施されたTensorFlowバージョン2.0がリリースされました。2022年現在バージョン2.x系の開発が続いています。

またTensorFlow User Group(TFUG)というユーザーコミュニティの活動も活発で、ユーザー同士の交流イベントやチュートリアル、勉強会など、TensorFlowを広めるためのさまざまな活動が続けられています。

TensorFlow User Group Tokyo

なお、機械学習の基礎については以下の記事で詳しく解説しているため、あわせてご覧ください。

機械学習とは?種類やできること、プログラムとの違いを解説

TensorFlowの特徴

ディープラーニングのフレームワークはいくつかありますが、TensorFlowはその中でも特にユーザ―が多く、機能や情報も整備されています。先に挙げたTFUGをはじめとした開発コミュニティの貢献もあり、使いやすさもどんどん改善されています。

豊富な対応環境

TensorFlowは多くのOS上で動作します。バージョン2.xはLinux(Ubuntu)をはじめWindows、macOSをサポート。TensorFlowで作成したモデルをモバイル環境にデプロイできるTensorFlow Liteの利用でiOS、Android、Raspberry Pi OS(Raspbian)でも動作可能です。

また、ハードウェアとしては通常のCPUのほか、ディープラーニングでよく用いられているGPU(NVIDIA製)上で高速に動作させることもできます。Googleが開発しているニューラルネットワーク専用プロセッサTPU(Tensor Processing Unit)上で、さらに高速な実行も可能です。

そしてGoogle Cloudには、TensorFlowの実行環境がインストールされたTensorFlow Deep Learning VM Image インスタンスが用意されており、これを使用すればセットアップの手間なくフルセットの環境が利用可能です。

一方、プログラミング言語としては機械学習の定番であるPythonをはじめC/C++、Java、Goに対応、さらにクライアントサイドのWebアプリケーション(JavaScript)として開発、実行できるTensorFlow.jsというライブラリもあります。

充実したツール、周辺ライブラリ

TensorFlowには純正、サードパーティ製を問わず、さまざまな周辺ツールやライブラリが提供されているのも大きな魅力の一つです。代表的なものを紹介しましょう。

TensorBoard

ビジュアルツールTensorBoardは、TensorFlowに含まれてインストールされる、ユーザーに人気のツールです。TensorBoardはTensorFlowのさまざまなデータ、状態を可視化します。ディープラーニングのモデル学習時の精度やロス率をグラフにして追跡できるほか、学習データを画像や音声にして再生したり、機械学習モデルのグラフを可視化でき、学習がうまくいっているか、モデルが適切かをビジュアルに理解できる優れたツールです。

TensorBoardのUI(tensorflow.orgの紹介ページより)

また、TensorBoard.devは、TensorBoardの実行結果を共有できるサービスです。TensorBoardのログをアップロードするだけで、誰でも閲覧できるリンクが生成されるため、インストールやセットアップなしでTensorBoardのUIを使いながら結果共有ができます。

Keras

KerasはもともとTensorFlowなどのディープラーニングフレームワークとともにインストールして使用できる、高レベルな機械学習/ディープラーニングのアルゴリズムを集めたライブラリです。TensorFlowは高機能ですが、低レベルなAPIが多いため、そのまま使うと記述が煩雑になりがちです。Kerasはこれらの複雑な記述を簡単にできたり、各種の補完機能や自動でニューラルネットワークを生成したりする機能を備えており、TensorFlowを使う際に標準的に利用する便利なラッパーとしての役割を担ってきました。

TensorFlow Ver.2.xではこの関係はさらに進み、TensorFlowをインストールすると、Kerasの機能がデフォルトでインストールされるようになりました。ユーザーは新たにインストールやセットアップを行うことなく、Kerasの機能を利用することができます。

「Define-and-Run」から「Define-by-Run」へ

TensorFlow 2.xでは、もう1つ大きな進化がありました。

かつてTensorFlowでは、各種の宣言や処理(計算グラフ)を記述したところでオブジェクトが生成され、その後計算処理を実行する記述が必要でした。これを「Define-and-Run」といいます。イメージとしては、コンパイル言語のような形になります。メリットとしてはコンパイル言語と同様、一度計算グラフが記述されると計算処理自体は高速に動作する点です。ただ、この方法だとプログラムの記述はどうしても長く複雑になってしまいます。

これに対して、TensorFlowと同様ユーザーの人気が高いディープラーニングフレームワークのPyTorchなどが採用しているのが「Define-by-Run」です。こちらは動的言語のようなイメージといえます。長い宣言文や実行処理を記述しなくても、コードのとおりに計算が実行されます。このため、プログラムの見通しも良くなり、比較的わかりやすいコードで記述できます。

TensorFlow 2.0からは、この「Define-by-Run」形式がデフォルトで採用されるようになりました。TensorFlowではこのやり方を「Eager Execution(積極的実行)」と呼んでいます。

なお、ディープラーニングの基礎知識を知りたい方は、以下の記事もご参照ください。

ディープラーニング(深層学習)とは?基礎知識や機械学習との違いを解説

エンジニアとしての市場価値を知るために

年収査定を受ける(無料)

TensorFlowの仕組み

TensorFlowは、ディープラーニングを人間の脳のニューロンの働きに模して計算する「ニューラルネットワーク」モデルを基本的な構造としています。

Tensor(テンソル)とは?

「TensorFlow」は直訳すると「Tensor(テンソル)」を「Flow(流す)」となります。テンソルは線形代数で使われる概念で、多次元(階層、軸)の配列で表すことができるデータの集合体です。数値(スカラー)、ベクトルや行列もテンソルの一種と考えることができ、スカラーは0階(0次)のテンソル,ベクトルは1階、行列は2階のテンソルです。さらに配列を重ねることで3階、4階…と高階層のテンソルを定義できます。

たとえば画像処理を行う場合、1枚のカラー画像をR、G、Bのレイヤに分解し、さらにレイヤごとにピクセルに分解して各ピクセルの濃度を数値化したものを元データとすると、1つの画像を3階のテンソルとしてひとまとめに表現できます。このほか音声などのデータも、プログラムで扱いやすいよう数値化して1つのまとまりとして扱うのに、テンソルは都合が良い概念です。

TensorFlowでは、このテンソルに対して繰り返し演算を行うことによってニューラルネットワークを実現しています。

グラフ(データフロー・グラフ)とは

TensorFlowの処理の基本は「グラフ」にあります。グラフとは、テンソルに対して計算を行うオブジェクト(オペレーション)と、計算処理の間を流れるデータ(テンソル)のユニットを表すデータ構造を指します。非常に単純な例ですが、たとえば足し算のグラフは以下の図のような形で表されます。矢印はデータ(テンソル)の流れる方向です。

このようにグラフは視覚的に把握しやすく、先に紹介したTensorBoardにも作成したプログラムのデータフロー・グラフを表示する機能があり、TensorFlowが多くのユーザーに使われるポイントになっています。

データフロー・プログラミングとは

データフロー・プログラミングはこのようなデータフロー・グラフを組み合わせたもの(モデル)を作成し、入力した値(TensorFlowの場合はテンソル)をグラフから次のグラフに流すように処理することで計算を行っていきます。データフロー・プログラミングのメリットは以下の点です。

並列処理しやすい

データフロー・グラフを作っておくことで、並列に計算できる処理を見つけやすくなります。膨大なデータに複雑な処理を行う機械学習/ディープラーニングに並列処理は欠かせません。

移植しやすい

データフロー・グラフはプログラミング言語に依存しない構造です。このため、ある言語で作成したモデルを別の言語に比較的簡単に移すことができます。TensorFlowがさまざまな言語に対応している要因のひとつに、この移植性の高さがあるといえます。

ニューラルネットワークをどのように構築するのか?

データフロー・グラフは複数の入力を取ることができます。これを利用して、グラフの複数の入力をつないで網の目のような構造にすると、あたかも脳の神経細胞のようなネットワークができあがります。これがニューラルネットワークです。ディープラーニングでは、このようなネットワークを何層も重ねることで、より精度の高い学習ができるモデルを構築していきます。

TensorFlowには、上記のような処理を行うさまざまなオペレーションが関数の形で実装されているので、それらをプログラムに記述していくことで、複雑なニューラルネットワークを構築することができるのです。

エンジニアとしての市場価値を知るために

年収査定を受ける(無料)

TensorFlowを学ぶには

TensorFlowはユーザーが非常に多いので、TensorFlowに関するさまざまな情報は少し検索すればいくらでも手に入ります。このとき注意しなければならないのは、検索で行き当たる情報の中には古い情報も多く含まれている点です。TensorFlowの進化は速く、ほかのフレームワークに後れを取っていた機能も、バージョンアップとともに次々と実装されています。

このため、最新の正確な情報は、大元であるtensorflow.orgから得るのが間違いありません。tensorflow.orgには、とくに初学者が必要とする最新バージョンのインストールパッケージへのリンク、インストール方法をはじめ、GitHub上に置かれているソースからビルドする方法、そしてさまざまな環境で使えるようになるまでが、わかりやすくまとめられています。

Google Colabを使ったチュートリアル

TensorFlow初学者の方には、インストールを行わずブラウザ上からTensorFlow環境を無料で利用できるGoogle Colaboratory(Google Colab)がおすすめです。Google ColabはGoogleクラウド上に実装されたJupyter Notebook環境で、Google Colab内でTensorFlowを起動して使うことができます。

tensorflow.orgで用意されているチュートリアルも、Google Colabを使って試すことができるように構成されています。まずはここでTensorFlowプログラミングの基本を学んだあと、Google Colab上で実践してみると良いでしょう。

またTensorFlowの使い方だけではなく、MNISTなど汎用のサンプルデータを使って本格的な体験ができる、機械学習/ディープラーニング初心者向けのチュートリアルも充実しています。

まとめ

この記事では、TensorFlowに興味を持ち始めた方に向けて基礎をお伝えしてきましたが、本記事をお読みの方の中には、より具体的な技術を学んでいる方もいることでしょう。

もし、TensorFlowなどの機械学習に関する技術を学び、転職も含めてキャリアに活かしたいとお考えなら、転職エージェントサービスを利用するのも一案です。

dodaエージェントサービスでも、機械学習に関する求人の市場感や具体的な求人探し、転職につなげるための独学ポイントや面接対策など、転職活動のお手伝いをいたしますのでぜひお気軽にご相談ください。

エンジニアとしての市場価値を知るために

年収査定を受ける(無料)
この記事の監修者

技術評論社 デジタルコンテンツ編集チーム

理工書やコンピュータ関連書籍を中心に刊行している技術評論社のデジタルコンテンツ編集チームでは、同社のWebメディア「gihyo.jp」をはじめ、クライアント企業のコンテンツ制作などを幅広く手掛ける。

自分の強みや志向性を理解して、キャリアプランに役立てよう
キャリアタイプ診断を受ける
ITエンジニア専任のキャリアアドバイザーに無料で転職相談
エージェントサービスに申し込む(無料)
キャリアプランに合う求人を探してみよう
ITエンジニア求人を探す
シェアする
このエントリーをはてなブックマークに追加