Метод стохастического градиента
Материал из MachineLearning.
| (6 промежуточных версий не показаны.) | |||
| Строка 6: | Строка 6: | ||
| Найдём алгоритм <tex>a(x, w)</tex>, аппроксимирующий зависимость <tex>y^*</tex>. | Найдём алгоритм <tex>a(x, w)</tex>, аппроксимирующий зависимость <tex>y^*</tex>. | ||
| - | В случае линейного классификатора  | + | В случае линейного классификатора  искомый алгоритм имеет вид: | 
| - | ::<tex>a(x, w) = \ | + | ::<tex>a(x, w) = \varphi(\sum_{j=1}^n w_j x^j \, - \, w_0)</tex>, | 
| - | где <tex>\ | + | где <tex>\varphi(z)</tex> играет роль ''функции активации'' (в простейшем случае можно положить <tex>\varphi(z) \, = \, sign(z)</tex>). | 
| + | |||
| Согласно принципу минимизации эмпирического риска для этого достаточно решить оптимизационную задачу: | Согласно принципу минимизации эмпирического риска для этого достаточно решить оптимизационную задачу: | ||
| <tex>Q(w) \, = \, \sum_{i=1}^l L(a(x_i, w), \, y_i) \to \min_w</tex>, | <tex>Q(w) \, = \, \sum_{i=1}^l L(a(x_i, w), \, y_i) \to \min_w</tex>, | ||
| Строка 68: | Строка 69: | ||
| *Возможны различные стратегии обучения. Если выборка избыточно большая, или обучение происходит динамически, то допустимо не сохранять обучающие объекты. Если выборка маленькая, то можно повторно предъявлять для обучения одни и те же объекты. | *Возможны различные стратегии обучения. Если выборка избыточно большая, или обучение происходит динамически, то допустимо не сохранять обучающие объекты. Если выборка маленькая, то можно повторно предъявлять для обучения одни и те же объекты. | ||
| - | ==Недостатки SG и способы  | + | ==Недостатки SG и способы их устранения== | 
| *Алгоритм может не сходиться или сходиться слишком медленно (см. "Сходимость алгоритма".) | *Алгоритм может не сходиться или сходиться слишком медленно (см. "Сходимость алгоритма".) | ||
| *Как правило, функционал <tex>Q</tex> многоэкстремален и процесс градиентного спуска может "застрять" в одном из локальных минимумов. Для борьбы с этим используют технику ''встряхивания коэффициентов (jog of weights)''. Она заключается в том, чтобы при каждой стабилизации функционала производить случайные модификации вектора <tex>w</tex> в довольно большой окрестности текущего значения и запускать процесс градиентного спуска из новых точек. | *Как правило, функционал <tex>Q</tex> многоэкстремален и процесс градиентного спуска может "застрять" в одном из локальных минимумов. Для борьбы с этим используют технику ''встряхивания коэффициентов (jog of weights)''. Она заключается в том, чтобы при каждой стабилизации функционала производить случайные модификации вектора <tex>w</tex> в довольно большой окрестности текущего значения и запускать процесс градиентного спуска из новых точек. | ||
| Строка 74: | Строка 75: | ||
| ::<tex>w \, {:=} \, w(1 \, - \, \eta \tau) \, - \, \eta \nabla Q(w)</tex>. | ::<tex>w \, {:=} \, w(1 \, - \, \eta \tau) \, - \, \eta \nabla Q(w)</tex>. | ||
| *Если функция активации имеет горизонтальные асимптоты, то процесс может попасть в состояние "паралича". При больших значениях скалярного произведения <tex><w, x_i></tex> значение <tex>\varphi^\prime</tex> становится близким к нулю и вектор <tex>w</tex> перестаёт существенно изменяться. Поэтому общей практикой является предварительная нормализация признаков: | *Если функция активации имеет горизонтальные асимптоты, то процесс может попасть в состояние "паралича". При больших значениях скалярного произведения <tex><w, x_i></tex> значение <tex>\varphi^\prime</tex> становится близким к нулю и вектор <tex>w</tex> перестаёт существенно изменяться. Поэтому общей практикой является предварительная нормализация признаков: | ||
| - | ::<tex>x^j \, {:=} \, \frac{x^j \, - \, x_{\min}^j}{x_{\max}^j \, - \, x_{\min}^j}, \; j = 1, \dots, n</tex>, где <tex>x_{\min}^j, \, x_{\max}^j</tex> - соответственно минимальное и максимальное отклонения j-го признака. Если при этом <tex>w_j \in [-\frac{1}{n}, \frac{1}{n}]</tex>, то <tex><w, x> \in [-1,1].</tex> | + | ::<tex>x^j \, {:=} \, \frac{x^j \, - \, x_{\min}^j}{x_{\max}^j \, - \, x_{\min}^j}, \; j = 1, \dots, n</tex>, где <tex>x_{\min}^j, \, x_{\max}^j</tex> - соответственно минимальное и максимальное отклонения j-го признака. Если при этом <tex>w_j \in [-\frac{1}{n}, \frac{1}{n}]</tex>, то <tex><w, x> \in [-1,1].</tex>  | 
| + | :Отметим, что регурялизация (например weights decay) также является способом предотвращения "паралича". | ||
| ==Сходимость алгоритма== | ==Сходимость алгоритма== | ||
Текущая версия
| Содержание | 
Основная идея
Градиентные методы - это широкий класс оптимизационных алгоритмов, используемых не только в машинном обучении.
Здесь градиентный подход будет рассмотрен в качестве способа подбора вектора синаптических весов  в  линейном классификаторе.
Пусть 
 - целевая зависимость, известная только на объектах обучающей выборки:
.
Найдём алгоритм , аппроксимирующий зависимость 
.
В случае линейного классификатора  искомый алгоритм имеет вид:
- , 
 
где  играет роль функции активации (в простейшем случае можно положить 
).
Согласно принципу минимизации эмпирического риска для этого достаточно решить оптимизационную задачу:
,
где 
 - заданная функция потерь.
Для минимизации применим метод градиентного спуска (gradient descent). Это пошаговый алгоритм, на каждой итерации которого вектор  изменяется в направлении наибольшего убывания функционала 
 (то есть в направлении антиградиента):
- , 
 
где  - положительный параметр, называемый темпом обучения (learning rate).
Возможно 2 основных подхода к реализации градиентного спуска:
- Пакетный (batch), когда на каждой итерации обучающая выборка просматривается целиком, и только после этого изменяется . Это требует больших вычислительных затрат. 
- Стохастический (stochastic/online), когда на каждой итерации алгоритма из обучающей выборки каким-то (случайным) образом выбирается только один объект. Таким образом вектор w настраивается на каждый вновь выбираемый объект.
Алгоритм Stochastic Gradient (SG)
Вход:
- - обучающая выборка 
 
- - темп обучения 
 
- - параметр сглаживания функционала 
 
Выход:
- Вектор весов 
 
Тело:
- Инициализировать веса ; 
- Инициализировать текущую оценку функционала:
-  ; 
 
-  
 
- Повторять:
- Выбрать объект из (например, случайным образом); 
- Вычислить выходное значение алгоритма и ошибку: - ; 
 
 
- Сделать шаг градиентного спуска:
- ; 
 
 
-  Оценить значение функционала:
- ; 
 
 
 
- Выбрать объект 
- Пока значение не стабилизируется и/или веса не перестанут изменяться. 
Порядок выбора объектов
Выше сказано, что в случае стохастического градиентного спуска объекты следует выбирать случайным образом. Однако существуют эвристики, направленные на улучшение сходимости, которые слегка модифицируют обычный случайный выбор:
- Перемешивание (shuffling). Предлагается случайно выбирать объекты, но попеременно из разных классов. Идея в том, что объекты из разных классов скорее всего менее "похожи", чем объекты из одного класса, поэтому вектор будет каждый раз сильнее изменяться. 
- Возможен вариант алгоритма, когда выбор каждого объекта неравновероятен, причём вероятность выпадения объекта обратно пропорциональна величине ошибки на объекте. Следует заметить, что при такой эвристике метод становится очень чувствителен к шумам.
Способы инициализации весов
- Инициализировать вектор нулями. Этот способ используется во многих системах, но совсем не всегда является лучшим. 
- , где - - размерность пространства признаков. Этот подход существенно более удачен, чем предыдущий, если соответствующим образом нормализовать признаковое описание (см. "Недостатки SG и способы борьбы с ними".) 
- Ещё один подход заключается в том, чтобы решить исходную оптимизационную задачу в случае статистически независимых признаков, линейной функции активации () и квадратичной функции потерь ( ). Тогда решение имеет вид: 
-  . 
 
-  
Параметр сглаживания
В алгоритме для оценки функционала  на каждой итерации используется его приближённое значение по методу экспоненциального сглаживания, откуда 
 лучше брать порядка 
. Если длина выборки избыточно большая, то 
 следует увеличивать.
Известные частные случаи алгоритма
Метод SG (при соответствующем выборе функций активации и потерь) является обобщением следующих широко распространённых эвристик подбора  и алгоритмов классификации:
- Адаптивный линейный элемент (Adalines);
- Правило Хэбба;
- Алгоритм k-средних (K-Means);
- Learning Vector Quantization (LVQ).
Преимущества SG
- Метод приспособлен для динамического (online) обучения, когда обучающие объекты поступают потоком, и надо быстро обновлять вектор . 
- Алгоритм способен обучаться на избыточно больших выборках за счёт того, что случайной подвыборки может хватить для обучения.
- Возможны различные стратегии обучения. Если выборка избыточно большая, или обучение происходит динамически, то допустимо не сохранять обучающие объекты. Если выборка маленькая, то можно повторно предъявлять для обучения одни и те же объекты.
Недостатки SG и способы их устранения
- Алгоритм может не сходиться или сходиться слишком медленно (см. "Сходимость алгоритма".)
- Как правило, функционал многоэкстремален и процесс градиентного спуска может "застрять" в одном из локальных минимумов. Для борьбы с этим используют технику встряхивания коэффициентов (jog of weights). Она заключается в том, чтобы при каждой стабилизации функционала производить случайные модификации вектора в довольно большой окрестности текущего значения и запускать процесс градиентного спуска из новых точек. 
- При большой размерности пространства признаков и/или малой длине выборки возможно переобучение, то есть классификация становится неустойчивой, и вероятность ошибки увеличивается. При этом сильно возрастает норма вектора весов. Для борьбы с данным недостатком используют метод сокращения весов (weights decay). Он заключается в том, чтобы ограничить возможный рост нормы , добавив к штрафное слагаемое: . В результате правило обновления весов принимает вид: 
- . 
 
- Если функция активации имеет горизонтальные асимптоты, то процесс может попасть в состояние "паралича". При больших значениях скалярного произведения значение становится близким к нулю и вектор перестаёт существенно изменяться. Поэтому общей практикой является предварительная нормализация признаков: 
- , где - - соответственно минимальное и максимальное отклонения j-го признака. Если при этом - , то 
 
- Отметим, что регурялизация (например weights decay) также является способом предотвращения "паралича".
Сходимость алгоритма
Как уже было сказано, сходимость в общем случае не гарантируется, однако установлено, что в случае выпуклой функции  и при выполненении следующих 3-х условий:
- ; 
- ; 
процесс градиентного спуска будет сходиться. Например, можно положить: . Однако, как показывает практика, это не очень удачный способ.
Литература
|   | Данная статья является непроверенным учебным заданием. 
 До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}. См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе. | 

