Почему мне нужен предварительно обученный вес в обучении

Я изучаю трансферное обучение с некоторыми предварительно обученными моделями (vgg16, vgg19,…), и мне интересно, почему мне нужно загружать предварительно обученный вес, чтобы тренировать свой собственный набор данных.

Я могу понять, включены ли классы в моем наборе данных в набор данных, с которым обучается предварительно обученная модель. Например, модель VGG была обучена с 1000 классов в наборе данных Imagenet, и моя модель заключается в классификации кошек-собак, которые также находятся в наборе данных Imagenet. Но здесь классы в моем наборе данных не находятся в этом наборе данных. Так как же может помочь заранее подготовленный вес?

1 ответ

Решение

Вам не нужно использовать предварительно обученную сеть, чтобы обучить модель для вашей задачи. Однако на практике использование предварительно обученной сети и ее переподготовка к вашему заданию / набору данных, как правило, происходит быстрее, и часто вы получаете лучшие модели, обеспечивающие более высокую точность. Это особенно актуально, если у вас нет много данных о тренировках.

Почему быстрее?

Оказывается, что (относительно) независимо от набора данных и целевых классов, первые несколько слоев сходятся к аналогичным результатам. Это связано с тем, что низкоуровневые слои обычно действуют как детекторы краев, углов и других простых структур. Посмотрите на этот пример, который визуализирует структуры, на которые "реагируют" фильтры разных слоев. Уже обучив нижние уровни, адаптация слоев более высокого уровня к вашему варианту использования происходит намного быстрее.

Почему точнее?

На этот вопрос сложнее ответить. ИМХО, это связано с тем, что предварительно обученные модели, которые вы используете в качестве основы для трансферного обучения, были обучены на массивных наборах данных. Это означает, что полученные знания поступают в вашу переобученную сеть и помогут вам найти лучший локальный минимум вашей функции потерь.

Если вы находитесь в комфортной ситуации, когда у вас есть много данных для обучения, вам, вероятно, следует обучать модель с нуля, так как сохраненная модель может "указать вам неправильное направление". В этой магистерской работе вы можете найти ряд задач (небольшие наборы данных, средние наборы данных, небольшой семантический разрыв, большой семантический разрыв), где сравниваются 3 метода: точная настройка, извлечение функций + SVM, с нуля. Точная настройка модели, прошедшей предварительную подготовку на Imagenet, почти всегда является лучшим выбором.

Другие вопросы по тегам