Учитывая выпуклую функцию стоимости, используя SGD для оптимизации, мы будем иметь градиент (вектор) в определенной точке в процессе оптимизации.
Мой вопрос, учитывая точку на выпуклом, градиент только указывает в направлении, в котором функция увеличивается / уменьшается быстрее всего, или градиент всегда указывает на оптимальную / крайнюю точку функции стоимости ?
Первое является локальной концепцией, второе - глобальной.
SGD может в конечном итоге сходиться к крайнему значению функции стоимости. Меня интересует разница между направлением градиента, заданным произвольной точкой на выпуклом, и направлением, указывающим на глобальное экстремальное значение.
Направление градиента должно быть направлением, в котором функция быстрее всего увеличивается / уменьшается в этой точке, верно?
источник
Ответы:
Говорят, изображение стоит больше тысячи слов. В следующем примере (любезно предоставленном MS Paint, удобным инструментом как для любителей, так и для профессиональных статистиков) вы можете увидеть выпуклую функциональную поверхность и точку, в которой направление наискорейшего спуска явно отличается от направления к оптимальному.
Серьезное замечание: в этой ветке есть гораздо лучшие ответы, которые также заслуживают одобрения.
источник
Интуитивное представление - представить путь спуска, который является изогнутым путем. Смотрите, например, примеры ниже.
В качестве аналогии: представьте, что я завязываю вам глаза и отправляю вас куда-нибудь на гору с задачей вернуться к крайней (низкой) точке. На холме, если у вас есть только местная информация, вы не знаете, в каком направлении будет находиться дно озера.
Если вы можете принять выпуклость
Без выпуклости
Угол может превышатьπ/ 2 . На изображении ниже это подчеркивается рисованием стрелки направления спуска для конкретной точки, где окончательное решение находится за линией, перпендикулярной направлению спуска.
В выпуклой задаче это невозможно. Вы можете связать это с изолиниями для функции стоимости, имеющей кривизну в одном и том же направлении, когда проблема выпуклая.
В стохастическом градиентном спуске
Ниже приведен другой вид для четырех точек данных . Каждое из четырех изображений показывает поверхность для отдельной отдельной точки. На каждом шаге выбирается отдельная точка, по которой вычисляется градиент. Это означает, что есть только четыре направления, по которым сделан шаг, но размеры шагов уменьшаются, когда мы приближаемся к решению.
Выше изображения для 4 точек данных, генерируемых функцией:
что приводит к:
невыпуклая задача оптимизации, когда мы минимизируем (нелинейную) функцию стоимостиS( а , б ) = ∑я = 1( уя- ( е- хя- е- б хя) )2 ∇ S( а , б ) = [ ∑я = 12 хяе- хя( уя- е- хя- е- б хя)Σя = 1- 2 хяе- б хя( уя- е- хя- е- б хя)]
выпуклая задача оптимизации (как и любые линейные наименьшие квадраты), когда мы минимизируемS(а , б ) = ∑я = 1( уя-( а е- 0,4 хя-б е- 0,8 хя))2 ∇ S( а , б ) = [ ∑я = 1- 2 е- 0,4 хя( уя- е- 0,4 хя- б е- 0,8 хя)Σя = 12 е- 0,8 хя( уя- е- 0,4 хя- б е- 0,8 хя)]
выпуклая задача оптимизации (но не с одним минимумом), когда мы минимизируем для некоторого конкретного с градиентом это имеет несколько минимумов (есть несколько и для которого )я S( а , б ) = ( уя- ( а е- 0,4 б хя- б е- 0,8 хя) )2 ∇ S( а , б ) = [ - 2 е- 0,4 хя( уя- е- 0,4 хя- б е- 0,8 хя)2 е- 0,8 хя( уя- е- 0,4 хя- б е- 0,8 хя)] a б S= 0
Автор StackExchangeStrike
источник
Крутой спуск может быть неэффективным, даже если целевая функция сильно выпуклая.
Обыкновенный градиентный спуск
Я имею в виду «неэффективный» в том смысле, что наискорейший спуск может предпринимать шаги, которые резко отклоняются от оптимального, даже если функция сильно выпуклая или даже квадратичная.
Рассмотрим . Это выпукло, потому что это квадратик с положительными коэффициентами. Из проверки видно, что он имеет глобальный минимум при . Он имеет градиенте( х ) = х21+ 25 х22 х = [ 0 , 0 ]⊤
При скорости обучения и начальной догадке мы получаем обновление градиентаα = 0,035 Икс( 0 )= [ 0,5 , 0,5 ]⊤,
который демонстрирует этот дико колеблющийся прогресс к минимуму.
Действительно, угол образованный между и только постепенно уменьшается до 0. Что это означает в том, что направление обновления иногда неправильное - самое большее, оно почти на 68 градусов - даже если алгоритм сходится и работает правильно.θ ( х( я ), х*) ( х( я ), х( я + 1 ))
Каждый шаг сильно колеблется, потому что функция намного круче в направлении чем в направлении . Из-за этого факта мы можем сделать вывод, что градиент не всегда или даже обычно указывает на минимум. Это общее свойство градиентного спуска, когда собственные значения гессиана находятся в разных масштабах. Прогресс является медленным в направлениях, соответствующих собственным векторам с наименьшими соответствующими собственными значениями, и наиболее быстрым в направлениях с самыми большими собственными значениями. Именно это свойство в сочетании с выбором скорости обучения определяет, насколько быстро прогрессирует градиентный спуск.Икс2 Икс1 ∇2е( х )
Прямой путь к минимуму будет состоять в том, чтобы двигаться «по диагонали», а не таким образом, в котором преобладают вертикальные колебания. Тем не менее, градиентный спуск имеет только информацию о локальной крутизне, поэтому он «не знает», что стратегия будет более эффективной, и он подвержен капризам гессиана, имеющим собственные значения в разных масштабах.
Стохастический градиентный спуск
SGD имеет те же свойства, за исключением того, что обновления являются шумными, подразумевая, что поверхность контура отличается от одной итерации к другой, и поэтому градиенты также различны. Это означает, что угол между направлением шага градиента и оптимумом также будет иметь шум - просто представьте те же графики с некоторым джиттером.
Больше информации:
Можем ли мы применить аналитичность нейронной сети для улучшения градиентного спуска?
Почему производные второго порядка полезны в выпуклой оптимизации?
Как изменение стоимости может быть положительным?
Этот ответ заимствует этот пример и рисунок из главы 9 « Дизайн нейронных сетей» (2-е изд.) Мартина Т. Хейгана, Говарда Б. Демута, Марка Хадсона Била, Орландо де Хесуса.
источник
Местное крутое направление не совпадает с глобальным оптимальным направлением. Если бы это было так, то ваше направление градиента не изменилось бы; потому что если вы всегда идете к своему оптимальному значению, ваш вектор направления будет всегда указывать оптимальный. Но это не так. Если бы это было так, зачем беспокоиться о расчете градиента на каждой итерации?
источник
В других ответах освещаются некоторые досадные проблемы со скоростью конвергенции для GD / SGD, но ваш комментарий «SGD может в конечном итоге сойтись ...» не всегда корректен (игнорируя педантичные замечания по поводу слова «может», поскольку кажется, что вы имели в виду "воля").
Один хороший трюк для поиска контрпримеров с SGD состоит в том, чтобы заметить, что если каждая точка данных одинакова, ваша функция стоимости является детерминированной. Представьте себе чрезвычайно патологический пример, когда у нас есть одна точка данных и у нас есть модель того, как наша система должна работать, основываясь на одном параметре
С MSE в качестве нашей функции стоимости это упрощается до выпуклой функции. Предположим, что мы плохо выбираем скорость обучения чтобы наше правило обновления было следующим:Теперь наша функция стоимости имеет минимум в , но если мы начнем буквально где-нибудь, кроме тогда SGD просто отскочит между циклами между начальной точкой и и никогда не сойдется .
Я не уверен, достаточно ли выпуклости, чтобы нарушить какое-то худшее поведение, которое существует для общего SGD, но если вы разрешите функции, даже такие сложные, как кубики, для вашей функции стоимости, то SGD может отскочить на плотном подмножестве домена и никогда нигде не сходиться или подойти к любому циклу.
SGD также может приближаться / получать циклы любой конечной длины, расходиться в направлении , колебаться в направлении (извините за обозначения) и иметь множество других патологических поведений.∞ ± ∞
Одна интересная вещь во всей ситуации состоит в том, что существует бесчисленное множество функций (таких как SGD), которые принимают произвольные выпуклые функции в качестве входных данных, а затем выводят правило обновления, которое всегда быстро сходится к глобальному минимуму (если он существует). Хотя концептуально их существует множество, все наши лучшие попытки выпуклой оптимизации имеют патологические контрпримеры. Каким-то образом идея простого / интуитивно понятного / производительного правила обновления противоречит идее достоверно корректного правила обновления.
источник
Возможно, ответы на этот вопрос требуют быстрого обновления. Похоже, что SGD дает глобальный минимум и в невыпуклом случае (выпуклый это только частный случай этого):
Авторы устанавливают сходимость SGD к глобальному минимуму для невыпуклых задач оптимизации, которые обычно встречаются при обучении нейронной сети. Аргумент использует следующие два важных свойства: 1) потеря тренировки может достичь нулевого значения (приблизительно); 2) SGD следует звездно-выпуклому пути. В таком контексте, хотя SGD долгое время считался рандомизированным алгоритмом, в статье раскрывается, что он по своей сути сходится к глобальному минимуму.
Это должно быть принято с зерном соли, хотя. Статья еще находится на рассмотрении.
Понятие звездно-выпуклой траектории дает подсказку о том, куда градиент будет указывать на каждой итерации.
источник