CommencerCommencez gratuitement

Lutter contre le surapprentissage avec le dropout

Un problème fréquent avec les réseaux de neurones est leur tendance au surapprentissage. Cela signifie que la métrique de score, comme R\(^2\) ou l'accuracy, est élevée sur l'ensemble d'entraînement, mais faible sur les ensembles de test et de validation ; le modèle s'ajuste alors au bruit présent dans les données d'entraînement.

Pour prévenir le surapprentissage, on peut utiliser le dropout. Cette technique désactive aléatoirement certains neurones pendant l'entraînement, ce qui aide à éviter que le réseau ne s'adapte au bruit. keras propose une couche Dropout pour cela. Il faut définir le taux de dropout, c'est-à-dire la fraction de connexions désactivées pendant l'entraînement. Ce taux se règle avec une valeur décimale entre 0 et 1 dans la couche Dropout().

Pour ce modèle, nous allons revenir à la fonction de perte « mean squared error ».

Cet exercice fait partie du cours

<cours>Machine Learning pour la finance en Python</cours>
Voir le cours

Instructions de l’exercice

  • Ajoutez une couche de dropout (Dropout()) après la première couche Dense du modèle, avec un taux de 20 % (0,2).
  • Utilisez l'optimiseur adam et la fonction de perte mse lors de la compilation du modèle avec .compile().
  • Entraînez le modèle sur scaled_train_features et train_targets pendant 25 époques.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

from keras.layers import Dropout

# Create model with dropout
model_3 = Sequential()
model_3.add(Dense(100, input_dim=scaled_train_features.shape[1], activation='relu'))
model_3.add(____)
model_3.add(Dense(20, activation='relu'))
model_3.add(Dense(1, activation='linear'))

# Fit model with mean squared error loss function
model_3.compile(optimizer=____, loss=____)
history = model_3.fit(____, ____, epochs=____)
plt.plot(history.history['loss'])
plt.title('loss:' + str(round(history.history['loss'][-1], 6)))
plt.show()
Modifier et exécuter le code