Pas encore de compte ?
Dans l'apprentissage par transfert, la connaissance d'un modèle d'apprentissage automatique déjà formé est appliquée à un problème différent mais connexe.
Par exemple, si vous avez formé un classificateur simple pour prédire si une image contient une paire de chaussure, vous pouvez utiliser les connaissances que le modèle a acquises au cours de sa formation pour reconnaître d'autres objets comme des gants.
Avec l'apprentissage par transfert, nous essayons essentiellement d'exploiter ce qui a été appris dans une tâche pour améliorer la généralisation dans une autre.
Nous transférons les poids qu'un réseau a appris à la "tâche A" vers une nouvelle "tâche B".
L'idée générale est d'utiliser les connaissances qu'un modèle a apprises d'une tâche avec beaucoup de données d'entraînement étiquetées disponibles dans une nouvelle tâche qui n'a pas beaucoup de données.
Au lieu de commencer le processus d'apprentissage à partir de zéro, nous commençons avec des modèles appris en résolvant une tâche connexe.
L'apprentissage par transfert est principalement utilisé dans la vision par ordinateur et les tâches de traitement du langage naturel.
L'apprentissage est considéré comme une "méthodologie de conception" dans le domaine de l'apprentissage.
L'apprentissage par transfert est devenu très populaire en combinaison avec les réseaux de neurones qui nécessitent d'énormes quantités de données et de puissance de calcul.
Comment fonctionne l'apprentissage par transfert ?
Dans l'apprentissage par transfert, les couches précoces et intermédiaires sont utilisées et nous ne réentraînons que les dernières couches.
L'apprentissage par transfert aide à tirer parti des données étiquetées de la tâche sur laquelle il a été initialement formé.
Reprenons l'exemple d'un modèle entraîné à reconnaître une paire de chaussure sur une image, qui servira à identifier des gants.
Dans les couches précédentes, le modèle a appris à reconnaître les objets, c'est pourquoi nous ne recyclerons que les dernières couches afin qu'il apprenne ce qui sépare les gants des autres objets.
Dans l'apprentissage par transfert, nous essayons de transférer autant de connaissances que possible de la tâche précédente sur laquelle le modèle a été formé à la nouvelle tâche à accomplir.
Pourquoi utiliser l'apprentissage par transfert ?
Les principaux avantages de l'apprentissage par transfert sont le gain de temps de formation ainsi que de meilleures performances des réseaux de neurones.
Ennormement de données sont nécessaires pour former un réseau de neurones à partir de zéro, mais l'accès à ces données n'est pas toujours disponible et c'est là que l'apprentissage par transfert est utile.
Avec l'apprentissage par transfert, un modèle d'apprentissage automatique solide peut être construit avec relativement peu de données d'entraînement, car le modèle est déjà pré-entraîné.
Ceci est particulièrement utile dans le traitement du langage naturel, car la plupart du temps, des connaissances spécialisées sont nécessaires pour créer de grands ensembles de données étiquetées.
De plus, le temps de formation est réduit car il peut parfois prendre des jours voire des semaines pour former un réseau de neurones profonds à partir de zéro sur une tâche complexe.
Apprentissage par transfert avec des modèles pré-formés.
Testé sous Anaconda et Python 3.7
# Transfer Learning with pre-trained models import numpy as np from matplotlib import pyplot as plt import keras from keras.preprocessing import image from keras.applications.inception_v3 import preprocess_input, decode_predictions model = keras.applications.inception_v3.InceptionV3() img = image.load_img("lionNN.jpg", target_size=(299, 299)) plt.imshow(img) plt.axis('off') plt.title('Image') plt.show() # Converting to an array and changing the dimension: x = image.img_to_array(img) print(x.shape) x = np.expand_dims(x, axis=0) print(x.shape) # Preprocessing and making predictions x = preprocess_input(x) predictions = model.predict(x) predicted_classes = decode_predictions(predictions, top=9) for imagenet_id, name, likelihood in predicted_classes[0]: print(name,':', likelihood)
deep-learning - GitHub
Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.5/inception_v3_weights_tf_dim_ordering_tf_kernels.h5
96116736/96112376 [==============================] - 94s 1us/step02656/96112376 [===>..........................] - ETA: 1:22
(299, 299, 3)
(1, 299, 299, 3)
lion : 0.9088951
collie : 0.0037420783
chow : 0.0013897753
leopard : 0.0013692144
stopwatch : 0.0009615984
cheetah : 0.00087667163
Arabian_camel : 0.00067167304
tiger : 0.00063297554
hyena : 0.000616662
Bienvenu, je m’appelle Eric Soupet et je suis l'administrateur du site elodees.com. elodees.com est un état de l'art de l'Intelligence Artificielle et se veut collaboratif, vous pouvez dès à présent proposer du contenu tels que des articles, des événements, des tutoriels, ... alors n'hésitez pas !
Crédit des images de la plate-forme : Pixabay - Pixabay License | Pexels - Pexels License