Содержание статьи
Сверточные нейронные сети: основы и принцип работы
Для чего и где используются сверточные нейронные сети
Для распознавания изображений и видео используют особый тип нейросетей — сверточные. Например, они помогают анализировать результаты МРТ и рентгеновские снимки, чтобы поставить правильный диагноз. Вместе с Марией Жаровой, Data Scientist Альфа-Банка, разбираемся, как устроены сверточные нейросети и что нужно знать для начала работы с ними.
Сверточной называют вид нейронной сети, специализирующейся на обработке изображений и видео. Такие сети подходят для улавливания локального контекста, когда поток информации в пространстве не прерывается, т.е. ее носители находятся в непосредственной близости друг от друга.
В настоящее время сверточные нейронные сети применяются в системах видеонаблюдения, видеоаналитики и беспилотных автомобилях. Например, камеры в комплексе с такими сетями помогают роботам компании «Яндекс» и беспилотным такси понимать, что происходит на дороге.
Сверточной нейронной сетью изображения классифицируются представляются по-особому – как трехмерные массивы чисел или матриц. В математике они носят название «тензоры». RGB цвета кодируются как три целых числа в диапазоне от 0 до 255. Все пиксели в матричном массиве представлены в виде чисел, отражающих яркость в этом диапазоне.
Задача первых слоев сверточной нейронной сети – анализ мельчайших элементов изображения (ворсинки, трещинки и т.д.), размер которого может составлять 2 x 2 или 3 x 3 пикселя. Такой маленький формат не позволяет определить глаза или уши кошки или деревья, на которых она сидит. Однако можно найти различия в цвете и свете – грани между различными объектами. Для следующих слоев характерны сложные объекты, такие как круги и другие фигуры.
Сама идея возникла еще в 1950-х годах, но интерес к ним возродился в 2012 году после победы математиков из Университета Торонто Алека Крижевски и Джеффа Хинтона в конкурсе по распознаванию изображений ImageNet. Их нейронная сеть позволила снизить ошибки распознавания изображений с 26 % до 15 %, что явилось рекордным показателем. В настоящее время точность алгоритма сверточных нейронных сетей при распознавании лиц в толпе выше, чем у человека, и составляет 99,8 %.
По своей структуре сверточные нейронные сети – это воронка: все начинается с картины в целом, затем внимание переключается на отдельные детали. Мозг работает точно так же: человек на улице видит сначала кошку и лишь потом начинает рассматривать цвет ее шерсти и глаз. Это называется репрезентативным обучением (обучение представлениям).
Как работают сверточные нейронные сети? Аналогично полносвязной нейронной сети, сверточная в своем обучении использует алгоритм обратного распространения. Вначале происходит прямое распространение от первого слоя к последнему, затем вычисляется ошибка в выходном слое и осуществляется обратное распространение. При этом в каждом слое вычисляются градиенты обучаемых параметров, а в конце обратного распространения происходит обновление весов с помощью градиентного спуска.
В чем заключается роль сверточных нейронных сетей в развитии искусственного интеллекта?
В процессе свертки нейронная сеть удаляет ненужное и оставляет полезное, т.е. то, что нужно для анализа изображения. В качестве примера можно привести линии, края и плоские области. Свертка может быть создана для каждого признака. Нейронная сеть сама подбирает их, когда выполняет распознавание и классификацию в каждом слое свертки.
Идея создания сверточных нейронных сетей обсуждалась еще в середине XX века. Но к ней вернулись лишь в 2012 году. Тогда математики Алекс Крижевски и Джефф Хинтон представили на международном конкурсе нейросеть ImageNet. По сравнению с аналогичными моделями она совершала почти на 50% меньше ошибок при распознавании изображений: их количество снизилось с 26 до 15%. Сейчас точность стала еще выше. Например, при распознавании лиц в толпе показатель составляет 99,8%.
Следующим после слоя свертки идет слой пулинга. В нем из признаков, отобранных слоем свертки, выбираются наиболее важные и удаляются несущественные. Слой свертки может быть снова применен к результатам, полученным в процессе пулинга, и повторен несколько раз. Это необходимо для построения иерархии признаков, начиная с самых примитивных (фрагменты контуров) и заканчивая сложными (кошачьи глаза или форма ушей).
Они могут эффективно работать с изображениями и видеозаписями благодаря своей способности улавливать локальные пространственные зависимости в данных. Они также более эффективны, поскольку количество обучающих параметров может быть уменьшено за счет их разделения.
Для оптимизации работы сверточных нейронных сетей используются различные методы, например, стохастический градиентный спуск, адаптивный импульс, регуляризация и нормализация. Для улучшения процесса обучения и общей производительности сети также применяются методы предварительного обучения, передачи обучения и дополнения данных.
Сверточные нейронные сети играют важную роль в области искусственного интеллекта, в частности, в компьютерном зрении и обработке изображений. С их помощью можно решать такие сложные задачи, как распознавание лиц, автоматическое аннотирование изображений, автоматическое вождение автомобилей и беспилотников, анализ медицинских изображений и пр.
Зачастую сверточные нейронные сети используются для решения двух задач: распознавания и классификации изображений. Так, они могут быть использованы на изображении кошки для определения ее цвета по большим фрагментам изображения или для определения оттенка ее глаз по маленьким фрагментам, а также для различения собак и кошек.
Сверточные нейронные сети — разновидность нейросетей для обработки данных с сеточной структурой: изображений и видео. Сверточные нейросети анализируют пиксели, которые находятся близко друг к другу и содержат непрерывную визуальную информацию — яркость и оттенок. Например, если в одном пикселе нейросеть видит цветок, то и в стоящих рядом пикселях она тоже его распознает.