Участник:Ruzik/Песочница
Материал из MachineLearning.
Строка 47: | Строка 47: | ||
##:: <tex>Q \, {:=} \, (1 \, - \, \lambda)Q \, + \, \lambda\varepsilon_i</tex>; | ##:: <tex>Q \, {:=} \, (1 \, - \, \lambda)Q \, + \, \lambda\varepsilon_i</tex>; | ||
#Пока значение <tex>Q</tex> не стабилизируется и/или веса <tex>w</tex> не перестанут изменяться. | #Пока значение <tex>Q</tex> не стабилизируется и/или веса <tex>w</tex> не перестанут изменяться. | ||
+ | |||
+ | ===Порядок выбора объектов=== | ||
+ | Выше сказано, что в случае стохастического градиентного спуска объекты следует выбирать случайным образом. Однако существуют эвристики, направленные на улучшение сходимости, которые слегка модифицируют обычный случайный выбор: | ||
+ | * ''Перемешивание (shuffling).'' Предлагается случайно выбирать объекты, но попеременно из разных классов. Идея в том, что объекты из разных классов скорее всего менее "похожи", чем объекты из одного класса, поэтому вектор <tex>w</tex> будет каждый раз сильнее изменяться. | ||
+ | * |
Версия 13:12, 3 января 2010
Метод стохастического градиента (Stochastic Gradient)
Градиентные методы - это широкий класс оптимизационных алгоритмов, используемых не только в машинном обучении. Здесь градиентный подход будет рассмотрен в качестве способа подбора вектора синаптических весов в линейном классификаторе (ссылка). Пусть - целевая зависимость, известная только на объектах обучающей выборки: .
Найдём алгоритм , аппроксимирующий зависимость . Согласно принципу минимизации эмпирического риска для этого достаточно решить оптимизационную задачу: , где - заданная функция потерь.
Для минимизации применим метод градиентного спуска. Это пошаговый алгоритм, на каждой итерации которого вектор изменяется в направлении наибольшего убывания функционала (то есть в направлении антиградиента):
- ,
где - положительный параметр, называемый темпом обучения (learning rate).
Возможно 2 основных подхода к реализации градиентного спуска:
- Пакетный (batch), когда на каждой итерации обучающая выборка просматривается целиком, и только после этого изменяется . Это требует больших вычислительных затрат.
- Стохастический (stochastic/online), когда на каждой итерации алгоритма из обучающей выборки каким-то (случайным) образом выбирается только один объект. Таким образом вектор w настраивается на каждый вновь выбираемый объект.
Алгоритм Stochastic Gradient (SG)
Вход:
- - обучающая выборка
- - темп обучения
- - параметр сглаживания функционала
Выход:
- Вектор весов
Тело:
- Инициализировать веса ;
- Инициализировать текущую оценку функционала:
- ;
- Повторять:
- Выбрать объект из (например, случайным образом);
- Вычислить выходное значение алгоритма и ошибку:
- ;
- Сделать шаг градиентного спуска:
- ;
- Оценить значение функционала:
- ;
- Пока значение не стабилизируется и/или веса не перестанут изменяться.
Порядок выбора объектов
Выше сказано, что в случае стохастического градиентного спуска объекты следует выбирать случайным образом. Однако существуют эвристики, направленные на улучшение сходимости, которые слегка модифицируют обычный случайный выбор:
- Перемешивание (shuffling). Предлагается случайно выбирать объекты, но попеременно из разных классов. Идея в том, что объекты из разных классов скорее всего менее "похожи", чем объекты из одного класса, поэтому вектор будет каждый раз сильнее изменяться.