Что такое параметр скорости обучения в Adadelta Optimizer для Keras? - PullRequest
0 голосов
/ 24 июня 2019

В Керасе есть оптимизатор Adadelta для SGD следующим образом:

optimizer = optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=None, decay=0.0)

Вот документация: https://keras.io/optimizers/#adadelta Но, как мы знаем, Adadelta не использует скорость обучения.Так для чего нужен lr?

1 Ответ

1 голос
/ 24 июня 2019

Почему было принято такое дизайнерское решение?

Это действительно очень интересный вопрос. Давайте посмотрим, как это описано в документации Keras:

В оригинальной версии Adadelta вам не нужно устанавливать начальную скорость обучения. В этой версии можно установить начальную скорость обучения и коэффициент затухания, как в большинстве других оптимизаторов Keras.

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

Точнее говоря, философия keras - это , вы можете комбинировать любые строительные блоки, которые вы хотите (то есть унифицированный API). Если вы удалите из этого параметра lr, я думаю, вы не сможете использовать некоторые из обратных вызовов .


Сравнение

Теперь давайте сравним реализацию Adadelta Keras с оригинальной бумагой :

  • Строка 406: здесь градиенты накапливаются в скользящую среднюю (a - скользящая средняя, ​​rho - скорость затухания, как в статье, g - вычисляемые градиенты для параметра p):

    new_a = self.rho * a + (1. - self.rho) * K.square(g)
    self.updates.append(K.update(a, new_a))
    

    Это отлично соответствует следующей строке в алгоритме:

    enter image description here

  • Строка 410: дельта-вычисление (здесь d_a - дельта-аккумулятор, также в виде скользящей средней):

    update = g * K.sqrt(d_a + self.epsilon) / K.sqrt(new_a + self.epsilon)
    

    Это отлично соответствует

    enter image description here

  • Строка 411: Теперь Вот сложная часть. Код выглядит следующим образом:

    new_p = p - lr * update
    

    Что не соответствует первоначальному алгоритму в статье:

    enter image description here

    Кроме того, такая скорость обучения допускает изменения через параметр затухания скорости обучения. Однако по умолчанию значение lr в Keras равно 1.0, а decay равно 0.0, поэтому по умолчанию это не должно влиять на результат.

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