Аннотация
Мы обучили большую глубокую сверточную нейронную сеть для классификации 1.2 миллиона изображений высокого разрешения из конкурса ImageNet LSVRC-2010, распределённых по 1000 различных классов. На тестовых данных мы достигли показателей ошибок top-1 и top-5, равных 37.5% и 17.0%, что значительно лучше предыдущих рекордов. Нейронная сеть, содержащая 60 миллионов параметров и 650 000 нейронов, состоит из пяти сверточных слоёв, некоторые из которых сопровождаются слоями подвыборки (max-pooling), а также трёх полносвязных слоёв с итоговым softmax на 1000 классов. Для ускорения обучения мы использовали нейроны, не насыщаемые на больших значениях, и очень эффективную GPU-реализацию операции свертки. Чтобы уменьшить переобучение в полносвязных слоях, мы применили недавно разработанный метод регуляризации под названием «dropout», который оказался очень эффективным. Мы также представили вариант этой модели на конкурсе ILSVRC-2012 и добились победы с ошибкой top-5 на тестовых данных 15.3%, в то время как второй лучший результат составил 26.2%.
1. Введение
Современные методы распознавания объектов активно используют подходы машинного обучения. Для улучшения их эффективности можно собирать более крупные наборы данных, разрабатывать более мощные модели и применять более совершенные техники для предотвращения переобучения. До недавнего времени наборы данных с размеченными изображениями были относительно небольшими — порядка десятков тысяч изображений (например, NORB [16], Caltech-101/256 [8, 9] и CIFAR-10/100 [12]). Простые задачи распознавания можно было решать достаточно хорошо с набором такого размера, особенно если изображения дополнены трансформациями, сохраняющими метки. Например, текущий лучший показатель ошибки на задаче распознавания цифр MNIST (<0,3%) уже приближается к уровню человеческой производительности [4]. Однако объекты в реальных условиях обладают значительной изменчивостью, поэтому для их распознавания необходимы гораздо более крупные тренировочные наборы. Действительно, ограничения небольших наборов данных с изображениями были давно признаны (например, Pinto et al. [21]), но лишь недавно появилась возможность собирать размеченные наборы данных с миллионами изображений. Среди таких новых наборов данных — LabelMe [23], который включает сотни тысяч полностью сегментированных изображений, и ImageNet [6], содержащий более 15 миллионов размеченных изображений высокого разрешения, охватывающих более 22 000 категорий.
Для обучения на тысячах объектов, представленных миллионами изображений, требуется модель с большой обучающей способностью. Однако колоссальная сложность задачи распознавания объектов означает, что её невозможно решить даже с таким большим набором данных, как ImageNet, поэтому наша модель должна включать значительное количество заранее заданных знаний, чтобы компенсировать дефицит информации. Сверточные нейронные сети (CNN) являются одним из таких типов моделей [16, 11, 13, 18, 15, 22, 26]. Их мощность можно регулировать, изменяя глубину и ширину сети, при этом они делают сильные и в основном верные предположения о природе изображений (например, стационарность статистик и локальность зависимостей между пикселями). Таким образом, в отличие от стандартных полносвязных нейронных сетей с аналогичной архитектурой, сверточные сети имеют значительно меньше связей и параметров, что делает их обучение проще, а их теоретически оптимальные результаты обычно лишь немного хуже.
Несмотря на привлекательные характеристики сверточных нейронных сетей и высокую эффективность их локальной архитектуры, на практике их применение к изображениям высокого разрешения оставалось слишком дорогим. К счастью, современные GPU, в сочетании с высоко оптимизированной реализацией 2D-свертки, обладают достаточной мощностью, чтобы позволить обучение крупных сверточных нейронных сетей, а такие новые наборы данных, как ImageNet, содержат достаточно размеченных примеров, чтобы обучить такие модели без чрезмерного переобучения.
Основные вклад этой работы следующие: мы обучили одну из крупнейших сверточных нейронных сетей на поднаборах данных ImageNet, использованных в соревнованиях ILSVRC-2010 и ILSVRC-2012 [2], и добились наилучших результатов, когда-либо полученных на этих наборах данных. Мы разработали высоко оптимизированную GPU-реализацию 2D-свертки и всех других операций, необходимых для обучения сверточных нейронных сетей, и делимся ею с общественностью. Наша сеть включает несколько новых и нестандартных особенностей, которые повышают её производительность и сокращают время обучения, о которых подробно рассказано в разделе 3. Размер сети стал причиной значительных проблем с переобучением, несмотря на наличие 1,2 миллиона размеченных примеров для обучения, поэтому мы применили несколько эффективных методов для предотвращения переобучения, описанных в разделе 4. Наша финальная сеть состоит из пяти сверточных и трёх полносвязных слоёв, и эта глубина оказалась решающей: мы обнаружили, что удаление любого сверточного слоя (каждый из которых содержит не более 1% параметров модели) приводило к снижению производительности.
В конечном итоге размер сети ограничен в основном объёмом доступной памяти на современных GPU и временем, которое мы готовы потратить на обучение. Обучение нашей сети занимает от пяти до шести дней на двух GPU GTX 580 3GB. Все наши эксперименты показывают, что результаты можно улучшить просто подождав появления более быстрых GPU и больших наборов данных.
2. Набор данных
ImageNet — это набор данных, состоящий более чем из 15 миллионов размеченных изображений высокого разрешения, принадлежащих примерно 22 000 категориям. Изображения были собраны с интернета и размечены с помощью краудсорсингового инструмента Amazon Mechanical Turk. С 2010 года, в рамках конкурса Pascal Visual Object Challenge, ежегодно проводится соревнование под названием ImageNet Large-Scale Visual Recognition Challenge (ILSVRC). В нем используется подмножество ImageNet, которое включает около 1000 изображений в каждой из 1000 категорий. В общей сложности набор данных включает примерно 1,2 миллиона обучающих изображений, 50 000 изображений для валидации и 150 000 тестовых изображений.
ILSVRC-2010 — это единственная версия ILSVRC, для которой доступны метки тестового набора, и именно на этой версии мы провели основную часть своих экспериментов. Поскольку наша модель также принимала участие в конкурсе ILSVRC-2012, в разделе 6 мы приведем результаты для этой версии набора данных, где метки тестового набора недоступны. В рамках ImageNet принято предоставлять два показателя ошибок: top-1 и top-5, где ошибка top-5 — это доля тестовых изображений, для которых правильная метка не входит в число пяти самых вероятных, предложенных моделью.
Изображения в ImageNet имеют различное разрешение, в то время как нашей системе требуется фиксированный размер входных данных. Поэтому мы уменьшили разрешение всех изображений до фиксированного размера 256 × 256. Для прямоугольных изображений мы сначала изменяли размер таким образом, чтобы короткая сторона стала равной 256 пикселям, а затем вырезали центральную часть изображения размером 256×256. Мы не применяли никакой другой предобработки, кроме вычитания среднего значения пикселей по обучающему набору данных. Таким образом, сеть обучалась на (центрированных) сырых значениях RGB пикселей.
3. Архитектура
Архитектура нашей сети представлена на рисунке 2. Она состоит из восьми обучаемых слоёв — пяти сверточных и трёх полносвязных. Далее мы описываем некоторые новшества и особенности архитектуры нашей сети. Разделы 3.1–3.4 расположены по важности, начиная с наиболее значимых.
3.1. Нелинейность ReLU
Стандартный способ моделирования выхода нейрона ( f ) как функции его входа ( x ) заключается в использовании:
Однако с точки зрения времени обучения при использовании градиентного спуска эти насыщенные нелинейности значительно медленнее, чем ненасыщенная нелинейность:
Следуя Нэйру и Хинтону [20], мы называем нейроны с такой нелинейностью ректифицированными линейными единицами (ReLU). Глубокие сверточные нейронные сети с ReLU обучаются в несколько раз быстрее, чем аналогичные сети с нейронами ( \tanh ). Это подтверждается на рисунке 1, который иллюстрирует количество итераций, необходимых для достижения ошибки обучения в 25% на наборе данных CIFAR-10 для четырёхслойной сверточной сети. Этот график демонстрирует, что мы не смогли бы провести эксперименты с такими большими нейронными сетями, если бы использовали традиционные модели нейронов с насыщением.
Мы не первые, кто рассматривает альтернативы традиционным моделям нейронов в сверточных сетях. Например, Джарретт и соавт. [11] утверждают, что нелинейность:
работает особенно эффективно в их методе нормализации контраста, за которым следует локальная усредняющая подвыборка на наборе данных Caltech-101. Однако на этом наборе данных основное внимание уделяется предотвращению переобучения, поэтому наблюдаемый ими эффект отличается от ускоренной способности подгонки под обучающий набор, которую мы наблюдаем при использовании ReLU. Более быстрое обучение оказывает существенное влияние на производительность крупных моделей, обучаемых на больших наборах данных.

3.2. Обучение на нескольких GPU
Один GPU GTX 580 имеет всего 3 ГБ памяти, что ограничивает максимальный размер сетей, которые могут быть обучены на нём. Однако оказалось, что 1,2 миллиона обучающих примеров достаточно для обучения сетей, которые слишком велики для одного GPU. Поэтому мы распределили сеть между двумя GPU. Современные GPU идеально подходят для параллельной работы между несколькими устройствами, поскольку они могут обмениваться данными напрямую, без необходимости обращения к памяти хоста. Используемая нами схема параллелизации разделяет ядра (или нейроны) пополам между двумя GPU, при этом данные передаются только на определённых слоях. Например, ядра слоя 3 получают входные данные от всех карт ядер слоя 2. Однако ядра слоя 4 получают данные только от тех карт ядер слоя 3, которые находятся на одном GPU. Выбор схемы связи является задачей для кросс-валидации, но этот подход позволяет точно настроить объём передачи данных, чтобы он оставался приемлемой долей от объёма вычислений.
Полученная архитектура напоминает "колонную" сверточную нейронную сеть, использованную Cireşan и др. [5], но наши колонки не являются независимыми (см. рисунок 2). Эта схема позволяет снизить ошибки top-1 и top-5 на 1,7% и 1,2% соответственно по сравнению с сетью, которая имеет в два раза меньше ядер в каждом сверточном слое и обучена на одном GPU. Сеть с двумя GPU обучается немного быстрее, чем с одним GPU.
3.3. Локальная нормализация отклика
ReLU обладают полезным свойством, что им не требуется нормализация входных данных для предотвращения насыщения. Если хотя бы некоторые обучающие примеры приводят к положительному входу в ReLU, обучение происходит в этом нейроне. Однако мы обнаружили, что следующая схема локальной нормализации значительно помогает обобщению. Обозначим активность нейрона , вычисленную с использованием ядра
в позиции
и применённой нелинейности ReLU. Нормализованную активность
можно выразить следующим образом:
где сумма идёт по «соседним» картам ядер в той же пространственной позиции, а
— общее количество ядер в слое. Порядок расположения карт ядер, конечно, произвольный и определяется до начала обучения. Эта схема нормализации отклика реализует форму латеральной инхибиции, вдохновлённую типом, встречающимся в реальных нейронах, создавая конкуренцию за большие активности среди выходных значений нейронов, вычисленных с использованием различных ядер. Константы
,
,
и
являются гиперпараметрами, чьи значения определяются с использованием валидационного набора; мы использовали
,
,
, и
. Мы применяли эту нормализацию после применения нелинейности ReLU на некоторых слоях (см. раздел 3.5).
Эта схема имеет некоторое сходство с нормализацией локального контраста, предложенной Джарреттом и др. [11], однако её точнее назвать «нормализацией яркости», так как мы не вычитаем среднюю активность. Нормализация отклика снижает ошибки top-1 и top-5 на 1,4% и 1,2% соответственно. Мы также проверили эффективность этой схемы на наборе данных CIFAR-10: четырёхслойная сверточная сеть достигла ошибки на тестах 13% без нормализации и 11% с нормализацией.
3.4. Перекрывающееся объединение (Overlapping Pooling)
Слои объединения в сверточных нейронных сетях (CNN) суммируют выходы соседних групп нейронов в одной и той же карте ядер. Традиционно области, которые суммируются соседними единицами объединения, не перекрываются (например, [17, 11, 4]). Чтобы быть более точными, слой объединения можно рассматривать как сетку единиц объединения, расположенных через s пикселей друг от друга, каждая из которых суммирует область размером z × z, центрированную на месте расположения единицы объединения. Если мы установим s = z, то получим традиционное локальное объединение, как это обычно используется в сверточных сетях. Если же s < z, то мы получим перекрывающееся объединение. Такой подход используется в нашей сети, где s = 2 и z = 3. Эта схема снижает ошибки top-1 и top-5 на 0,4% и 0,3% соответственно по сравнению с версией без перекрытия, где s = 2 и z = 2, что даёт выход одинаковых размеров. Во время обучения мы также наблюдаем, что модели с перекрывающимся объединением несколько труднее переобучаются.
3.5. Общая архитектура
Теперь мы готовы описать общую архитектуру нашей сверточной нейронной сети (CNN). Как показано на Рисунке 2, сеть состоит из восьми слоёв с весами: первые пять — сверточные, а оставшиеся три — полносвязные. Выход последнего полносвязного слоя подаётся на softmax с 1000 выходами, который формирует распределение по 1000 меткам классов. Наша сеть максимизирует задачу многоклассовой логистической регрессии, что эквивалентно максимизации среднего значения логарифма вероятности правильной метки по всем обучающим примерам в рамках распределения предсказаний.
Ядра второго, четвёртого и пятого сверточных слоёв подключены только к тем картам ядер предыдущего слоя, которые находятся на одном и том же GPU (см. Рисунок 2). Ядра третьего сверточного слоя подключены ко всем картам ядер второго слоя. Нейроны в полносвязных слоях подключены ко всем нейронам в предыдущем слое. Слои нормализации отклика следуют после первого и второго сверточных слоёв. Слои максимального объединения, как описано в разделе 3.4, идут после каждого из слоёв нормализации отклика, а также после пятого сверточного слоя. Нелинейность ReLU применяется ко всем выходам сверточных и полносвязных слоёв.
Первый сверточный слой фильтрует входное изображение размером 224 × 224 × 3 с использованием 96 ядер размером 11 × 11 × 3 и шагом 4 пикселя (расстояние между центрами рецептивных полей соседних нейронов в карте ядер). Второй сверточный слой принимает на вход выход первого сверточного слоя (с нормализацией отклика и объединённый) и фильтрует его с использованием 256 ядер размером 5 × 5 × 48. Третий, четвёртый и пятый сверточные слои соединены друг с другом без промежуточных слоёв объединения или нормализации. Третий сверточный слой использует 384 ядра размером 3 × 3 × 256 и принимает на вход нормализованный и объединённый выход второго сверточного слоя. Четвёртый сверточный слой использует 384 ядра размером 3 × 3 × 192, а пятый — 256 ядер размером 3 × 3 × 192. Полносвязные слои содержат по 4096 нейронов каждый.

Рисунок 2 иллюстрирует архитектуру нашей сети, с явным разделением ответственности между двумя GPU. Один GPU управляет верхней частью слоёв, а другой — нижней. GPUs обмениваются данными только на определённых слоях. Вход в сеть имеет размерность 150,528, а количество нейронов в оставшихся слоях сети составляет: 253,440–186,624–64,896–64,896–43,264–4096–4096–1000.
4. Снижение переобучения
Архитектура нашей нейронной сети имеет 60 миллионов параметров. Несмотря на то, что 1000 классов в задаче ILSVRC накладывают ограничение в 10 бит на отображение изображения в метку, этого недостаточно для того, чтобы обучить такую модель без значительного переобучения. В этом разделе описаны два основных метода, которые мы применяем для борьбы с переобучением.
4.1. Аугментация данных
Самым простым и распространённым методом борьбы с переобучением на изображениях является искусственное расширение обучающего набора с помощью трансформаций, сохраняющих метки (например, [25, 4, 5]). Мы используем два различных метода аугментации данных, оба из которых позволяют генерировать трансформированные изображения из оригинальных с минимальными вычислительными затратами, благодаря чему эти изображения не нужно хранить на диске. В нашей реализации трансформированные изображения генерируются на процессоре (CPU) с использованием Python, в то время как графический процессор (GPU) обучается на предыдущей партии изображений. Таким образом, эти методы аугментации данных фактически не требуют дополнительных вычислительных ресурсов.
Первый метод аугментации состоит в генерации сдвигов изображения и его горизонтальных отражений. Мы делаем это, извлекая случайные фрагменты размером 224 × 224 (и их горизонтальные отражения) из изображений размером 256 × 256 и обучаем сеть на этих фрагментах. Это увеличивает размер обучающего набора в 2048 раз, но при этом полученные примеры, конечно, оказываются взаимозависимыми. Без этой схемы наша сеть страдала бы от сильного переобучения, что заставило бы нас использовать гораздо меньшие сети. Во время тестирования сеть делает предсказание, извлекая пять фрагментов размером 224 × 224 (четыре угловых фрагмента и один из центра), а также их горизонтальные отражения (всего десять фрагментов), и усредняя предсказания, полученные от слоя softmax сети на этих десяти фрагментах.
Второй метод аугментации заключается в изменении интенсивностей каналов RGB на обучающих изображениях. Мы применяем метод главных компонент (PCA) к набору значений пикселей RGB по всему обучающему набору ImageNet. Каждому обучающему изображению мы добавляем кратные найденным главным компонентам, величины которых пропорциональны собственным значениям, умноженным на случайную величину, взятую из нормального распределения с нулевым средним и стандартным отклонением 0.1. Таким образом, к каждому пикселю изображения RGB мы добавляем следующее:
где и
— это
-й собственный вектор и собственное значение матрицы ковариации для значений пикселей RGB размером 3 × 3, соответственно, а (\alpha_i) — случайная величина. Каждое значение
выбирается только один раз для всех пикселей конкретного обучающего изображения, и повторно выбирается только при следующем использовании изображения для обучения. Эта схема приближённо моделирует важное свойство реальных изображений, а именно то, что идентичность объекта остаётся неизменной при изменении интенсивности и цвета освещения. Эта схема позволяет снизить ошибку top-1 более чем на 1%.
4.2. Dropout
Объединение предсказаний разных моделей — это эффективный способ снижения ошибок на тестировании [1, 3], однако для больших нейронных сетей, обучение которых занимает несколько дней, такой подход слишком затратен. Однако существует более эффективная версия объединения моделей, которая увеличивает вычислительные затраты лишь в два раза во время обучения. Недавно была предложена техника, называемая "dropout" [10], суть которой заключается в том, чтобы обнулять выход каждого скрытого нейрона с вероятностью 0.5. Нейроны, которые «выключаются» таким образом, не участвуют в прямом проходе и не задействованы в процессе обратного распространения. Таким образом, каждый раз, когда подаётся вход, нейронная сеть выбирает другую архитектуру, но все эти архитектуры используют общие веса. Этот метод помогает снизить сложные коадаптации нейронов, так как нейрон не может полагаться на присутствие конкретных других нейронов. Следовательно, ему приходится обучать более устойчивые признаки, которые полезны в сочетании с различными случайными подмножествами других нейронов. На этапе тестирования мы используем все нейроны, но умножаем их выходы на 0.5, что является разумным приближением для взятия геометрического среднего предсказаний, полученных с помощью множества моделей, использующих dropout.
Мы используем dropout в первых двух полносвязных слоях, как показано на Рисунке 2. Без использования dropout наша сеть проявляет значительное переобучение. Использование dropout примерно удваивает количество итераций, требующихся для сходимости.
5. Детали обучения
Мы обучали наши модели с использованием стохастического градиентного спуска с размером мини-батча 128 примеров, моментумом 0,9 и распадом веса 0,0005. Мы обнаружили, что эта небольшая величина распада веса была важна для процесса обучения. Другими словами, распад веса здесь служит не только регуляризатором, но и помогает снизить ошибку на обучающей выборке. Правило обновления для веса ( w ) выглядит следующим образом:
где — индекс итерации,
— переменная моментума,
— скорость обучения, а
— среднее значение производной целевой функции по отношению к
, вычисленное на
-м батче
и оценённое при
.
Для инициализации весов мы использовали гауссово распределение с нулевым средним и стандартным отклонением 0,01. Смещения нейронов во втором, четвёртом и пятом сверточных слоях, а также в полносвязных скрытых слоях, инициализировались значением 1. Эта инициализация ускоряет начальную фазу обучения, предоставляя ReLU положительные входные данные. Смещения нейронов в остальных слоях инициализировались значением 0.
Для всех слоёв мы использовали одинаковую скорость обучения, которую корректировали вручную по мере обучения. Эвристика, которой мы следовали, заключалась в том, чтобы уменьшать скорость обучения в 10 раз, когда ошибка на валидационном наборе переставала улучшаться при текущей скорости. Начальная скорость обучения была установлена на уровне 0,01, и она снижалась трижды до завершения обучения. Мы обучали сеть примерно 90 циклов на обучающем наборе из 1,2 миллиона изображений, что заняло от пяти до шести дней на двух графических процессорах NVIDIA GTX 580 с 3 ГБ памяти.

Рисунок 3: 96 сверточных ядер размером 11×11×3, обученных первым сверточным слоем на входных изображениях размером 224×224×3. Верхние 48 ядер были обучены на GPU 1, а нижние 48 ядер — на GPU 2. Подробности см. в разделе 6.1.
6. Результаты
Наши результаты на ILSVRC-2010 представлены в Таблице 1. Наша сеть достигла ошибки топ-1 и топ-5 на тестовой выборке 37,5% и 17,0% соответственно. Лучший результат, достигнутый в конкурсе ILSVRC-2010, составил 47,1% и 28,2% с использованием подхода, который усредняет предсказания, полученные от шести моделей с разреженным кодированием, обученных на различных признаках [2]. С тех пор лучшие опубликованные результаты составляют 45,7% и 25,7% с использованием подхода, который усредняет предсказания двух классификаторов, обученных на Фишеровских векторах (FVs), вычисленных по двум типам плотно сэмплированных признаков [24].
Модель |
Top-1 |
Top-5 |
---|---|---|
Sparse coding [2] |
47.1% |
28.2% |
SIFT + FVs [24] |
45.7% |
25.7% |
CNN |
37.5% |
17.0% |
Таблица 1: Сравнение результатов на тестовой выборке ILSVRC-2010. В курсиве указаны лучшие результаты, достигнутые другими.
Мы также приняли участие в конкурсе ILSVRC-2012 и представляем наши результаты в Таблице 2. Поскольку метки тестовой выборки ILSVRC-2012 не опубликованы, мы не можем сообщить ошибку теста для всех моделей, которые мы пробовали. В дальнейшем мы используем ошибки на валидации и тесте как взаимозаменяемые термины, поскольку, по нашему опыту, они не отличаются более чем на 0,1% (см. Таблицу 2). Описанная в статье CNN достигает ошибки топ-5 на уровне 18,2%. Усреднение предсказаний пяти аналогичных CNN даёт ошибку 16,4%. Обучение одной CNN с дополнительным шестым сверточным слоем над последним слоем объединения для классификации всего набора данных ImageNet 2011 (15 млн изображений, 22 тыс. категорий), а затем "доработка" её на ILSVRC-2012 даёт ошибку 16,6%. Усреднение предсказаний двух CNN, предварительно обученных на полном наборе ImageNet 2011, с упомянутыми пятью CNN даёт ошибку 15,3%. Вторая по качеству заявка на конкурс достигла ошибки 26,2% с использованием подхода, который усредняет предсказания нескольких классификаторов, обученных на FVs, вычисленных по различным типам плотно сэмплированных признаков [7].
Модель |
Top-1 (val) |
Top-5 (val) |
Top-5 (test) |
---|---|---|---|
SIFT + FVs [7] |
— |
— |
26.2% |
1 CNN |
40.7% |
18.2% |
— |
5 CNNs |
38.1% |
16.4% |
16.4% |
1 CNN* |
39.0% |
16.6% |
— |
7 CNNs* |
36.7% |
15.4% |
15.3% |
Таблица 2: Сравнение ошибок на валидационной и тестовой выборках ILSVRC-2012. В курсиве указаны лучшие результаты, достигнутые другими. Модели с астериском * были "предварительно обучены" для классификации всего набора ImageNet 2011.
Наконец, мы также сообщаем об ошибках на версии ImageNet осени 2009 года с 10 184 категориями и 8,9 миллионами изображений. На этом наборе данных мы следуем общепринятой в литературе практике, разделяя изображения пополам на обучающую и тестовую выборки. Поскольку стандартный тестовый набор для этого датасета не установлен, наше разделение, естественно, отличается от использованных предыдущими авторами, но это не влияет существенно на результаты. Наши ошибки топ-1 и топ-5 на этом наборе составляют 67,4% и 40,9%, которые были получены сетью, описанной выше, но с добавлением дополнительного шестого сверточного слоя над последним слоем объединения. Лучшие опубликованные результаты для этого набора составляют 78,1% и 60,9% [19].
6.1. Качественная оценка
Рисунок 3 иллюстрирует сверточные ядра, обученные двумя слоями сети, связанными с данными. Сеть научилась различным ядрам, чувствительным к частоте и ориентации, а также различным цветовым пятнам. Особое внимание стоит уделить специализации, проявляемой двумя GPU, что является результатом ограниченной связности, описанной в разделе 3.5. Ядра на GPU 1 в основном нейтральны к цвету, в то время как ядра на GPU 2, как правило, ориентированы на цвета. Такая специализация проявляется при каждом запуске и не зависит от конкретной случайной инициализации весов (за исключением возможной переклассификации GPU).

Рисунок 4: (Слева) Восемь тестовых изображений ILSVRC-2010 и пять меток, которые модель считает наиболее вероятными. Под каждым изображением указана правильная метка, а вероятность, присвоенная правильной метке, также показана красной полосой (если она попадает в топ-5). (Справа) Пять тестовых изображений ILSVRC-2010 в первом столбце. Оставшиеся столбцы показывают шесть обучающих изображений, для которых в последнем скрытом слое вычисляются вектор признаков с наименьшим евклидовым расстоянием от вектора признаков тестового изображения.
В левой части Рисунка 4 мы качественно оцениваем, чему научилась сеть, вычисляя её топ-5 предсказаний для восьми тестовых изображений. Обратите внимание, что даже объекты, расположенные не по центру, такие как клещ в верхнем левом углу, могут быть распознаны сетью. Большинство из топ-5 предсказанных меток выглядят логичными. Например, для леопарда в качестве возможных меток рассматриваются только другие виды кошачьих. В некоторых случаях (например, для "решетки" или "вишни") возникает реальная неоднозначность относительно того, на каком объекте фокусируется фотография.
Другим способом проверки визуальных знаний сети является анализ активации признаков, вызванных изображением в последнем скрытом слое размерностью 4096. Если два изображения генерируют векторы активации с малым евклидовым расстоянием, это значит, что сеть считает их похожими на более высоком уровне. Рисунок 4 показывает пять изображений из тестового набора и шесть изображений из обучающего набора, которые наиболее похожи на каждое из них, согласно этому измерению. Обратите внимание, что на уровне пикселей извлечённые изображения из обучающего набора обычно не близки по L2-норме к изображениям запроса в первом столбце. Например, найденные изображения собак и слонов демонстрируют различные позы. Мы представляем результаты для большего числа тестовых изображений в дополнительном материале.
Вычисление сходства с использованием евклидова расстояния между двумя 4096-мерными векторами с действительными значениями является неэффективным, но этот процесс можно ускорить, обучив автоэнкодер для сжатия этих векторов в короткие бинарные коды. Это обеспечит гораздо более эффективный метод поиска изображений по сравнению с использованием автоэнкодеров для обработки сырых пикселей [14], что не использует метки изображений и имеет тенденцию извлекать изображения с похожими паттернами рёбер, вне зависимости от того, являются ли они семантически схожими.
7. Обсуждение
Наши результаты показывают, что большая и глубокая сверточная нейронная сеть способна достигать рекордных показателей на крайне сложном наборе данных, используя исключительно обучение с учителем. Примечательно, что производительность сети значительно ухудшается при удалении хотя бы одного сверточного слоя. Например, удаление любого из промежуточных слоёв приводит к потере около 2% точности для топ-1. Это подтверждает, что глубина сети играет решающую роль в достижении таких результатов.
В целях упрощения экспериментов мы не использовали методы несанкционированного предварительного обучения, хотя ожидаем, что они могут существенно улучшить результаты, особенно если мы получим достаточную вычислительную мощность для значительного увеличения размера сети при отсутствии пропорционального увеличения объёма размеченных данных. На данный момент наши результаты улучшались по мере увеличения размера сети и продолжительности обучения, но нам всё ещё предстоит пройти долгий путь, чтобы приблизиться к работе инферо-временного пути человеческой зрительной системы. В конечном итоге мы стремимся использовать очень большие и глубокие сверточные сети для обработки видеопоследовательностей, где временная структура может предоставить важную информацию, которая либо отсутствует, либо менее очевидна в статичных изображениях.
Ссылки
[1] R.M. Bell and Y. Koren. Lessons from the netflix prize challenge. ACM SIGKDD Explorations Newsletter, 9(2):75–79, 2007.
[2] A. Berg, J. Deng, and L. Fei-Fei. Large scale visual recognition challenge 2010. www.imagenet.org/challenges. 2010.
[3] L. Breiman. Random forests. Machine learning, 45(1):5–32, 2001.
[4] D. Cire¸san, U. Meier, and J. Schmidhuber. Multi-column deep neural networks for image classification. Arxiv preprint arXiv:1202.2745, 2012.
[5] D.C. Cire¸san, U. Meier, J. Masci, L.M. Gambardella, and J. Schmidhuber. High-performance neural networks for visual object classification. Arxiv preprint arXiv:1102.0183, 2011.
[6] J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li, and L. Fei-Fei. ImageNet: A Large-Scale Hierarchical Image Database. In CVPR09, 2009.
[7] J. Deng, A. Berg, S. Satheesh, H. Su, A. Khosla, and L. Fei-Fei. ILSVRC-2012, 2012. URL http://www.image-net.org/challenges/LSVRC/2012/.
[8] L. Fei-Fei, R. Fergus, and P. Perona. Learning generative visual models from few training examples: An incremental bayesian approach tested on 101 object categories. Computer Vision and Image Understanding, 106(1):59–70, 2007.
[9] G. Griffin, A. Holub, and P. Perona. Caltech-256 object category dataset. Technical Report 7694, California Institute of Technology, 2007. URL http://authors.library.caltech.edu/7694.
[10] G.E. Hinton, N. Srivastava, A. Krizhevsky, I. Sutskever, and R.R. Salakhutdinov. Improving neural networks by preventing co-adaptation of feature detectors. arXiv preprint arXiv:1207.0580, 2012.
[11] K. Jarrett, K. Kavukcuoglu, M. A. Ranzato, and Y. LeCun. What is the best multi-stage architecture for object recognition? In International Conference on Computer Vision, pages 2146–2153. IEEE, 2009.
[12] A. Krizhevsky. Learning multiple layers of features from tiny images. Master’s thesis, Department of Computer Science, University of Toronto, 2009.
[13] A. Krizhevsky. Convolutional deep belief networks on cifar-10. Unpublished manuscript, 2010.
[14] A. Krizhevsky and G.E. Hinton. Using very deep autoencoders for content-based image retrieval. In ESANN, 2011.
[15] Y. Le Cun, B. Boser, J.S. Denker, D. Henderson, R.E. Howard, W. Hubbard, L.D. Jackel, et al. Handwritten digit recognition with a back-propagation network. In Advances in neural information processing systems, 1990.
[16] Y. LeCun, F.J. Huang, and L. Bottou. Learning methods for generic object recognition with invariance to pose and lighting. In Computer Vision and Pattern Recognition, 2004. CVPR 2004. Proceedings of the 2004 IEEE Computer Society Conference on, volume 2, pages II–97. IEEE, 2004.
[17] Y. LeCun, K. Kavukcuoglu, and C. Farabet. Convolutional networks and applications in vision. In Circuits and Systems (ISCAS), Proceedings of 2010 IEEE International Symposium on, pages 253–256. IEEE, 2010.
[18] H. Lee, R. Grosse, R. Ranganath, and A.Y. Ng. Convolutional deep belief networks for scalable unsupervised learning of hierarchical representations. In Proceedings of the 26th Annual International Conference on Machine Learning, pages 609–616. ACM, 2009.
[19] T. Mensink, J. Verbeek, F. Perronnin, and G. Csurka. Metric Learning for Large Scale Image Classification: Generalizing to New Classes at Near-Zero Cost. In ECCV - European Conference on Computer Vision, Florence, Italy, October 2012.
[20] V. Nair and G. E. Hinton. Rectified linear units improve restricted boltzmann machines. In Proc. 27th International Conference on Machine Learning, 2010.
[21] N. Pinto, D.D. Cox, and J.J. DiCarlo. Why is real-world visual object recognition hard? PLoS computational biology, 4(1):e27, 2008.
[22] N. Pinto, D. Doukhan, J.J. DiCarlo, and D.D. Cox. A high-throughput screening approach to discovering good forms of biologically inspired visual representation. PLoS computational biology, 5(11):e1000579, 2009.
[23] B.C. Russell, A. Torralba, K.P. Murphy, and W.T. Freeman. Labelme: a database and web-based tool for image annotation. International journal of computer vision, 77(1):157–173, 2008.
[24] J. Sánchez and F. Perronnin. High-dimensional signature compression for large-scale image classification. In Computer Vision and Pattern Recognition (CVPR), 2011 IEEE Conference on, pages 1665–1672. IEEE, 2011.
[25] P.Y. Simard, D. Steinkraus, and J.C. Platt. Best practices for convolutional neural networks applied to visual document analysis. In Proceedings of the Seventh International Conference on Document Analysis and Recognition, volume 2, pages 958–962, 2003.
[26] S.C. Turaga, J.F. Murray, V. Jain, F. Roth, M. Helmstaedter, K. Briggman, W. Denk, and H.S. Seung. Convolutional networks can learn to generate affinity graphs for image segmentation. Neural Computation, 22(2):511–538, 2010.
da-nie
Вот про это хотелось бы статью. Потому как я свёртки считаю через умножение матриц. Оно, конечно, быстро, но, видимо, не максимально быстро.