Стохастический градиентный спуск: различия между версиями
[отпатрулированная версия] | [непроверенная версия] |
Содержимое удалено Содержимое добавлено
Jumpow (обсуждение | вклад) отклонено последнее 1 изменение (VCarik): Зачем менять более точную ссылку на более общую? Функция со свойствами (дифференцируемость) Зачем менять на (дифференцируемой)? И так далее Метка: ручная отмена |
отмена правки 113584017 участника Jumpow (обс.) Моя правка содержит исправления многочисленных стилевых и лексических неточностей автоматического перевода с английского, в частности пресловутое «обучение машин». Пожалуйста, исправьте отдельно те моменты, которые кажутся Вам совершенно неприемлемыми. Метки: отмена отменено задача для новичков |
||
Строка 1:
'''Стохастический градиентный спуск''' ({{lang-en|Stochastic gradient descent}}, '''SGD''') — это [[
Хотя
== Предпосылки ==
Строка 8:
И [[Статистика|статистическая]] {{не переведено 5|M-оценка|оценка||M-estimation}}, и [[машинное обучение]] рассматривают задачу [[Оптимизация (математика)|минимизации]] [[Функция потерь|целевой функции]], имеющей форму суммы
: <math>Q(w)=\frac{1}{n}\sum_{i=1}^n Q_i(w),</math>
где [[Параметрическая статистика|параметр]] <math>w</math>, минимизирующий <math>Q(w)</math>, следует [[Статистическая оценка|оценить]]. Каждый член суммы <math>Q_i</math> обычно ассоциируется с <math>i</math>-ым {{не переведено 5|Наблюдение (статистика)|наблюдением||Observation (statistics)}} в {{не переведено 5|Набор данных|наборе данных||data set}},
В классической статистике задачи минимизации суммы возникают в [[Метод наименьших квадратов|методе наименьших квадратов]] и [[Метод максимального правдоподобия|методе максимального правдоподобия]] (для независимых наблюдений). Общий класс оценок, возникающих в виде минимизации сумм называется {{не переведено 5|M-оценка|M-оценками||M-estimator}}. Однако, в статистике давно признали, что требование даже локальной минимизации слишком ограничительно для некоторых задач метода максимального правдоподобия{{sfn|Ferguson|1982|с=831–834}}. Поэтому современные теоретики-статистики часто рассматривают [[Критическая точка (математика)|стационарные точки]] [[Функция правдоподобия|функции правдоподобия]] (или нули её производной, {{не переведено 5|Количественный показатель (статистика)|функцию количественной оценки||Score (statistics)}} и другие {{не переведено 5|Метод оценочных уравнений|методы оценочных уравнений||estimating equations}}).
Строка 14:
Задача минимизации суммы возникает также при [[Минимизация эмпирического риска|минимизации эмпирического риска]]. В этом случае <math>Q_i(w)</math> является значением [[Функция потерь|функции потерь]] на <math>i</math>-ом примере, а <math>Q(w)</math> является эмпирическим риском.
: <math>w := w - \eta \nabla Q(w)=w - \eta \sum_{i=1}^n \nabla Q_i(w)/n,</math>
где <math>\eta</math> является размером шага (называемого {{не переведено 5|скорость обучения|''скоростью обучения''||learning rate}}
Однако, в других случаях, вычисление градиента суммы может потребовать
== Итеративный метод ==
[[Файл:stogra.png|thumb|right|Флуктуации целевой функции по мере работы алгоритма]]
В стохастическом (или «онлайновом») градиентном спуске истинный градиент функции <math>Q(w)</math> аппроксимируется градиентом одного тренировочного примера
: <math>w := w - \eta \nabla Q_i(w).</math>
Пробегая через тренировочное множество, алгоритм осуществляет приведённый выше пересчёт для каждого тренировочного примера. Через тренировочный набор может быть осуществлено несколько проходов, прежде чем алгоритм сойдётся.
<div style="margin-left: 35px; width: 600px">
{{Начало коробки|blue}}
* Выбираем начальный вектор параметров <math>w</math> и скорость обучения <math>\eta</math>.
* Повторяем пока не получим приблизительный минимум:
** Случайным образом
** Для <math> i=1, 2, ..., n</math> выполняем
*** <math>\! w := w - \eta \nabla Q_i(w).</math>
Строка 40:
</div>
Компромиссом между вычислением истинного градиента и градиента по одному тренировочному примеру может быть вычисление градиента по более чем одному тренировочному примеру (называемому «минипакетом») на каждом шаге. Это может
Сходимость стохастического градиентного спуска анализировалась с помощью теорий [[Выпуклое программирование|выпуклой минимизации]] и [[Стохастическая аппроксимация|стохастической аппроксимации]]. Если коротко, когда {{не переведено 5|скорость обучения|скорости обучения||learning rate}} <math>\eta</math> убывают с подходящей скоростью, с учётом относительно слабых предположений, стохастический градиентный спуск сходится [[Почти достоверное событие|почти наверняка]] к глобальному минимуму, если целевая функция [[Выпуклая функция|выпукла]] или [[Псевдовыпуклая функция|псевдовыпукла]], в противном случае метод сходится почти наверняка к локальному минимуму{{sfn|Bottou|1998}}{{sfn|Kiwiel|2001|с=1–25}}. Фактически, это следствие теоремы Роббинса — Сигмунда{{sfn|Robbins, Siegmund|1971}}.
== Пример ==
Предположим, что мы хотим
: <math>Q(w)=\sum_{i=1}^n Q_i(w)=\sum_{i=1}^n \left(\hat{y_i}-y_i\right)^2=\sum_{i=1}^n \left(w_1 + w_2 x_i - y_i\right)^2.</math>
Строка 56:
- \eta \begin{bmatrix} 2 (w_1 + w_2 x_i - y_i) \\ 2 x_i(w_1 + w_2 x_i - y_i) \end{bmatrix}.</math>
Заметим, что на каждой итерации (которая называется также
Ключевое различие по сравнению со стандартным (пакетным) градиентным спуском в том, что только одна часть данных из всего множества используется на каждом шаге и эта часть выбирается на каждом шаге случайно.
== Известные приложения ==
Стохастический градиентный спуск является популярным алгоритмом для обучения широкого ряда моделей в [[Машинное обучение|
Стохастический градиентный спуск использовался по меньшей мере с 1960 года для обучения моделей [[Линейная регрессия|линейной регрессии]] под именем {{не переведено 5|ADALINE|||ADALINE}}{{r|APf}}.
Другой стохастический алгоритм градиентного спуска является адаптивным {{не переведено 5|Фильтр наименьших квадратов|фильтром наименьших квадратов||Least mean squares filter}} ({{lang-en|least mean squares adaptive filter}}, LMS)]].▼
▲Другой стохастический алгоритм градиентного спуска является адаптивным {{не переведено 5|Фильтр наименьших квадратов|фильтром наименьших квадратов||Least mean squares filter}} ({{lang-en|least mean squares adaptive filter}}, LMS)
== Разновидности и модификации ==▼
Существует множество модификаций алгоритма стохастического градиентного спуска. В частности, в машинном обучении проблемой является выбор {{не переведено 5|Скорость обучения|скорости обучения||learning rate}} (размера шага): при большом шаге алгоритм может расходиться, а при маленьком — сходимость слишком медленная. Для решения этой проблемы можно использовать {{Не переведено 5|расписание скорости обучения|||Learning_rate#Learning_rate_schedule}}, при котором скорость обучения <math>\eta_t</math> убывает с увеличением номера итерации <math>t</math>. При этом на первых итерациях значения параметров изменяются значительно, а на более поздних итерациях — только лишь уточняются. Такие расписания известны со времён работы Мак-Куина по [[Метод k-средних|кластеризации методом {{mvar|k}}-средних]]{{sfn|Darken, Moody|1990}}. Некоторые практические рекомендации по выбору шага в некоторых вариантах SGD даны в секциях 4.4, 6.6 и 7.5 статьи Сполла (2003){{sfn|Spall|2003}}.▼
▲Существует множество модификаций алгоритма стохастического градиентного спуска. В частности, в машинном обучении проблемой является выбор {{не переведено 5|Скорость обучения|скорости обучения||learning rate}} (размера шага): при большом шаге алгоритм может расходиться, а при маленьком — сходимость слишком медленная. Для решения этой проблемы можно использовать {{Не переведено 5|расписание скорости обучения|||Learning_rate#Learning_rate_schedule}}, при котором скорость обучения <math>\eta_t</math> убывает с увеличением номера итерации <math>t</math>. При этом на первых итерациях значения параметров изменяются значительно, а на более поздних итерациях —
=== Не выраженные явно изменения (ISGD) ===
Как упомянуто ранее, классический стохастический градиентный спуск обычно чувствителен к {{не переведено 5|скорость обучения|скорости обучения||learning rate}} <math>\eta</math>. Быстрая сходимость требует быстрой большой скорости обучения, но это может вызвать численную
:<math>w^{new} := w^{old} - \eta \nabla Q_i(w^{new}).</math>
Строка 77 ⟶ 79 :
:<math>w^{new} := \arg\min_w \{ Q_i(w) + \frac{1}{2\eta}||w - w^{old}||^2 \}.</math>
В качестве примера рассмотрим метод наименьших квадратов
:<math>\min_w \sum_{j=1}^n (y_j - x_j'w)^2,</math>
где <math>x_j' w=x_{j1} w_1 + x_{j, 2} w_2 + ... + x_{j,p} w_p</math> означает скалярное произведение. Заметим, что <math>x</math> может иметь "1" в качестве первого элемента. Классический стохастический градиентный спуск работает следующим образом
:<math>w^{new}=w^{old} + \eta (y_i - x_i'w^{old}) x_i</math>
где <math>i</math> равномерно распределено между 1 и <math>n</math>. Хотя теоретически эта процедура сходится при относительно
:<math>w^{new}=w^{old} + \frac{\eta}{1 + \eta||x_i||^2} (y_i - x_i'w^{old}) x_i.</math>
Процедура будет оставаться численно
Хотя решение в аналитическом виде для ISGD возможно только в методе наименьших квадратов, процедуру можно эффективно реализовать в широкий ряд моделей. В частности, предположим, что <math>Q_i(w)</math> зависит от <math>w</math> только как линейная комбинация свойств <math>x_i</math>, так что мы можем записать <math>\nabla_w Q_i(w)=-q(x_i'w) x_i</math>, где
<math>q() \in\mathbb{R}</math> может зависеть от <math>x_i, y_i</math>, но не от <math>w</math> непосредственно, лишь через <math>x_i'w</math>. Метод наименьших квадратов удовлетворяет этому условию,
В таких условия ISGD легко реализовать следующим образом. Пусть <math>f(\xi)=\eta q(x_i'w^{old} + \xi||x_i||^2)</math>, где <math>\xi</math>
:<math>w^{new}=w^{old} + \xi^\ast x_i,~\text{where}~\xi^\ast=f(\xi^\ast).</math>
=== Импульс ===
Строка 106 ⟶ 104 :
:<math>w := w - \eta \nabla Q_i(w) + \alpha \Delta w </math>
где [[Параметрическая статистика|параметр]] <math>w</math>, который минимизирует <math>Q(w)</math>, следует [[Статистическая оценка|оценить]], а <math>\eta</math> является размером шага (иногда
Название «импульс»
=== Усреднение ===
''Усреднённый стохастический градиентный спуск'', разработанный независимо Руппертом и Поляком в конце 1980-х годов, является обычным стохастическим градиентным спуском, который записывает среднее вектора параметров. То есть
:<math>\bar{w}=\frac{1}{t} \sum_{i=0}^{t-1} w_i</math>.
Когда оптимизация завершена,
=== AdaGrad ===
''AdaGrad'' (адаптивный градиентный алгоритм, {{lang-en|adaptive gradient algorithm}}) является модификацией стохастического алгоритма градиентного спуска с отдельной для каждого параметра {{не переведено 5|скорость обучения|скоростью обучения||learning rate}}. Алгоритм был опубликован в 2011{{sfn|Duchi, Hazan, Singer|2011|с=2121–2159}}{{r|Perla}}.
:<math>G=\sum_{\tau=1}^t g_\tau g_\tau^\mathsf{T}</math>
Строка 126 ⟶ 124 :
:<math>G_{j,j}=\sum_{\tau=1}^t g_{\tau,j}^2</math>.
Этот вектор обновляется после каждой итерации. Формула
:<math>w := w - \eta\, \mathrm{diag}(G)^{-\frac{1}{2}} \circ g</math>{{efn|<math>\circ</math> является [[Произведение Адамара|поэлементным произведением]].}}
Строка 134 ⟶ 132 :
:<math>w_j := w_j - \frac{\eta}{\sqrt{G_{j,j}}} g_j.</math>
Каждый элемент <math>\{G_{(i,i)}\}</math> даёт множитель для скорости обучения, применяемый к одному параметру <math>w_i</math>. Поскольку знаменатель в этом множителе, <math>\sqrt{G_i}=\sqrt{\sum_{\tau=1}^t g_\tau^2}</math>, является [[Норма (математика)#Линейные нормированные пространства|нормой
Хотя алгоритм разрабатывался для [[Выпуклое программирование|выпуклых задач]], AdaGrad успешно применяется для невыпуклой оптимизации{{sfn|Gupta, Bengio, Weston|2014|с=1461–1492}}.
=== RMSProp ===
''RMSProp'' (от {{lang-en|Root Mean Square Propagation}}) — это метод, в котором {{не переведено 5|скорость обучения|||learning rate}} настраивается для каждого параметра. Идея заключается в делении скорости обучения для весов на
:<math>v(w,t):=\gamma v(w,t-1)+(1-\gamma)(\nabla Q_i(w))^2</math>
Строка 149 ⟶ 147 :
:<math>w:=w-\frac{\eta}{\sqrt{v(w,t)}}\nabla Q_i(w)</math>
RMSProp показал
=== Adam ===
''Adam''{{r|DeBa}} (сокращение от «метод
:<math>m_w ^ {(t+1)} \leftarrow \beta_1 m_w ^ {(t)} + (1 - \beta_1) \nabla _w L ^ {(t)} </math>
Строка 162 ⟶ 160 :
:<math>w ^ {(t+1)} \leftarrow w ^ {(t)} - \eta \frac{\hat{m}_w}{\sqrt{\hat{v}_w} + \epsilon} </math>
где <math>\epsilon</math>
=== Естественный градиентный спуск и kSGD ===
Основанный на фильтре Калмана стохастический градиентный спуск ({{lang-en|Kalman-based Stochastic Gradient Descent}}, kSGD){{sfn|Patel|2016|с=2620–2648}} является онлайновым и офлайновым алгоритмом для параметров обучения для статистических задач для моделей {{не переведено 5|Квазиправдоподобие|квазиправдоподобия||quasi-likelihood}}, куда входят [[Линейная регрессия|линейные модели]], [[Нелинейная регрессия|нелинейные модели]], [[обобщённая линейная модель|обобщённые линейные модели]], и [[Искусственная нейронная сеть|нейронные сети]] с {{не переведено 5|Среднеквадратичная ошибка|среднеквадратичными потерями||Mean squared error}} как
Преимущества kSGD по сравнению с другими методами:▼
# Имеет условие остановки.
▲Преимущества kSGD по сравнению с другими методами
▲: (1) Он нечувствителен к числу условий задачи,{{efn|Для задачи линейной регрессии, kSGD's отклонение целевой функции (то есть полная ошибка и дисперсия) на итерации <math>k</math> равно <math>{\frac {1+\epsilon }{k}}p\sigma ^{2}</math> с вероятностью, стремящейся к 1 со скоростью, зависящей от <math>\epsilon \in (0,1)</math>, где <math>\sigma ^{2}</math> является дисперсией остатков. Более того, для конкретного выбора <math>\gamma _{1},\gamma _{2}</math>, может быть показано, что kSGD's отклонение целевой функции на итерации <math>k</math> равно <math>\frac {(1+\epsilon )^{2}}{2k^{2}}\Vert w(0)-w_{*}\Vert _{2}^{2}</math> с вероятностью, стремящейся к 1 со скоростью, зависящей от <math>\epsilon \in (0,1)</math>, где <math>w_{*}</math> является оптимальным параметром.}}
▲: (2) он имеет робастный выбор гиперпараметров
Недостатком kSGD является то, что алгоритм требует запоминания плотной ковариационной матрицы между итерациями, и на каждой итерации нужно находить произведение вектора на матрицу.
Для описания алгоритма предположим, что для <math>Q_i(w)</math>, где <math>w \in \mathbb{R}^p</math>, определена <math>(Y_i,X_i)\in \mathbb{R} \times \mathbb{R}^d</math> так, что
:<math>\nabla_w Q_i(w)=\frac{Y_i - \mu(X_i,w)}{V(\mu(X_i,w))} \nabla_w \mu(X_i,w)</math>
где <math>\mu(X_i,w)</math> — функция усреднения (то есть
:<math> p=\nabla_w \mu(X_{t+1},w(t)) </math>
Строка 186:
:<math> M(t+1)=M(t) - \frac{1}{s} v v^\mathsf{T} </math>
где <math>\gamma_1,\gamma_2</math> являются гиперпараметрами. Пересчёт <math>M(t)</math> может привести к тому, что ковариантная матрица станет неопределённой, что можно избежать за счёт умножения матрицы на матрицу. <math>M(0)</math> может быть любой [[Положительно определённая матрица|положительно определённой]] [[Симметричная матрица|симметричной]] матрицей, но обычно берётся [[единичная матрица]]. Как заметил Патель{{sfn|Patel|2016|с=2620–2648}}, для всех задач, не считая
=== Методы второго порядка ===
Известно, что стохастический аналог стандартного (детерминированного) [[Метод Ньютона#Метод Ньютона — Рафсона|алгоритма Ньютона —
== Комментарии ==
|