【TENSORFLOW入門】特徴や使い方をわかりやすく解説!

最近、ECサイトでの購入履歴を参照し、おすすめ商品がサイトに出てきたり、スマホのカメラで撮影する時に、顔を検出されたりする機能があります。

こういった働きが、機械学習によって行われていることをご存知でしょうか?

「TensorFlow(テンソルフロー)」とは、Googleが開発した、私たちの生活のさまざまなところで活用されているこの機械学習のソフトウェアライブラリです。

今回は、TensorFlowの特徴やできることなどをわかりやすく解説します。

なお、TensorFlowについて学ぶ前に機械学習やディープラーニングがわからないという人には、こちらのディープーニングを解説した記事がおすすめです。

 

TENSORFLOWとは?特徴や問題点を解説!

TensorFlowは、2015年にGoogleが開発した機械学習のソフトウェアライブラリです。

ライブラリとは、プログラムを組む際によく利用するコードなど、必要な部品をまとめたファイルのことです。

TensorFlowの1番の特徴は、ニューラルネットワークの構築、訓練ができるシステムの要求に応えられる点です。

ニューラルネットワークとは、私たち人間の脳内にある神経細胞(ニューロン)のつながりを数式的なモデルで表現したものです。

Abstract 3D network in future

このニューラルネットワークを使用することによって、機械が私たち人間と同じように論理的思考や学習を行うことができるようになります。

2011年、Googleは「DistBelief」という音声認識やイメージ検索といったサービスの性能を上げるディープラーニング基盤を開発したのですが、開発したばかりの頃は汎用性が低く、公開することができませんでした。

そしてDistBeliefの問題を解決したライブラリがTensorFlowです

TensorFlowが開発されたことによって、DistBeliefの汎用性、拡張性はさらに良くなり、性能も2倍になりました。

そして、その性能の高さから、2015年にTensorFlowは全世界に公開されました。

 

TENSORFLOWの特徴は?

では、TensorFlowには、どのような特徴があるのでしょうか?

はじめに、TensorFlowの特徴として挙げられるのは、データの読み込み、前処理、計算、状態、出力といった処理に対してテンソルを扱っている点です。(テンソルについては後述します。)

そして、一貫して「データフローグラフを構築して処理すること」を想定してつくられている点も大きな特徴です。

また、TensorFlowはiOSやAndroidなど、どんな環境でも動作するようにするために分散学習が行えます。

分散学習とは、データフローグラフを構築したあと、計算しなければいけないものを複数に分散して並列処理を行うことです。

分散処理が行えることによってビッグデータといった大量のデータもTensorFlowは扱うことができます

ただし、分散学習にも欠点はあります。

それは分散学習を実行することによって通信が失敗したり、使っているスマホなどが故障してしまったりする障害が起きる可能性があることです。

しかし、TensorFlowには「Fault Tolerance」という備えがあり、それによって障害が起きそうになると処理の実行が停止され、またはじめから構築し直してくれます。Fault Toleranceは障害が起きるのを防いでくれるのです。

さらに、TensorFlowには「TensorBoard」という可視化ツールが搭載されています。TensorBoardがあることで、学習がうまくいかなかった時にデータを目で見て問題を発見することができます。

 

TENSORFLOWの問題点は?

非常に魅力的なTensorFlowですが、いくつかの問題点もあります。ここでは、TensorFlowの問題点について、紹介します。

TensorFlowは、2015年に公開された、とても性能の高い機械学習のソフトウェアライブラリです。

ただし、その性能の良さのために、TensorFlowを使用するハードウェアの性能もある程度の高さが要求されます。

また、データの計算を分散学習でできるのがTensorFlowの大きなメリットですが、多くのデータの分散を実行させるにはしっかりとした環境を整える必要があります。

そのため、企業などのようにハードウェアが充実しているわけではない、個人がTensorFlowを使うのは少しハードルが高いのが欠点として挙げられます。

また、現時点(2017年12月)では、TensorFlowについて書かれているサイトやブログなどは少なく、独学で習得する環境が整えられていない、という問題点もあります。

 

そもそも”TENSOR(テンソル)”とは何を指す?

TensorFlowは、テンソルを扱うと言いましたが、そもそも「Tensor(テンソル)」とは何を指すのでしょうか?

簡単にいうと、Tensorとは多次元配列のことをいいます。

多次元配列とは、一次元配列以外の配列のことです。

以下の図を見てみてください。

1階のテンソル=1次元配列(スカラー)

tensorflow1

2階のテンソル=2次元配列(ベクトル)

tensorflow2

3階のテンソル=3次元配列

tensorflow3

1次元配列は1列のみですが、2次元配列は縦横の列、また3次元配列は縦横の列をさらに上へと積み重ねたものです。

このようなさまざまな配列のなかで1次元配列以外の配列のことを多次元配列といいます。

そして、こういった配列の概念をデータに対して扱えるようにするのがTensorです。

TensorFlowのようなニューラルネットワークの構築、訓練ができるライブラリではTensorは標準的に扱われているので、覚えておきましょう

 

\文字より動画で学びたいあなたへ/

Udemyで講座を探す >

TENSORFLOWの使い方!使える環境は?

TensorFlowについて、理解してきたところで、実際にTensorFlowを使用する方法、また使用できるデバイスの環境などを詳しく紹介します。

tensorflowキャプチャ

TensorFlowに対応している環境は、MacOS、Ubuntu/Linux、Windowsです。

また、いずれも使用できるCPUは64bitのみになります。

利用する方法はGithubのレポジトリからインストールすることで利用できます。

なお、TensorFlowはAndroid、iOS、Raspberry Piといったモバイル機器でも利用できます。

Github上でモバイル機器向けのコードが公開されています。

ただし、TensorFlowを本格的に使用したい場合、GPUの性能が優秀なパソコンを選びましょう

GPUはおもに画面表示や映像を処理する機能ですが、TensorFlowの動作もスムーズにしてくれます。

また、TensorFlowで使用できるプログラミング言語はPython、C言語、C++です。

 

TENSORFLOWを使ってできること

最後に、TensorFlowを使用してできることを紹介しておきます。

TensorFlowは、画像認識、Google内サービスで写真などの画像検索、音声認識技術に使用されています。

また英語から日本語、英語からフランス語など翻訳を行うこともできます

さらに、TensorFlowを使用してアート生成も行うことができます。

Googleでは「Magenta」というプロジェクトがあり、そのプロジェクトではニューラルネットワークを使用して作曲や美術を生成しています。

TensorFlowが使用できるジャンル、分野はこれからどんどん広がっていくことが予想されます

将来的にはありとあらゆる分野でTensorFlowが活用されているかもしれません。

 

TensorFlowについて理解を深めるのに役に立ちましたか?