テクノロジー

【入門者必見】深層学習ライブラリKerasの基本の使い方を解説

【入門者必見】深層学習ライブラリKerasの基本の使い方を解説

Kerasを使用して深層学習を試してみたいけど、肝心の機能や使い方が分からなくて困っているという方もいますよね。だからと難しい参考書を読んでみてもなかなか理解するのが難しいです。

しかし比較的簡単な構築と書きやすいコードで使えるKerasは深層学習の入門としてもオススメのライブラリ。そんなKerasは知識を付けておいて損はありません。

そこで今回は、Windows10の環境で構築から使ってみるまでの流れを手順とともに分かりやすく解説します。またKerasを使って何ができるかもお話しましょう。

まずは、Kerasの大まかな特徴と何ができるかについて解説します。Kerasについて更に知識を深めたい方、是非参考にしてください。

Kerasとは

Kerasとは

Kerasは、無料で使えるニューラルネットワークライブラリの1つです。

プログラミング未経験でも書きやすいコードや簡易化された構築から、より簡単に深層学習を行うことが出来ます。
TensorFlowやTheano、CNTKといった他のライブラリの上で動くのですが、今はTensorFlowとともに使うのが主流です。

Kerasを使うとできることとは

Kerasを使うとできることとは

Kerasについて理解したところで、実際何ができるようになるかについて触れていきましょう。

音声認識

音声を認識させることで、その内容を文字に起こしたり、特徴から誰の声かを判別したりすることが出来ます。

身近な所だと、Appleの「Siri」やGoogleの「Googleアシスタント」がそうです。

画像認識

画像について学習させることで、その特徴や法則性を見つけ出すことが可能です。画像を指定した特徴ごとに分ける分類、指定した物体を画像内から発見できる物体検出などを行うことができます。

こちらは、顔認証システムや製造業の不良品検知などに使われていますよね。

自然言語処理

自然言語処理では、私たちが日常的に話している言語を学ばせて処理を行います。
例えば、スマホやPCでは当たり前の入力文字の予測変換がありますよね。これらの自然言語処理は過去の入力履歴をもとに候補が提示されるのですが、AI(人工知能)に学習させることによって、使ったことのない単語でも候補として表示が可能なのです。

文章を最小の単位から理解し、意味までも解析することによって新たに候補を提示できる仕組みになっています。

Kerasと他のライブラリの違い

Kerasと他のライブラリの違い

次に、Kerasに他のライブラリとどんな違いがあるのかについて触れていきましょう。

Kerasと同じく、現代の深層学習でよく使用されるTensorflow、PyTorchをもとに比較していきます。

簡単なコード

冒頭でも述べた通り、Kerasは比較的簡単なコードで書かれています。TensorflowやPyTorchは多少のプログラミング能力を必要とするのに対して、Kerasはプログラミングの経験がなくてもコードを書くことが可能です。

深層学習への知識があまりなくても、使えるようになっています。

構築が簡易化されている

深層学習は、環境を構築する段階が大変で、気軽に取り組むには難しいのが現状です。

学び始める前に、環境構築で躓いてやめてしまうのでは本末転倒ですよね。Kerasはそういった構築の部分も簡易化されているため、初心者でも取り組むことが出来ます。

上で上げた2つの点から、Kerasは深層学習を学び始めるのに非常に適したライブラリだと言えるでしょう。

ここまででKerasの特徴とできることについて、何となく理解できたでしょうか。それではここからは、Kerasのインストールから実際に使ってみるまでの手順を、順に分かりやすく解説していきます。

Kerasのインストール方法

Kerasのインストール方法

Kerasを使用するためにPythonの環境が必要となります。

Anacondaを利用することで、Pythonの環境構築を簡単に済ませることができるため、こちらを使用して進めていきましょう。

1. Anacondaのインストーラをダウンロード

Anacondaからダウンロードします。

Windows、Mac、Linuxの中から選べるため、ご自身の環境に合わせて選択しましょう。

今回は「Windows 64-Bit Graphical Installer」で進めていきます。

2. Anacondaのインストーラを起動

手順1でダウンロードしたインストーラを起動します。3GBほどの空き容量が必要になるので、ドライブの空き容量をよく確認してください。

問題なければ、特に設定は変更せずそのまま進めましょう。

3. AnacondaPromptを起動

Anacondaでは、condaコマンドというものが使用できます。このcondaコマンドを使用して、実行環境の構築をしていきましょう。

まず、WindowsのメニューでAnaconda Promptと検索し、起動します。以降の手順に出るコマンドはAnaconda Promptで実行するコマンドです。

4. Python環境を準備

conda create -n keras35 python=3.6 anaconda

コマンドを入力し、Python環境の準備をします。

Pythonのバージョンは、Kerasが対応している中で最新の3.6を選択しています。

5. Keras35の環境を有効にする

conda activate keras35
先ほど作成したKeras35の環境を有効にします。

6. TensorFlowをインストール

pip install –ignore-installed –upgrade tensorflow
このコマンドで、TensorFlowをインストールできます。

-upgrade の部分にてTensorFlowの最新化を行っています。

7. Kerasをインストール

pip install keras
そしてKerasをインストールするためのコマンドを入力します。

ここまで入力すれば、Kerasのインストールが完了となります。

Kerasを簡単に使ってみよう

Kerasを簡単に使ってみよう

Kerasの環境構築が完了したところで、実際に少し使ってみましょう。

今回は、Anacondaをインストールした際に、一緒に入るJupyterを使用します。

インストール手順と同じく手順に沿って解説していきます。

1. Jupyterを起動

WindowsのメニューからAnaconda3(64-bit)→Jupyter Notebookという順で開くと、jupyterがブラウザで立ち上がります。

2. コード入力画面の表示

Jupyterの画面右上のNew→Python[default]の順でクリックして、コードを入力する画面を表示させます。

3.MNISTサンプルを実行

%matplotlib inline
import keras
from keras.datasets import mnist
import matplotlib.pyplot as plt

#データを読み込み、シャッフルして学習データと訓練データに分割
(x_train, y_train), (x_test, y_test) = mnist.load_data()

#MNISTデータを表示
fig = plt.figure(figsize=(9, 9))
fig.subplots_adjust(left=0, right=1, bottom=0, top=0.5, hspace=0.05, wspace=0.05)
for i in range(81):
ax = fig.add_subplot(9, 9, i + 1, xticks=[], yticks=[])
ax.imshow(x_train[i].reshape((28, 28)), cmap='gray')
上記は、入門用のサンプルとして利用されることの多い、アメリカ国立標準技術研究所(NIST)が用意した手書きの数字画像データ「MNISTデータ」を使用したコードです。
コードを入力欄にコピーし、Runボタンをクリックしてみましょう。実行が完了すると、MNISTデータが表示されます。

このデータを使って、次の手順から数字の画像を認識するプログラムを書いていきます。

4. データを変換

num_classes = 10
x_train = x_train.reshape(60000, 784)
x_test = x_test.reshape(10000, 784)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255

y_train = y_train.astype('int32')
y_test = y_test.astype('int32')
y_train = keras.utils.np_utils.to_categorical(y_train, num_classes)
y_test = keras.utils.np_utils.to_categorical(y_test, num_classes)

print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')
機械が計算できるように、データを変換します。「+」ボタンをクリックして同じように上のコードをコピーして実行しましょう。

5. モデルを定義

from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import RMSprop

model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(784,)))
model.add(Dropout(0.2))
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(10, activation='softmax'))

model.compile(loss='categorical_crossentropy',
optimizer=RMSprop(),
metrics=['accuracy'])

上記のコードで、モデルを定義しています。そして学習に関する設定などを行っていきます。

6. 学習を行う

batch_size = 128
epochs = 20
history = model.fit(x_train, y_train,
batch_size=batch_size, epochs=epochs,
verbose=1, validation_data=(x_test, y_test))

fitメソッドによって、学習を行わせます。epochsは、何回データを繰り返し学習させるかを表しています。

7. 正答率を確認する

#正答率
plt.plot(history.history['acc'])
plt.plot(history.history['val_acc'])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()

#損失関数
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()

ここまで実行すると、正答率が徐々に上がっていく過程が見られますよね。

1回ごとにデータを学習している証拠です。大体20エポックほどで正答率は上がらなくなります。

Kerasを使うときの注意点

Kerasを使うときの注意点

ここまでKerasを使ってみる方法について解説しましたが、Kerasについて1つ注意点があります。

それは、Kerasが他のライブラリと比べて処理速度が遅いという点です。
小規模のデータで深層学習を試すのには向いているのですが、データが大規模になってくると他のライブラリを使った方が良いパターンも出てきます。
しかし、小規模のデータであれば特に問題はなく、初心者が使うのに優れているという事実は変わりません。

深層学習に慣れてきて、大きいデータを使用したくなったときは他のライブラリを使用するなど、上手く使い分けていきましょう。

 

キーボード

ここまでKerasについて詳しく解説してきました。

今回お話してきた通り、Kerasは深層学習を試してみたい人に本当にオススメのライブラリ。他のライブラリを触ってみたり、プログラミングの経験がないから無理だと思っている方でも是非挑戦してみてください。

今私たちの生活の身近な部分にまでAI(人工知能)は浸透してきています。顔認証、自動予測変換、音声認識によるテキストへの変換機能なども全てAI(人工知能)です。

AI(人工知能)技術が急速に広がりを見せている今その知識を持っていることはきっとこの先自分の得になるでしょう。

AI(人工知能)の技術の一つである機械学習。その中でも更に注目を集めている深層学習。この深層学習の入門として最適なKerasを使って是非学びを深めていきましょう。そして自分の力でAI(人工知能)のシステムやアプリなどを作ることができるようになると良いですよね。

【お知らせ】

当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。

御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。

お多福ラボコーポレートサイトへのバナー

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