1. Что такое BatchSize Пакет обычно преобразуется в пакеты, а цель установки batch_size позволяет модели выбирать пакеты данных для обработки каждый раз в процессе обучения. Целевую функцию в общем процессе обучения машинному обучению или глубокому обучению можно просто понимать как сумму значений целевой функции, полученных на каждом образце обучающего набора, а затем значение веса корректируется в соответствии со значением целевой функции, большую часть времени по градиенту Для обновления параметров используется метод спуска.
Интуитивное понимание размера партии — это количество образцов, выбранных для одного обучения. Размер пакета влияет на степень оптимизации и скорость модели. В то же время это напрямую влияет на использование памяти графического процессора.Если память вашего графического процессора невелика, лучше установить это значение на меньшее значение.
2. Зачем вам Batch_Size? До того, как размер партии не используется, это означает, что при обучении сети все данные (вся база данных) вводятся в сеть за один раз, а затем вычисляются их градиенты для обратного распространения, поскольку при расчете используется вся база данных градиенты, поэтому рассчитанное направление градиента является более точным. Однако в этом случае рассчитанные значения градиента сильно различаются, и использовать глобальную скорость обучения сложно, поэтому для обновления градиента отдельно обычно используется Rprop — алгоритм обучения, основанный на символах градиента. В базах данных с небольшим размером выборки можно не использовать размер пакета, и он работает хорошо. Но если это большая база данных, одновременный ввод всех данных в сеть обязательно вызовет взрыв памяти. Поэтому предлагается концепция размера партии.
3. Как установить значение Batch_Size? Если одновременно обучается только одна выборка, то есть Batch_Size = 1. Поверхность ошибки линейного нейрона в функции стоимости среднеквадратичной ошибки представляет собой параболоид, а поперечное сечение представляет собой эллипс. Для многослойных нейронов и нелинейных сетей локально это все еще приблизительно параболоид. В это время каждое направление коррекции корректируется направлением градиента соответствующих выборок, и трудно достичь сходимости.
Поскольку Batch_Size — это полный набор данных или Batch_Size = 1 имеет свои недостатки, как установить подходящий BatchSize? Это имеет определенную связь с выборкой.Когда размер выборки мал, это принесет большую дисперсию, и эта большая дисперсия просто заставит нас спуститься к очень плохой локальной оптимальной точке в градиенте (именно оптимальной точке, которая слегка выпуклая) и Седловая точка неустойчива, а локальная оптимальная точка случайно взрывается из-за прихода сильного шума. Наоборот, когда размер выборки большой, дисперсия мала, а оценка градиента гораздо более точная и стабильная, поэтому легко оставаться уверенным в плохих локальных оптимальных точках и седловых точках, что приводит к нейронным ошибкам. сеть сошлась в очень плохой точке, так же плохо, как ошибка.
Размер пакета не может быть слишком большим или слишком маленьким, поэтому мини-пакет чаще всего используется в практических проектах, а размер обычно устанавливается равным десяткам или сотням. Для алгоритма оптимизации второго порядка улучшение скорости сходимости в обмен на уменьшение пакета намного меньше, чем ухудшение производительности, вызванное введением большого количества шума.Поэтому при использовании алгоритма оптимизации второго порядка большой пакет часто используется. В настоящее время партия часто устанавливается на несколько тысяч или даже от десяти тысяч до двадцати тысяч, чтобы обеспечить наилучшую производительность. Поэтому установите BatchSize, чтобы обратить внимание на следующие моменты:
1) Когда количество пакетов слишком мало и существует много категорий, это может привести к тому, что функция потерь будет колебаться, а не сходиться, особенно если ваша сеть сложна.
2) По мере увеличения размера пакета скорость обработки одного и того же объема данных выше.
3) По мере увеличения размера партии количество эпох, необходимых для достижения той же точности, увеличивается.
4) Из-за противоречия между двумя вышеуказанными факторами размер партии увеличивается до определенного времени и достигает оптимального времени.
5) Поскольку окончательная точность сходимости будет попадать в разные локальные экстремумы, параметр Batch_Size увеличивается до определенного времени для достижения оптимальной конечной точности сходимости.
6) Результатом чрезмерно большого размера пакета является то, что сеть может легко сходиться к некоторым плохим локальным оптимумам. Есть также некоторые проблемы со слишком маленькими партиями, такие как низкая скорость обучения и трудная конвергенция обучения.
7) Выбор конкретного размера партии связан с количеством образцов в обучающем наборе.
8) Графический процессор может работать лучше для пакетов со степенью 2, поэтому при установке 16, 32, 64, 128... он часто работает лучше, чем при установке кратности 10 или 100.
Когда я устанавливаю BatchSize, я сначала выбираю больший BatchSize, чтобы заполнить GPU, наблюдаю за сходимостью потерь, если она не сходится или эффект конвергенции плохой, уменьшаю BatchSize, обычно 16, 32, 64 и т. д. использовал.
4. В разумных пределах, каковы преимущества увеличения Batch_Size? Улучшается использование памяти и повышается эффективность распараллеливания умножения больших матриц. Количество итераций, необходимых для запуска эпохи (полного набора данных), уменьшается, а скорость обработки того же объема данных еще больше увеличивается. Вообще говоря, в определенном диапазоне, чем больше Batch_Size, тем точнее определено направление снижения и тем меньше будет тренировочный разряд. 5. Каковы недостатки слепого увеличения Batch_Size? Использование памяти улучшилось, но объем памяти может быть недостаточным. Количество итераций, необходимых для запуска эпохи (полного набора данных), уменьшается, а время, необходимое для достижения той же точности, значительно увеличивается, поэтому коррекция параметров происходит медленнее. Batch_Size увеличивается до определенной степени, и его определенное направление снижения в основном больше не меняется. 6. Как настройка Batch_Size влияет на эффект обучения? Batch_Size слишком мал, производительность модели крайне плохая (ошибка парит). По мере увеличения Batch_Size обработка одного и того же объема данных происходит быстрее. По мере увеличения Batch_Size количество эпох, необходимых для достижения той же точности, увеличивается. Из-за противоречия между двумя вышеуказанными факторами, Batch_Size увеличивается до определенного времени и достигает оптимального времени. Поскольку окончательная точность сходимости будет попадать в разные локальные экстремумы, параметр Batch_Size увеличивается до определенного времени для достижения оптимальной конечной точности сходимости. 7. Почему увеличение размера пакета делает градиент сети более точным? Дисперсия градиента выражается как:
Поскольку образцы выбираются случайным образом и удовлетворяют независимому и идентичному распределению, все образцы имеют одинаковую дисперсию.
Таким образом, приведенную выше формулу можно упростить до:
Видно, что при размере партии m дисперсия выборки уменьшается в m раз, а градиент более точен.
Если вы хотите сохранить дисперсию градиента исходных данных, вы можете увеличить скорость обучения lrlr
Это также показывает, что при увеличении размера пакета общая скорость обучения должна увеличиваться. Однако прирост лрр не задается очень большим в начале, а постепенно увеличивается в процессе тренировочного процесса.
Конкретный пример анализа: При распределенном обучении размер пакета увеличивается с увеличением количества параллельных рабочих данных.Если размер пакета базовой линии равен BB, скорость обучения равна lr, а эпоха обучения — NN. Если сохраняется lr базовой линии, скорость сходимости и точность, как правило, не достигаются. Причина: для скорости сходимости, если есть рабочие KK, каждая партия представляет собой KBKB, поэтому количество итераций эпохи составляет 1k от базового уровня, а скорость обучения lr неизменна, поэтому для достижения той же сходимости, что и базовый уровень, эпоха необходимо увеличить. Согласно приведенной выше формуле, эпоху нужно увеличить не более чем на эпохи KNKN, но в целом ее не нужно увеличивать настолько сильно. Для точности сходимости проще сходиться из-за использования размера пакета, который делает градиент более точным и уменьшает шум.