Чтобы выяснить, будут ли полезны дополнительные данные, вы должны сравнить производительность вашего алгоритма с обучающими данными (т.е. данными, используемыми для обучения нейронной сети) с его эффективностью при тестировании данных (то есть данных, которые нейронная сеть сделала не "вижу" на тренировках).
Хорошей вещью для проверки будет ошибка (или точность) каждого набора как функция числа итераций. Есть две возможности для результата этого:
1) Ошибка обучения сходится к значению значительно ниже, чем ошибка тестирования. Если это так, производительность вашего алгоритма почти наверняка улучшится с увеличением объема данных.
2) Ошибка обучения и ошибка тестирования сходятся примерно к одному значению (при этом ошибка обучения все еще, вероятно, немного ниже, чем ошибка тестирования). В этом случае дополнительные данные сами по себе не помогут вашему алгоритму. Если вам нужна лучшая производительность, чем вы достигли в данный момент, вы должны попытаться добавить больше нейронов к скрытым слоям или добавить больше скрытых слоев. Если будет добавлено достаточное количество скрытых юнитов, вы обнаружите, что ваша ошибка тестирования станет заметно выше, чем ошибка обучения, и в этот момент поможет больше данных.
Для более подробного и полезного введения в процесс принятия этих решений я настоятельно рекомендую курс Coursera Эндрю Нга , в частности уроки «Оценка алгоритма обучения» и «Уклон против дисперсии».
Я предполагаю, что самое главное, что образцы в ваших данных хорошо распределены, потому что независимо от того, сколько у вас данных, больше данных всегда будет лучше. В конце концов, если вы попытаетесь научиться различать картинки с кошками и собаками, вы не сможете ожидать, что ваша модель будет работать хорошо, если будете кормить ее только изображениями кошек.
Как следует из ответа Кевина Л. , имеет смысл рассмотреть разницу между ошибкой обучения и ошибкой тестирования. Если ваши данные тестирования не зависят от ваших данных обучения, это дает представление о том, насколько хорошо ваша модель обобщает данные, которые недоступны. Я хотел бы добавить к этому тот факт, что большая разница между тренировкой и ошибкой тестирования только говорит о том, что ваша модель плохо обобщается, то есть вы перегружены данными обучения. Вероятно, поможет больше данных, потому что теперь сети также необходимо моделировать дополнительные точки данных, и, следовательно, они больше не могут соответствовать этому. Тем не менее, может быть целесообразнее изменить модель, чтобы она лучше обобщалась. Эта глава из отличной книги объясняет, какие существуют виды регуляризации и как их можно применять в сетях для лучшего обобщения.
Если вы искали более количественную меру, я недавно нашел этот вопрос о кворе, Речь идет об авто-кодировщике, но я думаю, что это также должно быть применимо к вашему примеру. Я понятия не имею, правильно ли это (пожалуйста, дайте мне знать), но я бы сказал, что, например, для MNIST можно утверждать, что вы пытаетесь уменьшить изображения с максимальным значением 28 * 28 * 8 * 10 000 = 62 720 000 биты энтропии до десяти классов в однократном кодировании с 10 * 10 * 10 000 = 1 000 000 бит энтропии. Поскольку нас интересует только 1 000 000 бит энтропии на выходе, мы можем сказать, что при 1 000 000 параметров каждый параметр представляет один бит, который составляет 1e-4 бита на выборку. Это означает, что вам нужно больше данных. Или у вас слишком много параметров, потому что, например, при 100 параметрах у вас есть 10 000 бит на параметр и, следовательно, 1 бит на выборку. Тем не мение,
источник
Другой метод, который обычно используется для определения того, достаточно ли изучена ваша сеть, - это визуализация начальных фильтров. Если сеть хорошо обучена, она должна отображать плавный фильтр. Шумовой фильтр обычно указывает на то, что сеть недостаточно обучена или что она была перегружена. Для получения дополнительной информации прочитайте эту страницу .
источник