Несмотря на то, что модели Inception были разработаны в 2014 году, они по-прежнему являются одними из самых успешных нейронных сетей для классификации и обнаружения изображений. Их оригинальная статья Углубление сверток — классика среди исследовательских работ по машинному обучению. Однако чтение академической статьи может быть проблемой. В этой части мы попытаемся объяснить статью в более простых терминах.
В первой части мы познакомим вас с некоторыми основными понятиями, необходимыми для понимания статьи. Это разреженные матрицы и свертки 1x1.
Во второй части мы объясним первоначальную идею, которая привела к концепции Inception, как ее называют авторы. Эта часть может показаться вам слишком теоретической, но следующие две части должны помочь вам лучше понять ее.
В третьей части мы дадим больше технических подробностей об архитектуре Inception. Надеюсь, эта часть поможет вам лучше понять и оценить первоначальную идею.
В четвертой и последней части у нас будет краткий обзор GoogLeNet, начальной модели и ее производительности в ILSVRC14. Мы надеемся, что это будет полезно для демонстрации возможностей архитектуры Inception.
Часть 1: Базовые знания
В этой части мы дадим краткий обзор некоторых понятий, которые нам понадобятся для понимания документа. Не стесняйтесь пропускать части, с которыми вы уже знакомы.
Разреженные матрицы. Этот термин относится к любой матрице, состоящей в основном из нулей. (Напротив, плотные матрицы в основном состоят из ненулевых значений). Матрица — это, конечно, матрица, но работая с разреженными матрицами как со специальной структурой данных, мы можем сэкономить вычислительные ресурсы. В общеизвестно ресурсоемком мире машинного обучения его важность невозможно переоценить. Разреженные матрицы можно сохранять как словари ключей, списки списков или более специализированные структуры, такие как сжатые разреженные строки. [2]
Свертка 1 x 1. Этот слой добавляется в нейронную сеть, чтобы поддерживать вычислительные затраты на приемлемом уровне. Обычно для достижения этого матрица понижается (с помощью max-pooling), однако мы не можем выполнять субдискретизацию слишком много раз, иначе накапливаются потери информации, которые мы хотим избегать. Свертка 1x1 решает эту проблему путем объединения не внутри одного канала, а по всем каналам (рис. 1). [3]
Часть 2: В чем идея?
Самый простой способ повысить производительность нейронной сети — увеличить количество слоев и узлов. Однако это сопряжено с двумя существенными недостатками:
(1) Увеличение количества параметров также увеличивает вероятность переобучения.
(2) Увеличение размера сети таким образом также увеличивает вычислительные затраты.
Известно, что обе эти проблемы можно решить, перейдя от плотно связанных архитектур к разреженным. Но у этого есть и обратная сторона: существующее оборудование не оптимизировано для численных расчетов неоднородных разреженных матриц. Они лучше подходят для плотных матриц. Это была попытка решения этих проблем, которая в конечном итоге породила архитектуру Inception.
Идея заключалась в следующем: Разработать архитектуру, которая автоматически аппроксимирует разреженную структуру сетей машинного зрения и покрывает ее легкодоступными плотными компонентами.
Хотя это была чисто умозрительная идея, ее успех в первоначальных экспериментах убедил команду продолжить ее. Мы объясним получившуюся архитектуру в следующей части.
Часть 3: Как это работает?
Для достижения цели, изложенной в предыдущей части, были задуманы начальные модули. В своей исходной форме начальный модуль состоит из нескольких параллельных сверток с различными размерами фильтров. Однако эта структура может слишком быстро стать дорогостоящей в вычислительном отношении (рис. 2. а). Чтобы преодолеть эту проблему, сверточные слои 1x1 добавляются до сверточных слоев с фильтрами большего размера (3x3, 5x5 и т. д.). Эти слои 1x1 уменьшают количество каналов и снижают стоимость (рис. 2.b).
Посмотрите на рисунок 3: предыдущий тензор имеет форму 28x28x192. То есть двумерная форма изображения имеет размер 28x28 и имеет 192 канала. Если бы мы выполнили max-pooling, размер изображения уменьшился бы, а количество каналов осталось бы прежним. Однако мы выполняем свертку 1x1, которая сохраняет стабильный размер изображения при уменьшении количества каналов. После этого мы выполняем несколько параллельных сверток и соединяем полученные меньшие тензоры рядом друг с другом. Именно здесь реализуется идея «аппроксимации разреженной структуры зрительных сетей и покрытия ее легкодоступными плотными компонентами».
То, что мы видим на рисунках 3 и 4, называется начальными модулями (не путать с начальными моделями). Начальные модели в основном состоят из этих начальных модулей, наложенных друг на друга. Поскольку этим структурам удается поддерживать относительную стабильность вычислительных затрат, можно значительно увеличить глубину и ширину модели.
Часть 4: Начало на практике
В документе также представлена начальная модель под названием GoogLeNet, которая использовалась в соревновании ILSVRC14. Он занял первое место как в категориях классификации, так и в категориях обнаружения.
Эта модель была разработана, чтобы быть вычислительно эффективной и практичной. Теоретически могут быть созданы более эффективные модели, но они не будут иметь практической ценности. Вы можете увидеть точную архитектуру модели GoogLeNet на рисунке 4.
Модель слишком глубокая, что может вызвать проблемы с градиентным спуском. Дополнительные слои активации softmax (желтые) были добавлены в середине сети, чтобы преодолеть это.
Заключительные замечания
Основным преимуществом архитектуры Inception является значительное улучшение производительности в обмен на минимальное увеличение вычислительных затрат. Производительность моделей Inception может сравниться с более дорогими моделями. Чего действительно удалось добиться в этой статье, так это показать, что переход на более разреженные архитектуры полезен и осуществим. Действительно, с 2015 года разрабатываются более эффективные начальные модели. [4]
В этой короткой статье мы попытались объяснить знаменитую вводную статью более простыми словами. Хотя мы надеемся, что это будет полезно для читателя, мы также призываем их попробовать прочитать саму статью. Чтение академических статей — отличный способ как изучить теоретическое машинное обучение, так и быть в курсе последних событий в этой области.
Рекомендации
[1] https://arxiv.org/abs/1409.4842
[2] https://machinelearningmastery.com/sparse-matrices-for-machine-learning/
[3] https://towardsdatascience.com/1x1-convolution-5219bbc09027
[4] https://towardsdatascience.com/a-simple-guide-to-the-versions-of-the-inception-network-7fc52b863202