Spartanisches neuronales Netzwerktraining

Eines der Probleme beim Training neuronaler Netze ist die Umschulung. Zu diesem Zeitpunkt lernte der Algorithmus, gut mit den Daten zu arbeiten, die er sah, aber bei anderen kommt er schlechter zurecht. In dem Artikel sprechen wir darĂŒber, wie wir versucht haben, dieses Problem zu lösen, indem wir Lernen mit Gradientenabstieg und einem evolutionĂ€ren Ansatz kombiniert haben.


Bild


Wenn jemand besser verstehen möchte, was unten besprochen wird, können Sie diese Artikel auf dem Hub lesen: Artikel1 und Artikel2


( , , , )


, , . .


, , . , .


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. .

.


Bild
1. accuracy.

, . accuracy , , . . ( 2).


Bild
2. .

.
? ? . SGD () . . , .


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


. 40 . SGD . .


Bild
1. ccuracy, resnet18, CIFAR10 10 , SGD. 40 5 . . SGD, .
Bild
:--:
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. Es war möglich, Mutationen Teil des Optimierers zu machen, anstatt eine separate Shell dafĂŒr zu schreiben
  3. Es hat mehrmals lÀnger gedauert als geplant

Wir freuen uns ĂŒber Feedback nicht nur zum Inhalt, sondern auch zum gesamten Artikel. Wenn Sie sich fĂŒr dieses Thema interessieren oder interessiert waren, dann schreiben Sie auch, es wĂ€re toll zu reden, vielleicht haben wir etwas verpasst.


NĂŒtzliche Links


  1. Das HinzufĂŒgen von Gradientenrauschen verbessert das Lernen fĂŒr sehr tiefe Netzwerke
  2. EvolutionÀrer stochastischer Gradientenabstieg zur Optimierung tiefer neuronaler Netze
  3. Evolutionsstrategien als skalierbare Alternative zum Reinforcement Learning

All Articles