Почему в обновлении весов используется сравнение с эпсилон
Что проверяют
Различаете ли вы разные роли эпсилон в обучении и понимаете ли, что корень у всех одинаковый: арифметика с плавающей точкой. Источник путаницы известен, многие считают эпсилон ограничителем величины шага, и интервьюер как раз слушает, повторите ли вы это.
Как отвечать
Сразу развести три случая.
Критерий остановки. Точного нуля градиента численно не бывает, поэтому итерации прекращают по условию вида «норма градиента меньше эпсилон» или «функция потерь изменилась меньше чем на эпсилон». Это и есть сравнение с эпсилон в прямом смысле. Абсолютный порог плохо переносится между задачами, поэтому берут относительный, привязанный к масштабу самой величины.
Защита знаменателя в адаптивных методах. В Adam и RMSProp шаг делится на корень из скользящего среднего квадратов градиента, а он бывает нулевым:
w -= lr * m_hat / (v_hat ** 0.5 + eps)Здесь эпсилон обычно порядка одной стомиллионной и нужен, чтобы деление не взорвалось на редко встречающихся признаках. Тот же приём в батч- и слой-нормализации, там эпсилон стоит под корнем рядом с дисперсией.
Сравнение вещественных чисел вообще. Проверка a == b для чисел с плавающей точкой ненадёжна из-за округления, поэтому пишут abs(a - b) < eps, а в numpy берут np.allclose с абсолютным и относительным допуском.
Где спотыкаются
Описывают эпсилон как порог, ниже которого изменение веса отбрасывается. Такого механизма в градиентном спуске нет, а зануление малых величин это другая техника с другой целью, регуляризация и прореживание сети.
Забывают про половинную точность. Значение порядка одной стомиллионной в ней просто не представимо и превращается в ноль, после чего появляется деление на ноль и NaN на ровном месте. Либо состояние оптимизатора держат в одинарной точности, либо эпсилон поднимают.
Считают эпсилон в Adam чисто технической защитой и ставят его наугад крупным. Он входит в знаменатель всегда, поэтому заметно уменьшает эффективный шаг там, где градиент мал: это полноценный гиперпараметр, а не константа на все случаи.