Центральная идея SGD
Пр. Хинтон в своем популярном курсе на Coursera указывает на следующий факт :
Rprop на самом деле не работает, когда у нас очень большие наборы данных и нужно выполнять мини-пакетные обновления весов. Почему не работает с мини-партиями? Что ж, люди пробовали это, но им было трудно заставить его работать. Причина, по которой он не работает, заключается в том, что он нарушает центральную идею стохастического градиентного спуска , заключающуюся в том, что при достаточно низкой скорости обучения он усредняет градиенты по последовательным мини-пакетам. Рассмотрим вес, который получает градиент 0,1 для девяти мини-пакетов и градиент -0,9 для десятых мини-пакетов. Мы бы хотели, чтобы эти градиенты грубо компенсировали друг друга, чтобы оставаться примерно одинаковыми. Но это не то, что происходит с rprop. С помощью rprop мы увеличиваем вес в 9 раз и уменьшаем только один раз, поэтому вес становится намного больше.
Как видите, основная идея SGD состоит в том, что последовательные градиенты в мини-пакетах должны быть усреднены. Есть ли у кого-нибудь действительный официальный источник для этого? есть ли оправдание? До сих пор я не встречал никаких доказательств.
Ответы
Влияние распределения генерации данных
Чтобы увидеть это, сначала мы должны упомянуть, что ни с помощью пакетного градиентного спуска (с использованием всего набора данных для вычисления градиента), ни с помощью мини-пакетного градиентного спуска мы не вычисляем истинное (точное) значение градиента.
Чтобы вычислить истинное значение градиента, нам нужно будет использовать набор всех возможных значений функций, $x$, (и тем самым выходы $y$).
Более формально и в отношении количества, которое мы хотим минимизировать, как ожидаемого значения функции потерь для каждого примера ($J(x,y,\theta)$, где $\theta$ параметры) по всем возможным $x,y$ значения, истинный градиент $g$ дан кем-то: $$g = \frac{\partial}{\partial \theta}\mathbb{E}_{x,y\sim p_{data}}(J(x,y,\theta)) $$И если мы примем определенные условия, мы получим это:$$g = \mathbb{E}_{x,y\sim p_{data}}\left(\frac{\partial}{\partial \theta}J(x,y,\theta)\right) $$
Где $p_{data}$- распределение, генерирующее данные (распределение, из которого значения$x$ а также $y$нарисованы). Однако это распределение, генерирующее данные, обычно неизвестно. Мы просто знаем набор данных, который нам дают.
Из-за этого, чтобы обновить параметры, используя всю предоставленную информацию (обучающий набор), мы вместо этого используем эмпирическое распределение, определяемое обучающими данными ($\hat{p}_{data}$), что ставит вероятность $1/m$ на каждом из $m$ образцы $(x^{(1)}, y^{(1)}), \,(x^{(2)}, y^{(2)}),\,...\,,(x^{(m)}, y^{(m)})$набора данных. Таким образом, градиент приблизительно равен:$$ \begin{aligned} \hat{g}&=\frac{\partial}{\partial \theta}\mathbb{E}_{x,y\sim \hat{p}_{data}}(J(x,y,\theta))\\&=\frac{\partial}{\partial \theta}\left(\sum_{i=1}^m \frac{1}{m}J_i(x^{(i)},y^{(i)},\theta)\right)\\ &= \frac{1}{m}\sum_{i=1}^m\frac{\partial }{\partial \theta}J_i(x^{(i)},y^{(i)},\theta) \end{aligned} $$ Завершаем пакетным градиентным спуском.
Но что происходит с мини-партиями?
Используя обновления мини-ванны, мы постоянно получаем новые данные (при условии, что мы вычисляем только одну эпоху). Итак, в этом случае, используя мини-пакеты, мы используем распределение генерации данных.
Это означает, что при каждом мини-пакетном обновлении путем выборки этого распределения, генерирующего данные, мы получаем оценку ($\hat{g}$) истинного градиента ($g$), который является беспристрастным, т.е. $\mathbb{E}_{x,y\sim p_{data}}(\hat{g})=g$. Чтобы увидеть это, и учитывая$\text{s-sized}$ мини-партии: $$\begin{aligned} \mathbb{E}_{x,y\sim p_{data}}(\hat{g})&=\mathbb{E}_{x,y\sim p_{data}}\left(\frac{g^{(1)}+...+g^{(s)}}{s}\right)\\ &=\frac{1}{s}(\mathbb{E}_{x,y\sim p_{data}}(g^{(1)}+...+g^{(s)}))\\ &=\frac{1}{s}s\,\,g=g \end{aligned} $$Таким образом, выполняя последовательные мини-пакетные обновления, мы в среднем будем стараться (как показано$\mathbb{E}_{x,y\sim p_{data}}(\hat{g})$) для обновления наших параметров истинным значением градиента. И это то, на что, я думаю, ссылаются авторы в цитате вопроса.
Отличные ссылки:
Книга по глубокому обучению, Ян Гудфеллоу и др. al Глава 8.1
Ответы отсюда
На этапе полного градиентного спуска функция потерь определяется как среднее значение потери в отдельных точках выборки. Чтобы минимизировать функцию потерь, нам нужно усреднить отдельные градиенты.
При стохастическом градиентном спуске, если нет смещения при выборе пакетов, усреднение по пакетам приведет к несмещенной оценке полного градиента.
Пожалуйста, взгляните на эту лекцию http://www.stat.cmu.edu/~ryantibs/convexopt-F18/scribes/Lecture_24.pdf