Capire l’ottimizzazione del modello

Introduzione al Deep Learning in Python

Dan Becker

Data Scientist and contributor to Keras and TensorFlow libraries

Perché l’ottimizzazione è difficile

  • Ottimizzare migliaia di parametri con relazioni complesse
  • Gli aggiornamenti possono non migliorare davvero il modello
  • Aggiornamenti troppo piccoli (learning rate basso) o troppo grandi (learning rate alto)
Introduzione al Deep Learning in Python

Stochastic gradient descent

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)
Introduzione al Deep Learning in Python

Il problema del neurone morente

Problema dei neuroni “morti”

Introduzione al Deep Learning in Python

Gradienti evanescenti

Gradienti evanescenti

Introduzione al Deep Learning in Python

Gradienti evanescenti

  • Succede quando molti strati hanno pendenze molto piccole (es. nella parte piatta della curva tanh)
  • Nelle reti profonde, gli aggiornamenti del backprop sono quasi 0
Introduzione al Deep Learning in Python

Passiamo alla pratica !

Introduzione al Deep Learning in Python

Preparing Video For Download...