Formation au réseau de neurones spartiate

L'un des problèmes de la formation des réseaux de neurones est le recyclage. C'est à ce moment-là que l'algorithme a appris à bien fonctionner avec les données qu'il a vues, mais sur d'autres il s'en sort pire. Dans l'article, nous expliquons comment nous avons essayé de résoudre ce problème en combinant l'apprentissage avec la descente de gradient et une approche évolutive.


image


Si quelqu'un veut mieux comprendre ce qui sera discuté ci-dessous, vous pouvez lire ces articles sur le hub : article1 et article2


( , , , )


, , . .


, , . , .


P.S. , , ., , , . .


:


-


  1. N -
  2. K
  3. -
  4. ( )
  5. goto 1

:


— CIFAR10
— resnet18
— SGD
— CrossEntropyLoss
— accuracy
5
50 ,
40-50


: , ..


№1. .


.


: Adding Gradient Noise Improves Learning for Very Deep Networks, Evolutionary Stochastic Gradient Descent for Optimization of Deep Neural Networks.


For i in range(N):
    N  - 
       SGD
   #   
   For k in range(K):
         
             .

, .


G .


:


  1. , , .
  2. ( 1) . — . ?
  3. .

.


image
1. accuracy.

, . accuracy , , . . ( 2).


image
2. .

.
? ? . SGD () . . , .


:
Accuracy 47.81% — .
Accuracy 47.72% — SGD.


. 40 . SGD . .


image
1. ccuracy, resnet18, CIFAR10 10 , SGD. 40 5 . . SGD, .
image
:--:
2. ccuracy, resnet18, CIFAR10 10 , SGD. 40 5 . accuracy. SGD, .

4 , resnet18 accuracy. accuracy. .


. .
, . , .


, .


.. , . . , .


.


:


  1. , .
  2. . , .


  1. . .
  2. backward.

№2.


OpenAI Evolution Strategies as a Scalable Alternative to Reinforcement Learning, https://github.com/staturecrane/PyTorch-ES


For i in range(N):
    N  -   SGD
   For k in range(K):
         
         
          
     


— . -1 1 σ, .



normalized_rewards = (rewards - np.mean(rewards)) / np.std(rewards)
for index, param in enumerate(self.weights):
   A = np.array([p[index] for p in population])
   rewards_pop = torch.from_numpy(np.dot(A.T,normalized_rewards).T).float()
   param.data = param.data + LEARNING_RATE/(POPULATION_SIZE * SIGMA) * rewards_pop

. - . , . .



/ — SGD+
/ — SGD


CPretrained

Loss — , . SGD , , .


Validation — accuracy. , - 5 SGD , , , SGD+


Final score — accuracy , .


: SGD , c .
, , , , Google .


accuracy


Pretrained
SGD47.72%68.56 %
47.81%68.61 %
SGD + OpenAI49.82%69.45 %

:


  1. Adam, , . .
  2. Il était possible de faire des mutations une partie de l'optimiseur, plutôt que d'écrire un shell séparé pour cette
  3. Cela a pris plusieurs fois plus de temps que prévu

Nous serons heureux de recevoir des commentaires non seulement sur le contenu, mais aussi sur l'article lui-même dans son ensemble. Si vous êtes intéressé par ce sujet ou étiez intéressé, alors écrivez aussi, ce serait bien de parler, peut-être que nous avons raté quelque chose.


Liens utiles


  1. L'ajout de bruit de dégradé améliore l'apprentissage pour les réseaux très profonds
  2. Descente évolutive du gradient stochastique pour l'optimisation des réseaux de neurones profonds
  3. Stratégies d'évolution comme alternative évolutive à l'apprentissage par renforcement

All Articles