Résumé des optimiseurs Pytorch couramment utilisés

1. Le principe de la descente en pente

        Le but principal de la descente de gradient est de trouver la valeur minimale de la fonction objectif par itération, ou de converger vers la valeur minimale. L'exemple le plus couramment utilisé est la descente d'une montagne. Par exemple, chaque pas est une longueur de pas, et chaque fois que vous descendez, vous trouvez l'endroit le plus raide (ne considérez pas la situation de mort ...). En supposant que la montagne soit à peu près lisse et sans vallées, le chemin le plus court et le plus rapide vers le bas de la montagne sera finalement trouvé.Ce chemin est également l'endroit avec la pente la plus raide.

                                                                           Formule: x1 = x0 + λ ▽ J (x) (1)

    J est une fonction de x, notre position actuelle est x0, et nous devons aller de ce point au point minimum de J. Déterminez d'abord la direction d'avance, c'est-à-dire l'inverse du gradient, puis la taille du pas de λ atteint le point x1. Ce qui précède est l'explication intuitive de la descente de gradient.

2. Descente de gradient dans l'apprentissage profond

2.1 sgd

        L'apprentissage en profondeur utilise généralement la descente de gradient en mini-batch (descente en gradient en mini-batch). Parlons de l'algorithme sgd, qui fait en fait référence à l'algorithme de descente de gradient mini-batch. Personne n'ira optimiser l'ensemble de données ou un échantillon à la fois. Le principe de base est la Formule 1.

Avantages et inconvénients;

(1) Le taux d'apprentissage et le choix de la stratégie sont difficiles. Lors de l'utilisation de mini-batch, il peut converger très rapidement.

(2) Le taux d'apprentissage n'est pas assez intelligent pour traiter toutes les dimensions des paramètres de manière égale.

(3) Faire face simultanément aux problèmes d'extrémum local et de pointe de selle. Impossible de résoudre le problème de la solution optimale locale

(4) La sélection aléatoire des gradients introduira du bruit en même temps, de sorte que la direction de la mise à jour du poids peut ne pas être correcte.

2.2 Méthode Momentum

        Chaque étape de la méthode de l'impulsion est une combinaison de l'accumulation de la direction de descente précédente et de la direction du gradient du point actuel , réduisant le choc provoqué par la méthode 2.1 et rendant le gradient plus lisse. La formule est la suivante

                                                                                         vt = β * vt-1 + λ ▽ J (x) (2)

                                                                                         x1 = x0 + vt (3)

Le terme d'impulsion indiqué sur la figure est (1-λ) * vt-1 dans la formule 2 et le gradient au point B est λ ▽ J (x) dans la formule 2. La direction de mise à jour du gradient est la formule 2 entière.

                                                                                                                              image

  Le tableau de comparaison montre que la gigue est évidemment plus petite

                                                                                               image

 

2.3 Algorithme NAG   

 

Les trois premiers codes d'algorithme sont les suivants;

 

class torch.optim.SGD(params, lr=, momentum=0, dampening=0, weight_decay=0, nesterov=False)[source]
实现随机梯度下降算法(momentum可选)。
参数:

params (iterable) – 待优化参数的iterable或者是定义了参数组的dict
lr (float) – 学习率
momentum (float, 可选) – 动量因子(默认:0)
weight_decay (float, 可选) – 权重衰减(L2惩罚)(默认:0)
dampening (float, 可选) – 动量的抑制因子(默认:0)
nesterov (bool, 可选) – 使用Nesterov动量(默认:False)
例子:

>>> optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9)
>>> optimizer.zero_grad()
>>> loss_fn(model(input), target).backward()
>>> optimizer.step()

À suivre........

les références:

https://blog.csdn.net/qq_41800366/article/details/86583789

https://blog.csdn.net/weixin_36811328/article/details/83451096

https://mp.weixin.qq.com/s?__biz=MzA3NDIyMjM1NA==&mid=2649031658&idx=1&sn=fd1b54b24b607a9d28dc4e83ecc480fb&chksm=8712bd97bd97b065348132c56w8261c0d97b065348132c56l8261bd97b065348132c56l8261e0712b065348132c56l8261c0d97b065348132c56l8261c0d97b065348132c5al8261c0d97408fc6f1

https://blog.csdn.net/kyle1314608/article/details/104401836

 

 

                              

 

Je suppose que tu aimes

Origine blog.csdn.net/gbz3300255/article/details/111212418
conseillé
Classement