Оптимизация модели

Введение в глубокое обучение на Python

Dan Becker

Data Scientist and contributor to Keras and TensorFlow libraries

Почему оптимизация сложна

  • Одновременная оптимизация тысяч параметров со сложными взаимосвязями
  • Обновления могут не улучшать модель существенно
  • Обновления слишком малы (при низкой скорости обучения) или слишком велики (при высокой)
Введение в глубокое обучение на Python

Стохастический градиентный спуск

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

Проблема «умирающих» нейронов

ch4_1.012.png

Введение в глубокое обучение на Python

Затухающие градиенты

ch4_1.014.png

Введение в глубокое обучение на Python

Затухающие градиенты

  • Возникает, когда многие слои имеют очень малые наклоны (например, на пологом участке кривой tanh)
  • В глубоких сетях обновления при обратном распространении были близки к 0
Введение в глубокое обучение на Python

Давайте потренируемся!

Введение в глубокое обучение на Python

Preparing Video For Download...