4 совета по повышению производительности моделей глубокого обучения

машинное обучение

Обзор

Глубокое обучение — обширная область, но большинство из нас сталкивается с некоторыми общими проблемами при создании моделей. Здесь мы обсудим 4 таких проблемы и советы по повышению производительности ваших моделей глубокого обучения. Это статья Практические статьи, посвященные коду, так что подготовьте свою Python IDE и улучшите свои модели глубокого обучения!

вводить

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

До этого я балансировал на периферии концепций глубокого обучения, таких как обнаружение объектов и распознавание лиц, до конца 2017 года. За это время я столкнулся с различными проблемами. Я хочу рассказать об одном из четырех очень распространенных, с которыми сталкиваются на ходу самые углубленные практики и энтузиасты обучения.

file

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

содержание

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

Общие проблемы моделей глубокого обучения

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

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

Вот общие проблемы, с которыми сталкивается большинство из нас при использовании моделей глубокого обучения:

  • Нехватка данных, доступных для обучения
  • Переоснащение
  • Недооснащение
  • Высокое время обучения
Проблема глубокого обучения 1: недостаточно данных для обучения нашей модели

Модели глубокого обучения обычно требуют больших объемов данных для обучения. Как правило, чем больше данных, тем лучше производительность модели. Проблема с нехваткой данных заключается в том, что наша модель глубокого обучения может быть не в состоянии изучить шаблоны или функции из данных, поэтому она может не дать хорошей производительности на невидимых данных. Если вы посмотрите на пример классификации транспортных средств, у нас есть только около 1650 изображений, поэтому модель не очень хорошо работает на проверочном наборе. Проблема меньшего количества данных очень распространена при работе с компьютерным зрением и моделями глубокого обучения. Как вы понимаете, сбор данных вручную — утомительная и трудоемкая задача. Поэтому мы можем использоватьТехнология увеличения данных, а не тратить дни на сбор данных.

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

Задача глубокого обучения 2: переоснащение модели

Я уверен, что вы слышали о подгонке раньше. Это одна из самых распространенных проблем (и ошибок), с которыми сталкиваются начинающие специалисты по данным, когда они плохо знакомы с машинным обучением. Но проблема на самом деле выходит за рамки предметных областей — она применима и к глубокому обучению. Например, предположим, что у нас есть набор для обучения и проверки. Мы обучаем модель с помощью обучающих данных и проверяем ее производительность (метрика оценки — точность) на обучающем и проверочном наборах. Точность обучения составляет 95%, а точность проверки — 62%. Звучит знакомо? Поскольку точность проверки намного ниже точности обучения, мы можем сделать вывод, что модель переоснащается. Диаграмма ниже поможет вам лучше понять, что такое переобучение:file

Поскольку ошибка обучения мала, а ошибка теста велика, синяя часть на рисунке выше — это модель переобучения. Причина переобучения заключается в том, что модель получает ненужную информацию из обучающих данных и, следовательно, очень хорошо работает на обучающем наборе. Но когда вводятся новые данные, он не работает. Мы можем ввести в архитектуру моделиdropoutрешить эту проблему переобучения. При отсеве нам нужно отключить некоторые нейроны в нейросети. Предположим, мы добавляем отсев 0,5 к слою, в котором изначально было 20 нейронов. Таким образом, 10 из этих 20 нейронов будут удалены, и мы получим менее сложную структуру. Таким образом, модель не изучает сложные шаблоны, и мы можем избежать переобучения. Если вы хотите узнать больше об отчислении, прочитайтеэта статья.

Задача глубокого обучения 3: недостаточное соответствие модели

Модели глубокого обучения также могут не соответствовать требованиям, хотя это звучит маловероятно. Недообучение — это когда модели не удается изучить шаблоны из обучающих данных, и, следовательно, производительность на обучающем наборе ниже. Это может быть связано с несколькими причинами, такими как нехватка данных для обучения, слишком простая архитектура, меньшее количество циклов обучения в модели и т. д. Чтобы преодолеть недостаточное оснащение, вы можете попробовать следующие решения:

  • добавить тренировочные данные
  • сделать сложную модель
  • увеличить время обучения

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

Задача глубокого обучения 4: слишком долгое время обучения

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

Чтобы решить эту проблему, мы можем применить стандартизированный пакет (batch normalization), в котором мы стандартизировали функцию активации скрытого слоя, и попытаться сделать такое же распределение. Вы можете ссылатьсяэта статьяДополнительные сведения о пакетной нормализации в .

концевые сноски

В этой статье мы исследуем различные проблемы, с которыми можно столкнуться при использовании моделей глубокого обучения, таких как CNN. Мы также узнали решения всех этих проблем. Вот некоторые вещи, которые вы можете попробовать:

  • Отрегулируйте процент отсева
  • Увеличьте или уменьшите количество сверточных слоев
  • Увеличьте или уменьшите количество плотных слоев
  • Отрегулируйте количество нейронов в скрытом слое и т. д.

    Добро пожаловать в [Data Small Salt Jar], очень «соленую» публичную учетную запись по науке о данных, где вы время от времени делитесь интересными и забавными проектами и множеством обучающих ресурсов.