斯巴达人神经网络训练

训练神经网络的问题之一是再训练。这是算法学习到可以很好地处理它所看到的数据的时候,但是在其他情况下,它可以应对更糟的情况。在本文中,我们描述了如何通过结合梯度下降训练和进化方法来解决此问题。


图片


如果有人想更好地理解下面将要讨论的内容,则可以在中心阅读这些文章:article1article2


( , , , )


, , . .


, , . , .


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

.


图片
1. accuracy.

, . accuracy , , . . ( 2).


图片
2. .

.
? ? . SGD () . . , .


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


. 40 . SGD . .


图片
1. ccuracy, resnet18, CIFAR10 10 , SGD. 40 5 . . SGD, .
图片
:--:
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. 可以使突变成为优化程序的一部分,而不是为此编写单独的shell
  3. 花了比我们计划多几倍的时间

我们很高兴不仅收到有关内容的反馈,而且也收到有关文章本身的反馈。如果您对这个主题感兴趣或感兴趣,那么也可以写信,很高兴聊聊,也许我们错过了一些。


有用的链接


  1. 添加梯度噪声可改善超深层网络的学习
  2. 用于深度神经网络优化的演化随机梯度下降
  3. 进化策略作为强化学习的可扩展替代方案

All Articles