Должен ли Pytorch Optimizer быть расширен для оптимизации веса с помощью генетического алгоритма? - PullRequest
0 голосов
/ 15 февраля 2019

Я читаю статью об использовании эволюционных алгоритмов для оптимизации весов для нейронной сети : https://eplex.cs.ucf.edu/papers/morse_gecco16.pdf Такой подход является альтернативой для стохастического градиентного спуска / обратного распространения.Также обратите внимание, что это отличается от использования эволюционных алгоритмов для оптимизации гиперпараметров или архитектуры нейронных сетей .

Я использую Pytorch и там используется такой схематический код:

encoder_optimizer = optim.SGD(encoder.parameters(), lr=learning_rate)
encoder_optimizer.zero_grad()
loss = train(input_tensor, target_tensor, encoder,
                     decoder, encoder_optimizer, decoder_optimizer, criterion)
loss.backward()
encoder_optimizer.step()

Итак, есть предопределенная оптимизация SGD, которая принимает в качестве входных данных все веса и смещения (w и b) нейронной сети энкодера и которая наблюдает за функцией поезда, как эти параметры влияют на функцию потерь, а затемэтот оптимизатор регулирует эти параметры w и b.

Это происходит путем стохастического градиентного спуска.Но моя задача состоит в том, чтобы настроить эти параметры (чтобы найти новый набор значений для следующей итерации) путем создания значений параметров нового поколения с использованием эволюционного алгоритма.

Итак, архитектурно - я намерен расширить PytorchОптимизатор для моего класса эволюционного оптимизатора?Я изучаю документацию https://pytorch.org/docs/stable/optim.html и в ней говорится, что градиент предоставляется в качестве входных данных для оптимизации.Это понятно, но этот градиент не нужен моему эволюционному оптимизатору.Может быть, архитектурно неправильно просто игнорировать предоставленный градиент, может быть, мне следует создать совершенно новый класс для моего эволюционного оптимизатора?Я боюсь внести некоторые непредвиденные последствия, расширив класс для совершенно другого подхода к оптимизации.

Насколько я могу сказать, до сих пор никто не реализовал эволюционный оптимизатор для PyTorch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...