Как выбрать гиперпараметры и стратегию для нейронной сети с небольшим набором данных?
В настоящее время я делаю семантическую сегментацию, однако у меня действительно небольшой набор данных,
У меня есть только около 700 изображений с расширением данных, например, переворачивание может
сделать это 2100 изображений.
Не уверен, что этого вполне достаточно для моей задачи (семантическая сегментация с четырьмя
классы).
Я хочу использовать нормализацию партии и мини-градиентный спуск
Что действительно заставляет меня чесать голову, так это то, что если размер партии слишком мал,
нормализация партии не работает хорошо, но с большим размером партии,
кажется эквивалентным полному градиентному спуску
Интересно, есть ли что-то вроде стандартного соотношения между количеством образцов и размером партии?
1 ответ
Позвольте мне сначала обратиться ко второй части вашего вопроса "Стратегия для нейронной сети с небольшим набором данных". Возможно, вы захотите взять предварительно обученную сеть в большем наборе данных и точно настроить эту сеть, используя свой меньший набор данных. Смотрите, например, этот учебник.
Во-вторых, вы спрашиваете о размере партии. Действительно, меньшая партия заставит алгоритм блуждать вокруг оптимума, как при классическом стохастическом градиентном спуске, признаком которого являются шумные колебания ваших потерь. В то время как при большем размере партии, как правило, наблюдается более "плавная" траектория движения к оптимальной. В любом случае, я предлагаю вам использовать алгоритм с импульсом, такой как Адам. Это поможет сближению ваших тренировок.
Эвристически, размер пакета может быть таким же большим, как ваша память GPU. Если объема памяти графического процессора недостаточно, размер пакета уменьшается.