7層のネットワークを動かす 3

7層のネットワークを動かす 2の続きです。
ハイパーパラメーターを変更して動作させた結果です。

環境は、Mac mini (CPU 2.8GHz / メモリ 16GB / SSD / (GPU Intel Iris 1536MB))です。
処理はCPUで行われます。

実行結果 (Adam + ハイパーパラメーター変更)

ハイパーパラメーターlr(learning rate)を変更して試行を繰り返します。
train.pyで本の通りにlearning rateを変更します。
入力が56×56の、犬と猫の判定です。

train.pyを一時的に下記に書き換えます。値の範囲を広げてみます。

simple/train.py

# LEARNING_RATE = 0.001
LEARNING_RATE = 10 ** np.random.uniform(-7, -1)

learning_graph_801
learning rate : 0.0014189261555348238

learning_graph_802
learning rate : 0.0003352515060802756

learning_graph_803
learning rate : 0.0013213253219477798

learning_graph_804
learning rate : 0.0004197883160590073

learning_graph_805
learning rate : 2.7583987620149927e-05

learning_graph_806
learning rate : 0.0020328083711183068

learning_graph_807
learning rate : 1.8623020439888615e-07

learning_graph_808
learning rate : 1.3201611375619275e-05

最後の値を使うことで精度を右肩上がりにできそうです。

実行結果 (AdaGrad + ハイパーパラメーター変更)

AdaGradもハイパーパラメーターを変更して試行を繰り返します。
入力が56×56の、犬と猫の判定です。

train.pyを一時的に下記に書き換えます。

simple/train.py

# LEARNING_RATE = 0.001
LEARNING_RATE = 10 ** np.random.uniform(-6, -2)

learning_graph_701
learning rate : 0.0035263197263801075

learning_graph_702
learning rate : 1.7913708443245988e-05

learning_graph_703
learning rate : 0.0008859063677039294

learning_graph_704
learning rate : 1.6416725596884053e-05

learning_graph_705
learning rate : 5.4279648020312966e-06

learning_graph_706
learning rate : 0.0002450075347311236

learning_graph_707
learning rate : 0.00010860887893701737

最後の値を使うことで精度を右肩上がりにできそうです。

まとめ

  • ハイパーパラメーターの変更で、精度の高い学習になることも、学習が進まないこともある
  • learning rateは、大きすぎても、小さすぎても、だめ
  • 7層であれば、Mac miniでも頑張れる

参考

ゼロから作るDeep Learning
deep-learning-from-scratch





«       »