Entendendo a otimização do modelo

Introdução a Deep Learning em Python

Dan Becker

Data Scientist and contributor to Keras and TensorFlow libraries

Por que otimizar é difícil

  • Otimizar milhares de parâmetros ao mesmo tempo, com relações complexas
  • Atualizações podem não melhorar o modelo de forma relevante
  • Atualizações muito pequenas (taxa de aprendizado baixa) ou muito grandes (taxa alta)
Introdução a Deep Learning em Python

Descida do gradiente estocástica

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)
Introdução a Deep Learning em Python

O problema do neurônio morto

ch4_1.012.png

Introdução a Deep Learning em Python

Gradientes desaparecendo

ch4_1.014.png

Introdução a Deep Learning em Python

Gradientes desaparecendo

  • Acontece quando muitas camadas têm inclinações muito pequenas (ex.: por estarem na parte plana da curva tanh)
  • Em redes profundas, as atualizações do backprop ficam próximas de 0
Introdução a Deep Learning em Python

Vamos praticar!

Introdução a Deep Learning em Python

Preparing Video For Download...