Стохастический градиентный спуск 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Стохастический градиентный спуск



Стохастический градиентный спуск (SGD), напротив, выполняет обновление параметров для каждого обучающего примера х ( i ) и метки у ( i ):

θ = θ − η ⋅∇ θ J (θ; х ( i ); у ( i ))

Пакетный градиентный спуск выполняет избыточные вычисления для больших наборов данных, поскольку он пересчитывает градиенты для похожих примеров перед каждым обновлением параметров. SGD устраняет эту избыточность, выполняя по 1 обновлению за раз. Поэтому обычно он гораздо быстрее и может быть использован для обучения в реальном времени.

SGD выполняет частые обновления с высокой дисперсией (variance), которая приводит к значительным колебаниям целевой функции, как на рисунке 1.

Рис.1: Колебания SGD (источник: wikipedia)

 

В то время как пакетный градиентный спуск сходится к минимуму поверхности, заданной параметрами, с одной стороны, колебания SGD позволяют ему переходить к новым потенциально лучшим локальным минимумам, с другой стороны, они в конечном итоге ухудшают сходимость к истинному минимуму, т.к. SGD будет продолжать и перейдёт все границы (overshooting). Однако было показано, что, когда скорость обучения медленно уменьшается, SGD демонстрирует поведение сходимости, аналогичное пакетному градиентному спуску, который почти наверняка сходится к локальному или глобальному минимуму для невыпуклой и выпуклой оптимизации соответственно.

В его код просто добавляется цикл по обучающим примерам и оценивается градиент по отношению к каждому примеру. Отметьте, что данные тренировки перетасовываются на каждой эпохе, как описано в этом разделе.

Мини-пакетный градиентный спуск

Мини-пакетный градиентный спуск вбирает лучшее обоих и выполняет обновление для каждой мини-пачки из обучающих примеров нейросети:

θ=θ − η ⋅∇ θ J(θ; x(i:i+n); y(i:i+n))

Таким образом,

а) уменьшает дисперсию обновления параметров, обеспечивая более стабильную сходимость;

b) может использовать высоко-оптимизированные матричные операции, общие для современных библиотек глубокого обучения, которые вычисляют градиент мини-пакета очень эффективно.

Типичный размер мини-пакета варьируется от 50 до 256 примеров. Мини-пакетный градиентный спуск, как правило, является алгоритмом выбора (algorithm of choice) при обучении нейронной сети.

Термин SGD обычно применяется именно при использовании мини-пачек примеров.

Примечание: в модификациях SGD в оставшейся части этого поста пропускаем параметры x(i:i+n); y(i:i+n) x(i:i+n); y(i:i+ n ) для простоты.

В коде вместо перечисления примеров итерируем по мини-пакетам размером 50 штук:

 

Вызовы для преодоления

Старый добрый мини-пакетный градиентный спуск не гарантирует хорошей сходимости, но предлагает несколько задач, которые необходимо решить:

• Сложный выбор правильной скорости обучения: слишком малая скорость обучения приводит к очень медленной сходимости, а чересчур высокая скорость обучения может препятствовать сходимости и вызывать колебания функции потерь около минимума, даже отклонение от него.

Расписания (schedules) [1] скорости обучения пытаются скорректировать скорость обучения во время обучения, например, отжиг (annealing), т.е. уменьшение скорости обучения в соответствии с заранее определённым расписанием, или падение её ниже порогового значения при изменении цели между эпохами. Эти расписания и пороги, однако, должны быть определены заранее и поэтому не могут адаптироваться к характеристикам массива данных [2].

• Кроме того, одинаковая скорость обучения применяется ко всем обновлениям параметров. Если данные редки (разряжены) и признаки имеют различные частоты появления, может быть нежелательно обновлять все из них за одинаковые промежутки, а выполнять более масштабное обновление для редко встречающихся признаков.

• При минимизации распространённых для нейросетей сильно-невыпуклых функций ошибок важно избежать попадания в их многочисленные субоптимальные локальные минимумы. Dauphin et al.[3] утверждают, что сложность возникает не из-за локальных минимумов, а из-за седловых точек (saddle points), т.е. где 1 изменение имеет наклон (slope) вверх, а другое – вниз. Эти седловые точки обычно окружены плато одинаковой ошибки, что, известно, делает выход из него трудным для SGD, т.к. градиент близок к 0 во всех измерениях.

 



Поделиться:


Последнее изменение этой страницы: 2019-11-02; просмотров: 254; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.67.251 (0.006 с.)