Как гиперпараметр скорости обучения оптимизатора Keras Adam связан с индивидуально рассчитанными скоростями обучения для параметров сети? - PullRequest
0 голосов
/ 26 марта 2020

Итак, благодаря моему ограниченному пониманию Адама (в основном из этого поста: https://towardsdatascience.com/adam-latest-trends-in-deep-learning-optimization-6be9a291375c) я понял, что оптимизатор Адама вычисляет индивидуальные скорости обучения для каждого параметра в сети.

Но в документах Keras (https://keras.io/optimizers/) оптимизатор Adam принимает параметр скорости обучения.

Мой вопрос заключается в том, как параметр скорости обучения, принятый объектом Adam, соотносится с этими вычисленными показателями обучения ? Насколько я могу судить, это не отражено в сообщении, связанном (или это так, но оно вышло у меня из головы).

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Просто хотел добавить это, если реализация / пример в 1-D что-нибудь прояснит:

import numpy as np
import matplotlib.pyplot as plt
from math import sqrt

eps = 1e-6
delta = 1e-6
MAX_ITER = 100000
def f(x):
    return  (np.square(x) / 10) - 2*np.sin(x)


def df(x):
    return (f(x) - f(x - delta))/delta

def main():
    x_0 = -13 # initial position
    a = 0.1 # step size / learning rate
    x_k = x_0
    B_1 = 0.99 # first decay rate
    B_2 = 0.999 # second decay rate
    i = 0
    m_k = df(x_k)
    d_k = df(x_k)**2
    while True:
        # update moment estimates and parameters
        m_k = B_1 * m_k + (1 - B_1) * df(x_k)
        d_k = B_2 * d_k + (1 - B_2) * (df(x_k)**2)
        x_k = x_k - a * m_k / sqrt(d_k + eps)

        # termination criterion
        if abs(df(x_k)/df(x_0)) <= eps:
            break
        if i > MAX_ITER:
            break

        i = i+1
1 голос
/ 26 марта 2020

Поскольку это очень конкретный вопрос c, я бы не стал go объяснять какие-либо математические детали Адама. Я предполагаю, что в статье, строка вычисляет индивидуальные скорости обучения для различных параметров , которые вас взволновали.

Это скриншот фактического алгоритма Адама, предложенного в статье https://arxiv.org/pdf/1412.6980.pdf

enter image description here

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

Но, если вы посмотрите на алгоритм, есть alpha (размер шага), это керас-эквивалент скорости обучения = 0,001, которую мы предоставляем. Таким образом, алгоритму необходим размер шага для обновления параметров (просто, это масштабный коэффициент для обновления веса). Что касается изменяющейся скорости обучения (или обновления), вы можете увидеть последнее уравнение (оно использует m_t и v_t , они обновляются в l oop), но альфа остается неизменным во всем алгоритме. Это скорость обучения в керасе, которую мы должны предоставить.

Поскольку альфа остается неизменной, нам иногда приходится использовать планирование скорости обучения, когда мы на самом деле снижаем скорость обучения после нескольких эпох. Существуют и другие варианты, когда мы сначала увеличиваем скорость обучения, а затем уменьшаем.

...