Аннотация: Чтобы помочь вам лучше понять сверточные нейронные сети, здесь я суммирую многие важные новые достижения и связанные с ними статьи в области компьютерного зрения и сверточных нейронных сетей.
В этой статье будут представлены некоторые из важных статей, опубликованных за последние пять лет, и обсуждено их значение. Документы 1-5 посвящены разработке общих сетевых архитектур, а документы 6-9 посвящены другим сетевым архитектурам. Нажмите на исходный текст, чтобы увидеть более подробную информацию.
1. АлексНет (2012)
AlexNet является источником архитектуры сверточной нейронной сети (хотя можно утверждать, что статья Яна Лекуна 1998 года была настоящей основополагающей публикацией). Это называется "Классификация ImageNet на основе глубокой сверточной сети«Эта статья имеет в общей сложности 6 184 цитирования и признана одной из самых влиятельных статей в этой области. В крупномасштабном конкурсе визуального распознавания ImageNet в 2012 году «Большая и глубокая сверточная свертка», созданная Алексом Крижевским и др. Нейронные сети» выиграли конкурс — уменьшили ошибку классификации с 26% до 15%, поразительное улучшение, которое потрясло почти все сообщество компьютерного зрения.С тех пор сверточные нейронные сети получили широкое распространение, стали нарицательным.
В статье рассматривается сетевая структура архитектуры AlexNet. По сравнению с современными архитектурами AlexNet использует относительно простую сетевую структуру: она состоит из 5 сверточных слоев, слоев с максимальным объединением, выпадающих слоев и 3 полносвязных слоев. Разработанную ими сеть можно использовать для классификации 1000 категорий.
главный аргумент
1. Обучите сеть на наборе данных ImageNet, который содержит более 15 миллионов аннотированных изображений с более чем 22 000 категорий.
2. Используйте ReLU для обработки нелинейных функций (это сокращает время обучения, поскольку ReLU работает в несколько раз быстрее, чем традиционные функции tanh).
3. Используемые методы увеличения данных включают: преобразование изображения, горизонтальное отражение и извлечение фрагментов.
4. Выпадающий слой используется для решения проблемы переобучения обучающих данных.
5. Обучите архитектуру, используя пакетный стохастический градиентный спуск, где и импульс, и затухание веса имеют фиксированные конкретные значения.
важность
Нейронная сеть, разработанная Крижевским и др. в 2012 году, является праздником сверточных нейронных сетей в сообществе компьютерного зрения. Это первая архитектура, которая очень хорошо работает с набором данных ImageNet, используя методы, которые все еще используются сегодня, такие как увеличение и удаление данных. Эта статья иллюстрирует преимущества сверточных нейронных сетей и обеспечивает производительность, недостижимую для других нейронных сетей.
2.ZF Net
С тех пор, как AlexNet дебютировал в 2012 году, количество архитектур сверточных нейронных сетей, представленных в конкурсе ImageNet Large-Scale Visual Recognition Challenge 2013 года, резко увеличилось. Победителем ежегодного конкурса стала сеть, созданная командой Мэтью Зейлера из Нью-Йоркского университета.ZF Net, архитектура обеспечивает уровень ошибок всего 11,2%. Архитектура ZF Net эквивалентна тонкой настройке архитектуры AlexNet, но авторы все же выдвинули некоторые важные идеи, которые могут улучшить производительность модели. Еще одна причина, по которой эта статья особенно важна, заключается в том, что авторы приложили много усилий, чтобы объяснить визуализацию сверточных нейронных сетей и показать, как правильно визуализировать фильтры и веса.
В этой статье, озаглавленной «Визуализация и понимание сверточных нейронных сетей», команда Цайлера сначала объясняет возобновившийся интерес к сверточных нейронных сетей, связанный с доступностью больших обучающих наборов, а также с увеличением коэффициента использования графического процессора и вычислительных ресурсов. мощность тоже увеличилась. Авторы также отмечают, что «лучшая архитектура снижает количество проб и ошибок». Хотя у нас есть более полное представление о сверточных нейронных сетях, чем три года назад, многие исследователи все еще сталкиваются с этой проблемой! Основной вклад этой статьи заключается в точной настройке деталей архитектуры AlexNet и интересной визуализации карт функций.
главный аргумент
1. ZF Net имеет очень похожую архитектуру на модель AlexNet с некоторыми тонкостями настройки.
2. AlexNet обучается на 15 миллионах изображений, в то время как ZF Net обучается только на 1,3 миллионах изображений.
3.AlexNet использует фильтры 11*11 на первом уровне, тогда как ZF Net использует фильтры 7*7 и меньший размер шага. Причина этой корректировки заключается в том, что использование меньших фильтров в первом сверточном слое помогает сохранить большую часть исходной информации о пикселях во входном массиве. Фильтр 11*11 отфильтрует много полезной информации, особенно в первом сверточном слое.
4. С развитием сверточных сетей увеличилось количество используемых фильтров.
5. Используйте ReLU в качестве функции активации, функцию кросс-энтропийной стоимости в качестве функции ошибки и тренируйтесь с использованием пакетного стохастического градиентного спуска.
6. Метод визуализации, называемый деконволюционными сетями, был разработан, чтобы помочь проверить взаимосвязь различных активаций функций с входным массивом. Он называется «деконволюция», потому что он отображает объекты в пиксели (противоположно тому, что делает сверточный слой).
DeConvNet
Основная идея модели DeConvNet заключается в добавлении «деконволюции» к каждому слою, который был обучен в сверточной нейронной сети для возврата пикселей изображения. Изображение подается в сверточную нейронную сеть, и ее активации функций вычисляются на каждом уровне. Теперь предположим, что мы хотим изучить активацию функции в четвертом сверточном слое, давайте сохраним активацию этой одной карты функций, но установим для всех других активаций в сверточном слое значение 0, а затем передаем эту карту функций в качестве входных данных для модели DeConvNet. Эта модель DeConvNet имеет те же фильтры, что и исходная сверточная нейронная сеть. Затем входные данные проходят серию операций распаковки (в отличие от максимального объединения), исправлений и операций фильтрации для каждого из предыдущих слоев, прежде чем попасть во входной массив.
Мы знаем, что первый слой в сверточном слое — это базовый детектор признаков, который обнаруживает края или цвета. Как показано выше, мы видим, что во втором слое обнаружено больше повторяющихся признаков. Далее давайте взглянем на слои 3, 4 и 5.
Эти слои показывают более продвинутые функции, такие как голова собаки или цветы. Важно отметить, что после первого сверточного слоя у нас обычно есть слой пула для понижения разрешения изображения (например, преобразование массива 32 * 32 * 3 в массив 16 * 16 * 3). Это позволяет увидеть во втором слое более широкий спектр функций исходного изображения.
важность
Модель ZF Net не только стала победителем конкурса ImageNet Large Scale Visual Recognition Challenge 2013 года, но и предоставила великолепные изображения работы сверточных нейронных сетей и продемонстрировала множество других способов повышения производительности. Методы визуализации, описанные моделью ZF Net, не только помогают объяснить внутреннюю работу сверточных нейронных сетей, но и дают уникальную возможность понять, как можно улучшить сетевую архитектуру.
3. VGG Net (2014)
VGG Net, архитектура, созданная в 2014 году (но не победившая в конкурсе ImageNet Large Scale Visual Recognition Challenge), достигла уровня использования 7,3%. из Оксфордского университетаКарен Симонян и Эндрю ЗиссерманСоздан особенно простая 19-слойная сверточная нейронная сеть с использованием фильтров 3x3 с модулями перемещения 1 и 2x2 с шагом 2.
главный аргумент
1. Используются только фильтры 3*3, что сильно отличается от фильтров 11*11, используемых в первом слое AlexNet, и фильтров 7*7, используемых ZF Net. Авторы демонстрируют, что комбинация двух сверточных слоев 3*3 имеет эффективное рецептивное поле 5*5. При использовании фильтра меньшего размера моделируется фильтр большего размера, при этом также уменьшается количество параметров. Кроме того, мы также можем использовать слои ReLU в обоих сверточных слоях.
2. Сочетание трех сверточных слоев имеет эффективное рецептивное поле 7*7.
3. По мере углубления каждого слоя входной массив уменьшается (причина сверточного и пулингового слоев), а за ним следует и количество фильтров, поэтому увеличивается и глубина массива.
4. Интересно, что количество фильтров удваивается после каждого максимального слоя объединения. Это усиливает идею сокращения пространственного измерения, но увеличения глубины сети.
5. Особенно подходит для задач классификации и локализации изображений. Авторы используют локализованную форму как регрессию.
6. Создайте схему с помощью Caffe.
7. Использование методов увеличения данных во время обучения — это колебания масштаба.
8. Используйте слой ReLU после каждого сверточного слоя и тренируйтесь с пакетным градиентным спуском.
важность
Модель VGG Net всегда была одной из самых влиятельных статей, на мой взгляд, потому что она подкрепляет идею о том, что для иерархического представления визуальных данных сверточные нейронные сети должны иметь более глубокие слои.
4. GoogLeNet (2015)
Google использовал модуль Inception, чтобы заменить концепцию простой сетевой архитектуры.GoogLeNetМодель представляет собой 22-уровневую архитектуру сверточной нейронной сети и стала победителем конкурса ImageNet Large Scale Visual Recognition Challenge 2014 года с высокой частотой ошибок 6,7%. Насколько мне известно, это одна из первых архитектур сверточных нейронных сетей, которая действительно избавляется от простого наложения слоев свертки и объединения в последовательную структуру. Эта новая архитектура в значительной степени ориентирована на потребление памяти и энергии (наложение всех этих слоев и добавление большого количества фильтров влечет за собой затраты на вычисления и память, а также увеличивает вероятность переобучения).
Начальный модуль
Вместо последовательной работы, как в предыдущих архитектурах, в архитектуре GoogLeNet существуют параллельные сети. Как показано на рисунке ниже, этот блок называется начальным модулем.
Посмотрим на его внутренний состав.
Зеленое поле внизу — это вход, а вверху — выход. На каждом уровне традиционной сверточной сети вы должны выбрать, следует ли выполнять объединение или свертку (а также размер фильтра). Модуль Inception может делать все это. Это один из основных моментов GoogLeNet.
Это приведет к слишком большому количеству выходных данных.Чтобы решить эту проблему, автор добавляет операцию свертки 1 * 1 перед слоями 3 * 3 и 5 * 5, чтобы уменьшить размерность. В качестве примера предположим, что входной массив равен 100*100*60 (это не обязательно размер изображения, это просто вход для любого уровня сети). Использование 20 сверточных фильтров 1*1 может уменьшить массив до 100*100*20. Это означает, что операции свертки 3*3 и 5*5 не будут иметь большого количества операций. Поскольку мы уменьшаем размерность массива, эта операция называется «объединением функций», что похоже на то, как мы используем обычный слой максимального объединения для уменьшения высоты и ширины изображения.
В чем польза модели GoogleNet? Эта сеть состоит из сети сети, фильтра свертки среднего размера, фильтра свертки большого размера и операции объединения в пул. Сверточная сеть может извлекать подробную информацию из входного массива, а фильтр 5 * 5 может переопределять входной более широкий диапазон принятых джокеров и, таким образом, также может извлекать свою подробную информацию. Вы также можете выполнять операции пулинга в модели GoogleNet, что помогает уменьшить пространственные размеры и избежать хищничества. Самое главное, что после каждого слоя свертки есть функции RELU, что помогает улучшить нелинейность сети. По сути, сеть может по-прежнему поддерживать расчетную хорошую производительность при выполнении этих операций.
главный аргумент
1. Во всей архитектуре используются девять начальных модулей, всего более 100 уровней!
2. Полносвязный слой не используется! Они используют средний пул, что значительно экономит количество параметров.
3. Использует в 12 раз меньше параметров, чем архитектура AlexNet.
4. Используйте концепцию R-CNN, чтобы представить свою архитектуру обнаружения.
5. Модуль Inception имеет обновления версий (версии 6 и 7).
важность
Модель GoogLeNet была одной из первых архитектур, в которой была представлена идея о том, что «слои сверточной нейронной сети не нужно укладывать последовательно», как часть модуля Inception, творческая структура слоев повышает общую производительность и эффективность вычислений.
Пожалуйста, с нетерпением ждите представления следующей статьи — мощного инструмента для понимания сверточных нейронных сетей: 9 важных статей по глубокому обучению (ниже)!
Выше был перевод.
Понимание сверточных нейронных сетей: 9 важных документов по глубокому обучению (часть 2)
Эта статья переведена общественной организацией Alibaba Cloud Yunqi.
автор:【направление】