Почему скорость обучения увеличивается в Адаме? - PullRequest
1 голос
/ 04 июня 2019

Я использовал следующий фрагмент кода для печати lr_t learning_rate в оптимизаторе Adam () для моего trainable_model.

if(np.random.uniform()*100 < 3 and self.training):
    model = self.trainable_model
    _lr    = tf.to_float(model.optimizer.lr, name='ToFloat')
    _decay = tf.to_float(model.optimizer.decay, name='ToFloat')
    _beta1 = tf.to_float(model.optimizer.beta_1, name='ToFloat')
    _beta2 = tf.to_float(model.optimizer.beta_2, name='ToFloat')
    _iterations = tf.to_float(model.optimizer.iterations, name='ToFloat')
    t = K.cast(_iterations, K.floatx()) + 1
    _lr_t = lr * (K.sqrt(1. - K.pow(_beta2, t)) /  (1. - K.pow(_beta1, t)))
    print(" - LR_T: "+str(K.eval(_lr_t)))

Чего я не понимаю, так это того, что скорость обучения увеличивается. (с затуханием при значении по умолчанию 0).

Если мы посмотрим на уравнение learning_rate в Адаме, мы найдем это:

 lr_t = lr * (K.sqrt(1. - K.pow(self.beta_2, t)) /
                 (1. - K.pow(self.beta_1, t)))

, что соответствует уравнению (со значениями по умолчанию для параметров):

= 0.001*sqrt(1-0.999^x)/(1-0.99^x)

Если мы напечатаем это уравнение, мы получим: enter image description here

, который ясно показывает, что стоимость обучения увеличивается экспоненциально с течением времени (поскольку t начинается с 1)

Может кто-нибудь объяснить, почему это так? Я везде читал, что мы должны использовать Learning_rate, который со временем затухает, а не увеличивается.

Означает ли это, что моя нейронная сеть со временем обновляет больше по мере увеличения показателя обучения Адама?

1 Ответ

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

Глядя на исходный код оптимизатора Адама в Керасе, похоже, что фактический "распад" выполняется в: этой строке .Код, о котором вы сообщили, выполняется только после, а не сам распад.
Если вопрос «почему так», я бы предложил вам прочитать некоторую теорию об Адаме, такую ​​как оригинальная статья .

РЕДАКТИРОВАТЬ
Должно быть ясно, что уравнение обновления оптимизатора Адама НЕ включает затухание само по себе.Распад должен применяться отдельно.

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