суббота, 18 августа 2018 г.

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

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

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

Что если мы можем получить правильный в среднем градиент при намного меньших вычислениях? Выбирая примеры случайным образом из набора данных, мы можем оценить среднее значение из небольшого набора примеров. Стохастический градиентный спуск (SGD) использует эту идею в крайности - он использует только один пример (пакет размером 1) для итерации. Пройдя достаточно итераций, SGD работает, но с большим количеством не значимых результатов. Термин стохастический означает, что один пример, содержащийся в пакете, выбран случайным образом.

Мини-пакетный стохастический градиентный спуск (mini-SGD) - это компромисс между итерациями с полноразмерным пакетом и SGD. Мини-пакет обычно содержит от 10 да 1000 примеров, выбранных в случайном порядке. Мини-пакетный SGD уменьшает количество случайных результатов SGD, при этом более эффективен, чем полноразмерное итерирование.