Uno de los problemas de entrenar redes neuronales es el reciclaje. Esto es cuando el algoritmo aprendió a funcionar bien con los datos que vio, pero en otros lo hace peor. En el artículo, hablamos sobre cómo tratamos de resolver este problema combinando el aprendizaje con el descenso de gradiente y un enfoque evolutivo.

Si alguien quiere comprender mejor lo que se discutirá a continuación, puede leer estos artículos en el centro : artículo1 y artículo2
( , , , )
, , . .
, , . , .
P.S. , , ., , , . .
:
-
- N -
- K
- -
- ( )
- 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) . — . ?
- .
.
, . accuracy , , . . ( 2).
.
? ? . SGD () . . , .
:
Accuracy 47.81% — .
Accuracy 47.72% — SGD.
. 40 . SGD . .
4 , resnet18 accuracy. accuracy. .
. .
, . , .
, .
.. , . . , .
.
:
- , .
- . , .
- . .
- 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
Loss — , . SGD , , .
Validation — accuracy. , - 5 SGD , , , SGD+
Final score — accuracy , .
: SGD , c .
, , , , Google .
accuracy
:
- Adam, , . .
- Era posible hacer que las mutaciones formaran parte del optimizador, en lugar de escribir un shell separado para esto
- Tomó varias veces más tiempo del que planeamos
Estaremos encantados de recibir comentarios no solo sobre el contenido, sino también sobre el artículo en sí. Si está interesado en este tema o estaba interesado, entonces escriba también, sería genial hablar, tal vez nos perdimos algo.
Enlaces útiles
- Agregar ruido de degradado mejora el aprendizaje para redes muy profundas
- Descenso de gradiente estocástico evolutivo para la optimización de redes neuronales profundas
- Estrategias de evolución como una alternativa escalable al aprendizaje por refuerzo