#machine-learning #keras #deep-learning #conv-neural-network
#машинное обучение #keras #глубокое обучение #conv-neural-network
Вопрос:
Я использовал Keras CNN для классификации набора данных MNIST. Я обнаружил, что использование разных размеров пакетов дает разную точность. Почему это так?
Использование пакета размером 1000 (Acc = 0.97600)
Использование пакета размером 10 (Acc = 0,97599)
Хотя разница очень мала, почему вообще есть разница? РЕДАКТИРОВАТЬ — Я обнаружил, что разница заключается только в проблемах с точностью, и они фактически равны.
Комментарии:
1. Ответ @ pouyan в целом правильный, но в вашем конкретном случае я думаю, что это всего лишь случайное колебание, обусловленное тем, как работает стохастический градиентный спуск.
2. Существует буквально десятки источников врожденной случайности во всей процедуре построения модели (инициализация случайного веса, перетасовка, присвоение выборок пакетам и т.д.); В вашем случае настоящим сюрпризом является скорее то, что два значения практически равны, а не то, что это не так. Просто попробуйте повторить процедуру для пакетов двух размеров, чтобы увидеть, получите ли вы те же результаты, что и выше (подсказка: скорее всего, у вас этого не получится)…
Ответ №1:
Это из-за эффекта градиентного спуска мини-пакета в процессе обучения. Вы можете найти хорошее объяснение здесь, что я упоминаю некоторые примечания по этой ссылке здесь:
Размер пакета — это ползунок в процессе обучения.
- Небольшие значения обеспечивают процесс обучения, который быстро сходится за счет шума в процессе обучения.
- Большие значения приводят к медленному сближению процесса обучения с точными оценками градиента ошибок.
а также одно важное замечание из этой ссылки :
Представленные результаты подтверждают, что использование пакетов небольшого размера обеспечивает наилучшую стабильность обучения и производительность обобщения при заданных вычислительных затратах в широком диапазоне экспериментов. Во всех случаях наилучшие результаты были получены при размерах пакетов m = 32 или меньше
Что является результатом этой статьи.
Редактировать
Здесь я должен упомянуть еще два момента:
- из-за врожденной случайности в концепции алгоритмов машинного обучения, как правило, не следует ожидать, что алгоритмы машинного обучения (например, алгоритмы глубокого обучения) будут давать одинаковые результаты при разных запусках. Более подробную информацию вы можете найти здесь.
- С другой стороны, оба ваших результата слишком близки и каким-то образом они равны. Итак, в вашем случае мы можем сказать, что размер пакета не влияет на результаты вашей сети, основываясь на сообщаемых результатах.
Ответ №2:
Это не связано с Keras. Размер пакета вместе со скоростью обучения являются критическими гиперпараметрами для обучения нейронных сетей с использованием мини-пакетного стохастического градиентного спуска (SGD), которые полностью влияют на динамику обучения и, следовательно, на точность, скорость обучения и т.д.
В двух словах, SGD оптимизирует веса нейронной сети путем итеративного обновления их в направлении (отрицательного) градиента потерь. В SGD с мини-пакетами градиент оценивается на каждой итерации для подмножества обучающих данных. Это зашумленная оценка, которая помогает упорядочить модель, и поэтому размер пакета имеет большое значение. Кроме того, скорость обучения определяет, насколько обновляются веса на каждой итерации. Наконец, хотя это может быть неочевидно, скорость обучения и размер пакета связаны друг с другом. [бумага]
Ответ №3:
Я хочу добавить два момента:
1) При использовании специальных обработок можно достичь аналогичной производительности для пакетов очень большого размера, значительно ускоряя процесс обучения. Например, точная, большая мини-партия SGD: обучение ImageNet за 1 час
2) Что касается вашего примера MNIST, я действительно не советую вам перечитывать эти цифры. Потому что разница настолько незначительна, что может быть вызвана шумом. Бьюсь об заклад, если вы попробуете модели, сохраненные в другую эпоху, вы увидите другой результат.