Вот наш анализ воспроизведения статьи: «Стремление к простоте: вся сверточная сеть» Йоста Тобиаса Спрингенберга, Алексея Досовицкого, Томаса Брокса и Мартина Ридмиллера. В этом блоге будет обсуждаться статья, наши впечатления и замечания во время и после попытки воспроизвести этот результат.

Бумага

Большинство сверточных нейронных сетей (CNN) построены по тому же принципу: за сверточным слоем следует слой максимального объединения. Однако может ли сверточный слой с полосами заменить обычный объединяющий слой? Чтобы оценить это, в статье сравниваются несколько различных архитектурных решений.

Предлагаются три возможных объяснения того, почему объединение выгод для CNN:

  1. P-норма (подвыборка или объединение) делает представление в CNN более инвариантным.
  2. Покрытие большей части входа в результате пространственного сокращения.
  3. Функциональный характер объединения упрощает оптимизацию.

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

Они:

  • С полосой CNN: максимальный уровень объединения удаляется, а шаг уровня, предшествующего слою объединения, увеличивается на единицу.
  • All-CNN: максимальный уровень объединения заменяется сверточным слоем.
  • ConvPool-CNN: плотный сверточный слой помещается перед каждым максимальным уровнем объединения. Этот уровень имеет тот же размер ядра, что и соответствующий уровень объединения. Эта модель включена, чтобы гарантировать, что изменения точности не связаны исключительно с увеличением размера модели со стандартной модели на All-CNN.

Воспроизведение результата

Архитектура модели

Анализируются три различные модели архитектуры A, B и C (как показано в таблице ниже, взятой из документа), и анализируются три дополнительных варианта (как упоминалось ранее) каждой (Strided-CNN, All-CNN, ConvPool-CNN) в наборе данных CIFAR-10. Еще одна интересная особенность этой статьи заключается в том, что они не использовали полностью связанные слои, вместо этого они использовали сверточные слои 1x1 в качестве конечных слоев. Поскольку нам нужно было только воспроизвести вышеупомянутую таблицу (Таблица 1), мы использовали softmax, включающий 10 классов. Хотя это не упомянуто в таблицах, авторы также включили выпадение после первого уровня (p = 20%) и после каждого уровня объединения или уровня, который заменяет уровень объединения (p = 50%). Архитектура базовых моделей и производные модели A, B и C были воспроизведены с использованием библиотеки Pytorch на GPU-кластере TU Delft.

Настройка гиперпараметров

В документе не сообщается, какие скорости обучения использовались для результатов, представленных в таблице 1, они только сообщают, что он показал лучшие результаты. Таким образом, мы должны были запустить каждую модель со следующими заявленными темпами обучения [0,25, 0,1, 0,05, 0,01].

Все модели (N = 12) были обучены с 4 различными скоростями обучения 0,25, 0,1, 0,05 и 0,01. Каждая модель была обучена 350 эпох. Начальная скорость обучения была уменьшена для всех моделей с фиксированным расписанием: в эпоху 200, 250 и 300 она была умножена на 0,1.

Проблемы при воспроизведении

Хотя статья была написана довольно четко, мы столкнулись с некоторыми неопределенностями при воспроизведении, которые требовали дальнейшего уточнения. Пришлось посмотреть код, однако на авторском гитхабе мы смогли найти код только для 1 модели, а таблица состоит из 12 моделей. В результате мы считаем наше воспроизведение истинным воспроизведением, поскольку весь код был написан нами с нуля.

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

Во-вторых, в документе упоминается, что они реализовали «усреднение по пространственным измерениям 6x6», это было немного двусмысленно для нас, но учитывая, что мы непрофессионалы. Мы реализовали AvgPool2d из torch.nn.functional, так как сочли это наиболее подходящим для описания. Однако во время обучения мы столкнулись с ошибкой, из-за которой она перестала работать, поэтому нам пришлось заново запускать все готовые модели.

Третье возможное несоответствие может быть вызвано тем, как автор описывает, как создавать модели All-CNN для A и B: «Модель, в которой max-pooling заменяется сверточным слоем. Это столбец «All-CNN-C» в таблице. ’Это описание не содержит важных деталей, таких как размер ядра и выходной размер этого уровня. Это было предусмотрено только для моделей C. Однако, несмотря на то, что мы несколько раз перечитывали разделы, посвященные методам, в итоге они были описаны во вступлении, которое мы прочитали всего за несколько дней до крайнего срока. Он содержал более подробное описание: 'Мы можем заменить слой объединения на обычную свертку с шагом больше единицы (т.е. для слоя объединения с k = 3 и r = 2 мы заменяем его сверточным слоем с соответствующим шагом и размер ядра и количество выходных каналов, равное количеству входных каналов) '. К счастью, похоже, это тоже то, что мы реализовали случайно.

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

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

Результаты

Наши результаты менее обнадеживающие, чем в исходной статье. Частота ошибок по крайней мере на 15% выше для сравнения, однако порядок производительности сохраняется для моделей A, где Conv-Pool также имеет самый низкий уровень ошибок для нашего результата, и моделей C, где версия All-CNN работает лучше всего. . Для модели B это не так, согласно статье ALL-CNN-B работает лучше всего. Принимая во внимание, что в нашем воспроизведении Strided-CNN-B имеет наименьший процент ошибок.

Критические замечания

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

Хотя это не рассматривается в документе, мы нашли странным тот факт, что не было включено ни пакетной нормализации, ни какого-либо другого типа нормализации в этом отношении. Нормализация обычно рассматривается как средство ускорения обучения. Когда мы впервые попробовали запустить модели на наших компьютерах, мы столкнулись с проблемой времени. Компьютер Кушала мог обрабатывать модели, но все равно требовалось от 8 часов до нескольких дней, чтобы достичь 350 эпох, тогда как компьютеру Савина потребовалась целая неделя. Поскольку один член команды выбыл, нам в конечном итоге пришлось использовать GPU-кластер TU Delft, чтобы успеть до крайнего срока. Здесь время больше не было проблемой, и все модели были обучены менее 4 часов. Тем не менее, было бы неплохо оценить эффект нормализации в этом случае, однако это выходит за рамки этого проекта.

По нашему мнению, к характеристикам оригинальной бумаги следует относиться с недоверием. Они также используют свой набор для проверки в качестве набора тестов. По словам Домингоса и др., Это «создает иллюзию успеха», и вы настраиваете свою модель на свой набор тестов [2]. Для более строгой настройки потребуется, например, 10 000 выборок обучающего набора и для набора проверки.

Во время обучения мы заметили, что многие модели переоснащаются по прошествии определенного периода. Это видно из рисунка 1, где точность сначала увеличивается, а затем падает до уровня вероятности 10%. Таким образом, хотя некоторая регуляризация была реализована в форме отсева, она была недостаточно эффективной, чтобы преодолеть переобучение для некоторых тренировочных прогонов. На рисунке 2 показан хороший тренировочный прогон, в котором точность медленно увеличивается.

Кроме того, сами авторы заявляют, что они оценили только очень конкретную установку, где количество эпох всегда равно 350, а скорость обучения снижается фиксированным образом. Choi et al. показал, что для честного сравнения между оптимизаторами необходимо оценивать широкий диапазон переменных [3]. Поскольку базовые модели и варианты сильно различаются по-своему, возможно, область поиска для скорости обучения была слишком ограниченной или можно было использовать другой оптимизатор. Также фиксированное снижение скорости обучения могло ограничить оптимизацию. Большинство моделей с переобучением сначала показали многообещающую точность; возможно, если бы скорость обучения была снижена раньше, модель не так уж сильно отклонилась бы от предыдущего многообещающего результата.

использованная литература

  1. Спрингенберг, Дж. Т., Досовицкий, А., Брокс, Т., и Ридмиллер, М. (2014). Стремление к простоте: свёрточная сеть. Препринт arXiv arXiv: 1412.6806.
  2. Домингос, П. (2012). Несколько полезных сведений о машинном обучении. Сообщения ACM, 55 (10), 78–87.
  3. Чой, Д., Шаллу, К. Дж., Надо, З., Ли, Дж., Мэддисон, К. Дж., И Даль, Г. Э. (2019). Об эмпирических сравнениях оптимизаторов для глубокого обучения. Препринт arXiv arXiv: 1910.05446.