Почему данные должны быть перетасованы для задач машинного обучения


30

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

Я прочитал этот пост здесь, обсуждая, когда мы должны перетасовать данные, но не очевидно, почему мы должны перетасовывать данные. Кроме того, я часто видел в таких алгоритмах, как Adam или SGD, где нам нужен спуск по градиенту партии (данные должны быть разделены на мини-партии, а размер партии должен быть указан). Согласно этому посту, важно, чтобы данные каждой эпохи перемешивались, чтобы иметь разные данные для каждой партии. Так что, возможно, данные перемешаны и, что более важно, изменены.

Почему мы это делаем?


1
Возможно, было бы полезно точно указать, почему ответ в первой ссылке не помог вам. В противном случае мы рискуем повторить уже сказанное с небольшими улучшениями.
E_net4 говорит восстановить

Как я уже говорил, я хочу знать, почему нет, когда, вы знаете, почему? это действительно объясняется там? Я не видел никакой бумаги для этого вообще
СМИ

1
Для получения дополнительной информации о влиянии упорядочения примеров прочитайте Учебный план обучения [pdf].
Эмре

1
Я разместил это на CrossValidated, и я думаю, что это актуально. stats.stackexchange.com/a/311318/89653
Джош

@ Эмре, на самом деле, эта статья против перетасовки, спасибо, я не слышал об этом виде обучения.
СМИ

Ответы:


19

Основываясь на том, что мы должны делать, если вопрос, опубликованный в DataScience, является дубликатом вопроса, размещенного в CrossValidated? , Я публикую свой ответ на тот же вопрос, заданный на CrossValidated ( /stats//a/311318/89653 ).

Примечание: в этом ответе я имею в виду минимизацию потерь при обучении и не обсуждаю критерии остановки, такие как потеря при проверке. Выбор критериев остановки не влияет на процесс / концепции, описанные ниже.

Процесс обучения нейронной сети состоит в том, чтобы найти минимальное значение функции потерь , где представляет матрицу (или несколько матриц) весов между нейронами, а представляет обучающий набор данных. Я использую нижний индекс для чтобы указать, что наша минимизация происходит только по весам (то есть мы ищем такой, что минимизируется), пока фиксирован.WXX WW XX(W)WXXWWX

Теперь, если мы предположим, что у нас есть элементов в (то есть, есть весов в сети), - поверхность в -мерном пространстве. Чтобы дать визуальный аналог, представьте, что у нас есть только два веса нейронов ( ). Тогда имеет простую геометрическую интерпретацию: это поверхность в трехмерном пространстве. Это вытекает из того факта, что для любых заданных матриц весов функция потерь может быть оценена по и это значение становится высотой поверхности.W P P + 1 P = 2 W XPWPP+1P=2WX

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

Решением этой проблемы является мини-пакетное обучение в сочетании с перетасовкой. Перетасовывая строки и обучая только их подмножеству во время данной итерации, изменяется с каждой итерацией, и на самом деле вполне возможно, что никакие две итерации по всей последовательности обучающих итераций и эпох не будут выполняться с точно такой же , В результате решатель может легко «отскочить» от локального минимума. Представьте, что решатель застрял в локальном минимуме на итерации с обучающей мини-партией . Этот локальный минимум соответствует оцененному при определенном значении весов; мы назовем этоX i X i X i ( W i ) X i + 1 X i + 1 ( W i ) X i ( W i ) X i + 1X i X W WXXiXiXi(Wi), На следующей итерации форма нашей поверхности потерь фактически меняется, потому что мы используем , то есть может принимать значение, от и вполне возможно, что он не соответствует локальному минимуму! Теперь мы можем вычислить обновление градиента и продолжить обучение. Для ясности: форма будет - в общем случае - отличаться от формы . Обратите внимание, что здесь я имею в виду функцию потерь на тренировочном наборе ; это полная поверхность, определенная по всем возможным значениямXi+1Xi+1(Wi)Xi(Wi)Xi+1XiXW, А не оценки этой потери (который является только скаляром) для определенного значения . Отметим также, что если мини-пакеты используются без перестановки, все еще существует степень «диверсификации» поверхностей потерь, но будет определенное (и относительно небольшое) количество уникальных поверхностей ошибок, видимых решающим устройством (в частности, он будет видеть одинаковый точный набор мини-партий - и, следовательно, поверхностей потерь - в течение каждой эпохи).W

Одной вещи, которую я сознательно избегал, было обсуждение размеров мини-пакетов, потому что существует миллион мнений по этому вопросу, и это имеет существенные практические последствия (большая параллелизация может быть достигнута с большими партиями). Тем не менее, я считаю, что стоит упомянуть следующее. Поскольку оценивается путем вычисления значения для каждой строки (и суммирования или взятия среднего значения, т. Коммутативного оператора) для заданного набора весовых матриц , расположение строк имеет никакого эффекта при использовании полной градиентный спуск (то есть, когда каждый пакет представляет собой полный , а итерации и эпохи - это одно и то же). X W X XXWX X


+1. Этот ответ технически лучше объяснен, чем другой ответ с большим количеством голосов.
Гокул NC

29

Перестановка данных служит для уменьшения дисперсии и обеспечения того, чтобы модели оставались общими и меньше подходили.

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

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

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

При обычном стохастическом градиентном спуске, когда каждая партия имеет размер 1, вы все равно хотите перетасовывать свои данные после каждой эпохи, чтобы сохранить свое обучение в целом. Действительно, если точка 17 данных всегда используется после точки 16 данных, ее собственный градиент будет смещен при любых обновлениях, которые точка 16 данных вносит в модель. Перетасовывая свои данные, вы гарантируете, что каждая точка данных создает «независимое» изменение в модели, без смещения одних и тех же точек перед ними.


1
Как я уже объяснил, вы перетасовываете свои данные, чтобы убедиться, что ваши тренировочные / тестовые наборы будут репрезентативными. В регрессии вы используете тасование, потому что вы хотите убедиться, что вы не тренируетесь, например, только на небольших значениях. Перестановки - это, в основном, гарантия, в худшем случае, они бесполезны, но при этом вы ничего не потеряете. Для части стохастического градиентного спуска вы снова хотите убедиться, что модель не такая, как она есть из-за порядка, в котором вы подали ей данные, поэтому, чтобы избежать этого, вы перемешиваете
Valentin Calomme

2
Я думаю, что перетасовка уменьшает дисперсию и, вероятно, увеличивает смещение (т. Е. Уменьшает тенденцию к превышению данных). Представьте, что мы делали градиентный спуск в полном объеме, так что эпохи и итерации - это одно и то же. Тогда существует глобальный минимум (не то, что мы обязательно можем его найти), который пытается найти наш решатель. Если мы используем потерю MSE, мы минимизируем предвзятость, если сможем каждый раз достигать этого решения. Но поскольку этот глобальный минимум, вероятно, будет найден в другом месте для разных обучающих наборов, это решение будет иметь тенденцию к высокой дисперсии.
Джош

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

7

Предположим, данные отсортированы в указанном порядке. Например, набор данных, который сортируется на основе их класса. Таким образом, если вы выбираете данные для обучения, проверки и тестирования, не рассматривая этот предмет, вы выберете каждый класс для различных задач, и процесс не будет выполнен.

Следовательно, чтобы препятствовать решению подобных проблем, простым решением является перетасовка данных для получения различных наборов данных обучения, проверки и тестирования.

Что касается мини-партии, ответы на этот пост могут стать решением вашего вопроса.


1
@Media Наиболее близкий ответ в предоставленной ссылке: «Перемешивание мини-пакетов делает градиенты более изменчивыми, что может помочь конвергенции, потому что увеличивает вероятность попадания в правильном направлении»
OmG

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

1

Нам нужно перетасовать только для мини-партии / SGD, нет необходимости в групповом градиентном спуске.

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

  • Подобные образцы будут производить аналогичные поверхности (1 поверхность для функции потерь для 1 образца) -> градиент будет указывать на аналогичные направления, но это направление редко указывает на минимум -> он может сильно отклонить градиент от минимума
  • «Наилучшее направление»: среднее значение всех градиентов всех поверхностей (градиентный спуск), которое указывает непосредственно на минимум
  • «Направление мини-партии»: среднее из множества направлений будет указывать ближе к минимуму, хотя ни одно из них не указывает на минимум
  • «Направление 1 образца»: укажите дальше к минимуму по сравнению с мини-пакетом

Я нарисовал график функции потерь L-2 для линейной регрессии для y=2x здесь


1

Поскольку оценивается путем вычисления значения для каждой строки (и суммирования или взятия среднего значения, т. Коммутативного оператора) для заданного набора весовых матриц , расположение строк имеет никакого эффекта при использовании полной градиентный спускXWX

В дополнение к ответу @ Джоша, я хотел бы добавить, что по той же причине необходимо произвести перемешивание перед пакетированием. В противном случае вы получаете такое же конечное число поверхностей.


Спасибо и добро пожаловать в наше сообщество.
Медиа

1

Для лучшей точности модели всегда рекомендуется, чтобы данные тренировок имели все разновидности данных.

Перестановка данных обучения помогает нам в достижении этой цели.


1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.