0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ディープラーニング を使ってみた〜1日目〜

Last updated at Posted at 2018-05-12

今回から、Pythonを使ってディープラーニングについて書いていこうと思います。

初日の今回は、MNISTデータについて、隠れ層が一つの三層のネットワークを作って、設定方法による性能の差について検証して見ました。

まず、モデルはkerasを使って書く事とします。
今回の検証内容は、隠れ層のユニット数と性能の差について確認してみたいと思います。
ユニット数は次の条件で検証してみようと思います。
$$\rm{Unit}_{num}=2^{i}\ \ \ (i=0,\cdot\cdot\cdot,10)$$
ソースコードは以下の通りです。
なお、条件はこんな感じです。

  • optimierはSGDを使用
  • バッチサイズは128、エポックは100回、validationはなし
  • 損失関数はCategorical Cross Entropy
MLP_effect_of_middle.py
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.datasets import mnist
from keras.utils import np_utils

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(60000, 784).astype(np.float32)
x_test = x_test.reshape(10000, 784).astype(np.float32)
x_train /= 255
x_test /= 255
y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)


x = np.arange(11)
y = 2**x
accuracy = []

for middle_num in y:
    model = Sequential()
    model.add(Dense(middle_num, input_shape=(784,)))
    model.add(Activation("relu"))
    model.add(Dense(10))
    model.add(Activation("softmax"))
    model.compile(loss="categorical_crossentropy", optimizer="sgd", metrics=["accuracy"])
    history = model.fit(x_train, y_train, epochs=100, batch_size=128, verbose=1)
    score = model.evaluate(x_test, y_test, verbose=1)
    accuracy.append(score[1])

実行結果は次のようになりました。

Unit数 精度[%]
1 36.43
2 66.7
4 87.16
8 92.39
16 94.67
32 95.81
64 96.4
128 97.1
256 97.19
512 97.26
1024 97.39
Unit数が比較的小さい場合、Unit数の増加に伴って精度が大きく改善されている事が確認できますが、比較的大きくなった場合、精度の向上があまり確認されませんでした。
さまざまな文献で、Unit数や層数をただ闇雲に増やしても精度の改善につながる保証はないと報告されていますが、今回の実験で確認できました。実際にディープラーニングモデルを構成する場合、Unit数だけでなく層数や活性化関数をはじめとし、さまざまな設計要素があるため、ネットワークモデルの検証要素は多数あります。そのため、今後はそれらの要素についても考えてみたいと思います。
次回は、Unit数と層数の関係性について検証してみたいと思います。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?