Att förstå modelloptimering

Introduktion till djupinlärning i Python

Dan Becker

Data Scientist and contributor to Keras and TensorFlow libraries

Varför optimering är svårt

  • Optimerar tusentals parametrar med komplexa samband samtidigt
  • Uppdateringar förbättrar inte alltid modellen meningsfullt
  • Uppdateringar för små (låg inlärningshastighet) eller för stora (hög inlärningshastighet)
Introduktion till djupinlärning i Python

Stokastisk gradientnedstigning

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)
Introduktion till djupinlärning i Python

Problemet med döende neuroner

ch4_1.012.png

Introduktion till djupinlärning i Python

Försvinnande gradienter

ch4_1.014.png

Introduktion till djupinlärning i Python

Försvinnande gradienter

  • Uppstår när många lager har mycket små lutningar (t.ex. på den platta delen av tanh-kurvan)
  • I djupa nätverk hamnar backprop-uppdateringar nära 0
Introduktion till djupinlärning i Python

Nu kör vi en övning!

Introduktion till djupinlärning i Python

Preparing Video For Download...