Словарь ИИ
Что такое батч
Коротко
Батч это порция обучающих примеров, по которой модель за один шаг считает ошибку и обновляет свои веса.
Машинное обучение · batch
Михаил МозгПроверено: 1 минута чтения
Ребенку
Представь, что тебе надо перенести в комнату целую гору кубиков. По одному кубику носить долго, а всю гору сразу не поднять. Поэтому ты берешь в руки горсть, относишь и возвращаешься за следующей. Компьютер тоже учится горстями примеров: смотрит на небольшую кучку, чуть-чуть исправляется и берет новую. Такая горсть и называется батчем.
Простыми словами
Обучающих примеров бывают миллионы, и показать их модели все разом не получится: не хватит памяти. Показывать по одному тоже плохо, обучение растянется надолго и будет дерганым. Поэтому данные режут на порции одинакового размера. Модель смотрит на порцию, считает, где в среднем ошиблась, и делает одну поправку. Затем берет следующую порцию. Размер порции выбирают под память видеокарты и под задачу. Похоже на проверку тетрадей: учитель берет пачку, находит общие ошибки и объясняет их всему классу, а не разбирает каждую работу отдельно.
Для бизнеса
Размер батча определяет, какое железо нужно для обучения или дообучения модели и сколько времени оно займет. Крупная порция требует больше видеопамяти, зато загружает видеокарты полностью и сокращает число шагов. В исследовании 2017 года модель распознавания изображений обучили за 1 час на 256 видеокартах с порцией 8192 картинки и без потери точности, но для этого пришлось менять скорость обучения по особому правилу. Для компании вывод практический: если подрядчик предлагает купить сервер под дообучение, спросите, какой размер порции он заложил и сравнивал ли качество на меньших. Иногда скромная видеокарта с маленькими порциями дает тот же результат дешевле, просто дольше.
Для специалиста
Батч (batch, mini-batch) это подмножество обучающей выборки, по которому вычисляют оценку градиента функции потерь на одном шаге оптимизации. Размер (batch size) задает компромисс: малые дают шумный градиент и больше шагов на эпоху, большие точнее оценивают градиент и полнее загружают GPU, но требуют больше памяти. Keskar и соавторы (ICLR 2017) показали, что обучение крупными порциями склонно сходиться к острым минимумам (sharp minima) и хуже обобщает, а мелкие за счет шума находят плоские. Masters и Luschi (2018) получали наиболее высокое качество при размере мини-батча от 2 до 32. Goyal и соавторы (2017) сохранили точность при размере 8192 благодаря линейному масштабированию скорости обучения и разогреву (warmup). Если нужная порция не помещается в память, используют накопление градиентов (gradient accumulation). От этого размера зависит и статистика пакетной нормализации (batch normalization), которую Ioffe и Szegedy описали в 2015 году.
Не путать. Не путать с пакетной обработкой запросов (batch API), когда готовая модель разом отвечает на накопленные запросы, а не учится.
Пример
Команда дообучает модель классификации обращений на сервере с одной видеокартой. Порция из 64 примеров не помещается в память, поэтому берут 16 и накапливают градиенты четырех шагов: веса обновляются почти так же, как с порцией 64, а памяти хватает.
Связанные термины
Вопросы и ответы
Какой размер батча выбрать?
Чем батч отличается от эпохи?
Источники
- Keskar и др., On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima, ICLR 2017arxiv.org
- Masters, Luschi, Revisiting Small Batch Training for Deep Neural Networks, 2018arxiv.org
- Goyal и др., Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour, 2017arxiv.org
- Ioffe, Szegedy, Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift, 2015arxiv.org
Где это применяют в компании
Не уверены, нужно ли это вашей компании?
Карта ИИ-решений