テクノロジー

機械学習をやる人におすすめ!ライブラリ「TensorFlow」とその活用方法【入門編】

機械学習をやる人は知っておくべき!ライブラリ「TensorFlow」とその活用方法

顔認識や自動運転、メールのスパムフィルタなど、世の中ではすでにたくさんの機械学習が活用されていますよね。そんな機械学習の火付け役となったのがディープラーニングです。

2017年にディープラーニングを用いた将棋ソフトPonanzaが日本のトップ棋士たちに次々と勝ったことで、ディープラーニングやAI(人工知能)という言葉が一般に広まりました。そんなディープラーニングをPythonで使えるようGoogleによって開発されたのがTensorflowで、今や世界中の人が機械学習の研究・業務・趣味など様々な用途で利用しています。

AI(人工知能)で話題のディープラーニングってなんかおもしろそう!とりあえず触ってみたい!そんなプログラム初心者も多くいますよね。そこで今回はTensorFlowを使ったディープラーニングによる画像認識や自然言語処理などができるよう、Pythonの機械学習ライブラリのTensorFlow入門について解説します。TensorFlowの導入方法から実行方法・注意点といった初心者にもわかりやすい内容なので、TensorFlowを活用するための最初のステップにしましょう。

TensorFlowとは

ライブラリのイメージ

TensorFlowは2017年にGoogleが公開したオープンソースのPythonライブラリで、ディープラーニングを使った機械学習ができることが特徴です。

ライブラリとはプログラム言語の拡張キットのようなもので、これをインストールすることで、標準では使えない機能を使用できるようになります。例えばTensorFlowをインストールすれば、機械学習用のデータ取り込み・学習モデル作成などの機能が追加されます。

オープンソースとは、プログラムの中身が全て公開されているプログラムのことです。世界中のプログラマーがプログラムの中身を確認できるため、プログラムの不具合を素早く見つけ修正することができます。同時に、プログラムが勝手に個人情報の収集などおかしな挙動をしていないか確認できるので、セキュリティの面でも信頼できるでしょう。

TensorFlowはもともとPythonの活用がメインののライブラリでしたが、2019年にGoogleからTensorFlow2が公開され、現在ではPythonの他にもC言語・JAVA・Goといった言語でも使用できます。

TensorFlowはもともと、Googleがより高精度な検索結果や翻訳結果を得るため、自社の業務用として開発していました。このため、IT業界の最先端を行くGoogleの技術が詰まっており、TensorFlowは趣味だけではなく実業務にも十分対応できる内容となっています。

TensorFlowが発表された当初は日本語の資料も少なく、難解な英文の資料しかありませんでした。しかし今や日本語の資料も十分に増え、TensorFlow入門者向けにわかりやすい解説もたくさんあり、TensorFlow入門の環境が整っています。例えば書籍にはサンプルコードが豊富なので、サンプルコードを書き写していくだけでも実力が付くに違いありません。

ぜひこの機会にTensorFlowに入門し、ディープラーニングの世界を覗いてみましょう。

TensorFlowを使うと、こんなことができる!

画像のイメージ

TensorFlowを活用事例としては、消費者に合わせた広告の表示、MRI画像の自動診断、衛星画像からのデータ抽出、自然言語処理など様々な分野にわたります。

機械学習は画像認識との相性がよいので、画像認識は最もTensorFlowが活用されている項目の1つです。画像はピクセルと呼ばれる色の粒がたくさん集まってできており、ピクセルはRGBを示す3つの数値から成るベクトルです。つまり画像はベクトルの集まりなので、ベクトル計算を基礎とする機械学習との相性が良いわけです。

たとえば顔認証では、人の顔画像からその人の特徴を見つけ、それが誰かを判断することができます。スマートフォンの画像が、写っている人によって自動的に分類されていてびっくりした人も多いですよね。TensorFlowを使うと、このような画像分類は簡単にできてしまいます。

TensorFlowが適用できる事例を大まかにまとめると、「経験と勘があるヒトであれば、結果がおよそ予測できること」です。具体的にいうと、医者がMRI画像を見ればどんな病気にかかっているかを予測できますし、競馬のプロは過去の経験からどの馬が勝つかおよそ予測できますよね。このように、今までプログラミングに盛り込めなかった経験や勘を盛り込めるようにしたのがTensorFlowの大きな功績です。

実際にTensorFlowをインストールしてみよう!その方法とは

パソコンのイメージ

ではWindows10にTensorflowをインストールするまでの手順を解説します。なお、方法に関してはMacやLinuxでもほとんど同じです。

まずは、Pythonを公式ページからインストールしましょう。ここで注意ですが、Python 3.7.Xを選択するようにしてください。これは、TensorFlowがPython 3.5 から3.7 しか対応していない(’20/4現在)ためです。

またPythonに限らず、プログラミング言語のバージョンを選択する際は、最新より少し古いバージョンを選択しましょう。各種ライブラリが最新バージョンに対応していないことも多く、ほとんどの場合、最新バージョンだからといって機能が特別多いわけでもありません。

さて、Pythonのインストールが終わったら、コマンドプロンプトを開き、TensorFlowインストールのために次のコードを実行しましょう。

pip install tensorflow

これで、TensorFlowのインストールは完了です。最新のTensorFlowがパソコンに取り込まれ、Python内で使用することができるようになりました。

では次に、TensorFlowでディープラーニングを行う方法をお伝えします。

TensorFlowを使ってディープラーニングをやるときの方法

数字のイメージ
まずは、TensorFlow入門としてTensorFlow公式サイトの初心者用チュートリアルを実行しましょう。ニューラルネットの構築、学習、そして学習結果表示までの道のりが理解できるでしょう。

チュートリアルのコードは下記のようなものです。

### mnist.py ###
from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation=’relu’),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=’softmax’)
])
model.compile(optimizer=’adam’,
loss=’sparse_categorical_crossentropy’,
metrics=[‘accuracy’])model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test, verbose=2)
###############

上記のコードではまず、各種ライブラリのインポートから始まります。インポートというのは、インストールしたライブラリの内、今回のプログラムではこのライブラリを使いますよという宣言です。

インストールしていないライブラリをインポートした場合はエラーとなりコードを実行できませんので注意しましょう。TensorFlowはtfとしてインポートするのが定石です。

今回は手書きの数字の認識を行うので、mnistという変数に、あらかじめ用意された手書きの数字画像を代入します。さらにこの画像を教師データ(x_train, y_train)と、学習結果の確認用データ(x_test, y_test)に分けています。

そして今回、最も難しいのがmodel の部分。しっかりと理解するためには、クラスとは何かを知ることが必要です。ここでは大雑把に、ディープラーニングの構造の設定をしているのだという程度に留めましょう。

機械学習は複雑な概念も出てくるので、コードを見ても何をしているかよくわからないことが多々ありますよね。TensorFlow入門途中で挫折してしまわないよう、TensorFlow入門者の内は、わからない部分にあまりこだわり過ぎないことが肝心です。

modelの構造設定ではReLu関数やsoftmax関数を使うよう設定しているのだなと覚えておいてください。初心者のうちは、このレベルの理解で十分動作するプログラムが書けます。経験を積み、もっと機械学習の精度を上げたいと思ったとき、これらの関数について改めて調べましょう。

最後に、model.fitで教師データを用いた学習の実行、model.evaluateで学習結果の確認をしています。

以上をまとめると、ディープラーニングはライブラリのインポート、学習用データの指定、model構造の設定、学習実行、学習結果の確認となります。

TensorFlowを使うときに気を付けたい点

計算のイメージ

TensorFlowを使うにあたって、計算量に気をつける必要があります。というのも、TensorFlowを活用したプログラミングコードは非常に短いものでしたが、裏では莫大な量の計算をしています。

例えば、ゲーム用などではない標準的なノートパソコンでTensorFlowを実行すると、計算終了までに数時間あるいは数日かかることもあるのだとか。

そのため可能であれば、高性能なCPUを搭載したパソコンを用意しましょう。また、TensorFlowはGPU計算にも対応しています。高性能なグラフィックボードを搭載したパソコンであれば、TensorFlowでの計算もあっという間に終わるに違いありません。

どうしてもノートパソコンでTensorFlowを実行したいという方には、Googleが開発したCoral USB Acceleratorの利用をオススメします。この商品は、TPUというディープラーニングに特化した演算装置が詰まっています。USBに挿すだけでディープラーニングでの推論が一気に高速化でき、実売価格も12000円程で、高性能なグラフィックボードなどと比べるとお求めやすくなっています。

ただし、Coral USB AcceleratorではTensorflow Liteのみ使用できるので、やはりデスクトップのパソコンを用意するのが無難でしょう。

まとめ

さて今回はTensorFlow入門について、以下のような内容を解説しました。

  • TensorFlowはGoogleが公開したPythonライブラリで、ディープラーニングを使った機械学習が特徴
  • 機械学習の基礎はベクトル計算であり、ベクトルの集合である画像との相性がよい
  • TensorFlowが適用できる事例は「経験と勘があるヒトであれば、結果がおよそ予測できること」が目安
  • コマンドプロンプトで「pip install tensorflow」と入力するとTensorFlowがインストールできる
  • ディープラーニングはライブラリのインポート、学習用データの指定、model構造の設定、学習実行、学習結果という流れでできる
  • ディープラーニングの計算量は莫大なため、高速な計算ができるPCが必要

Pythonを始める大きな理由の1つにディープラーニングの利用があります。TensorFlowはディープラーニングの最先端を行くライブラリで、TensorFlow入門者にもわかりやすい解説がそろっています。ぜひ、TensorFlowに入門しましょう!

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