Размер пакета определяет количество выборок, которые будут распространяться по сети.
Например, допустим, у вас есть 1050 обучающих выборок, и вы хотите установить значение, batch_size
равное 100. Алгоритм берет первые 100 выборок (с 1-го по 100-й) из набора обучающих данных и обучает сеть. Затем он берет вторые 100 выборок (с 101-го по 200-й) и снова обучает сеть. Мы можем продолжать делать эту процедуру, пока мы не распространим все образцы через сеть. Проблема может возникнуть с последним набором образцов. В нашем примере мы использовали 1050, который не делится на 100 без остатка. Самое простое решение - просто получить последние 50 образцов и обучить сеть.
Преимущества использования размера партии <количество всех образцов:
Это требует меньше памяти. Поскольку вы тренируете сеть, используя меньшее количество выборок, общая процедура обучения требует меньше памяти. Это особенно важно, если вы не можете уместить весь набор данных в памяти вашей машины.
Обычно сети тренируются быстрее с мини-пакетами. Это потому, что мы обновляем вес после каждого распространения. В нашем примере мы распространили 11 пакетов (10 из них имели 100 выборок и 1 имел 50 выборок), и после каждой из них мы обновляли параметры нашей сети. Если бы мы использовали все образцы во время распространения, мы сделали бы только 1 обновление для параметра сети.
Недостатки использования размера партии <количество всех образцов:
- Чем меньше партия, тем менее точной будет оценка градиента. На рисунке ниже вы можете видеть, что направление мини-градиента партии (зеленый цвет) колеблется намного больше по сравнению с направлением полного градиента партии (синий цвет).
Стохастик - это просто мини-пакет с batch_size
равным 1. В этом случае градиент меняет свое направление даже чаще, чем мини-пакетный градиент.