Как учится машина. Революция в области нейронных сетей и глубокого обучения - Ян Лекун
Должен быть компромисс: нужно выбрать прямую, которая проходит как можно ближе ко всем точкам, с небольшими ошибками.
Как минимизировать ошибку?
При значении w = 4.0 значение, предсказанное справа, равно 7.6. Но значение, наблюдаемое в примере 4, равно 5.4. Четвертая точка выдает ошибку –2.2 = 5.4 – 7.6. Меняя w, мы можем переместить прямую ближе к этой четвертой точке, но тогда мы отодвинемся от остальных трех. Поскольку невозможно пройти через все точки, лучшим компромиссом в нашем примере является прямая, наклон которой составляет примерно 3.2.
При заданном значении w для каждой из точек возникает ошибка между предсказанным функцией yp (на новой прямой) и наблюдаемым у (в каждом примере обучения).
Мы можем измерить среднюю ошибку по всем этим четырем точкам. Для каждой точки ошибка может быть положительной или отрицательной; важно расстояние между предсказанным значением yp и наблюдаемым значением y, независимо от его знака. Чтобы определить это расстояние, необходимо использовать квадрат этой ошибки, но также можно использовать его абсолютное значение (которое всегда положительно).
Для заданного значения w ошибка в примере, скажем (X[3], Y[3]), равна (Y[3] – w * X[3]) ** 2, поскольку значение предсказано для X[3], это yp = w * X[3]. (Мы используем обозначение из информатики: ** 2 для возведения в квадрат[40].)
Мерой неточности системы L(w) является среднее значение всех этих ошибок на обучающих примерах:
L(w) = ¼ * ((Y[0] – w * X[0]) ** 2 + (Y[1] – w * X[1]) ** 2 + (Y[2] – w * X[2]) ** 2 + (Y[3] – w * X[3]) ** 2)
Данная величина зависит от w: иначе говоря, это функция от w. Мы называем это функцией стоимости, и w – единственный регулируемый параметр этой функции. Чем меньше значение L(w), тем меньше средняя ошибка, тем точнее наше приближение. Следовательно, мы должны найти значение w, которое минимизирует эту функцию стоимости L(w) (см. рисунок 3.3).
Вместе с точками обучения p функция стоимости обозначается с использованием греческой буквы «сигма»
для обозначения суммы членов для всех значений индекса i от 0 до p-1:Эта формула включает квадрат w. Следовательно, это многочлен второй степени; другими словами, парабола.
Есть способ сделать это, он называется «стохастический градиентный спуск», или SGD (Stochastic Gradient Descent). Идея его состоит в том, чтобы взять точку обучения и немного скорректировать линию, чтобы она приблизилась к рассматриваемой точке. Затем следует перейти к следующей точке обучающего набора и провести небольшую корректировку, чтобы приблизиться и к этой новой точке. Корректировка должна быть такой же незначительной, как и ошибка. Другими словами, корректировка будет пропорциональна ошибке. Допустим, если мы возьмем пример № 3, корректировка для w будет следующей:
w = w + e * 2 * (Y[3] – w * X[3]) * X[3]
Рис. 3.3. Парабола, являющаяся графиком квадратичной функции стоимости
Когда функция стоимости представляет собой многочлен второй степени по отношению к w, она принимает форму параболы с единственным минимумом. Решение, то есть значение w, которое дает минимальное значение стоимости, обозначено на графике значком
Это не математическая формула, а обозначение, заимствованное из информатики: оно означает, что мы заменяем переменную w (слева от знака равенства) ее текущим значением (справа от знака равенства), суммированным с результатом выражения, расположенного справа от знака плюс.
Давайте рассмотрим эту формулу. Переменная e называется «шагом градиента». Она должна содержать небольшое положительное число, которое определит размер приращения w. Если число X[3] положительно, а линия находится ниже точки (X[3], Y[3]), то есть разница (Y[3] – w * X[3]) положительна, тогда необходимо увеличить значение w. Именно это и делает приведенная формула. И наоборот, если линия проходит над точкой, разница будет отрицательной и значение w будет уменьшаться. Скорость, с которой линия приближается к точке, уменьшается по мере приближения линии к точке, останавливаясь при прохождении через точку. Когда X[3] отрицательно, формула меняет знак приращения на противоположный: слишком маленький наклон приводит к положительной ошибке, и наоборот.
Повторяя примеры один за другим и каждый раз немного меняя наклон прямой, в конечном итоге мы стабилизируем прямую по отношению к значению w, которое минимизирует L(w), при условии постепенного уменьшения значения e. Этот метод, получивший название «стохастическая аппроксимация», был изобретен в 1951 г. американскими статистиками Гербертом Роббинсом и Саттоном Монро.
В скобках – для математиков
Обобщим метод стохастического градиентного спуска.
Обозначим через C(x, y, w) функцию стоимости для данного примера.
В нашем примере C(x, y, w) = (y – w * x) ** 2 для заданной точки (x, y), тогда обновление w в соответствии со стохастическим градиентным спуском будет следующим:
w = w – e * dC(x, y, w) / dw
где e – шаг градиента, а dC(x, y, w) / dw – производная (также называемая градиентом) C относительно w.
Производная от (y – w * x) ** 2 относительно w равна –2 * (y – w * x) * x, а формула обновления принимает следующий вид:
w = w + 2 * e * (y – w * x) * x
идентично тому, что мы видели выше. Это можно понять интуитивно: если наклон (производная) C(x, y, w) положительный, необходимо уменьшить w. Если наклон отрицательный, w необходимо увеличить. После нескольких итераций w в конечном итоге упадет до нижней части C(x, y, w). Мы хотим минимизировать L(w), который представляет собой среднее значение C(x, y, w) для всех точек:
Роббинс и Монро продемонстрировали, что процедура сходится к минимуму L(w), если ее применять многократно ко всем точкам, при условии, что е постепенно уменьшается.
Стохастический градиентный спуск на сегодняшний день является наиболее широко используемым методом обучения современных систем машинного обучения. Вот почему я счел полезным описать его здесь. Мы еще вернемся к нему, когда будем обсуждать перцептрон, Adaline и многослойные нейронные сети.
Но в нашем случае для того, чтобы заставить прямую пройти как можно ближе к набору точек, стохастический градиентный спуск оказывается медленным и бесполезным на практике методом.