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


15

Во время мини-пакетного обучения нейронной сети я слышал, что важной практикой является перетасовывание данных обучения перед каждой эпохой. Может кто-нибудь объяснить, почему тасование в каждую эпоху помогает?

Из поиска Google, я нашел следующие ответы:

  • это помогает тренировке сходиться быстро
  • предотвращает смещение во время тренировки
  • это мешает модели узнать порядок обучения

Но мне трудно понять, почему любой из этих эффектов вызван случайной перетасовкой. Кто-нибудь может дать интуитивное объяснение?

Ответы:


8

Чтобы попытаться дать другое объяснение:

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

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


1
Как нейронная сеть может узнать порядок подачи данных в каждую эпоху?
Код Папы

1
Одним словом, они не могут. Если используется мини-пакетное обучение (т. Е. Более одной серии за эпоху), то конкретный порядок данных может влиять на обучение в том смысле, что при обучении одной мини-партии первым решатель может войти в определенную область (возможно, содержащую местный минимум ...) а не другой. Но говорить, что NN с прямой связью «узнает» об упорядочении данных, на самом деле не правильно, потому что каждое предсказание выполняется независимо от любого другого предсказания, и упорядочение в мини-пакетах, конечно, не будет иметь никакого эффекта.
Джош

6

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


6

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

Процесс обучения нейронной сети состоит в том, чтобы найти минимальное значение функции потерь , где представляет матрицу (или несколько матриц) весов между нейронами, а представляет обучающий набор данных. Я использую нижний индекс для чтобы указать, что наша минимизация происходит только по весам (то есть мы ищем такой, что минимизируется), пока фиксирован.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. Вы упомянули, что мини-партия обеспечивает ограниченную диверсификацию. Я не понимаю, почему этого недостаточно, чтобы избежать застревания в локальном минимуме. Если решатель находится в локальных минимумах поверхности одной партии, он с большой вероятностью не находится в локальных минимумах поверхности следующей партии, поэтому он не должен застрять. 2. Как решатель сходится на поверхности функции потерь, в то время как поверхность всегда изменяется при использовании разных партий?
Код Папы

Преимущество диверсификации по-прежнему присутствует без перетасовки, но оно не так существенно, как при использовании перетасовки, потому что оно постоянно видит одну и ту же последовательность поверхностей потерь, в то время как при использовании перетасовки она, вероятно, никогда не увидит одну и ту же поверхность потерь более одного раза. Что касается критериев остановки, я, как правило, написал мой так, что как только среднее процентное снижение потерь за указанное количество итераций становится меньше допустимого, обучение прекращается.
Джош

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

Благодарю. Ваш второй ответ ясно показывает, почему NN сходится, несмотря на разные поверхности. Относительно моего первого вопроса, правильно ли сказать, что наличие одной и той же последовательности будет иметь более высокую вероятность того, что «шум» повторяется на многих поверхностях потерь партий, чем при использовании перетасовки? Это единственное объяснение, которое я могу дать, почему все еще можно застрять в локальных минимумах при использовании мини-пакетов без перемешивания.
Код Папы

@ CodePope Я думаю, что это правильно. Кроме того, после того, как потери значительно уменьшились с начала обучения, градиенты будут довольно малы, и даже может оказаться возможным, что решатель застрянет в «цикле», так как он продолжает видеть одну и ту же последовательность поверхностей потерь. Обратите внимание, что это умозрительное объяснение, основанное на моем довольно ограниченном опыте, поэтому, если у вас есть серьезный теоретический интерес к этому, вам лучше проконсультироваться с экспертом.
Джош

4

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


1

Когда вы тренируете свою сеть, используя фиксированный набор данных, то есть данные, которые вы никогда не перетасовываете во время обучения. Вы очень вероятно получите веса, которые очень высоки и очень низки, такие как 40,70, -101,200 ... и т. Д. Это просто означает, что ваша сеть не изучила данные обучения, но она узнала шум ваших данных обучения. Классический чехол нарядной модели. С такой сетью вы получите точные прогнозы для данных, которые вы использовали для обучения. Если вы используете какие-либо другие входные данные для проверки, ваша модель развалится. Теперь, когда вы перетасовываете тренировочные данные после каждой эпохи (итерации общего набора), вы просто вводите разные входные данные для нейронов в каждой эпохе, и это просто регулирует веса, что означает, что вы с большей вероятностью получите «более низкие» веса, которые ближе к нулю , и это означает, что ваша сеть может сделать лучшие обобщения.

Я надеюсь, что это было ясно.


1

Вот более интуитивное объяснение:

При использовании градиентного спуска мы хотим уменьшить потери в направлении градиента. Градиент рассчитывается по данным из одной мини-партии для каждого раунда обновления веса. То, чего мы хотим добиться, это то, что этот мини-пакетный градиент примерно равен градиенту популяции, поскольку ожидается, что это приведет к более быстрой конвергенции. (Представьте, что если вы подаете в сеть 100 данных class1 в одном мини-пакете и 100 данных class2 в другом, сеть будет зависать. Лучше всего подавать в нее 50 class1 + 50 class2 в каждой мини-партии.)

Как этого добиться, поскольку мы не можем использовать данные о населении в мини-серии? Искусство статистики говорит нам: перетасуйте население, и первые фрагменты данных batch_size могут представлять население. Вот почему мы должны перетасовать население.

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

Это моё понимание. Надеюсь, это поможет.

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