Treinamento da rede neural espartana

Um dos problemas do treinamento de redes neurais Ă© o treinamento. Foi quando o algoritmo aprendeu a funcionar bem com os dados que viu, mas em outros ele lida pior. No artigo, descrevemos como tentamos resolver esse problema combinando treinamento com descida de gradiente e uma abordagem evolutiva.


imagem


Se alguĂ©m quiser entender melhor o que serĂĄ discutido abaixo, vocĂȘ poderĂĄ ler estes artigos no hub : article1 e 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. .

.


imagem
1. accuracy.

, . accuracy , , . . ( 2).


imagem
2. .

.
? ? . SGD () . . , .


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


. 40 . SGD . .


imagem
1. ccuracy, resnet18, CIFAR10 10 , SGD. 40 5 . . SGD, .
imagem
:--:
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. Foi possível fazer das mutaçÔes parte do otimizador, em vez de escrever um shell separado para esse
  3. Demorou vĂĄrias vezes mais tempo do que planejamos

Teremos o maior prazer em receber feedback nĂŁo apenas sobre o conteĂșdo, mas tambĂ©m sobre o prĂłprio artigo como um todo. Se vocĂȘ estĂĄ interessado neste tĂłpico ou se interessou, escreva tambĂ©m, seria Ăłtimo conversar, talvez tenhamos perdido alguma coisa.


Links Úteis


  1. Adicionar ruĂ­do gradiente melhora o aprendizado para redes muito profundas
  2. Descida estocåstica evolutiva de gradiente para otimização de redes neurais profundas
  3. Estratégias de evolução como alternativa escalåvel ao aprendizado por reforço

All Articles