顔認識や自動運転、メールのスパムフィルタなど、世の中ではすでにたくさんの機械学習が活用されていますよね。そんな機械学習の火付け役となったのがディープラーニングです。
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を活用事例としては、消費者に合わせた広告の表示、MRI画像の自動診断、衛星画像からのデータ抽出、自然言語処理など様々な分野にわたります。
機械学習は画像認識との相性がよいので、画像認識は最もTensorFlowが活用されている項目の1つです。画像はピクセルと呼ばれる色の粒がたくさん集まってできており、ピクセルはRGBを示す3つの数値から成るベクトルです。つまり画像はベクトルの集まりなので、ベクトル計算を基礎とする機械学習との相性が良いわけです。
TensorFlowが適用できる事例を大まかにまとめると、「経験と勘があるヒトであれば、結果がおよそ予測できること」です。具体的にいうと、医者がMRI画像を見ればどんな病気にかかっているかを予測できますし、競馬のプロは過去の経験からどの馬が勝つかおよそ予測できますよね。このように、今までプログラミングに盛り込めなかった経験や勘を盛り込めるようにしたのがTensorFlowの大きな功績です。
実際にTensorFlowをインストールしてみよう!その方法とは
ではWindows10にTensorflowをインストールするまでの手順を解説します。なお、方法に関してはMacやLinuxでもほとんど同じです。
まずは、Pythonを公式ページからインストールしましょう。ここで注意ですが、Python 3.7.Xを選択するようにしてください。これは、TensorFlowがPython 3.5 から3.7 しか対応していない(’20/4現在)ためです。
さて、Pythonのインストールが終わったら、コマンドプロンプトを開き、TensorFlowインストールのために次のコードを実行しましょう。
これで、TensorFlowのインストールは完了です。最新のTensorFlowがパソコンに取り込まれ、Python内で使用することができるようになりました。
では次に、TensorFlowでディープラーニングを行う方法をお伝えします。
TensorFlowを使ってディープラーニングをやるときの方法
まずは、TensorFlow入門としてTensorFlow公式サイトの初心者用チュートリアルを実行しましょう。ニューラルネットの構築、学習、そして学習結果表示までの道のりが理解できるでしょう。
チュートリアルのコードは下記のようなものです。
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)
###############
上記のコードではまず、各種ライブラリのインポートから始まります。インポートというのは、インストールしたライブラリの内、今回のプログラムではこのライブラリを使いますよという宣言です。
今回は手書きの数字の認識を行うので、mnistという変数に、あらかじめ用意された手書きの数字画像を代入します。さらにこの画像を教師データ(x_train, y_train)と、学習結果の確認用データ(x_test, y_test)に分けています。
そして今回、最も難しいのがmodel の部分。しっかりと理解するためには、クラスとは何かを知ることが必要です。ここでは大雑把に、ディープラーニングの構造の設定をしているのだという程度に留めましょう。
modelの構造設定ではReLu関数やsoftmax関数を使うよう設定しているのだなと覚えておいてください。初心者のうちは、このレベルの理解で十分動作するプログラムが書けます。経験を積み、もっと機械学習の精度を上げたいと思ったとき、これらの関数について改めて調べましょう。
最後に、model.fitで教師データを用いた学習の実行、model.evaluateで学習結果の確認をしています。
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に入門しましょう!