モデル最適化を理解する

Pythonで学ぶDeep Learning入門

Dan Becker

Data Scientist and contributor to Keras and TensorFlow libraries

最適化が難しい理由

  • 複雑に関連する多数(数千)のパラメータを同時最適化
  • 更新してもモデルが十分に改善しないことがある
  • 学習率が低いと更新が小さすぎ,高いと大きすぎる
Pythonで学ぶDeep Learning入門

確率的勾配降下法

def get_new_model(input_shape = input_shape):
    model = Sequential()
    model.add(Dense(100, activation='relu', input_shape = input_shape))
    model.add(Dense(100, activation='relu'))
    model.add(Dense(2, activation='softmax'))
    return(model)

lr_to_test = [.000001, 0.01, 1]

# Loop over learning rates
for lr in lr_to_test:
   model = get_new_model()
   my_optimizer = SGD(lr=lr)
   model.compile(optimizer = my_optimizer, loss = 'categorical_crossentropy')
   model.fit(predictors, target)
Pythonで学ぶDeep Learning入門

死んだニューロン問題

ch4_1.012.png

Pythonで学ぶDeep Learning入門

勾配消失

ch4_1.014.png

Pythonで学ぶDeep Learning入門

勾配消失

  • 多くの層で勾配(傾き)が極小(例:tanhの平坦部)になると発生
  • 深いネットワークでは,逆伝播の更新がほぼ0になる
Pythonで学ぶDeep Learning入門

演習に進みましょう!

Pythonで学ぶDeep Learning入門

Preparing Video For Download...