Сколько данных для глубокого изучения?

9

Я изучаю глубокое обучение (особенно CNN) и то, как обычно требуется очень много данных для предотвращения переобучения. Однако мне также сказали, что чем больше емкость / больше параметров в модели, тем больше данных требуется для предотвращения переобучения. Поэтому мой вопрос: почему вы не можете просто уменьшить количество слоев / узлов на слой в глубокой нейронной сети и заставить его работать с меньшим количеством данных? Существует ли фундаментальное «минимальное количество параметров», которое требуется нейронной сети, пока она не «включится»? Ниже определенного количества слоев нейронные сети, по-видимому, работают не так хорошо, как функции, закодированные вручную.

Karnivaurus
источник

Ответы:

10

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

Было много доказательств того, что глубина сверточных нейронных сетей привела к изучению более богатой и разнообразной иерархии функций. Опытным путем мы видим, что наиболее эффективные сети имеют тенденцию быть «глубокими»: Oxford VGG-Net состоял из 19 уровней, архитектура Google Inception является глубокой, Microsoft Deep Residual Network имеет 152 уровня, о которых сообщалось, и все они получают очень впечатляющий эталонный тест ImageNet. Результаты.

На первый взгляд, это факт, что модели с большей емкостью имеют тенденцию к переоснащению, если вы не используете какой-либо регуляризатор. Один из способов, которым очень глубокие перегрузки сетей могут снизить производительность, состоит в том, что они быстро приблизятся к очень низкой ошибке обучения в небольшом количестве периодов обучения, то есть мы не можем обучить сеть для большого количества проходов через набор данных. Такая техника, как Dropout, метод стохастической регуляризации, позволяет нам тренировать очень глубокие сети в течение более длительных периодов времени. По сути, это позволяет нам лучше изучать особенности и повышать точность классификации, потому что мы получаем больше проходов по тренировочным данным.

Что касается вашего первого вопроса:

Почему вы не можете просто уменьшить количество слоев / узлов на слой в глубокой нейронной сети и заставить его работать с меньшим количеством данных?

Если мы уменьшим размер обучающего набора, как это повлияет на производительность обобщения? Если мы используем меньший размер обучающего набора, это может привести к изучению меньшего представления распределенных объектов, что может повредить нашей способности к обобщению. В конечном итоге мы хотим уметь хорошо обобщать. Наличие большего обучающего набора позволяет нам изучать более разнообразную иерархию распределенных объектов.

Что касается вашего второго вопроса:

Существует ли фундаментальное «минимальное количество параметров», которое требуется нейронной сети, пока она не «включится»? Ниже определенного количества слоев нейронные сети, по-видимому, работают не так хорошо, как функции, закодированные вручную.

Теперь давайте добавим некоторый нюанс к обсуждению вопроса глубины. Похоже, учитывая, где мы сейчас находимся с современным уровнем техники, для обучения высокопроизводительной сети с нуля используется какая-то глубокая архитектура.

Но есть ряд результатов, которые направлены на сжатие модели . Так что это не прямой ответ на ваш вопрос, но это связано. Сжатие модели заинтересовано в следующем вопросе: учитывая высокую производительность модели (в нашем случае, скажем, глубокую свертку), можем ли мы сжимать модель, уменьшая ее глубину или даже количество параметров, и сохраняя ту же производительность?

В качестве преподавателя мы можем видеть высокую производительность и высокую производительность . Можем ли мы использовать учителя для обучения более компактной модели ученика ?

Удивительно, но ответ: да . Был ряд результатов, хорошая статья для перспективной перспективы - статья Рича Каруана и Джимми Ба. Действительно ли глубокие сети должны быть глубокими? , Они способны тренировать мелкую модель, чтобы имитировать более глубокую модель, с очень небольшими потерями в производительности. По этой теме также было проделано больше работы, например:

среди других работ. Я уверен, что пропускаю некоторые другие хорошие статьи.

Для меня результаты такого рода ставят под сомнение, насколько мощными эти мелкие модели действительно обладают. В статье Каруана, Ба, они заявляют следующую возможность:

«Результаты показывают, что сила глубокого обучения может быть отчасти обусловлена ​​хорошим соответствием между глубокими архитектурами и существующими процедурами обучения, и что может быть возможно разработать лучшие алгоритмы обучения для обучения более точным мелким сетям с прямой связью. количество параметров, глубина может облегчить обучение, но не всегда может быть необходимым

Важно прояснить: в статье Каруана, Ба, они не обучают мелкую модель с нуля, то есть обучают только на классных ярлыках, чтобы получить современную производительность. Скорее, они обучают глубокую модель высокой производительности, и из этой модели они извлекают вероятности журнала для каждого назначения данных. Затем мы обучаем неглубокую модель для прогнозирования этих логарифмических вероятностей. Поэтому мы не обучаем мелкую модель меткам классов, а скорее используем эти вероятности логарифмов.

Тем не менее, это все еще довольно интересный результат. Хотя это не дает прямого ответа на ваш вопрос, здесь есть несколько интересных идей, которые очень актуальны.

Принципиально: всегда важно помнить, что существует разница между теоретической «емкостью» модели и нахождением хорошей конфигурации вашей модели. Последнее зависит от ваших методов оптимизации.

Инди AI
источник