Кажется, что есть несоответствия в формулах, рекомендованных различными авторами для того, как реализовать импульс в SGD.
Эндрю Нг в курсах deep_learning_ai несовместим между его слайдами и заданием:
Избегая греческих букв, моя запись такова:
v = momentum term
B = beta, momentum parameter (typically in 0.8 to 0.99)
th = vector of theta parameters for some layer
d_th = partial derivative of cost relative to theta parameters
a = alpha (learning rate, sometimes called nu by other authors)
назначение:
v = B*v + (1 - B)*d_th
th = th - a*v
слайды:
v = B*v + d_th
th = th - a*v
Разница в том, что Ng пропускает 1 -В срок скользящей средней в слайдах. Многие авторы делают это в предположении, что (1-B) мало для полезных значений B, и мы все еще получаем скользящее среднее, потому что мы собираемся вычесть d_th, чтобы получить наш обновленный th. Разница составляет (1 - B) * d_th, что может быть всего 0,009 от d_th. Учитывая, насколько «грубым и готовым» является SGD, он проявляется в wa sh.
Здесь важнее то, что Ng умножает член импульса, v, на скорость обучения в обновлении тета.
Карпати, один из аспирантов Ng в go аспирантов в Стэнфорде, делает это так в своих заметках для CS231n:
v = B*v + a*d_th
th = th - v
Оставляя в стороне (1-B) термин скользящее среднее d_th, отличие от Ng состоит в том, что альфа (a) умножается на частоту тета, d_th, но НЕ умножается на первый член скользящего среднего для импульса, v. Этот подход кажется гораздо более распространенным.
Если вы считаете, что приемлемые значения альфа могут составлять 0,01 или 0,001, то путь Ng будет равносильным использованию B, скажем, 0,01 * 0,9 = 0,009.
Один автор, которого я обнаружил, попытался решить эту проблему, предложив масштабировать альфа с помощью термина 1 / (1 - B), эквивалентного умножению альфа на 10 (если B равен 0,9) или 100 (если B равен 0,99). ).
Я не мог алгебраически свести одну форму к другой.
Каков правильный подход?
Импульс - самый простой из методов "оптимизации", но Такое же несоответствие появляется для rmsprop, Nesterov импульс, ADAM и др. c.
Спасибо, Льюис