Rozumienie optymalizacji modelu

Wprowadzenie do uczenia głębokiego w Pythonie

Dan Becker

Data Scientist and contributor to Keras and TensorFlow libraries

Dlaczego optymalizacja jest trudna

  • Jednoczesna optymalizacja tysięcy parametrów o złożonych zależnościach
  • Aktualizacje mogą nie poprawiać modelu w istotny sposób
  • Aktualizacje zbyt małe (niska wartość learning rate) lub zbyt duże (wysoka wartość learning rate)
Wprowadzenie do uczenia głębokiego w Pythonie

Stochastyczny spadek gradientu

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)
Wprowadzenie do uczenia głębokiego w Pythonie

Problem obumierającego neuronu

ch4_1.012.png

Wprowadzenie do uczenia głębokiego w Pythonie

Zanikające gradienty

ch4_1.014.png

Wprowadzenie do uczenia głębokiego w Pythonie

Zanikające gradienty

  • Występuje, gdy wiele warstw ma bardzo małe nachylenia (np. na płaskiej części krzywej tanh)
  • W głębokich sieciach aktualizacje wstecznej propagacji były bliskie 0
Wprowadzenie do uczenia głębokiego w Pythonie

Czas na ćwiczenia!

Wprowadzenie do uczenia głębokiego w Pythonie

Preparing Video For Download...