Comment modifier le taux d’apprentissage de TensorFlow

Une bibliothèque logicielle open-source pour l’intelligence artificielle et l’apprentissage machine s’appelle TensorFlow. Bien qu’elle puisse être appliquée à de nombreuses tâches, le training et l’inférence de réseaux neuronaux profonds sont particulièrement mis en avant.

TensorFlow a été créé par Google Brain, la division de recherche en intelligence artificielle de l’entreprise. Depuis sa première mise en ligne en 2015, elle s’est hissée au rang des bibliothèques d’apprentissage machine les plus largement utilisées dans le monde.

Python, C++ et Java sont quelques-uns des langages de programmation avec lesquels TensorFlow est accessible. De plus, elle est compatible avec plusieurs systèmes d’exploitation, notamment Linux, macOS, Windows, Android et iOS.

TensorFlow est un outil efficace pour l’apprentissage machine et l’intelligence artificielle. Elle offre de nombreuses fonctionnalités et est facile à utiliser. TensorFlow est un excellent point de départ si l’apprentissage machine vous intéresse.

TensorFlow est une bibliothèque flexible pouvant être appliquée à de nombreux types de tâches, telles que :

  • Classification d’images
  • Traitement du langage naturel
  • Reconnaissance vocale
  • Systèmes de recommandation
  • Robotique
  • Imagerie médicale
  • Prévision financière

Le taux d’apprentissage dans TensorFlow est un hyperparamètre qui régule la fréquence à laquelle les poids du modèle sont modifiés pendant la formation. Le meilleur nombre variera en fonction des particularités du problème à résoudre, de l’architecture du modèle et de la taille du jeu de données. Il est souvent choisi comme une petite valeur positive, telle que 0,001 ou 0,01, mais ce n’est pas toujours le cas.

Comment modifier le taux d’apprentissage de TensorFlow

Vous pouvez modifier le taux d’apprentissage dans TensorFlow à l’aide de diverses méthodes et stratégies. Voici trois approches courantes:

Assignement manuel du taux d’apprentissage

En entrant manuellement une nouvelle valeur dans la variable du taux d’apprentissage, celui-ci peut être modifié de la manière la plus simple possible. Cette méthode spécifie le taux d’apprentissage comme une variable TensorFlow ou une variable Python, et sa valeur est mise à jour pendant la formation. Par exemple:

Python

 

import tensorflow as tf

# Définir la variable du taux d'apprentissage
learning_rate = tf.Variable(0.001, trainable=False)

# Pendant la formation, mettre à jour le taux d'apprentissage si nécessaire
# Par exemple, définir un nouveau taux d'apprentissage de 0,0001
tf.keras.backend.set_value(learning_rate, 0.0001)

Le code ci-dessus explique comment entrer manuellement une nouvelle valeur dans la variable du taux d’apprentissage de TensorFlow pour modifier le taux d’apprentissage. Les étapes sont répertoriées ci-dessous:

Définir la variable pour le taux d’apprentissage:

Python

 

learning_rate = tf.Variable(0.001, trainable=False)

Cette ligne crée une variable TensorFlow appelée learning_rate et l’initialise avec une valeur initiale de 0,001. L’argument trainable=False garantit que la variable du taux d’apprentissage n’est pas mise à jour pendant la formation.

Mettre à jour le taux d’apprentissage si nécessaire:

Python

 

tf.keras.backend.set_value(learning_rate, 0.0001)

Dans cet exemple, la fonction set_value de tf.keras.backend est utilisée pour mettre à jour la valeur de la variable taux d’apprentissage. Le premier argument est la variable à mettre à jour (learning_rate), et le second argument est la nouvelle valeur du taux d’apprentissage (0.0001 dans ce cas).

Vous pouvez réguler quand et comment le taux d’apprentissage change en mettant à jour manuellement la variable taux d’apprentissage tout au long de la formation. Vous pouvez expérimenter avec différentes configurations, changer le taux d’apprentissage en fonction de circonstances spécifiques, ou même créer votre propre plan de taux d’apprentissage.

Dans cette méthode, vous avez un contrôle total sur le taux d’apprentissage, mais vous devez le modifier manuellement selon vos besoins.

Plans de Taux d’Apprentissage

Vous pouvez modifier systématiquement le taux d’apprentissage pendant la formation en utilisant des plans de taux d’apprentissage. Plusieurs plans de taux d’apprentissage intégrés sont disponibles dans TensorFlow, notamment :

tf.keras.optimizers.schedules.ExponentialDecay, tf.keras.optimizers.schedules.PiecewiseConstantDecay, ou tf.keras.optimizers.schedules.CosineDecay. Ces horaires modifient la vitesse d’apprentissage selon des règles prédéfinies. Par exemple :

Python

 

import tensorflow as tf

# Définir un plan de taux d'apprentissage
learning_rate_schedule = tf.keras.optimizers.schedules.ExponentialDecay(
    initial_learning_rate=0.001,
    decay_steps=10000,
    decay_rate=0.96
)

# Créer un optimiseur avec le plan de taux d'apprentissage
optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate_schedule)

Le fragment de code ci-dessus illustre comment utiliser le plan de taux d’apprentissage ExponentialDecay dans TensorFlow. Voici une explication de ce que fait chaque paramètre :

  • initial_learning_rate: Le taux d’apprentissage initial au début de la formation.
  • decay_steps: Le nombre de pas après lesquels le taux d’apprentissage diminuera.
  • decay_rate: Le taux auquel le taux d’apprentissage diminuera. Par exemple, si decay_rate est défini sur 0,96, le taux d’apprentissage sera multiplié par 0,96 pour chaque decay_steps étape.

Pour créer un optimiseur avec le calendrier du taux d’apprentissage, vous devez transmettre l’objet learning_rate_schedule en tant que paramètre learning_rate à l’optimiseur. Dans votre code, vous utilisez l’optimiseur Adam, mais vous pouvez également utiliser ce calendrier de taux d’apprentissage avec d’autres optimiseurs.

En utilisant le calendrier de taux d’apprentissage ExponentialDecay, le taux d’apprentissage diminuera progressivement au fil du temps, permettant à l’ensemble du modèle de converger plus efficacement pendant l’entraînement. Ajustez les valeurs de initial_learning_rate, decay_steps et decay_rate en fonction de vos besoins spécifiques et des caractéristiques de vos données d’entraînement.

Cette méthode élimine la nécessité d’une intervention manuelle en ajustant automatiquement le taux d’apprentissage en fonction du calendrier défini.

Callbacks

TensorFlow fournit également un mécanisme de rappel qui vous permet de modifier dynamiquement le taux d’apprentissage en fonction de certaines conditions. Par exemple, vous pouvez utiliser le rappel tf.keras.callbacks.LearningRateScheduler pour définir un calendrier de taux d’apprentissage personnalisé ou le rappel tf.keras.callbacks.ReduceLROnPlateau pour réduire le taux d’apprentissage lorsque la perte de validation atteint un plateau. Voici un exemple :

Python

 

import tensorflow as tf

# Définir un rappel pour modifier dynamiquement le taux d'apprentissage
lr_callback = tf.keras.callbacks.ReduceLROnPlateau(
    monitor='val_loss',
    factor=0.1,
    patience=5,
    min_lr=0.0001
)

# Pendant l'entraînement du modèle, passer le rappel à la fonction fit()
model.fit(
    x_train, y_train,
    validation_data=(x_val, y_val),
    callbacks=[lr_callback]
)

Le code ci-dessus montre comment utiliser le rappel ReduceLROnPlateau pour modifier dynamiquement le taux d’apprentissage pendant l’entraînement du modèle. Voici une explication de ce que fait chaque paramètre :

  • monitor : La métrique à surveiller. Dans ce cas, elle est définie sur val_loss,’ ce qui signifie que le rappel surveillera la perte de validation.
  • factor : Le facteur entraînant une diminution du taux d’apprentissage. Si la condition fournie est satisfaite, par exemple, si le facteur est réglé sur 0,1, le taux d’apprentissage sera multiplié par 0,1.
  • patience : Le nombre d’époques sans amélioration, après lequel le taux d’apprentissage sera réduit. Si la perte de validation ne s’améliore pas pendant patience nombre d’époques, le taux d’apprentissage sera diminué.
  • min_lr : La valeur minimale à laquelle le taux d’apprentissage peut être réduit. Une fois que le taux d’apprentissage atteint cette valeur minimale, il ne sera plus diminué.

Pour utiliser ce rappel, vous le passerez en paramètre à la fonction fit() lors de l’entraînement de votre modèle. Assurez-vous de remplacer x_train, y_train, x_val, et y_val par vos données d’entraînement et de validation réelles.

Python

 

model.fit(
    x_train, y_train,
    validation_data=(x_val, y_val),
    callbacks=[lr_callback]
)

Lors de l’entraînement, le rappel ReduceLROnPlateau surveillera la perte de validation, et si elle ne s’améliore pas pendant patience nombre d’époques, le taux d’apprentissage sera réduit du facteur spécifié. Cela permet une ajustement adaptatif du taux d’apprentissage en fonction des performances du modèle pendant l’entraînement.

Avec les rappels, vous disposez d’une liberté accrue pour modifier le taux d’apprentissage en réponse à des circonstances ou événements particuliers pendant l’entraînement.

Voici quelques moyens courants de modifier le taux d’apprentissage de TensorFlow. La méthode que vous utilisez dépendra des exigences et des cas d’utilisation que vous avez.

Conclusion

Le meilleur calendrier de taux d’apprentissage pour votre modèle dépendra des données et de l’architecture du modèle. Vous pouvez expérimenter avec différents calendriers pour trouver celui qui convient le mieux à votre modèle.

Source:
https://dzone.com/articles/how-to-change-the-learning-rate-of-tensorflow