最終更新日:
第3次AIブームの火付け役となったのは、従来のAI技術を大きく上回る精度を誇るディープラーニング技術です。ディープラーニングによって、画像認識や音声認識といった分野は目覚ましい進歩を遂げました。
今回の記事ではディープラーニングを扱う上で触れることの多いライブラリ「TensorFlow(テンソルフロー / テンサーフロー)」について紹介していきます。
TensorFlowを用いることで比較的簡単に画像認識などの問題を解くことができます。また、学習を進めることで自分でオリジナルの機械学習モデルを構築できるでしょう。
目次
TensorFlowとは
TensorFlowはGoogleが開発したオープンソースの機械学習ライブラリです。主にディープラーニングのフレームワークとして知られています。
Linux, macOS, Windowsなどの主要なOSで利用可能です。また、Pythonだけではなく、C/C++やJava、Go言語といった複数のプログラミング言語に対応しています。
Googleによる開発経緯
もともとGoogleは2011年にかけて「DistBelief」というクローズドソースのディープラーニング・フレームワークを開発していました。DistBeliefはGoogle社内で一定の運用成果を挙げましたが、汎用性が低く、オープンソースとして公開するには向きませんでした。
このような背景から、Googleの社内チームによって新たなディープラーニング・フレームワークの開発がスタートしました。その結果開発されたTensorFlowは2015年にオープンソースのライブラリとなり、2017年には正式版「TensorFlow 1.0」がリリースされました。
Kerasとは
KerasとはGoogleのエンジニア François Chollet氏が中心となって開発したオープンソースのニューラルネットワークライブラリです。TensorFlowとは少し設計思想が異なり、Kerasはニューラルネットワークを自由に拡張・カスタマイズできるインターフェイスを目指して開発されました。
同じGoogle社内で開発されたKerasとTensorFlowは結びつきが強く、TensorFlowは2017年にKerasをサポートすることに決定しました。そして、最新版「TensorFlow 2.0」では、Kerasが完全にTensorFlowに統合されています。
TensorFlow 2.0
2019年10月に従来のTensorFlowとは仕様が異なる最新版「TensorFlow 2.0」が正式リリースされました。計算グラフの作成と評価を同時に行う「Eager Execution」という設計思想を採用している点が従来と大きく異なる点です。
他の機械学習ライブラリとの違い
例えばscikit-learnなどの他の機械学習ライブラリとは異なり、TensorFlowは「ディープラーニング」の分野に力を入れています。
もちろん、TensorFlowでも数値解析や機械学習を行うことができますが、ニューラルネットワークを何層にも重ねる複雑な構造を直感的に構築できる点がTensorFlowの強みです。
▼機械学習とディープラーニングの違いについて詳しくはこちら
ディープラーニング・フレームワークでTensorFlowと並んで有名なものは「Pytorch」です。他にも「Chainer」というニューラルネットワークライブラリが有名ですが、TensorFlow内にKerasが組み込まれているのと同様に、ChainerはPytorchへの移行が発表されています。
次に、二大ディープラーニング・フレームワークのTensorFlow/KerasとPytorch/Chainerを比較します。
TensorFlow vs Pytorch
TensorFlow | Pytorch | |
開発 | ||
リリース | 2015年 | 2016年 |
速度 | ほぼ等速 | |
特徴 | モデルの選択肢が多く、オプションの自由度が高い。 | シンプルな仕組みで使いやすい。 |
TensorFlowはPytorchよりも先にリリースされたため、利用人数や関心の高さはPytorchを上回っています。
データ分析のコンペティションとして有名なKaggleでも、TensorFlowは利用率を上回っている状況です。なお、研究分野ではPytorchが使われることが多くなっています。
TensorFlowの2つのメリット
TensorFlowのメリットは2つあります。
1つ目は、ニューラルネットワーク構築の自由度が高く、自分の好きなようにニューラルネットワークを構築できる点です。またTensorFlowは、追加のライブラリやカスタマイズ機能も充実しています。
2つ目のメリットは、「TensorFlowの利用者が多い」ということです。そのため、学習教材や日本語の情報が豊富にあります。特に初心者にとっては学習教材が充実していることが大切です。
TensorFlowの使い方
TensorFlowはPythonのpipコマンドを使用してインストールします。CPU版とGPU版があるので、自分の環境に合う方をインストールしましょう。詳しくはこちらの公式チュートリアルを参考にしてみてください。
また、Google Colaboratoryを利用すれば、インストールせずブラウザ上で直接TensorFlowを動かせます。Google Colaboratoryは、GPU環境を無料で提供するサービスです。
ただ、12時間経つと強制的に起動したノートブックは初期化されてしまいます。
TensorFlowの仕様
TensorFlowのコードの書き方は少々独特です。TensorFlow内部の動きを把握するには、「テンソル(多次元配列)」の演算という概念を理解する必要があるからです。
▶テンソルと演算について詳しくはこちら
しかし、TensorFlowの公式チュートリアルを進めることで、理論的な背景はいったん棚に上げて、直感的にディープラーニングの仕組みを体感できます。理論的な背景に立ち戻るのは、一通りディープラーニングの基礎を学習し終えてからでも全く問題ありません。
▶TensorFlow Coreはこちら
TensorFlowの応用
TensorFlowは一通りの機械学習アルゴリズムを実装していますが、その中でもディープラーニングを用いた学習モデルを構築することに適しています。
画像認識・音声認識
ディープラーニングによって目覚ましい発展を遂げたのが画像認識・音声認識の分野です。TensorFlowでは数万以上の膨大なデータセットを比較的簡単に分析にかけることができます。
MNIST
TensorFlowのチュートリアルで最も有名なデータセットは「MNIST」です。MNISTは手書き数字の画像認識に用いられるデータセットで、7万ものデータを学習することで、機械学習やディープラーニングを用いた画像認識の手法を評価することに用いられます。
最新のTensorFlowのチュートリアルでは、Fashion MNISTという衣料品画像データセットを用いた画像認識AIの実装を体験できます。
自然言語処理
TensorFlowは自然言語処理にも適しています。公式チュートリアルでは、「word2vec」のモデルを用いて単語をベクトル化する問題を取り扱っています。
これにより、文章からの感情の読み取りや、新たな文章の自動生成を体験できます。
機械翻訳
TensorFlowのチュートリアル上級編ではスペイン語から英語へと翻訳を行う機械翻訳モデルの実装を体験できます。
TensorFlowの学習方法
この記事ではTensorFlowの公式チュートリアルに沿って解説してきましたが、別途書籍や動画などの教材を用いて学習することも効果的です。
おすすめの教材
先述のように、TensorFlow2.0はまだリリースされたばかりなので最新版のTensorFlowを取り扱っている書籍はまだ少ないのが現状です。
その中でも次の書籍は最新の情報に基づいた解説がされていて、TensorFlowを勉強するうえでおすすめの一冊です。
- scikit-learn、Keras、TensorFlowによる実践機械学習 第2版(Aurélien Géron著)
また、おすすめの動画教材は以下の通りです。
- TensorFlow 2.0 Complete Course(freeCodeCamp.org)
- TensorFlow Tutorial(Aladdin Persson氏)
まとめ
今回はTensorFlowの概要と勉強方法について紹介しました。TensorFlowは公式チュートリアルが充実しているため、それに沿って学習を進めることでディープラーニングの基礎から応用までの知識が身に付きます。
一方、最新版のTensorFlow2.0に対応している日本語の教材が少ないのも事実です。書籍やオンライン講座といった体系的な教材が不足しているので、学習を進めるうえでわからない部分は必要に応じてネット上で自ら情報を検索する必要があるでしょう。