Бумага, официальный кодекс, ветка обсуждения фастая, моя записная книжка

Функция активации мишени предложена в статье Миш: саморегулирующаяся немонотонная функция нейронной активации. Эксперименты, проведенные в статье, показывают, что он обеспечивает лучшую точность, чем ReLU. Кроме того, сообщество fastai провело множество экспериментов, и они также смогли достичь лучших результатов, чем ReLU.

Миш определяется как x * tanh(softplus(x)) или по приведенному ниже уравнению.

Реализация функции активации Mish в PyTorch приведена ниже.

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

Важные свойства Миша:

  1. Неограниченное сверху: - Неограниченное сверху - желаемое свойство функции активации, поскольку оно позволяет избежать насыщения, которое приводит к замедлению обучения до почти нулевых градиентов.
  2. Ограничено снизу: - Ограничение снизу желательно, поскольку это приводит к сильным эффектам регуляризации.
  3. Немонотонный: - Это важный фактор в мишени. Мы сохраняем небольшие отрицательные градиенты, и это позволяет сети лучше учиться, а также улучшает градиентный поток в отрицательной области, в отличие от ReLU, где все отрицательные градиенты становятся равными нулю.
  4. Непрерывность: - первая производная Миша непрерывна по всей области, что помогает в эффективной оптимизации и обобщении. В отличие от ReLU, который прерывается в нуле.

Чтобы вычислить первую производную, разверните член tanh(softplus(x)), и вы получите следующий член, а затем выполните правило произведения производной.

При использовании Mish против ReLU используйте более низкую скорость обучения в случае Mish. Диапазон от 1e-5 до 1e-1 показал хорошие результаты.

Тестирование Миша против ReLU

Вместо обучения с нуля, как это уже сделано в статье, я бы попробовал перенести обучение. Когда мы используем предварительно обученные модели для нашего собственного набора данных, мы сохраняем веса фильтра CNN одинаковыми (мы обновляем их во время точной настройки), но мы инициализируем последние полностью подключенные слои случайным образом (заголовок модели). Поэтому я бы протестировал использование ReLU и Mish в этих полносвязных слоях.

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

Я использую наборы данных CIFAR10 и CIFAR100 для тестирования предварительно обученной модели Resnet50. Я бы запустил модель для 10 эпох, а затем сравнил бы результаты для пятой и десятой эпох. Кроме того, результаты будут усреднены по 3 запускам с разной скоростью обучения (1e-2, 5e-3, 1e-3). Веса фильтров CNN не будут обновляться, будут обновляться / обучаться только полностью связанные слои.

Для полносвязных слоев я бы использовал следующую архитектуру. В случае Mish замените ReLU на Mish.

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

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

Визуализация выходного ландшафта

Мы бы использовали 5-слойную случайно инициализированную полносвязную нейронную сеть для визуализации выходного ландшафта ReLU и Mish. Код и результаты приведены ниже.

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

Я исследователь глубокого обучения, интересующийся компьютерным зрением и обработкой естественного языка. Смотрите мои другие сообщения и другие мои работы на https://kushajveersingh.github.io/.