Градиентный спуск(подъем)
Градиентный спуск(подъем) - один из наиболее популярных методов оптимизации в машинном обучении. Оптимизация - это процесс нахождения точек максимума/минимума некоторой функции.
Для объяснения механизма его работ приведу простой пример для градиентного подъема.
Представьте, что вас десантировали в незнакомый вам город и дали задание подняться на самую высокую точку в округе. При этом на улице сильный туман и вы видите не дальше одного метра вокруг. Как вам при этом найти самую высокую возвышенность?
Градиентный подъем предлагает следующую стратегию: вы смотрите под ноги и движетесь в направлении наиболее крутого подъема. Т.е. оглядываете землю на метр вокруг вас и выбираете наиболее крутое (в смысле угла наклона) направление, ведущее на подъем.
Звучит логично, не правда ли?
На практике такая стратегия действительно неплохо работает, но имеет несколько недостатков. Основной недостаток градиентного спуска(подъема) - это проблема локальных оптимумов.
Проблема локальных оптимумов
В какой-то момент движения по стратегии градиентного подъема, вы, оглянувшись на метр вокруг, обнаружите, что все направления ведут вниз. То есть вы пришли на самое высокое место из тех, по которым вы прошли. Можете ли вы быть уверены, что это самое высокое место в городе? Конечно нет.
Все потому, что стратегия градиентного спуска(подъема) не гарантирует нахождение глобально оптимальной точки. Стратегия градиентного спуска(подъема) гарантирует только то, что точка, в которой вы в результате окажетесь, будет оптимальнее той, с которой вы начинали.
Дополнение: Стохастический градиентный спуск(подъем)
В ходе исследований свойств градиента, выясняется, что градиент, вычисленный на всем датасете, равен сумме градиентов, вычисленных отдельно по каждому примеру из датасета. Таким образом, градиент можно вычислять приближенно по некоторому подмножеству случайных объектов из датасета. Такой прием называется стохастическим градиентным спуском. Мы получаем направление, слегка отклоненное от направления наибольшего убывания(роста) функции, но экономим на скорости вычисления градиента.
Спасибо за прочтение статьи. Если понравилось - ставьте лайк, если хотите ещё - подписывайтесь на канал. До скорых встреч :)