Капсульные сети встряхивают AI: вот как их использовать

Если вы изучаете ИИ, возможно, вы также слышали о появлении такого революционного явления, как капсульные сети. Начните их использовать уже сегодня!

Джеффри Хинтон

Джеффри Хинтон известен как отец «глубокого обучения». Еще в 50-х годах появилась идея о глубоких нейронных сетях, которые в теории могли решить множество проблем. Однако никто не понимал, как реализовать машинное обучение, и люди начали сдаваться. Хинтон не останавливался, и в 1986 году показал, что идея обратного распространения может обучать глубокие сети. Однако лишь 5 лет тому назад, в 2012 году, Хинтон смог продемонстрировать свой прорыв, поскольку в то время отсутствовали нужные вычислительные мощности. Этот шаг заложил основу для прогресса в области ИИ.

И теперь, в октябре 2017 года, он выпустил документ о новой новаторской концепции Capsule Networks. Документы с подробной информацией могут быть найдены здесь и здесь.

Традиционные нейронные сети и проблемы с ними

До сих пор сверточные нейронные сети (convolutional neural network, CNN) были самым современным подходом к классификации изображений.

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

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

CNN

Это грубое упрощение, но вы можете понять принцип CNN следующим образом:

if (2 eyes && 1 nose && 1 mouth) {
  It's a face!
}

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

Ким Кардашян

Ой! Определенно два глаза, нос и рот, но что-то пошло не так, правда? Ее глаз и рот расположены неправильно, и это очень странное строение лица: так видим и понимаем мы. Но даже хорошо обученный CNN испытывает трудности с этой концепцией:

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

В дополнение к обманутому элементами не в тех местах CNN упомянем и путаницу с другим расположением картинки. Один из способов борьбы с такой проблемой – подготовка всевозможных ракурсов, но это занимает много времени и кажется противоречивым. Мы видим существенное падение производительности, просто перевернув фото Ким вверх ногами:

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

Наконец, сверточные нейронные сети могут быть восприимчивы к атакам белых ящиков. Это, по сути, вложение секретного шаблона в объект.

https://www.youtube.com/watch?v=qPxlhGSG0tc

«Сверточные нейронные сети обречены» – Джеффри Хинтон

Капсульные сети как спасение!

капсульные сети

Внедрение Capsule Networks позволяет в полной мере использовать пространственные отношения, поэтому мы наблюдаем нечто более правильное:

if (2 adjacent eyes && nose under eyes && mouth under nose) {
  It's a face!
}

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

Новая архитектура также обеспечит улучшенную точность в следующем наборе данных. Этот набор был тщательно разработан, чтобы стать полноценной задачей распознавания формы. Речь идет о способности распознавать объекты, даже если они перевернуты или показаны под другим углом. Данный способ уложил на лопатки сверточные нейронные сети, уменьшив количество ошибок на 45%.

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

Тренировка CapsNet

Здесь собран репозиторий, который отлично отражает результат работы Хинтона. Чтобы использовать капсульную сеть, вам нужно ее обучить. Начните с клонирования репозитория:

git clone https://github.com/bourdakos1/capsule-networks.git

И установите требования:

pip install -r requirements.txt

Начинайте тренировку!

python main.py

Набор данных MNIST содержит в себе около 60 000 изображений. По умолчанию модель будет тренироваться в течение 50 эпох. Эпоха – один полный прогон (итерация) через набор тренировок. Так как batch size равен 128, будет производиться около 468 партий в эпоху.

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

Делаем выводы

Когда наша модель будет полностью подготовлена, мы сможем проверить ее, выполнив следующую команду:

python main.py --is_training False

Подведем итоги

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

А еще есть отличное видео, которое стоит того, чтобы потратить на него свое время:

https://www.youtube.com/watch?time_continue=3&v=TFIMqt0yT2I

Также рекомендуем Вам посмотреть:

Лучший видеокурс по нейронным сетям на русском
Пишем свою нейросеть: пошаговое руководство
ИИ шахматы на JavaScript в 5 этапов
27 шпаргалок по машинному обучению и Python в 2017

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Go-разработчик
по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ