AIとは何か

TensorFlow(テンソルフロー)とは?AndroidやiOSでの使い方

TensorFlow(テンソルフロー)とは?AndroidやiOSでの使い方

最近ではあらゆる場所でAI(人工知能)が使われ、機械学習やディープラーニングといった言葉もよく聞くようになりましたよね。あのGoogleも、TensorFlow(テンソルフロー)というオープンソースの機械学習ライブラリを開発しています。このTensorFlow(テンソルフロー)を活用すれば、今後さらに多くの場所で使われるようになるであろう機械学習を簡単に行えるようになるかもしれません!

TensorFlow(テンソルフロー)はWindowsやMac、LinuxだけでなくAndroidやiOSといったスマートフォンでも無料で使うことができるという特徴があります。身近なコンピューターを使って無料で利用できる、機械学習ライブラリのTensorFlow(テンソルフロー)について知っておくことはこれからのIT社会できっと役に立つことでしょう。

そこで今回はTensorFlow(テンソルフロー)を用いて何ができるのか、どのように使うのかをお伝えしていきましょう。

TensorFlow(テンソルフロー)はとても強力な機械学習ライブラリ

TensorFlowのイメージ

TensorFlow(テンソルフロー)はGoogleが開発している機械学習ライブラリであり、Windows7以降、MacOS、64bitのLinux(Ubuntu)と最近のパソコンに使われているOSであればほとんどサポートしています。

しかしTensorFlow(テンソルフロー)は使う前に自身のコンピューターでビルドしなくてはならず、性能の低いパソコンではとても長い時間がかかってしまうために、できる限り新しくスペックの高いパソコンを用意しましょう。

※ビルドとは人間の書いた機械への命令を機械が読めるように0と1で書かれた命令に書き換えることを言います。これはとても大変な作業なのでスペックの高いパソコンでないと時間がかかってしまうのです。

またTensorFlow(テンソルフロー)はグラフィックボードに対応しており、機械学習などの多くの計算を必要とする場合には、グラフィックボードを用いた方が効率が良いです。ですから本格的に利用していくのであれば、できる限り高性能なグラフィックボードを積んだコンピューターを用意しておきましょう。

※グラフィックボードとは、デスクトップPCに追加で装備できる高画質な映像を見るための部品です。グラフィックボードは映像を表示するために多くの計算(FHDの画面であれば1920×1080個の色を一秒間に30から60回もの計算が必要)をすることができるので多くの計算が必要な機械学習でよく使われています。

TensorFlow(テンソルフロー)はテンソルを使って学習、解析ができる!

学習のイメージ

TensorFlow(テンソルフロー)は与えられたテンソル量を用いて解析を行う機械学習ライブラリです。テンソルとはベクトルの概念を広げたもので、複数のデータの組み合わせで表されます。例えばある個人について(名前、誕生日、住所、身長、体重)というデータがテンソルですが、TensorFlow(テンソルフロー)ではこのテンソルを用いて解析を行っていくんです。

学習結果はテンソルの計算として出力されます。例えば「与えられた画像から計算を行っていき、最後に計算結果として、その画像に書かれていた数字が計算できるような計算式を作らせる」といった利用方法ができます。その計算は機械がやってくれるので、私たちは見ているだけで求めていた情報を得られるようになります。

また、TensorFlow(テンソルフロー)ではデータフローグラフというものを利用しています。データフローグラフとは様々な計算処理をどのような順番で行い、何を結果として出力するのかという過程を樹形図のような形で整理したものです。

これによって、TensorFlow(テンソルフロー)では同時に進められる処理を見つけて並行して行ったり、計算を別々の端末に分散させて実行させた後に、通信して合成するといった処理を組み込むことができるようになりました。

こういった計算ができるTensorFlow(テンソルフロー)で実際に何ができるのか簡単に紹介しましょう。1つは画像認識、画像検索、音声認識といったように、文字以外の内容を機械に理解させること。今では当たり前のように使われているSiriやGoogle assistant、Google画像検索にも機械学習が使われています。

さらに、今まで以上にきめ細やかな翻訳をさせることも可能に!機械学習を使った翻訳は一単語ずつ翻訳していくのではなく、文章をそのまま翻訳することができるので、ニュアンスの違いや感情をそのまま翻訳できるのではないかと期待されているんです。

また作曲や絵画、物語を書くといった、今まで機械にはできなかったような分野への進出も行われています。すでに作られている例としては人の顔の画像を描くプログラムや、有名な小説から執筆手法を学び、自ら小説を書くプログラムなども作られているそうです。

このように、機械学習とは今まで機械には難しかったことが可能になる技術といえるでしょう。

TensorFlow(テンソルフロー)は機械学習を単体で行うソフトではない

機械学習のイメージ

注意すべきは、TensorFlow(テンソルフロー)は単体で機械学習を行うものではないということ。つまりTensorFlow(テンソルフロー)は機械学習を行うための道具であり、それをPythonやC、Javaなどの言語から利用することで、機械学習を行うことができるのです。

※Python、C、Javaはどれも現在多くの場所でつかわれているプログラミング言語のこと。iOSやAndroidのアプリも、これらの言語とその仲間で作られています。

TensorFlow(テンソルフロー)を使いこなすにはそれらの言語を学ぶ必要がありますが、プログラミングの経験がある人なら、もともと使っていた言語を利用できるかもしれません。もし対応している言語の中に、自分の使ったことのある言語がなかった場合にはPythonをおすすめします。機械学習においてはPythonが使われることが多いので、今後機械学習について学んでいくのであれば、このタイミングでPythonを学ぶことは決して無駄にはならないでしょう。

TensorFlow(テンソルフロー)はスマートフォンでも使える

スマホのイメージ

TensorFlow(テンソルフロー)の特徴として、パソコンやサーバーなどの大掛かりなコンピューターだけでなく、学習結果をAndroidやiOSなどのスマートフォンで使うことができるというものがあります。

なぜ利用できるかというと、AndroidやiOSなどのスマートフォン、タブレット端末などのIOT機器向けにTensorFlow lite(テンソルフロー ライト)が開発されているからです。TensorFlow lite (テンソルフロー ライト)では場合によっては数ギガバイトにもなるような学習データをスマートフォンでも扱えるサイズに変換し、さらにスマートフォンのハードウェア上で利用できる形式に量子化できてしまいます。

特にAndroidに実装する場合には、Androidの標準的な開発環境であるAndroid studioからTensorFlow(テンソルフロー)を利用したアプリを作ることができます。…といっても、何ができるのかわかりにくいですよね。一言でいうと、これを利用することでスマートフォンで撮った写真や音をその場で解析することができ、Androidアプリの開発の自由度を大きく広げることが可能になるんです。さらにiOSにおいてもAndroidと同様に利用することができ、iPhone向けアプリにおいてもTensorFlow(テンソルフロー)の学習結果を使うことができます。

そして何よりも助かるのが、このTensorFlow lite(テンソルフロー ライト)にはデモ用の学習データが配布されているので、Androidアプリを作った経験のある人であれば簡単に画像認識アプリを作ることができる点です。これによってTensorFlow(テンソルフロー)を簡単に体験できるのでぜひ試してみてください。

1つ注意が必要だとしたら、TensorFlow lite(テンソルフロー ライト)は機械学習を行うためではなく、機械学習を行った結果として得られた学習済みモデルを、スマートフォンなどの機器で利用するためのものであるということかもしれません。機械学習にはあくまでTensorFlow(テンソルフロー)を使い、TensorFlow lite(テンソルフロー ライト)は学習結果を利用するものであると覚えておくとよいでしょう。

TensorFlow(テンソルフロー)はグラフィックボードを使った解析を簡単に行える

グラフィックのイメージ

TensorFlow(テンソルフロー)はCPUだけでなく、グラフィックボードを使って機械学習を行うことができます。機械学習ライブラリによってはCPUによる機械学習を行う場合と、グラフィックボードによって機械学習を行う場合で異なる手法を使わなくてはならないものもあるでしょう。しかしTensorFlow(テンソルフロー)ではグラフィックボードを使う場合にもそのまま利用できるので、CPUで軽くテストを行って問題がなければ、グラフィックボードを使って本格的に機械学習を行うといった方法が使えます。

なぜCPUでなくグラフィックボードをつかって機械学習を行うかというと、CPUは正確な計算を行うことは得意ですが、グラフィックボードのように多くの計算を同時に行う用途には向いていないからです。

異なる手法を使わなくてはいけない場合には大きな手間がかかりますし、何度も訂正をした場合には大変な労力がかかってしまいますが、TensorFlow(テンソルフロー)では修正を繰り返し行っても手間は最小限に抑えることができます。

TensorFlow(テンソルフロー)はオープンソースで無料

オープンソースのイメージ

TensorFlow(テンソルフロー)の大きな特徴の一つに、オープンソースということがあります。オープンソースはソースコードが公開されており、利用規約に従っている限り無料で自由に利用ができるものを指します。

また、ソースコードが公開されているので内部でどの様な処理を行うかがわかり、安心して利用できるのもメリットの1つでしょう。なぜなら内部に何か問題点や悪意のあるプログラムがあれば発見することができ、多くの人の意見によって改善されていくと考えられるからです。

 

さて、今回はTensorFlow(テンソルフロー)についてお伝えしました。TensorFlow(テンソルフロー)はGoogleの開発したオープンソースでだれでも使うことができ、その学習結果を簡単にAndroidやiOS向けのアプリに利用できる、とても便利な機械学習ライブラリです。さらに様々な機器で利用できるだけでなく、CPUで利用していたモデルそのままにグラフィックボードを利用した機械学習にも対応しています。

一般的に機械学習に利用されているPythonからそのまま利用できることも大きなメリットと言えるでしょう。そして今後はIoTがどんどん広がっていくと考えられているので、TensorFlow(テンソルフロー)がIoT機器にも対応している事も大きな利点の一つですよね。

皆さんもこれからより多くの場所で使われるようになるであろうTensorFlow(テンソルフロー)を用いた機械学習について学び、ぜひ開発を行ってみましょう。

コメントをどうぞ

トップへ戻る
タイトルとURLをコピーしました