«Умение думать дает вам гораздо больше возможностей, чем те, кто знает только то, что думать», - Нил деГрасс Тайсон

Переосмысление масштабирования модели для сверточных нейронных сетей

🎯 Вышеупомянутая статья была опубликована в 2019 году на Международной конференции по машинному обучению (ICML). В задаче ImageNet при загрузке расчета параметров 66M EfficientNet достиг точности 84,4% и занял свое место среди самых современных.

EfficientNet можно рассматривать как группу моделей сверточных нейронных сетей. Но с учетом некоторых тонкостей он на самом деле более эффективен, чем большинство его предшественников.

Группа моделей EfficientNet состоит из 8 моделей от B0 до B7, каждый последующий номер модели относится к вариантам с большим количеством параметров и большей точностью.

Тогда возникает вопрос: Что эффективно? Мы видим, что успех моделей в наборе данных ImageNet увеличился, поскольку они стали более сложными с 2012 года. Однако большинство из них неэффективны с точки зрения нагрузки на обработку. В последние годы были приняты более эффективные подходы к меньшим моделям. Настолько, что при уменьшении масштаба модели масштабирование выполняется по глубине, ширине и разрешению - сосредоточение внимания на всех трех в сочетании позволило добиться более эффективных результатов. Да, эффективно.

Учитывая это, архитектура модели EfficientNet должна масштабироваться в три этапа!

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

❄️Как работает EfficientNet

В трех основных шагах можно понять, почему это более эффективно.

  • Глубинная свертка + Точечная свертка: делит исходную свертку на два этапа, чтобы значительно снизить стоимость вычислений с минимальной потерей точности.
  • Обратное разрешение: исходные блоки ResNet состоят из слоя, который сжимает каналы, а затем слоя, который расширяет каналы. Таким образом, он связывает пропущенные соединения с богатыми слоями каналов. Однако в MBConv блоки состоят из уровня, который сначала расширяет каналы, а затем сжимает их, так что слои с меньшим количеством каналов пропускаются.
  • Линейное узкое место: использует линейную активацию на последнем уровне в каждом блоке, чтобы предотвратить потерю информации из ReLU.

Основным строительным блоком для EfficientNet является MBConv, перевернутое узкое место, первоначально известное как MobileNetV2. Использование ярлыков между узкими местами путем подключения гораздо меньшего количества каналов (по сравнению с расширяющимися слоями) было объединено с глубокой разделяемой сверткой, которая сократила расчет почти на k² по сравнению с традиционными слоями. Где k обозначает размер ядра, он определяет высоту и ширину двумерного окна свертки.

from keras.layers import Conv2D, DepthwiseConv2D, Adddef inverted_residual_block(x, expand=64, squeeze=16):
    block = Conv2D(expand, (1,1), activation=’relu’)(x)
    block = DepthwiseConv2D((3,3), activation=’relu’)(block)
    block = Conv2D(squeeze, (1,1), activation=’relu’)(block)
    return Add()([block, x])

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

Если вы хотите увеличить FLOPS в 2 раза с EfficientNetB0 до EfficientNetB7 (чтобы гарантировать, что EfficientNetB1 имеет 2x FLOPS по сравнению с EfficientNetB0), необходимо использовать следующий подход:

глубина: d = α φ

ширина: w = β φ

разрешение: r = γ φ s.t. α · β 2 · γ 2 ≈ 2

α ≥ 1, β ≥ 1, γ ≥ 1

❄️Создание модели EfficientNet

Шаг 1️⃣ : Построение базовой модели называется EfficientNet- B0. MBConv используется с перевернутыми узкими местами MobileNet Res.

Шаг 2️⃣ : ϕ = 1 и поиск по сетке α, β и масштабирование от B0 до B1.

Шаг 3️⃣ : установка α, β, γ. Таким образом, для масштабирования от B2 до B7 ϕ выбирается между 2 ~ 7. Ниже вы можете увидеть карты активации классов для моделей с различными методами масштабирования.

Похоже, что метод составного масштабирования более эффективно фокусируется на деталях в областях, связанных с объектами. Стоит попробовать! 🤖

❄️Влияние трансфертного обучения на EfficientNet

На мгновение давайте сделаем небольшой шаг назад от мельчайших деталей EfficientNet. Представьте, что птица может передать вам то, что она выучила. Или то, что вы узнали, можно передать рыбе - звучит безумно, правда?

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

Ознакомьтесь с этой записной книжкой Colab, чтобы получить более подробную информацию о моем опыте тонкой настройки и переноса обучения в целом.

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

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

Мы используем предварительно обученные модели только в приложениях, где мы хотим только тестировать и прогнозировать. Для EfficientNet трансферное обучение экономит время и вычислительную мощность, как и любая другая модель. При этом он обеспечивает более высокую точность, чем многие известные модели. Это связано с умным масштабированием по глубине, ширине и разрешению (как вы читали выше). Давайте посмотрим на точность и соотношение параметров для разных наборов данных:

🌈 T Реализация EfficientNet Transfer Learning доступна через Google Colab - записную книжку можно найти в репозитории GitHub ниже:



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

Почему EfficientNet?

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

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



👽 Вы также можете подписаться на мои учетные записи GitHub и Twitter, чтобы получать больше контента!

🎯 Дополнительный ресурс: TPU, реализация EfficientNet



Просмотрите другие сообщения в моем блоге, опубликованные на Heartbeat:









⚡️ Ссылки

EfficientNet: переосмысление масштабирования модели для сверточных нейронных сетей

Обзор - State of the Arts - Бумаги с кодами

EfficientNet: повышение точности и эффективности с помощью AutoML и масштабирования модели

Как проводить трансферное обучение с EfficientNet

Обучение EfficientNets на TPU

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

Являясь независимой редакцией, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее создавать лучшие модели машинного обучения.