Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Почему объекты лучше случайным образом перемешивать перед тем, как подавать их в алгоритм стохастического градиентного спуска?

(Если объём данных не слишком велик и позволяет это сделать.)
ПрограммированиеМашинное обучение+3
  · 821
Openstack DevOps and IBM/Informix Certified DBA . Phd in Math (Duality of spaces of...  · 4 мар 2022
Процесс обучения нейронной сети заключается в нахождении минимального значения функции потерь LX(W), где W представляет собой матрицу (или несколько матриц) весов между нейронами, а X представляет набор обучающих данных. Подразумевается нижний индекс для X, чтобы указать, что наша минимизация L происходит только по весам W (то есть мы ищем такое W, что L минимизируется), в то время как X фиксировано. Теперь, если мы предположим, что у нас есть P элементов в W (то есть в сети есть P весов), L является поверхностью в
P + 1-мерном пространстве. Чтобы дать визуальный аналог, представьте, что у нас есть только два веса нейрона (P = 2). Тогда L имеет простую геометрическую интерпретацию: это поверхность в трехмерном пространстве. Это происходит из-за того, что для любой заданной матрицы весов W функция потерь может быть оценена на X, и это значение становится высотой поверхности.
==========================
Но есть проблема невыпуклости; поверхность, которая будет описана, поверхность может/будет иметь множество локальных минимумов, и поэтому алгоритмы градиентного спуска подвержены «застреванию» в этих минимумах, в то время как более глубокое/ниже/лучшее решение может лежать поблизости.
Вероятно, это и произойдет, если X не изменится на всех итерациях обучения, потому что поверхность фиксирована для данного X; все его характеристики статичны, включая различные минимумы.
===========================
Решением этой проблемы является мини-групповое обучение в сочетании с перетасовкой.
Перетасовываем строки и обучаем только на их подмножестве в течение данной итерации, X меняется с каждой итерацией, и на самом деле вполне возможно, что никакие две итерации по всей последовательности обучающих итераций и эпох не будут выполняться на одном и том же X. Эффект состоит в том, что решатель может легко «отскочить» от локального минимума. Представьте, что решатель застрял в локальном минимуме на итерации "i" с обучающей мини-партией X(i). Этот локальный минимум соответствует L, оцененному при определенном значении весов; мы назовем его LX(i)(Wi). На следующей итерации форма нашей поверхности потерь фактически меняется, потому что мы используем X(i+1), то есть LX(i+1)(Wi) может принимать значение, сильно отличающееся от LX(i)(Wi), мы получим не соответствие локальному минимуму !
Теперь мы можем вычислить обновление градиента и продолжить обучение. Для ясности: форма LX(i+1) в общем случае будет отличаться от формы LX(i). Обратите внимание, что здесь я имею в виду функцию потерь L, оцененную на тренировочном наборе X; это полная поверхность, определенная для всех возможных значений W, а не оценка этой потери (которая является просто скаляром) для конкретного значения W. Также обратите внимание, что если мини-пакеты используются без перетасовки, все равно остается степень «диверсификации» поверхностей потерь, но будет конечное (и относительно небольшое) количество уникальных поверхностей ошибок, которые видит решатель (в частности, он будет видеть тот же самый набор мини-пакетов — и, следовательно, поверхностей потерь — в каждую эпоху).
=============================
Одной вещи, которую я намеренно избегал, было обсуждение размеров мини-пакетов, потому что по этому поводу существует миллион мнений, и это имеет важное практическое значение (большего параллелизма можно добиться с большими пакетами). Тем не менее, я считаю, что следует упомянуть следующее.
Поскольку L оценивается путем вычисления значения для каждой строки X (и суммирования или взятия среднего) для заданного набора весовых матриц W, расположение строк X не имеет никакого эффекта при использовании полного пакетного градиентного спуска (то есть когда каждый пакет — это полный X, а итерации и эпохи — одно и то же).
====================================
Можно изложить эту идею и более кратко
====================================
Перетасовка данных служит цели уменьшения дисперсии и обеспечения того, чтобы модели оставались общими и меньше подходили друг другу. Очевидный случай, когда вы перетасовываете свои данные, - это если ваши данные отсортированы по их классу/цели. Здесь вы захотите перетасовать, чтобы убедиться, что ваши наборы для обучения/тестирования/проверки представляют общее распределение данных.
Для пакетного градиентного спуска применяется та же логика. Идея пакетного градиентного спуска заключается в том, что, вычисляя градиент для одной партии, вы обычно получаете довольно хорошую оценку «истинного» градиента. Таким образом, вы экономите время вычислений, поскольку вам не нужно каждый раз вычислять «истинный» градиент для всего набора данных.
=======================================
Но Вы будете перетасовывать свои данные после каждой эпохи, потому что у вас всегда будет риск создания пакетов, которые не являются репрезентативными для общего набора данных, и, следовательно, ваша оценка градиента будет ошибочной. Перетасовка данных после каждой эпохи гарантирует, что вы не «застрянете» со слишком большим количеством плохих пакетов.
========================================
При обычном стохастическом градиентном спуске, когда каждая партия имеет размер 1, вы все равно хотите перемешивать свои данные после каждой эпохи, чтобы сохранить общее обучение. Действительно, если точка данных 17 всегда используется после точки данных 16, ее собственный градиент будет смещен с учетом любых обновлений, которые точка данных 16 вносит в модель.
Перетасовывая ваши данные, вы гарантируете, что каждая точка данных создает «независимое» изменение в модели, не подвергаясь смещению теми же точками перед ними.
Иначе говоря : Перетасовка - это в основном защита, в худшем случае она бесполезна, но вы ничего не теряете, делая это. Что касается части стохастического градиентного спуска, вы снова хотите убедиться, что модель не такая, какая она есть, из-за порядка, в котором вы вводили в нее данные, поэтому, чтобы избежать этого, вы перемешиваете
1 эксперт согласен
Artyom
подтверждает
31 марта 2022
Довольно тщательный ответ. Согласен. От себя добавлю. Любой датасет перед его использованием необходимо... Читать дальше