Может кто-нибудь объяснить, что такое глобальный уровень максимального пула и почему и когда мы используем его для обучения нейронной сети. Есть ли у них какое-либо преимущество перед обычным максимальным слоем пула?
Может кто-нибудь объяснить, что такое глобальный уровень максимального пула и почему и когда мы используем его для обучения нейронной сети. Есть ли у них какое-либо преимущество перед обычным максимальным слоем пула?
Ответы:
Глобальный максимальный пул = обычный максимальный пул с размером пула, равным размеру ввода (минус размер фильтра + 1, если быть точным). Вы можете видеть, что MaxPooling1D
принимает pool_length
аргумент, а GlobalMaxPooling1D
нет.
Например, если входной уровень максимального пула равен , глобальный максимальный пул выдает , тогда как обычный максимальный уровень пула с размером пула равен 3 выходным (при условии шага = 1).
Это можно увидеть в коде :
class GlobalMaxPooling1D(_GlobalPooling1D):
"""Global max pooling operation for temporal data.
# Input shape
3D tensor with shape: `(samples, steps, features)`.
# Output shape
2D tensor with shape: `(samples, features)`.
"""
def call(self, x, mask=None):
return K.max(x, axis=1)
В некоторых областях, таких как обработка на естественном языке, обычно используется глобальный максимальный пул. В некоторых других областях, таких как компьютерное зрение, обычно используется максимальный пул, который не является глобальным.
Как описано в этой статье , предлагается глобальное среднее пул (GAP):
Обычные сверточные нейронные сети выполняют свертку на нижних уровнях сети. Для классификации карты признаков последнего сверточного слоя векторизируются и подаются в полностью связанные слои, за которыми следует слой логистической регрессии softmax. Эта структура соединяет сверточную структуру с традиционными классификаторами нейронных сетей. Он рассматривает сверточные слои как экстракторы признаков, и результирующий признак классифицируется традиционным способом.
Тем не менее, полностью подключенные уровни подвержены переоснащению, что затрудняет обобщающую способность всей сети. Хинтон и др. Предлагают выпадение в качестве регуляризатора, который случайным образом устанавливает половину активаций для полностью связанных слоев на ноль во время тренировки. Это улучшило способность обобщения и в значительной степени предотвращает переоснащение.
В этой статье мы предлагаем другую стратегию, называемую глобальное среднее объединение, чтобы заменить традиционные полностью связанные слои в CNN. Идея состоит в том, чтобы создать одну карту объектов для каждой соответствующей категории задачи классификации в последнем слое mlpconv. Вместо добавления полностью связанных слоев поверх карт объектов, мы берем среднее значение каждой карты объектов, и полученный вектор подается непосредственно в слой softmax. Одно из преимуществ глобального среднего пула перед полностью связанными слоями состоит в том, что он более естественен для структуры свертки, обеспечивая соответствие между картами объектов и категориями. Таким образом, карты характеристик могут быть легко интерпретированы как карты достоверности категорий. Другое преимущество состоит в том, что нет параметра для оптимизации в глобальном среднем пуле, поэтому на этом уровне избегают переобучения. Futhermore, глобальное среднее объединение суммирует пространственную информацию, таким образом, она более устойчива к пространственным преобразованиям входных данных. Мы можем видеть глобальное среднее объединение как структурный регуляризатор, который явно применяет карты объектов как карты достоверности концепций (категорий). Это стало возможным благодаря слоям mlpconv, поскольку они обеспечивают лучшее приближение к картам достоверности, чем GLM.
Изменить: как предложено @MaxLawnboy, вот еще одна статья на ту же тему .