Другое

Свёрточные нейросети: как они работают, где применяются и какие бывают

Свёрточные нейросети

Свёрточные нейросети (СНС) – мощный класс нейронных сетей, настроенный на анализ и обработку структурированных данных, чаще всего изображений и видео. Они эффективно выделяют иерархию признаков в данных, и поэтому их применяют в задачах компьютерного зрения, распознавания лиц и образов и многих других областях.

Почему сверточные нейросети так называются и в чём суть их работы


Свёрточная нейросеть – это своеобразный компьютерный мозг, который может «видеть» и «понимать» картинки. Небольшое окошко – фильтр – скользит по изображению и находит черты изображения: углы, края, текстуры, формы. Это и есть операция свёртки. Она происходит по аналогии с математической операцией свёртки для обработки сигналов и изображений. Благодаря ей нейросеть может видеть уникальные особенности объекта.

В фильтре есть набор параметров, которые умножаются на соответствующие пиксели изображения. Результат умножения суммируется – получается новое значение, которое становится одним пикселем в выходной «карте признаков». Потом фильтр смещается на один пиксель, и процесс повторяется.

То есть, свёрточная нейросеть использует операцию свёртки – отсюда и название. Так она анализирует данные и извлекает из них уникальные признаки. Поэтому она – эффективный помощник в задачах компьютерного зрения и обработки изображений: распознавании лиц, классификации объектов.

История


Свёрточные нейросети были разработаны в конце 1980-х-начале 1990-х годов. Основополагающие идеи были предложены Яном Лекуном: тогда он придумывал, как лучше распознавать рукописные символы для системы ZipNet в университете Торонто. В 1998 году Лекун и его соавтор Леон Боту провели работу « Градиентный базис для распознавания рукописных символов” В ней они презентовали алгоритм обучения глубоких свёрточных сетей. Но особого фурора они не произвели, потому что требуемые вычислительные ресурсы были непосильны по тем временам, и СНС не получили широкого распространения.

Но за следующие десятилетия мощность компьютеров выросла, стало возможно обрабатывать сразу большой объём данных. В 2012 году нейронная сеть AlexNet, разработанная Алексеем Кравцевым и Ильей Суточиным, победила на соревновании ImageNet Large Scale Visual Recognition Challenge: она уже превосходно умела распознавать и классифицировать изображения. Этот успех стал толчком для развития СНС. Они стали широко применяться в области компьютерного зрения, обработки изображений и анализа данных.

Где применяются


Сегодня свёрточные нейросети – эффективные ассистенты человека, которые решают рутинные задачи в самых разных областях:
Компьютерное зрение: распознают объекты на изображениях, например, лица, сегментируют изображения, анализируют медицинские снимков, автоматически описывают, что изображено на картинке.

Автомобили-беспилотники: обнаруживают объект на дороге и классифицируют, что именно за объект перед ними, анализируют окружающую среду и рельеф местности, принимают решение в реальном времени.

Медицина: ставят диагноз по медицинским снимкам, прогнозируют болезни, анализируют биомедицинские данные и составляют индивидуальные планы лечения.

Нейрокомпьютерные интерфейсы: совсем недавно это было хорошим сюжетом для научной фантастики, но уже сейчас СНС могут распознавать и декодировать мозговую активность. Так люди, не нажимая кнопок, напрямую взаимодействуют с компьютерами и устройствами посредством мозговых сигналов.

Обработка естественного языка: хоть изначально свёрточные сети работали с изображениями, тем не менее, они успешно анализируют интонацию текстов и генерируют описания к картинкам.

Игры: помогают создавать более реалистичных и интеллектуальных виртуальных персонажей, улучшают графику и анимацию в видеоиграх.

Финансовая аналитика: анализируют финансовые данные, прогнозируют цены на акции, распознают случаи мошенничества, оптимизируют торговые стратегии.

Промышленность и робототехника: управляют роботами на производстве, контролируют качество товаров, оптимизируют производственные процессы.

Разумеется, этот список, где применяются свёрточные нейросети, не исчерпывающий. Технологии активно развиваются, сети совершенствуются – и появляется всё больше задач, которые можно передать свёрточным нейросетям.

Классификация СНС


Свёрточные нейросети подразделяются на разные типы в зависимости от их архитектуры, структуры и специфики работы. На сегодняшний момент их можно классифицировать так:

1. Простые свёрточные нейросети (Convolutional Neural Networks, CNN). Это базовый тип. Он состоит из двух слоёв – свёртки и пулинга. Эти два процесса отвечают за извлечение признаков из изображений. Их широко используют в задачах компьютерного зрения.

2. Остаточные сверточные нейросети, или сети с повторяющимися блоками (Residual Networks, ResNets). У них много слоёв, и все признаки объекта они также подразделяют на низкоуровневые, среднеуровневые и высокоуровневые. На глубоких уровнях они анализируют признаки с пропусками для того, чтобы эффективность анализа не падала.

3. Сиамские нейронки (Siamese Networks). Они нужны, чтобы сравнить два разных объекта. Каждый из объектов пропускается через одну из двух копий свёртки, а затем два результата сопоставляются и определяется их сходство. Они применяются в задачах распознавания лиц, сравнении текстов и других областях.

4. Многоголовые нейросети (Multi-Head Networks). Это СНС с несколькими параллельными выходами, каждый из которых решает разные задачи. Таким образом можно эффективно решать несколько взаимосвязанных задач одновременно.

5. Глубокие свёрточные нейросети (Deep Convolutional Networks). Это СНС со сложной, глубокой структурой, в их архитектуре много слоёв. Они часто используются для обработки сложных данных, например, изображений высокого разрешения.

6. Сети с активацией внимания (Attention Networks). Такие нейронки фокусируют внимание на самых важных частях данных. Так они могут распознать и выявить значимые детали и лучше решать задачи.

7. Рекуррентные свёрточные нейросети (Convolutional Recurrent Networks). Это гибриды, в которых есть как рекуррентные, так и свёрточные слои для анализа сложных данных, например, видеоряда.

Нейросети настолько активно развиваются, что, пожалуй, никакая классификация не будет исчерпывающей. Каждый тип нейронок решает свои задачи, по-разному обучается и по-разному анализирует данные.

Некоторые примеры свёрточных нейросетей

 

  • AlexNet. Одна из первых глубоких свёрточных нейросетей, которая победила на соревновании ImageNet в 2012 году. Она состоит из 8 свёрточных слоев и 3 полносвязных слоев.
  • VGGNet. Эта нейросеть известна своей глубокой архитектурой с большим количеством слоев – до 19. Она простая в понимании и у неё структура с повторяющимися свёрточными слоями.
  • ResNet. Сети с этой архитектурой включают пропуски (residual connections), которые помогают бороться с проблемой затухания градиентов.
  • InceptionNet (GoogleNet). Эта архитектура использует параллельные свёрточные операции разных размеров ядра и объединяет их в одну сеть. Благодаря этому можно извлекать признаки на разных уровнях детализации.
  • MobileNet. Эта архитектура оптимизирована для малоресурсных устройств – смартфонов, например. При этом у неё хорошая производительность и эффективность.
  • U-Net. Эта нейронка используется для сегментации изображений и анализа медицинских данных. У неё особая структура, в которой есть и свёрточные, и декодерные блоки.
  • YOLO (You Only Look Once). Это архитектура для того, чтобы обнаруживать объекты в реальном времени. В ней используются одновременно и свёрточные, и полносвязные слои – это даёт высокую скорость и точность обнаружения объектов.



Перспективы и будущее свёрточных нейросетей


Перспективы свёрточных нейросетей очень яркие. Вычислительные мощности продолжают расти, с ними происходит и рост обработки big data – растёт и спектр задач свёрточных нейросетей. Они эволюционируют, становятся мощнее, и соответственно, они всё более и более универсальны в задачах анализа и обработки информации.

В будущем СНС будут задействованы в таких направлениях:


Более сложные задачи: если сейчас СНС успешно справляются с изображениями, то в будущем взят курс на обработку трёхмерных данных. Также учёные с надеждой смотрят на то, что СНС смогут анализировать временные ряды и понимать сложный контекст.

Перенос обучения: ожидается, что СНС смогут обучаться на одной задаче и успешно справляться с другими однотипными задачами.

Автономные системы: автомобили-беспилотники и другие автономные системы, способные адекватно оценивать окружающую среду и реагировать на неё, самостоятельно принимать решения – сегодня такие технологии идут семимильными шагами, и ожидается, что в будущем станут повсеместными.

Объединение с другими моделями: СНС комбинируют с другими типами, «играют» с их архитектурой, испытывают новые алгоритмы машинного обучения – так появляются всё более универсальные и адаптивные системы.

Интерпретируемость: разработчики нацеливают свои эксперименты на то, чтобы решения СНС становились всё более понятными и объяснимыми. Особенно это важно в медицине и других чувствительных областях человеческой деятельности.

Совместимость с малоресурсными устройствами: СНС оптимизируются – так их можно будет использовать даже на самых маломощных устройствах с ограниченными вычислительными ресурсами, например, на мобильниках и микроконтроллерах.

Синтез данных: СНС активно внедряются в игровую индустрию, в дизайн и анимацию. Для этого их учат создавать реалистичные данные и модицифировать их.

Свёрточным нейросетям отводится важная роль в развитии технологий будущего. Они вписываются во многие сферы человеческой деятельности от распознавания лиц и беспилотного управления машиной до постановки медицинских диагнозов. Это перспективное направление, в разработку которого на сегодняшний день хлынул большой поток молодых экспертов.

Схожие статьи

Другое

CI и CI+: в чём разница между этими технологиями защиты контента?

Рюкзак для программиста в подарок: какую модель лучше выбрать?
Другое

Рюкзак для программиста в подарок: какую модель лучше выбрать?

Нижнее подчеркивание: что это и как правильно называется
Другое

Нижнее подчеркивание: что это и как правильно называется

Для чего нужен Java и в чем он принципиально хорош
Другое

Для чего нужен Java и в чем он принципиально хорош

×