В лекции рассмотрим основные понятия, связанные со свёрточными нейронными сетями, а также укажем области применения таких сетей.
Прежде, чем рассмотреть особенности свёрточных нейронных сетей, вспомним о важных моментах истории нейронных сетей (соответствующая лекция опубликована https://zen.yandex.ru/media/id/603a418d1684900aa2499416/624073681fea2971e92dc6fa).
Итак, в 1958 г. Фрэнком Розенблаттом предложена нейронная сеть под названием «перцептрон» (от англ. perceptron от лат. perceptio - восприятие). Архитектура сети показана на рис. ниже.
Персептрон представляет собой одну из первых моделей нейронных сетей, изначально такая нейронная сеть была предложена как средство решения задач классификации.
Позже (примерно в 1960 г. ) Ф. Розенблатт изобрёл вычислительную систему под названием «Марк-1»
(Индикаторы и переключатели вычислительной системы «Марк I» показаны на рис. ниже).
Эта вычислительная система стала первой реализацией персептрона.
Она представляла собой электронное устройство, можно сказать первый нейрокомпьютер, предназначался для распознавания рукописных изображений некоторых букв и цифр.
Алгоритм персептрона использует интерпретацию линейного классификатора и функцию потерь, но на выходе выдаёт либо 0, либо 1, без промежуточных значений.
Подробно свои теории и предположения относительно процессов восприятия и перцептронов Розенблатт описал в 1962 году в книге «Принципы нейродинамики: Перцептроны и теория механизмов мозга» (у нас она вышла в Издательстве «Мир» в1965 году).
В 1960 году Бернард Уидроу и Тед Хофф разработали однослойную нейронную сеть ADALINE(слева) и её улучшенную версию - так называемую трёхслойную MADALINE.
Адаптивный линейный нейрон (элемент) – ADALINE – имеет такую же структуру, как и обычный линейный нейрон, но замкнутый обратной связью по функции ошибки, которая выполняет адаптацию весовых коэффициентов нейронной сети.
Это были первые глубокие (для того времени) архитектуры, но в них ещё НЕ использовался метод обратного распространения ошибки или backpropagation.
Обучение производится по правилу Уидроу-Хоффа, выведенное как усовершенствование правила обучения персептрона и ставшее основой для более сложных алгоритмов обучения.
Часто сети такой структуры применяются для фильтрации сигналов.
Напомним, что алгоритм backpropagation появился только в 1986 году в работе Дэвида Румельхарта, которая называлась «Многослойный персептрон». В Алгоритме backpropagation дополнительно используются правило дифференцирования и выходные значения в диапазоне от 0 до 1.
Затем в развитии нейронных сетей начался период некоторого застоя, связанный в том числе с тем, что компьютеры того времени были не пригодны для создания масштабных моделей. В комментариях под лекцией можете указать ещё причины такого "застоя" в развитии искусственных нейронных сетей.
С 1998 г. по 2010 г. нейронные сети (в том числе и свёрточные) пребывали в некотором состоянии "инкубации".
Заметим, что в 2006 году Джеффри Хинтон и Руслан Салахутдинов опубликовали статью, в которой показали, как можно эффективно обучать глубокие нейронные сети. Но даже тогда эти сети не имели современный вид.
Первых по-настоящему впечатляющих результатов исследователи искусственного интеллекта достигли в 2012 году, когда почти одновременно появились успешные решения задач распознавания речи и классификации изображений.
Тогда же была представлена первая свёрточная нейронная сеть AlexNet, которая достигла высокой на тот момент точности классификации датасета ImageNet (об этом датасете расскажем подробнее позже).
Архитектура AlexNet была предложена группой ученых (А. Крижевским, И. Сатскевером и Дж. Хинтоном) из Университета Торонто. Это была новаторская работа, в которой авторы впервые использовали (на тот момент) глубокие сверточные нейросети с общей глубиной в восемь слоев (пять сверточных и три полносвязных слоя).
Сеть AlexNet с большим отрывом выиграла конкурс по распознаванию изображений ImageNet LSVRC-2012 в 2012 году (с количеством ошибок 15,3% против 26,2% у второго места).
Успех AlexNet запустил небольшую революцию, свёрточные нейросети превратились в рабочую лошадку глубокого обучения - этот термин отныне означал «большие нейронные сети, способные решать полезные задачи».
С тех пор подобные архитектуры довольно широко применяются в различных практических областях.
Датасет ImageNet является результатом реализации проекта по созданию и сопровождению массивной базы данных аннотированных изображений.
Конечно, сформированная база изображений предназначена для отработки и тестирования методов распознавания и обработки изображений.
В датасет ImageNet было записано около пятнадцати миллионов URL с изображениями, которые прошли ручную аннотацию для ImageNet (на март 2021 года в датасет ImageNet включены 14 197 122 изображения, разбитых на 21 841 категорию.). В аннотациях перечисляются объекты, попавшие на изображение, и прямоугольники с их координатами.
База данных с аннотацией и URL изображений от третьих лиц доступна непосредственно через ImageNet, но при этом сами изображения не принадлежат проекту.
С 2010 года ведётся проект ILSVRC (англ. ImageNet Large Scale Visual Recognition Challenge - Кампания по широкомасштабному распознаванию образов в ImageNet), в рамках которого различные программные продукты ежегодно соревнуются в классификации и распознавании объектов и сцен в базе данных ImageNet. Следует отметить, что Проект ImageNet использует краудсорсинг для аннотирования изображений.
Нейронная сеть, победившая в конкурсе ImageNet Challenge в 2015 году, называется "Свёрточная сеть ResNet", она содержала 152 слоя (авторы - группа исследователей Кайминг Хи и другие из Microsoft Research Asia - смогли обучить сеть, содержавшую 1001 слой, однако она выдала примерно такой же результат, поэтому они прекратили работу с ней).
Кроме того, использование свёрточной нейронной сети ResNet позволило сократить число ошибок для пяти ведущих категорий почти в два раза - до значения в 3,6 процента.
Согласно исследованию "Чему я научился, соревнуясь со сверточной нейросетью на конкурсе ImageNet", проведенному А. Карпати, производительность человека для этой задачи составляет примерно 5 процентов (см. рис. выше).
Это означает, что архитектура свёрточной нейронной сети ResNet способна превзойти человеческие результаты, по крайней мере в поставленной задаче классификации изображений.
Как устроено изображение в памяти компьютера?
Начнем с черно-белого изображения. Любое изображение состоит из пикселей. В случае черно-белого изображения каждый пиксель представляет собой одно целое число от 0 до 255, характеризующее, насколько этот пиксель белый. При этом, например, число ноль означает черный пиксель, а число 255 означает пиксель белого цвета.
В свою очередь, цветные изображения представляются в памяти компьютера в виде тензоров размера три, так как у изображения имеются высота, ширина и глубина изображения.
В таком случае глубина изображения равна трем, так как цветов всего три: красный - Red, зелёный - Green и синий - Blue.
Это традиционное представление изображений.
Методик сжатия в RGB и перехода из одних цветных пространств в другие довольно много, но здесь сразу договоримся, что будем говорить об изображении как о тензоре из целых чисел от нуля до 255, у которой три канала. Первый канал соответствует красному цвету, второй соответствует зелёному, а третий - соответственно синему цвету.
Свёрточные нейронные сети хорошо справляются с огромными наборами данных и эффективно обучаются на графических процессорах за счёт параллельных вычислений.
Эти преимущества стали ключом к тому, что в настоящее время искусственный интеллект используется практически везде.
Искусственный интеллект и нейронные сети в частности решают задачи классификации и поиска изображений, обнаружения объектов, сегментации, а также применяются в более специализированных областях науки и техники.
Начиная с 2015 г. на всех общедоступных базах был совершен значительный рывок в распознавании, и можно утверждать, что лучшие российские системы распознавания лиц являются и лучшими в мире – три российские компании входят в топ-5 по базе NIST (от англ. The National Institute of Standards and Technology - Национальный институт стандартов и технологий США).
Если раньше можно было распознать лицо только во фронтальном ракурсе, то сейчас это возможно сделать практически во всех ракурсах (см. примеры ниже).
Иногда нейронная сеть чувствительна к некоторым параметрам, например, к изменениям направления освещения или общему понижению освещенности.
В качестве обучающего сета (датасета) «неизвестных» используется база данных Labeled Faces in the Wild, в которой содержится огромное число изображений лиц из сети Интернет.
Эти изображения используются для:
1. Выделения лица из изображения,
2. Выделения контрольных (антропометрических) точек на изображении лица, такие как уголки глаз, и т.д.
3. Построении2D сеточных моделей лица по изображению (т.н. триангулирование сетки)
4. Идентификации лиц,
5. Определение атрибутов лица, т.е. «типичных» характеристик объекта, которые используются для его описания (Для человека - пол, возраст, раса, борода, усы, улыбка, очки и т.д.)
Есть и множество других датасетов, насчитывающих уж несколько миллионов изображений.
Среди других применений свёрточных нейронных сетей можно выделить - анализ медицинских изображений (интересное видео по использованию методов машинного обучения можно посмотреть по ссылкам https://www.youtube.com/watch?v=W1slv6J9RjE&list=PLeWxUss3rXPK_CNexUkVjb4KY2H50Xrph&index=18 и https://www.youtube.com/watch?v=uopoghE-jvg&list=PLeWxUss3rXPK_CNexUkVjb4KY2H50Xrph&index=18&t=677s), сегментации географических карт, составление текстового описания по фото (так называемый Image captioning) и перенос стиля художников на фотографии.
Существуют успешные реализации, позволяющие распознавать объекты на фотографиях, описывающих картинки текстом или, например, дорисовывающих какие-то недостающие элементы.
Свёрточные нейронные сети используются для восстановления повреждённых изображений, раскрашивания черно-белых изображений и видео и т.д.
Дополнительным преимуществом свёрточной нейронной сети стала возможность смешивать сразу несколько стилей в одном изображении. Это достигается как раз благодаря тому, что разные стили в новой модели - это лишь линейный сдвиг параметров вдоль какой-то оси. Таким образом, даже при обработке видео можно в реальном времени изменять пропорции разных стилей. По мнению авторов, такой подход демонстрирует, что в мире живописи есть свой «словарь», благодаря которому можно успешно обучать нейронные сети для работы с широкой выборкой различных стилей и изображений (см. примеры ниже).
Нейронные сети активно развиваются и уже используются в автономных автомобилях, в задачах распознавания объектов на дороге, классификации видео, определения позы или жестов человека.
Примеры использования нейронных сетей при управлении движением автомобиля.
Свёрточные нейронные сети активно применяются в медицине: можно обучить нейронную сеть классификации болезней или симптомов, например, для МРТ-диагностики.
Японские исследователи в статье (Shen et al., 2017) получили фМРТ мозга человека, который смотрит на некоторое изображение, и выделили из него признаки. Функциональная магнитно-резонансная томография (фМРТ) - это тип медицинских снимков, в которых активность мозга анализируется на основе изменений в токе крови: когда нейроны в некоторой области мозга активны, приток крови увеличивается, и это можно измерить. фМРТ называется функциональным, потому что отмечает изменения в притоке крови во времени, и в итоге получается как бы «видеосъемка» активности мозга.
На рис. ниже показаны примеры получающихся изображений.
Архитектура свёрточной нейронной сети
Свёрточная нейронная сеть (СНС) состоит из разных видов слоев:
- сверточные (convolutional) слои,
- субдискретизирующие(subsampling, подвыборка) слои
- слои «обычной» нейронной сети – персептрона.
Все три вида слоев могут чередоваться в произвольном порядке.
Первые два типа слоев (convolutional, subsampling), чередуясь между собой, формируют входной вектор признаков для многослойного персептрона.
Свое название сверточная нейронная сеть получила по названию операции – свертка, суть которой будет описана дальше.
Сверточные сети являются удачной серединой между биологически правдоподобными сетями и обычным многослойным персептроном.
На сегодняшний день лучшие результаты в распознавании изображений получают именно с их помощью. В среднем точность распознавания свёрточными нейронными сетями превосходит обычные нейронные сети на 10-15%.
Рассмотрим слои более подробно.
В сверточном слое нейрон соединен лишь с ограниченным количеством нейронов предыдущего уровня, т. е. сверточный слой аналогичен применению операции свертки, где используется лишь матрица весов небольшого размера (ядро свертки), которую «двигают» по всему обрабатываемому слою.
На рис. выше показан пример сверточного слоя с ядром свертки размера 3 на 3 .
Основной причиной успеха свёрточных нейронных сетей явилась концепция общих весов. Несмотря на большой размер, свёрточные нейронные сети имеют небольшое число настраиваемых параметров по сравнению с их предком – неокогнитроном.
Имеются варианты свёрточных нейронных сетей (Tiled Convolutional Neural Network), похожие на неокогнитрон, в таких сетях происходит частичный отказ от связанных весов, но алгоритм обучения остается тем же и основывается на обратном распространении ошибки.
Свёрточные нейронные сети могут быстро работать на последовательной машине и быстро обучаться за счет чистого распараллеливания процесса свертки по каждой карте, а также обратной свертки при распространении ошибки по сети.
Слои этого типа выполняют уменьшение размерности (обычно в несколько раз). Это можно делать разными способами, но зачастую используется метод выбора максимального элемента (max-pooling), когда вся карта признаков разделяется на ячейки, из которых выбираются максимальные по значению.
На рис. выше показан пример субдискретизирующего слоя с методом выбора именно максимального элемента.
Часто используется ещё average-расчёт, когда рассчитывается среднее из чисел в выбранном фрагменте.
Наконец, полносвязный слой.
Слой в котором каждый нейрон соединен со всеми нейронами на предыдущем уровне, причем каждая связь имеет свой весовой коэффициент, называется полносвязным (см. рис. выше, на рисунке показан пример полносвязного слоя, где wij − весовые коэффициенты, а f(·) − функция активации).
Отметим достоинства и недостатки свёрточных нейронных сетей.
Следует отметить, что обучение осуществляется при помощи классического метода обратного распространения ошибки, при этом могут быть задействованы и другие методы обучения сети (в том числе и методы «без учителя», например, patch-based training, когда следующий слой свёртки обучается на фрагментах уже обученного первого слоя).
Также могут быть задействованы другие технологии глубокого обучения: свёрточный авто-ассоциатор, свёрточная версия каскадных машин Больцмана, обучающихся за счёт математического аппарата, свёрточная версия разреженного кодирования (sparce coding), также известная как развёртывающая сеть (deconvolutional networks, DNN).
Следует отметить, что в свёрточных нейронных сетях имеется много варьируемых параметров, при этом непонятно, какие нужны настройки этих параметров. К числу таких варьируемых параметров относятся:
число слоёв, размерность ядра свёртки для каждого из слоёв, число ядер для каждого из слоёв, шаг сдвига ядра при обработке слоя, необходимость слоёв субдискретизации, степень уменьшения ими размерности, функция по уменьшению размерности (выбор максимума, среднего и т. п.), передаточная функция нейронов, наличие и параметры выходной полносвязной нейронной сети на выходе свёрточной сети.
Также можно заметить, что свёрточные нейронные сети имеют продолжительное время обучения (несколько дней и более) для нейронной сети с числом слоёв свёртки свыше двух. Так, например, классификатор рукописных символов обучался более 64 часов.
Ещё лекции и видеоматериалы по нейронным сетям:
1. видеолекция "История возникновения и применение свёрточных архитектур" - https://dzen.ru/video/watch/624accea1ff8b2008192dded.
2. видеолекция "Архитектуры свёрточных нейронных сетей" - https://dzen.ru/video/watch/624acf9bb4b9cd5b8912ddcf.
3. лекция "Deep Learning: введение" - https://dzen.ru/a/Yke6OzfiAxsUiiwx?share_to=link.
4. видеолекция "Deep Learning: введение и применение" - https://dzen.ru/video/watch/6249a920dc27640f5f8cb383.