В общих настройках алгоритма градиентного спуска мы имеем где - текущая точка, - размер шага, а - градиент оценивается в . х п η г г д я е н т х п х п
Я видел в каком-то алгоритме, люди используют нормализованный градиент вместо градиента . Я хотел знать, в чем разница в использовании нормализованного градиента и просто градиента .
algorithms
optimization
ученик
источник
источник
Ответы:
В алгоритме градиентного спуска алгоритм продолжает поиск направления, по которому вы можете найти оптимальное решение. Оптимальным направлением оказывается градиент. Однако, поскольку нас интересует только направление, а не обязательно, как далеко мы продвигаемся в этом направлении, нас обычно не интересует величина градиента. Таким образом, нормализованный градиент достаточно хорош для наших целей, и мы позволяемη диктовать, как далеко мы хотим двигаться в вычисленном направлении. Однако, если вы используете ненормализованный градиентный спуск, то в любой точке расстояние, на которое вы двигаетесь в оптимальном направлении, определяется величиной градиента (по сути, диктуется поверхностью целевой функции, т.е. точка на крутой поверхности будет иметь высокая величина, тогда как точка на довольно плоской поверхности будет иметь низкую величину).
Исходя из вышесказанного, вы, возможно, поняли, что нормализация градиента - это дополнительная контролирующая способность, которую вы получаете (полезна она или нет, зависит от вашего конкретного приложения). Что я имею в виду под вышесказанным:η
η
1] Если вы хотите, чтобы ваш алгоритм перемещался с фиксированными размерами шагов на каждой итерации, то вы можете использовать нормализованный градиентный спуск с фиксированным . 2] Если вы хотите убедиться, что ваш алгоритм движется с размерами шагов, которые диктуются именно вами, то, опять же, вы можете использовать нормализованный градиентный спуск с вашей конкретной функцией для размера шага, закодированного в .η
3] Если вы хотите, чтобы величина градиента определяла размер шага, то вы будете использовать ненормализованный градиентный спуск. Есть несколько других вариантов, например, вы можете позволить величине градиента определять размер шага, но вы надеваете на него ограничение и так далее.
Теперь размер шага явно влияет на скорость сходимости и устойчивости. Какой из вышеперечисленных размеров шага работает лучше всего, зависит исключительно от вашего приложения (то есть целевой функции). В некоторых случаях можно проанализировать взаимосвязь между скоростью сходимости, стабильностью и размером шага. Эти отношения затем могут дать подсказку о том, хотите ли вы пойти с нормализованным или ненормализованным градиентным спуском.
Подводя итог, нет никакой разницы между нормализованным и ненормализованным градиентным спуском (насколько теория лежит в основе алгоритма). Однако это оказывает практическое влияние на скорость сходимости и устойчивости. Выбор одного над другим основывается исключительно на приложении / поставленной цели.
источник
источник
источник