рдкреНрд░рд╢рд┐рдХреНрд╖рдг рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдореБрдВрд╣рддреЛрдбрд╝ рдЬрд╡рд╛рдм рджреЗрдирд╛ред рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдиреЗ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╕реАрдЦрд╛, рдЬреЛ рдЙрд╕рдиреЗ рджреЗрдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЛрдВ рдкрд░ рдпрд╣ рдЕрдзрд┐рдХ рдЦрд░рд╛рдм рд╣реЛ рдЧрдпрд╛ред рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рд╣рдордиреЗ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕реАрдЦрдиреЗ рдФрд░ рд╡рд┐рдХрд╛рд╕рд╡рд╛рджреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

рдХрд┐рд╕реА рдХреЛ рдмреЗрд╣рддрд░ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдкрд░ рдЗрди рд▓реЗрдЦреЛрдВ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣рдм : article1 рдФрд░ article2
( , , , )
, , . .
, , . , .
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, , . .
- рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╢реЗрд▓ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдерд╛
- рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рд╕реЗ рдХрдИ рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛
рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд╛рдордЧреНрд░реА рдкрд░ рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕рдВрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд▓реЗрдЦ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдпрд╛ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рднреА рд▓рд┐рдЦреЗрдВ, рдмрд╛рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд╢рд╛рдпрдж рд╣рдо рдХреБрдЫ рдЪреВрдХ рдЧрдПред
рдЙрдкрдпреЛрдЧреА рдХрдбрд╝рд┐рдпрд╛рдБ
- рдЧреНрд░реИрдбрд┐рдПрдВрдЯ рд╢реЛрд░ рдЬреЛрдбрд╝рдирд╛ рдмрд╣реБрдд рдбреАрдк рдиреЗрдЯрд╡рд░реНрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реАрдЦрдирд╛ рдмреЗрд╣рддрд░ рдмрдирд╛рддрд╛ рд╣реИ
- рдЧрд╣рд░реА рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕рд╡рд╛рджреА рд╕реНрдЯреЛрдЪрд╕реНрдЯрд┐рдХ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдбрд┐рд╕реЗрдВрдЯ
- рд╕реБрджреГрдвреАрдХрд░рдг рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рд░рдгрдиреАрддрд┐рдпрд╛рдБ