subtitles/fr/27_learning-rate-scheduling-with-tensorflow.srt (120 lines of code) (raw):
1
00:00:05,120 --> 00:00:11,440
Dans nos autres vidéos, nous avons parlé des principes de base pour finetuner un modèle de langage avec Tensorflow
2
00:00:11,440 --> 00:00:18,000
(et comme toujours, lorsque je fais référence à des vidéos, je les mets en lien ci-dessous). Pouvons-nous faire mieux quand même ? Voici donc
3
00:00:18,000 --> 00:00:23,040
le code de notre vidéo du finetuning du modèle, et pendant que cela tourne, nous pourrions certainement modifier
4
00:00:23,040 --> 00:00:29,040
quelques choses. Le taux d'apprentissage est de loin le plus important. Dans cette vidéo, nous expliquerons
5
00:00:29,040 --> 00:00:34,800
comment le modifier, ce qui rendra votre entraînement beaucoup plus systématiquement réussie. En fait,
6
00:00:36,080 --> 00:00:42,880
nous souhaitons modifier deux choses concernant le taux d'apprentissage par défaut d'Adam. Le premier est
7
00:00:42,880 --> 00:00:51,520
qu'il est bien trop élevé pour nos modèles - par défaut Adam utilise un taux d'apprentissage de 10^-3 (1 e moins 3),
8
00:00:51,520 --> 00:00:59,600
ce qui est très élevé pour l'entraînement des transformers. Nous allons commencer à 5 par 10^-5 (5 e moins 5),
9
00:00:59,600 --> 00:01:05,520
ce qui est 20 fois inférieur à la valeur par défaut. Et deuxièmement, nous ne voulons pas seulement un taux d'apprentissage
10
00:01:05,520 --> 00:01:10,960
constant : nous pouvons obtenir des performances encore meilleures si nous réduisons le taux d'apprentissage jusqu'à une valeur infime,
11
00:01:10,960 --> 00:01:17,760
ou même 0, au cours de l'entraînement. C'est ce que fait ce planificateur `PolynomialDecay`.
12
00:01:17,800 --> 00:01:23,880
Nous verrons à quoi cela ressemble dans une seconde. Mais d'abord nous devons spécifier au planificateur combien de
13
00:01:23,880 --> 00:01:25,120
temps l'entraînement va durer,
14
00:01:25,120 --> 00:01:29,040
pour qu'il décroisse à la bonne vitesse. C'est ce que fait ce code ici.
15
00:01:30,080 --> 00:01:35,280
Nous calculons le nombre de mini-batchs que le modèle va voir sur l'ensemble de son parcours d'entraînement,
16
00:01:35,280 --> 00:01:37,640
qui correspond à la taille de l'ensemble d'entraînement, divisé par batch_size pour obtenir le nombre debatchs
17
00:01:37,640 --> 00:01:42,080
par époque, puis multiplié par le nombre d'époques pour obtenir le nombre total
18
00:01:42,080 --> 00:01:47,680
debatchs sur l'ensemble de l'exécution de l'entraînement. Une fois que nous savons combien d'étapes de entraînement nous suivons,
19
00:01:47,680 --> 00:01:51,360
nous transmettons simplement toutes ces informations au planificateur et nous sommes prêts à commencer.
20
00:01:54,000 --> 00:01:57,360
À quoi ressemble le planificateur de décroissance polynomiale ?
21
00:01:57,360 --> 00:02:04,720
Bien, il ressemble à ceci : il commence à 5e-5, ce qui signifie 5 fois dix jusqu'au moins 5,
22
00:02:05,280 --> 00:02:11,120
puis diminue à un rythme constant jusqu'à qu'il atteigne 0 juste au moment même fin de entraînement.
23
00:02:05,280 --> 00:02:11,120
Je peux déjà vous entendre réagir. Oui, je sais, c'est en fait une décroissance constante ou linéaire.
24
00:02:11,120 --> 00:02:24,120
Je sais que le nom est « polynomial » et vous vous sentez trompés, on vous avez promis un polynôme et vous ne l'avez pas eu.
25
00:02:24,120 --> 00:02:34,120
Calmez-vous, c'est ok. Car bien sûr, les fonctions linéaires sont justes des cas particuliers avec un polynôme de premier ordre.
26
00:02:34,120 --> 00:02:40,120
Si vous modifier les options de cette classe, vous pouvez vraiment avoir un polynôme d'ordre supérieur pour votre décroissance.
27
00:02:40,120 --> 00:02:43,120
Mais ce planificateur linéaire va bien fonctionner pour nous pour le moment.
28
00:02:43,120 --> 00:02:47,120
Nous n'avons pas besoin de toutes ces astuces et gadgets.
29
00:02:49,840 --> 00:02:56,400
Revenons à comment utilisons-nous notre barème de taux d'apprentissage ? Facile, nous le passons simplement à Adam ! Vous remarquerez que la
30
00:02:56,400 --> 00:03:00,480
première fois que nous avons compilé le modèle, nous lui avons juste passé la chaîne « Adam » pour avoir notre optimiseur.
31
00:03:02,320 --> 00:03:07,760
Donc Keras reconnaît les noms des optimiseurs courants et des fonctions de perte si vous les transmettez sous forme de chaînes,
32
00:03:07,760 --> 00:03:12,320
ce qui vous fait gagner du temps si vous ne souhaitez que les paramètres par défaut. Mais nous sommes
33
00:03:12,320 --> 00:03:19,600
maintenant des apprenants en ML professionnels, avec notre propre planificateur de taux d'apprentissage, nous devons donc faire les choses correctement.
34
00:03:19,600 --> 00:03:26,080
Donc, d'abord, nous importons l'optimiseur, puis nous l'initialisons avec notre planificateur qui est passé comme argument `learning_rate` de cet optimiseur.
35
00:03:29,200 --> 00:03:34,720
Maintenant nous compilons le modèle à l'aide du nouvel optimiseur, et quelle que soit la fonction de perte que vous voulez - ce
36
00:03:34,720 --> 00:03:39,040
sera une `SparseCategoricalCrossentropy` si vous avez suivi la vidéo sur le finetuning.
37
00:03:39,680 --> 00:03:47,120
Et on est prêt à y aller. Maintenant, nous avons un modèle à hautes performances, prêt à l'emploi. Il ne reste plus qu'à adapter le modèle comme
38
00:03:47,120 --> 00:03:53,280
nous l'avons fait auparavant. N'oubliez pas que, comme nous avons compilé le modèle avec le nouvel optimiseur avec le nouveau
39
00:03:53,280 --> 00:03:58,800
planificateur de taux d'apprentissage, nous n'avons rien à changer ici. Nous appelons à nouveau `.fit`, avec exactement la
40
00:03:58,800 --> 00:04:04,320
même commande qu'auparavant, mais nous obtenons maintenant un bel entraînement avec une belle décroissance du taux d'apprentissage, partant de la bonne valeur et décroissant jusqu'à 0.