You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Instead of training the whole model let's optimize only a small randomly selected model part (e.g. 5% of connections) at each optimization step:
classOpenES:
...
defask(self):
...
self.epsilon*=np.random.choice([0, 1], size=self.epsilon.shape, p=[0.95, 0.05]) # add this line self.solutions=self.mu.reshape(1, self.num_params) +self.epsilon*self.sigmareturnself.solutions
With this simple modification, I got 99%/98.5% of accuracy on training/test sets (see the training log in my fork).
I don't have a good explanation for the phenomenon, but it looks like this method makes the exploitation component of the algorithm stronger.
Of course, this can't be used as a general approach, it's rather just an interesting (but probably specific to task/model/hyperparameters etc.) observation.
The text was updated successfully, but these errors were encountered:
Instead of training the whole model let's optimize only a small randomly selected model part (e.g. 5% of connections) at each optimization step:
With this simple modification, I got 99%/98.5% of accuracy on training/test sets (see the training log in my fork).
I don't have a good explanation for the phenomenon, but it looks like this method makes the exploitation component of the algorithm stronger.
Of course, this can't be used as a general approach, it's rather just an interesting (but probably specific to task/model/hyperparameters etc.) observation.
The text was updated successfully, but these errors were encountered: