Никс солюшен харьков

Демистифицируем свёрточные нейросети

Перевод Demystifying Convolutional Neural Networks.

Свёрточные нейросети.
В прошлом десятилетии мы наблюдали удивительный и беспрецедентный прогресс в сфере компьютерного зрения. Сегодня компьютеры умеют распознавать объекты на изображениях и кадрах видео с точностью до 98 %, уже опережая человека с его 97 %. Именно функции человеческого мозга вдохновляли разработчиков при создании и совершенствовании методик распознавания.
Когда-то неврологи проводили эксперименты на кошках и выяснили, что одни и те же части изображения активируют одни и те же части кошачьего мозга. То есть когда кошка смотрит на круг, в её мозге активируется зона «альфа», а когда смотрит на квадрат, активируется зона «бета». Исследователи пришли к выводу, что в мозге животных есть области нейронов, реагирующие на конкретные характеристики изображения. Иными словами, животные воспринимают окружающую среду через многослойную нейронную архитектуру мозга. И каждая сцена, каждый образ проходит через своеобразный блок выделения признаков, и только потом передаётся в более глубокие структуры мозга.
Вдохновлённые этим, математики разработали систему, в которой эмулируются группы нейронов, срабатывающие на разные свойства изображения и взаимодействующие друг с другом для формирования общей картины.

Почему свёртка?

Свёртка — это процесс, в ходе которого сеть пытается разметить входной сигнал, сравнивая с узнанной ранее информацией. Если входной сигнал выглядит как предыдущие изображения кошек, уже известные сети, то референсный сигнал «кошка» будет свёрнут — смешан — со входным сигналом. Получившийся в результате сигнал передаётся на следующий слой. В данном случае под входным сигналом подразумевается трёхмерное представление картинки в виде интенсивностей RGB-пикселей, а референсный сигнал «кошка» выучен ядром для распознавания кошек.

Операция свёртки изображения и фильтр. Источник.
У операции свёртки есть прекрасное свойство — инвариантность относительно переноса (translation invariant). Это означает, что каждый свёрточный фильтр отражает определённый набор свойств, например, глаза, уши и т. д., и алгоритм свёрточной нейросети учится определять, какой набор свойств соответствует референсу, скажем, кошки. Интенсивность выходного сигнала зависит не от местоположения свойств, а от их наличия. Следовательно, кошка может быть изображена в разных позах, но алгоритм всё равно сможет её распознать.

Пулинг (Pooling)

Проследив принцип работы биологического мозга, учёные смогли разработать математический аппарат для извлечения свойств. Но оценив общее количество слоёв и свойств, которые нужно проанализировать для отслеживания сложных геометрических форм, учёные поняли, что для хранения всех данных компьютерам не хватит памяти. Более того, количество необходимых вычислительных ресурсов растёт экспоненциально вместе с ростом количества свойств. Для решения этой проблемы была разработана методика пулинга (pooling). Её идея очень проста: если некая область содержит ярко выраженные свойства, то мы можем отказаться от поиска других свойств в этой области.

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

Полностью связанный слой

Ладно, а для чего может пригодиться нейросеть, если она умеет только определять наборы свойств изображения? Нам нужно как-то научить её классифицировать изображения по категориям. И в этом нам поможет традиционный подход к формированию нейросетей. В частности, карты свойств, полученные на предыдущих слоях, можно собрать в слой, полностью связанный со всеми метками, которые мы приготовили для категоризирования. Этот последний слой будет присваивать вероятности соответствия каждому классу. И опираясь на эти финальные вероятности, мы сможем отнести изображение к какой-то категории.

Полностью связанный слой. Источник.

Финальная архитектура

Теперь осталось только объединить все изученные сетью концепции в единый фреймворк — свёрточную нейросеть (Convolution Neural Network, CNN). CNN состоит из серии свёрточных слоёв, которые могут быть объединены со слоями пулинга, чтобы сгенерировать карту свойств, передаваемую в полностью связанные слои для определения вероятностей соответствия каким-либо классам. Возвращая назад получаемые ошибки, мы сможем обучать эту нейросеть вплоть до получения точных результатов.
Теперь, когда мы поняли функциональные перспективы CNN, давайте внимательнее рассмотрим аспекты использования CNN.

Компания NIX Solutions Ltd.

NIX Solutions ltd. — это успешная софтверная компания с более чем 20-летним опытом работы в динамичной и увлекательной IT-отрасли. Наши сотрудники создают инновационные проекты и работают с передовыми IT-технологиями под руководством опытных экспертов — настоящих гуру программирования.

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

Как мы живем:

  • Работаем над интересными проектами;

  • Получаем прогрессивную зарплату, личные и командные бонусы;

  • Постоянно повышаем свою квалификацию при полном содействии компании;

  • Отдыхаем только в оплачиваемых отпусках;

  • Поддерживаем здоровье с помощью корпоративного доктора;

  • Занимаемся спортом, побеждаем в футбольных и баскетбольных IT-чемпионатах;

  • Учим и совершенствуем свой английский на корпоративных занятиях с отличными харизматичными преподавателями;

  • Пользуемся прекрасными возможностями для старта карьеры: программа адаптации молодых специалистов, «курсы молодого бойца», индивидуальные программы обучения, возможность прохождения университетской практики, гибкий график и допольнительный учебный отпуск для студентов;

  • Вместе отмечаем все праздники и трижды в год отдыхаем всей компанией на самых веселых (уже легендарных) корпоративах.