После вычисления градиентов моего параметра w и u, каков следующий шаг для их оптимизации SGD?

Что я кодирую: я строю простую нейронную сеть с весовой матрицей w и вторым параметром u для оценки. После умножения моего входного вектора на w результат умножается на вектор u, чтобы получить результат в виде одной цифры, и это мой результат.

Где я сейчас нахожусь : я рассчитал градиенты обоих двух параметров относительно моей функции потерь.

Моя проблема: а теперь я застрял, что делать дальше?

Мое предложение по решению: могу ли я обновить параметр с w = w + learingrate * w_grad (а также для u с u = u скоростью обучения *u_grad) и выполнять эту процедуру до тех пор, пока мое значение затрат / потерь не уменьшится... работает ли это? Это правильно? Это эзейская реализация Stochastic Gradient Descent?

Я пишу код на Java, если у вас есть простой и хороший документированный пример того, как легко оптимизировать нейронную сеть, вы можете поделиться им со мной.

Заранее спасибо!

1 ответ

Решение

Я полагаю, что w_grad является частными производными. Если говорить о том, что предлагает ваше решение, то это то, что называется итеративным способом оптимизации. Только одно уточнение. Вместо w = w + скорость обучения * w_grad вы должны использовать w = w - скорость обучения * w_grad. Он работает нормально, но если у вас многоядерный компьютер, он будет использовать только одно ядро. Если вам нужно повысить производительность, вы можете попробовать пакетный алгоритм. w = w - скорость обучения * Summ(w_grad). Повышение производительности достигается во время расчета w_grad

Другие вопросы по тегам