Почему мне нужен предварительно обученный вес в обучении - PullRequest
0 голосов
/ 22 января 2019

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

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

1 Ответ

0 голосов
/ 22 января 2019

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...