В предыдущих разделах, говоря об эволюции ИИ, мы рассмотрели ряд научных направлений, включая коннекционистский и символьный, отметили, что в каждом из них есть свои подходы и алгоритмы.
Очевидно, что наблюдать процесс развития технологий ИИ можно в разных аспектах, и рассмотрение эволюции с точки зрения решения ключевых научно-практических задач является одним из важнейших. При этом развитие прикладной науки и технологий движет не только жажда ученых к познанию, но и стремление бизнеса к участию в проектах, сулящих прибыль, а также активность государственных организаций, ответственных за решение стратегических задач.
Рассматривая ИИ в рамках обозначенной логики, прежде всего полезно проследить, как совершенствовались технологии искусственного интеллекта при решении двух задач – построения систем компьютерного зрения и обработки естественного языка.
Компьютерное зрение
Создатели компьютерного зрения добились значительных успехов в разработке систем, имитирующих биологическое зрение, и в некоторых задачах возможности зрительного аппарата человека уже удалось превзойти. Технология нашла широчайшее практическое применение во всех отраслях – умные камеры, распознавание лиц в качестве биометрических приложений, анализ медицинских изображений, анализ действий покупателей в магазине, распознавание номерных знаков и мониторинг соблюдения ПДД, приложения для создания автономных транспортных средств, распознавание жестов, в том числе для управления различного рода устройствами, создание фотореалистичных изображений. Список практически неисчерпаем.
Постараемся, избегая технических подробностей и формул, рассказать о некоторых ключевых ИИ-технологиях, которые лежат в основе большинства из перечисленных приложений.
Прежде всего заметим, что разговор про распознавание изображений – как основу компьютерного зрения – мы уже начали в предыдущих разделах курса, большинство примеров по использованию искусственных нейронных сетей как раз были связаны с распознаванием изображений. То есть мы уже затронули тему компьютерного зрения, но до сих пор не привели определение этого понятия.
В самом общем плане можно сказать, что компьютерное зрение – это технология, основанная на ИИ, позволяющая извлекать значимую информацию из визуальных данных (изображения, видео), принимать решения и осуществлять действия на основе этой информации. Уточняя понятие, следует отметить, что компьютерное зрение – это междисциплинарная область, которая базируется на ряде технологий (обработка электронных сигналов, машинное обучение, обработка изображений) и в свою очередь развивает такие прикладные направления, как машинное и робототехническое зрение ( рис. 2.1).
Рис. 2.1. Соотношение понятий, связанных с термином “компьютерное зрение”.
Суть термина проявляется более наглядно при рассмотрении родственных технологий, обозначенных на рис. 2.1. Обработка электронных сигналов (аналоговых или цифровых) может производиться с разной целью – например, для удаления шума, извлечения информации, для подготовки к выводу на дисплей в виде изображения и т. д. Термин “обработка изображений” часто используется для обозначения класса задач по улучшению качества изображения, т. е. когда на входе и на выходе алгоритма мы имеем одно и то же изображение, но разного качества.
Компьютерное зрение больше направлено на извлечение информации из изображений и делает акцент на анализе изображений. Типовыми задачами компьютерного зрения являются классификация, детекция и сегментация, о которых пойдет речь далее в этой лекции.
Компьютерное зрение и машинное зрение имеют области пересечения и в некоторых случаях могут использоваться как синонимы. При этом различия все-таки существуют. Машинное зрение – это инженерная область знания, которая в основном относится к промышленному использованию для автоматического контроля и управления процессами. Его можно считать дочерней областью, поскольку в нем используются методы и алгоритмы компьютерного зрения и обработки изображений.
Различие можно продемонстрировать на особенностях употребления. Например, когда мы говорим о том, что видеохостеры используют компьютерное зрение для выявления опасного контента в Интернете – здесь термин “машинное зрение” неуместен, а если речь идет о том, что системы компьютерного зрения были использованы на производственной линии завода для контроля качества, здесь возможно употребление терминов машинное или техническое зрение.
Робототехническое зрение – понятие родственное термину машинное зрение – также имеет свою специфику. Приложения машинного зрения не обязательно связаны с робототехникой – например, деталь для контроля на наличие дефектов может просто помещаться перед системой машинного зрения. Робототехническое зрение, как правило, является более сложной системой, чем машинное зрение, поскольку обеспечивает управление движением робота и должно быть включено в систему обратной связи, подразумевающей реакцию на действия робота.
Таким образом, робототехническое зрение подразумевает использование комбинации аппаратных средств, камеры и компьютерных алгоритмов, позволяющих роботам обрабатывать визуальные данные из окружающего мира и в некотором смысле понимать смысл происходящего.
Ключевые отличия перечисленных технологий можно наглядно проследить по тому, какие данные они получают на входе и в каком виде формируют данные на выходе (табл. 2.1)
Таблица 2.1. Сравнение технологий по типу данных на входе и выходе.
Технология
Вход
Выход
Обработка сигналов
Электрические сигналы
Электрические сигналы
Обработка изображений
Изображения
Изображения
Компьютерное зрение
Изображения
Информация/ характеристики
Распознавание образов/ машинное обучение
Информация/функции
Информация
Машинное зрение
Изображения
Информация
Робототехническое зрение
Изображения
Физические действия
Для более подробного обсуждения технологии компьютерного зрения вернемся к теме возникновения и эволюции данных систем. Одна из первых работ, в которой упоминалось компьютерное распознавание изображений и звука, вышла в 1955 г. – профессор Массачусетского технологического института Оливер Селфридж опубликовал статью “Глаза и уши для компьютера”. Работа, которую, несомненно, можно считать пионерской в области компьютерного зрения, мы уже упомянули в начале курса – это Персептрон Фрэнка Розенблата. Еще одним отцом компьютерного зрения называют Лоуренса Робертса (Lawrence Roberts), который в 1963 году опубликовал работу “Машинное восприятие трехмерных твердых тел”, в которой обсуждались вопросы извлечения трехмерной информации об объектах из двухмерных фотографий. Лоуренс защитил в этой области диссертацию и уже в 1970 году читал в MIT курс по компьютерному зрению.
В 1966 году Сеймур Пейперт организовал в Массачусетском технологическом институте проект по сегментации фона и переднего плана на фотоизображениях с целью извлечения из них непересекающихся объектов, который тоже можно отнести к пионерским проектам в области компьютерного зрения.
Одна из ранних прикладных задач компьютерного зрения – это оптическое распознавание символов OCR. Различные реализации данного рода программ существовали задолго до бума глубокого обучения. Ранние версии OCR обучались на изображениях отдельных символов и должны были переобучаться при каждом изменении шрифта. В 1970-х годах уже упомянутый в курсе изобретатель Рэй Курцвейл выпустил в продажу первый омнишрифтовой OCR, который мог обрабатывать текст, напечатанный практически любым шрифтом. В начале 90-х российские разработчики, впоследствии создавшие всемирно известную компанию ABBYY, начали проект по созданию OCR-программы, которая позднее стала популярным продуктом FineReader. Другая отечественная компания – Cognitive Technologies – примерно в это же время разрабатывала свою систему оптического распознавания текстов OCR CuneiForm. Как коммерческий продукт эта программа появилась в 1993 году. В начале 2000-х годов оптическое распознавание символов стало доступно в Интернете в виде облачного сервиса.
Параллельно развивались также приложения для распознавания лиц при участии и финансировании военных ведомств. Например, в 1993 стартовал проект “Технология распознавания лиц (FERET)”, который спонсировался правительством США, целью проекта было создание большой автоматической системы распознавания лиц для целей разведки, безопасности и правоохранительных органов. Проект преследовал задачи автоматизации процессов поиска по фотографиям с камер видеонаблюдения, контроль доступа к объектам и т. п. Примерно в это же время появились первые беспилотные системы управления автотранспортом. В 2003 году системы распознавания лиц стали использоваться в корпоративных приложениях.
В 2010-х годах в области распознавания и классификации изображений начался переход к методам глубокого обучения.
Распознавание изображений постепенно перешло из дорогой специфической технологии в доступную в широком наборе отраслей благодаря развитию алгоритмов, использованию больших наборов данных и росту вычислительной мощности доступного оборудования. Начиная с 2012 года активный рост ИИ был преимущественно обусловлен моделями глубоких нейронных сетей, которые, в отличие от классических методов машинного обучения, позволили исключить процедуру ручного извлечении признаков.
Рассмотренные нами выше методы классического машинного обучения, такие, как, например, метод опорных векторов, не могут быть применены непосредственно к необработанным данным, таким как изображения или текст. Необходим упомянутый этап предварительного извлечения признаков для решения исходной задачи (например, такой как классификация данных).
Извлечение особенностей или признаков изображения – это отдельная процедура (обнаружение цвета, краев, углов, объектов и т. п.). В подобных алгоритмах компьютерного зрения данные признаки создаются человеком, и точность моделей напрямую зависит от самих признаков и от методов их извлечения.
Для извлечения признаков применялись специальные алгоритмы, такие как, например, алгоритм SIFT. Согласно методике применения алгоритма, сначала извлекаются и запоминаются в базе данных ключевые точки объектов из набора контрольных изображений, и далее новый объект распознается на основе этих данных путем сравнивания каждого признака из нового изображения с признаками из базы данных.
Поясним это на примере – пусть модель машинного обучения используется для ответа на вопрос, изображен на конкретном изображении автомобиль или нет (рис. 2.2).
Рис. 2.2. Глубокие нейронные сети самостоятельно выполняют процедуру извлечения признаков
В верхней части рис. 2.2 показан процесс распознавания, при использовании классических ML-алгоритмов человек должен был вычленить уникальные особенности или признаки (опорные точки, наличие и координаты больших фрагментов изображения прямоугольной и круглой формы и т. д.), извлечь эти признаки и передать их алгоритму в качестве входных данных.
На основе выделенных признаков (если они правильно выбраны) алгоритм проведет классификацию изображений.
В случае с моделью глубокого обучения шаг извлечения признаков не нужен. Сеть извлекает эти признаки самостоятельно. Причем извлечение признаков возможно там, где человек выполнить подобную процедуру не может в принципе.
Действительно, даже если человек способен распознать тот или иной объект, он далеко не всегда может определить совокупность признаков, по которым он принял решение. Увидев ночью кошку или собаку, перебегающую дорогу даже при слабом освещении, мы, как правило, можем сказать, кто это был на самом деле, а вот сформулировать набор признаков, по которым мы смогли дать классификацию, крайне сложно.
Способность глубокого обучения в извлечении уникального набора признаков и демонстрация высочайшей производительности (более высокой, чем у человека) состоит в том, что глубокая нейронная сеть опирается при обучении на огромные объемы данных. Глубокие нейронные сети позволяют получить производительность, недостижимую для алгоритмов классического машинного обучения, но, как правило, требуют для этого наборы данных очень большого объема (рис. 2.3).
Рис. 2.3. Зависимость точности от объема данных для разных методов ИИ. Источник: Sumo logic
Многие достижения в области искусственного интеллекта за последние годы связаны именно с глубоким обучением. Наиболее точные модели на его основе требуют тысяч и даже миллионов элементов обучающих данных.
Для решения задач, возникающих в небольших компаниях с ограниченными финансами, такие большие наборы данных и такие вычислительные ресурсы для обучения сети недоступны. При этом следует отметить, что классические алгоритмы машинного обучения (которые мы упоминали выше) в ряде случаев не потеряли своей актуальности, и часто их применение бывает даже более эффективным (см. рис. 2.3).
Например, для того чтобы классифицировать на конвейере продукты разного цвета, не обязательно использовать глубокую нейросеть, решения можно добиться, используя простое пороговое цветовое выделение. Например, можно посчитать среднее значение цвета по всем пикселям изображения и различать по этому числу разные продукты.
Существует множество задач в области компьютерного зрения, таких как потоковая обработка видео, автоматическая сшивка панорам, оценка движения и идентификация движущихся объектов, которые иногда проще реализовать классическими методами.
Говоря об эволюции моделей на базе глубокого обучения, необходимо отметить, что здесь прорыв возможностей нейросетей по распознаванию изображений стал прямым результатом роста вычислительной мощности. Этот факт наглядно демонстрирует рис. 2.4, рассматривая эволюцию производительности аппаратного обеспечения и рост потребностей в вычислительных мощностях со стороны крупнейших нейросетевых проектов.
Рис. 2.4. Темпы роста вычислительной мощности для задач глубокого обучения и производительности оборудования. Источник: Документ “Вычислительные пределы глубокого обучения”.
На рисунке отмечено три периода – эра масштабирования Деннарда, эра многоядерных вычислений и эра глубокого обучения.
Как известно, рост производительности аппаратного обеспечения связывают с законом Мура. Удвоение производительности на ватт потребляемой мощности лежало в основе возможности периодичного обновления серверного оборудования примерно через каждые три-четыре года. Со временем стало наблюдаться так называемое замедление действия этого закона, показанное на схеме отставанием реальной кривой от прогнозируемой.
В районе 2004-2005 гг. закон масштабирования Деннарда перестал работать, поскольку при уменьшении размеров транзисторов токи утечки приводят к перегреву процессора и выходу его из строя. Невозможность наращивания тактовой частоты стимулировала альтернативный подход – разработку многоядерных процессоров. В соответствии, с чем следующий период назван “мультиядерная эра”.
В период с 1985 по 2009 год рост вычислительных требований наиболее крупных из используемых нейронных сетей увеличивался примерно пропорционально росту вычислительной мощности оборудования.
Поскольку рост вычислительной мощности в расчете на один доллар примерно повторяет рост вычислительной мощности в расчете на один чип, стоимость работы таких моделей была в значительной степени стабильной с течением времени примерно до 2009 года.
Переломным моментом стал перенос глубокого обучения на GPU, что дало ускорение в потреблении вычислительной мощности новыми моделями глубокого обучения в районе 2012 года, именно это, в частности, позволило осуществить важную победу Alexnet (о которой речь пойдет ниже) на конкурсе Imagenet в упомянутом году.
Таким образом, кривая роста потребностей в вычислительной мощности для крупнейших проектов глубокого обучения после примерно 2005 года изменялась с ускорением, а кривая роста производительности оборудования с замедлением.
Одно из направлений преодоления “замедления закона Мура” стимулировало подходы, основанные на увеличении количества серверов путем объединения их в кластеры. Другое исходило из того, что, если темпы увеличения производительности центрального процессора сервера замедляются, необходимо ускорить работу серверного оборудования путем создания специализированных процессоров. То есть вместо использования универсальных процессоров для обработки множества различных задач внедрить различные типы процессоров, адаптированных к потребностям конкретных задач. Так, одним из важнейших факторов для практического применения глубоких нейронных сетей стала доступность параллельных вычислений на графических ускорителях, о чем более подробно пойдет речь ниже.
Помимо проблем доступной вычислительной мощности следует отметить, что до 2005 года у специалистов не было достаточного количества данных, на основе которых можно было бы создать высокопроизводительные модели распознавания изображений. В 2009 году произошло объединение ряда американских институтов для создания массивного набора данных под названием ImageNet.
ImageNet – это проект по созданию и сопровождению массивной базы данных размеченных изображений из более чем 14 миллионов изображений 1000 классов, который предоставляет данные исследователям для обучения алгоритмов искусственного интеллекта.
С 2010 года в рамках ILSVRC проводятся соревнования, где конкурируют различные исследовательские группы по распознаванию объектов. На рис. 2.5 показаны данные результатов соревнований разработчиков ИИ в рамках данного проекта в период с 2010 по 2017 г.
Рис. 2.5. Динамика снижения ошибок в испытании “ILSVRC Top-5”.
На рис. 2.5 представлены данные в так называемой категории “Top-5 error”. Соревнование предполагает, что для ответа выбирается Топ-5 предсказаний, в которых сеть наиболее уверена, и если искомый ответ (класс) попал в эти пять предсказаний, то утверждается, что сеть не ошиблась, и напротив, если правильный класс в эти 5 предсказаний не попал, то, соответственно, считается, что сеть ошиблась.
Например, сеть распознает животное на картинке и выдает в порядке убывания вероятности следующие предположения: “ягуар, гепард, снежный леопард, египетская кошка” – если правильный ответ попадает в эти пять предположений, то этот ответ засчитывается как верный.
В 2011 году хорошим результатом считалась ошибка классификации на уровне 25%.
На рис. 2.5 выделяется 2012 год, который мы уже упомянули, говоря о новых возможностях доступного для обучения нейронной сети оборудования (см. рис. 2.4). В этом году исследователи из Университета Торонто использовали методы, основанные на глубоком обучении, чтобы установить новый уровень техники в конкурс ILSVRC – сверточная нейронная сеть AlexNet показала уникальный результат, достигнув ошибки на уровне 15,3% в “ILSVRCTOP-5”, что было более чем на 10,8 процентных пункта ниже, чем у проекта, занявшего второе место. Высокая производительность достигалась за счет глубины модели, что потребовало высокой производительности, которая достигалась благодаря использованию во время обучения графических процессоров (GPU).
Это было значимое событие поскольку ошибку удалось снизить радикально, показав результат, на который все остальные методы были неспособны. В последующие годы ошибка упала до нескольких процентов (рис. 2.5). В 2014 г. победителем конкурса ILSVRC стала сеть VGGNet. Модель, предложенная Симоняном и Зиссерманом, состояла из 19 слоев (138 млн параметров). В том же году GoogleNet, которая имела 22 слоя, еще снизила ошибку, а в 2015 году исследователи констатировали, что программы в определенных задачах проекта ILSVRC превзошли человеческие способности.
Нейронная сеть Resnet (Residual Networks), разработанная Microsoft Research, стала победителем конкурса ImageNet в 2015 году, она имела уже 152 слоя и демонстрировала ошибку на уровне 3,6%. В 2016 г. при использовании ансамбля моделей удалось показать результат с ошибкой в 3%, а в 2017 г. SENet снизила ошибку до уровня 2,25%.
После окончания конкурса в 2017 году исследователи продолжают использовать набор данных ImageNet для тестирования и разработки приложений компьютерного зрения. На рис. 2.6 показаны успехи систем, показывающих все более высокие результаты с течением времени. В отличие от рис. 2.5, где была показана ошибка, на рис. 2.6 показана точность в процентах “TOP-5 Accuracy”.
Рис. 2.6. Динамика показателей TOP-5 Accuracy в Imagenet-соревновании. Источник: AI Index Report 2021
В последние годы исследователи стали повышать производительность своих систем путем их предварительного обучения на дополнительных данных, в частности на фотографиях из социальных сетей. Предварительное обучение на этих наборах данных обеспечивает более эффективное использование данных ImageNet, что позволило в 2021 г. в категории “TOP-5 Accuracy” достигнуть точности на уровне 98,8% (ошибка всего в 1,2%).
Мы упомянули решающую роль архитектуры сверточных сетей в достижении высокой точности распознавания изображений. Учитывая важность данной технологии, рассмотрим принцип ее действия чуть подробнее.
Сверточные нейронные сети
Ранее мы отметили, что при решении задачи распознавания простого геометрического объекта мы можем описать правила его начертания (указать признаки, по которым его можно отличить). Однако, говоря о решении более сложной задачи (например, такой как необходимость отличить на фото кошку от собаки), описать признаки, по которым можно принять подобное решение, достаточно сложно. Животное может находиться в разных позах, может быть сфотографировано в разных ракурсах при разном освещении. Собака, если на фото видно лишь три лапы, не перестает быть собакой, при этом человеку достаточно мельком взглянуть на фото и определить, что это за животное, вне зависимости от того, видны на фото лапы и хвост или нет.
Как это делает человек?
Интересно заметить, что при мгновенном решении подобных задач человеку непросто перечислить, по каким именно признакам он отличил кошку от собаки на том или ином изображении. То есть найти признаки – это отдельная задача, которую необходимо формализовать для ИИ. Сверточная сеть обладает способностью самостоятельно учиться находить подобные признаки, составляя их на основании элементов изображения, причем решает она эту задачу более эффективно и экономично, чем многослойный персептрон.
Почему речь идет об экономичности?
Следует отметить, что обработка больших изображений по схеме, которую мы рассмотрели, говоря о работе многослойного персептрона рис. 1.28, когда на вход подаются значения каждого пикселя в виде входного вектора, требует весьма существенных вычислительных ресурсов. Например, если речь идет об обработке цветного изображения 100 на 100 пикселей, по схеме рис. 1.29, то число входных параметров (учитывая, что цвет обычно предоставляется значениями яркости по трем каналам Red Blue Green) составит 100 х 100 х 3, то есть 30 000. При изображении 1000 на 1000 точек мы получим уже три миллиона параметров. Одна из задач, стоявших перед разработчиками нейросетей для распознавания изображений, заключалась в получении экономичного решения, которое бы учитывало особенности представления информации в изображениях.
Большое количество параметров сети плохо не только с точки зрения вычислительной сложности, но и с точки зрения необходимого для обучения количества данных. Поскольку в процессе обучения параметры подстраиваются по обучающим примерам, то чем больше параметров необходимо подстроить – тем большее количество примеров необходимо. С точки зрения работы с изображениями это означает, что для распознавания кота необходимо показать нейросети изображения, на которых кот располагается во всех возможных позах во всех местоположениях внутри кадра. Распознавание же кота человеком устроено несколько по-другому – человек “сканирует” изображение, ища знакомые признаки (паттерны).
Известно, что изображения обладают свойством локальной связности, то есть если мы говорим, например, о том, что на фотографии изображен человек, то точки, принадлежащие отдельным элементам его лица, будут располагаться рядом, а не разбросаны по разным частям изображения. Когда мы двумерную матрицу, отображающую изображение, переводим в вектор, то информация о связности точек теряется (см. схему рис. 1.29). В отличие от персептрона, сверточные сети используют так называемые локальные рецепторные поля, которые обеспечивают локальную двумерную связность нейронов и за счет этого обеспечивают инвариантность к повороту, сдвигу и пространственным искажениям в изображении.
Описать подробно, как работает сверточная сеть в рамках данного курса (где мы планируем дать концептуальный обзор многих технологий), не предоставляется возможным, поэтому остановимся на описании только ключевых идей.
Идея сверточных сетей базируется на сведениях о некоторых механизмах зрительного восприятия у живых организмов. Согласно исследованиям Хьюбела и Визеля, проведенным еще в 1962 году, отдельные клетки нейронов в мозге реагируют при наличии в изображении краев определенной ориентации. Например, некоторые нейроны реагируют на вертикальные грани, другие на горизонтальные или диагональные.
Можно сказать, что именно идея наличия нейронов в зрительной коре, ответственных за поиск определенных характеристик изображения, лежит в основе сверточных нейронных сетей.
Существует достаточно много попыток художников проиллюстрировать механизм работы сверточных нейронных сетей (СНС), при этом каждая схема не идеальна в том смысле, что использует те или иные упрощенные аналогии. Мы приведем несколько подходов иллюстрирования работы сверточных сетей, которые интерпретируют идею на разном уровне абстракции и в сочетании дают возможность понять принцип работы СНС. Начнем с самого общего представления сверточной сети (рис. 2.7).
Рис. 2.7. Упрощенная схема работы сверточной нейронной сети.
На рис. 2.7 (в верхней части) показано, что сеть изначально обучается распознавать разные виды животных. Это стадия первичного обучения, когда сеть учится распознавать размеченные изображения, то есть такие, к которым прикреплены теги, несущие информацию о свойствах каждого объекта (принадлежность тому или иному классу животных). После того как сеть обучена, ей на распознавание дается новое неразмеченное изображение – как показано на рис. 2.7 – это изображение собаки, которое сеть должна отнести к одному из классов животных, которые она “знает”. Сверточная сеть состоит из нескольких скрытых слоев, так что при обработке изображения на этих слоях выявляются разные группы признаков – от наиболее простых до все более сложных. СНС может иметь десятки или даже сотни слоев, каждый из которых учится обнаруживать различные признаки. Выходные данные сверточного слоя используются в качестве входных данных для следующего слоя. В результате сеть дает заключение о том, к какому классу и с какой вероятностью относится исследуемое изображение.
Первые слои отвечают за распознавание простейших паттернов – уже упомянутых краев различной ориентации или определенной текстуры. Следующий слой отвечает за комбинирование паттернов предыдущего слоя – например, из двух наклонных штрихов он может составить “угол”, напоминающий ухо. Последующие слои учатся комбинировать результаты предыдущих слоев, тем самым образуя иерархию фрагментов различной степени содержательности.
Более подробно работу СНС рассмотрим на рис. 2.8. Здесь обозначены ранее упомянутые слои: сверточные (convolutional) слои, слои подвыборки или субдискретизации (subsampling, называемых также слоями пулинга / pooling) и слои “обычной” нейронной сети – персептрона.
Рис. 2.8. Схема работы сверточной нейронной сети
Сверточные сети получили свое название от “операции свертки”. Свертка в данном случае – это механизм выявления особенностей (признаков) из входных изображений. Свертка сохраняет пространственные отношения между пикселями, изучая особенности изображения, используя каждый раз небольшую площадь входных данных. Работа СНС заключается в том, что изображение “пропускается” через ряд сверточных (convolution), субдискретизирующих (subsampling) и полностью связанных (dense) слоев для получения на выходе результата ( рис. 2.8).
В рассматриваемом случае выходной сигнал является вероятностью принадлежности классу изображений, который наилучшим образом подходит к исследуемому изображению. На рис. 2.7 это показано как вероятность того, что исследуемое изображение принадлежит классу “собаки”, составляет 90%.
На рис. 2.9 представлен фрагмент распознаваемого изображения и показано положение фильтра размером 7х7 пикселов над рецептивным полем. Фильтр, показанный на рисунке (он же ядро или матрица весов 7х7), детектирует наличие на изображении кривой, которая задана четырьмя пикселами, расположенными вертикально, и одним по диагонали. На рисунке показан момент, в который матрица находится над элементом изображения, содержащего кривую, подобную искомой. Совпадение ненулевых значений пикселов на фильтре и на рецептивном поле выделено серым цветом.
Рис. 2.9. Пояснение к процедуре свертки.
В тот момент, когда фильтр расположен над рецептивным полем, как это показано на рисунке, перемноженные и просуммированные значения дадут в результате число 6600 (см. рис. 2.9).
Из рисунка также видно, что в момент, когда фильтр находился в положении левее на один пиксел, значение свертки равнялось нулю. При перемещении на один пиксел вправо от показанного на рисунке значение свертки увеличится, а потом, при дальнейшем перемещении фильтра вправо (когда он минует границу на исходном изображении), значение свертки опять станет нулевым. Таким образом, перемещая фильтр по всему изображению, мы можем найти все места на изображении, где содержится искомая кривая.
На выходе получается карта признаков, которая дает нам определенную информацию об изображении. Обычно за сверточным слоем следует слой субдискретизации (пулинга). Основная цель этого слоя – уменьшение пространственного размера свернутой карты признаков. Этот слой уменьшает количество параметров на входе, что позволяет снизить вычислительные затраты. Смысл этой операции в том, что, если мы обнаружили некоторый фрагмент изображения, нас перестает интересовать его точное положение с точностью до пиксела – поэтому мы можем заменить некоторую пиксельную окрестность (например, 2×2 или 3×3) одним значением, показывающим, был признак обнаружен в этой окрестности или нет. Как и в случае со сверточным слоем, операция пулинга прогоняет окно по всему полю, и (в зависимости от применяемого метода) на участке заданного размера выбирается максимальное значение (MaxPooling) или вычисляется среднее значение элементов на участке (Average pooling). На рис. 2.8 показан только один сверточный слой и один слой пулинга, на практике их могут быть десятки. На каждом следующем слое операция повторяется, в результате чего карта уменьшается в размере, при том, что количество каналов увеличивается. После прохождения всех слоев свертки и пулинга формируются сотни каналов с признаками, которые интерпретируются как самые абстрактные понятия, выявленные из исходного изображения.
На финальной стадии данные трансформируются в вектор и передаются на обычную полносвязную нейронную сеть (см. рис. 2.8). На выходе мы получаем ответ, в частности в представленном примере с вероятностью 90% сеть распознает изображение как принадлежащее классу “собака”.
Компьютерное зрение – это не только классификация
Ранее мы рассмотрели задачу классификации изображений, когда необходимо распознать и присвоить метку объекту (или множеству объектов), присутствующему на изображении, отвечая на вопрос “Что это?”. Со временем нейронные сети научились выполнять более сложные задачи, чем классификация изображений, например ИНС, научились выделять на фотографиях контуры объектов, даже если таких экземпляров несколько и они загораживают друг друга.
Сегментация объектов на изображениях подразумевает умение выполнять целый ряд операций (рис. 2.10).
Рис. 2.10. Основные элементы задачи распознавания объектов.
Локализация объектов подразумевает определение местоположения одного или нескольких объектов на изображении и построение прямоугольной рамки вокруг их границ. Обнаружение объектов объединяет локализацию и классификацию одного или нескольких объектов на изображении (рис. 2.11)
Из рис. 2.11 (б) следует, что модель определила собак как один класс, а кошек как другой, что видно по цвету (тону) рамок. Еще одна задача компьютерного зрения – это сегментация, процесс идентификации похожих объектов, принадлежащих к одному классу, на уровне пикселей, то есть это задача отнесения каждого пикселя изображения к определенному классу: кошка, собака, человек, фон и т. д. (см. рис. 2.11 (в)). Сегментация является базовой технологией, например, для медицинских приложений (идентификация и выделение объектов на снимках) или для автономных автомобилей (идентификация и выделение объектов на дорогах).
Для обучения глубоких нейронных сетей пониманию городской среды используются специализированные наборы данных (датасеты), например такие, как Cityscapes.
Cityscapes фокусируется на семантической сегментации, включает набор городских уличных сцен из пятидесяти городов, сфотографированных в разное время года. Набор данных содержит около 5 тыс. изображений с аннотациями на уровне пикселей и около 20 тыс. частично маркированных изображений.
Существуют соревнования по оценке уровня точности сегментации объектов изображения на базе Cityscapes. Участники оцениваются на основе метрики (IoU – Intersection Over-Union), пересечение над объединением – это метрика для оценки точности модели, которая измеряет правильность предсказания ограничивающего объект контура. IoU – это число, которое количественно определяет степень перекрытия между двумя контурами: области “истины” и области предсказания (рис. 2.12).
Рис. 2.12. Иллюстрация смысла метрики IoU
Методика выглядит следующим образом: на обучающем изображении отмечают диапазон обнаруживаемого объекта, затем смотрят на диапазон результатов, полученных по используемому алгоритму, и берут отношение площади пересечения этих областей к площади их объединения. Таким образом, для идеально совпадающих областей получим IoU=1, а для полностью непересекающихся – 0.
В случае семантической сегментации изображения на основе нескольких классов, где на одном изображении могут быть объекты, принадлежащие к разным классам, каждому объекту необходимо присвоить свою метку и соответствующим образом обработать ее при вычислении IoU. Для этого можно найти среднее значение IoU, соответствующее различным классам, которое будет соответствовать фактической степени сходства. Это среднее значение обозначается как средний IoU (Mean IoU – mIoU).
Динамика совершенствования моделей на основе показателя mIoU (по данным соревнования на датасете Cityscape в решении задач семантической маркировки на уровне пикселя) представлена на рис. 2.13.
Рис. 2.13. Динамика показателей mIoU Cityscape-соревнования в решении задач семантической маркировки на уровне пикселя. Источник: AI Index Report 2021
Технологии искусственного интеллекта позволяют не только распознавать существующие объекты, но и генерировать синтетические изображения новых, которые даже эксперты не могут отличить от фотографий реальных объектов нашего мира.
Новые возможности в данном направлении открыли так называемые генеративно-состязательные сети. Основа технологии была разработана Яном Гудфеллоу (Ian Goodfellow) в 2014 г. – в период, когда он являлся аспирантом Монреальского университета. Об этих сетях расскажем чуть подробнее.
Генеративно-состязательные сети
Генеративно-состязательные сети, или GAN (от Generative Adversarial Network) – это сравнительно молодая и быстро развивающаяся технология, которая поражает воображение возможностью генерировать фотореалистичные изображения несуществующих объектов, неотличимо похожих на реальные, которые невозможно определить как подделку.
“Фотографии несуществующих людей”, сгенерированные GAN-ами, обошли все конференции на тему GAN.
Генеративно-состязательные сети находят массу практических применений: их используют не только для создания изображений, но также для дополнения, восстановления и повышения качества изображений. Например, с помощью GAN можно перевести черно-белые фото и видеоматериалы в цветные, трансформировать летние изображения в зимние, дневные в ночные и так далее. Также GAN используют для улучшения технологий поиска, которые основаны на том, что отыскать конкретное изображение легче, если возможно создать другие синтетические изображения, похожие на него.
И заметим, что в данном разделе мы упоминаем лишь примеры из области работы с изображениями.
Прежде чем дать более полное толкование GAN, следует ввести понятие генеративных и дискриминативных моделей. Чтобы понять разницу в этих подходах, рассмотрим применение каждого для решения задач классификации (рис. 2.14).
Рис. 2.14. Сравнение дискриминативного и генеративного моделирования.
Дискриминативные классификаторы пытаются определить, какие признаки на входных данных наиболее полезны для классификации. Модель данного типа пытается определить границу, отделяющую один класс от другого. При этом дискриминативные модели классифицируют точки данных, не задаваясь целью определить, как эти точки были созданы.
Заметим, что мы уже рассматривали задачи классификации при описании метода опорных векторов и нейронных сетей и просто не упоминали, что получаемые модели относятся к дискриминативным. Хорошей иллюстрацией дискриминативного классификатора может служить рисунок 1.43, который мы рассматривали при описании метода SVM, где речь шла о нахождении гиперплоскости, оптимально разделяющей классы в N-мерном пространстве.
Для наглядного объяснения сути понятий генеративного и дискриминативного подходов и их различия можно обратиться к аналогии, которую приводят авторы работы. У отца двое детей. Ребенок “А” способен досконально изучать сущность предметов, ребенок “Б” может определять лишь различия между объектами.
В зоопарке дети видели львов и слонов. После посещения зоопарка отец показывает детям фото льва и спрашивает: “Кто это – лев или слон?” Ребенок “А” в ответ рисует на бумаге льва и слона, основываясь на том, что он видел в зоопарке, затем сравнивает оба изображения с животным на фото и принимает решение (генеративная модель). Ребенок “Б”, который только определяет различия, дает ответ на основе отличительных свойств каждого из животных, не прибегая к рисунку (дискриминативная модель).
То есть генеративные классификаторы пытаются моделировать класс. Когда этим классификаторам дается новое наблюдение, они пытаются предсказать, какой класс, скорее всего, породил данное наблюдение.
Как правило, дискриминативный классификатор более точен, поскольку пытается непосредственно решить задачу классификации, а не более общую задачу (в качестве промежуточного шага), как это делают генеративные.
Теперь дадим более общее определение. Генеративные модели основаны на использовании методов неконтролируемого машинного обучения, в процессе которого осуществляется автоматическое обнаружение и изучение закономерностей во входных данных таким образом, чтобы созданную модель можно было использовать для генерации новых примеров, которые, вероятно, могли быть получены из исходного набора данных.
Введя понятия дискриминативной и генеративной моделей, перейдем к определению генеративно-состязательной сети.
Генеративно-состязательная сеть – это метод глубокого обучения, построенный на соревновании двух нейронных сетей, двух моделей – генеративной и дискриминативной (рис. 2.15).
Рис. 2.15. Принцип работы генеративно-состязательной сети.
Генеративная сеть, или генератор (на рис. 2.15 обозначена как G), генерирует новые образцы, а вторая (сеть D – дискриминатор) их оценивает, то есть пытается различать настоящие образцы (“подлинные”) и поддельные (сгенерированные).
Сеть G принимает на вход случайный шум z, и ее задача – преобразовать шум таким образом, чтобы он приобрел структуру, подобную изображениям в наборе обучающих данных.
Сеть D на вход получает изображения х, при этом выходной сигнал D (x) представляет собой вероятность того, что x является настоящим реальным изображением (1 – стопроцентно реальное изображение; 0 – изображение реальным быть не может).
Сети G и D имеют противоположные цели – “создать образцы, которые не могут быть отбракованы” и “отбраковать образцы”. Эти две модели обучаются вместе в состязательной игре с нулевой суммой, пока модель дискриминатора не будет обманута примерно в половине случаев, что означает, что модель генератора создает правдоподобные примеры. По мере увеличения количества циклов обратной связи между противоборствующими сетями генератор производит все более качественные выходные данные, а дискриминатор все лучше распознает искусственно созданные данные.
Полученные сети могут применяться для создания реалистичных изображений. Для этого исключаем из схемы дискриминатор и с помощью генератора получаем необходимые изображения.
Далее разберемся более подробно, что делает каждый из упомянутых слоев.
Первым слоем в СНС является сверточный слой. Лучший способ объяснить работу свертки – это рассмотреть графическую интерпретацию процесса рис. 2.9. Здесь показано окно, которое перемещается по всем областям входного изображения. Это же окно показано и на рис. 2.8.
Упомянутое окно называют фильтром или ядром, а область, на которую оно в данный момент проецируется, – рецептивным полем. Фильтр (ядро) – это матрица небольшого размера с определенным набором параметров (весов). По мере того, как фильтр перемещается по исходному изображению, он производит операцию свертки, то есть поэлементно перемножает значения (веса) матрицы фильтра с исходными значениями пикселей рецепторного поля, получая число для каждого положения фильтра. На рис. 2.8 пунктирными линиями показан процесс преобразования матрицы рецептивного поля в точку – число (значение на сверточном поле). После серии последовательных перемещений фильтра по изображению получится массив чисел, который называется картой признаков.
Фильтр можно интерпретировать как графическое кодирование какого-либо признака, например, наличие вертикальной, горизонтальной или наклонной линии. Для исследования разных признаков используется множество фильтров, кодирующих разные типы графических элементов. Важно отметить, что ядра свертки не закладываются разработчиками, а формируются автоматически путем обучения сети с использованием метода обратного распространения ошибки. Фильтры на первом слое обрабатывают простейшие характеристики изображения и усложняются до характеристик, которые определяют объект целиком. Этот процесс мы уже абстрактно изобразили на рис. 2.7.
На рис. 2.8 показан один сверточный слой, на практике их могут быть десятки и даже сотни, и на каждом слое формируется несколько каналов (независимых карт признаков). На рис. 2.8 условно показано шесть каналов.
Для наглядного и упрощенного объяснения процесса (рис. 2.15) часто прибегают к аналогии, представляя один процесс в виде художника, пытающегося подделать картину, а другой в виде искусствоведа, который пытается отличить реальное изображение от сгенерированной фальшивки.
Представим, что в данной ситуации художник имеет возможность получать информацию о том, на каком основании искусствовед отличил картину-подделку от подлинника (не тот цвет, характер мазка и т. п.), и создавать улучшенную фальшивку. При многократном повторении данного цикла должен наступить момент, когда искусствовед не найдет отличий, – это и считается моментом появления изображения, неотличимого от оригинала.
Возвращаясь к состязательным сетям, можно сказать, что цель обучения моделиG заключается в максимальном увеличении вероятности ошибки дискрминатора D. Использование этой техники и позволяет генерировать упомянутые нами ранее “фотографии несуществующих объектов”, которые человеческим глазом воспринимаются как натуральные фото реальных объектов. Например, известна попытка синтезировать фотографии кошек, которые вводят в заблуждение эксперта, считающего их естественными фото.
Можно сказать, что мы не можем отличить сгенерированные моделью объекты от реально существующих, поскольку модель смогла “понять” характер внешности того или иного объекта именно так, как его понимают люди.
GAN-ы – это еще один этап в эволюции возможностей техники в проявлении художественных способностей, переход от умения создать точные копии объекта до возможности передачи некоторой совокупности усредненных качеств объекта, позволяющих воссоздать новый уникальный объект, неотличимый от его реальных прототипов.
GAN-ы оказались очень эффективны в решении задачи генерации изображений. И, надо отметить, возможности моделей постоянно совершенствуются. Первоначально основным способом оценки качества подобных моделей являлась экспертная оценка сгенерированных объектов, проводимая специалистом, человеком в виде ответа на вопрос “Насколько синтетический объект соответствует реальному?”. Данный подход является субъективным, дорогим и малопригодным для обработки больших объемов данных. Со временем появились более объективные автоматические методы анализа характеристик генеративных моделей, которые позволяют количественно описать уровень качества создаваемых синтетических моделей и дают возможность аналитикам отслеживать процесс совершенствования моделей. Для оценки качества GAN используется ряд метрик, включая Fr?chet Inception Distance FID (начальное расстояние Фреше). Последняя метрика применима исключительно для оценки GAN, генерирующих изображения определенного формата. Метрика FID была введена в 2017 году для сравнения признаков сгенерированных и реальных изображений. Низкое значение FID соответствует изображениям высокого качества и наоборот. Добавление шума и искажений (снижение качества изображений) повышает FID.
На рис. 2.16 показан прогресс генеративных моделей за последние два года в создании синтетических изображений, проведенный по метрике FID на базе набора данных STL-10, который используется для проверки того, насколько эффективно системы генерируют изображения. STL-10 – это датасет для распознавания изображений, который состоит из 100 000 неразмеченных и 500 обучающих изображений и используется для разработки алгоритмов глубокого обучения и самообучения.
Рис. 2.16. Динамика показателя FID в соревновании STL-10 за период 2018-2020 г. Источник: AI Index Report 2021
Интересно отметить, что направления ИИ, связанные с обработкой изображений и естественного языка, в какой-то момент нашли пересечение.
В 2014 году одним из главных достижений в области ИИ стало появление технологии автоматического создания подписей к изображениям. К тому времени алгоритмы машинного обучения уже умели маркировать объекты на изображениях, и в дополнение к этому они научились создавать по изображению описания на естественном языке типа “На изображении девочка играет в мяч”.
Со временем появилась идея – нельзя ли выполнить обратную задачу и сгенерировать изображение по текстовому описанию. Для того чтобы продолжить разговор о взаимодействии языковых моделей ИИ и технологий генерации изображений, следует более подробно остановиться на эволюции технологий обработки естественного языка.
В предыдущих разделах, говоря об эволюции ИИ, мы рассмотрели ряд научных направлений, включая коннекционистский и символьный, отметили, что в каждом из них есть свои подходы и алгоритмы.
Очевидно, что наблюдать процесс развития технологий ИИ можно в разных аспектах, и рассмотрение эволюции с точки зрения решения ключевых научно-практических задач является одним из важнейших. При этом развитие прикладной науки и технологий движет не только жажда ученых к познанию, но и стремление бизнеса к участию в проектах, сулящих прибыль, а также активность государственных организаций, ответственных за решение стратегических задач.
Рассматривая ИИ в рамках обозначенной логики, прежде всего полезно проследить, как совершенствовались технологии искусственного интеллекта при решении двух задач – построения систем компьютерного зрения и обработки естественного языка.
Компьютерное зрение
Создатели компьютерного зрения добились значительных успехов в разработке систем, имитирующих биологическое зрение, и в некоторых задачах возможности зрительного аппарата человека уже удалось превзойти. Технология нашла широчайшее практическое применение во всех отраслях – умные камеры, распознавание лиц в качестве биометрических приложений, анализ медицинских изображений, анализ действий покупателей в магазине, распознавание номерных знаков и мониторинг соблюдения ПДД, приложения для создания автономных транспортных средств, распознавание жестов, в том числе для управления различного рода устройствами, создание фотореалистичных изображений. Список практически неисчерпаем.
Постараемся, избегая технических подробностей и формул, рассказать о некоторых ключевых ИИ-технологиях, которые лежат в основе большинства из перечисленных приложений.
Прежде всего заметим, что разговор про распознавание изображений – как основу компьютерного зрения – мы уже начали в предыдущих разделах курса, большинство примеров по использованию искусственных нейронных сетей как раз были связаны с распознаванием изображений. То есть мы уже затронули тему компьютерного зрения, но до сих пор не привели определение этого понятия.
В самом общем плане можно сказать, что компьютерное зрение – это технология, основанная на ИИ, позволяющая извлекать значимую информацию из визуальных данных (изображения, видео), принимать решения и осуществлять действия на основе этой информации. Уточняя понятие, следует отметить, что компьютерное зрение – это междисциплинарная область, которая базируется на ряде технологий (обработка электронных сигналов, машинное обучение, обработка изображений) и в свою очередь развивает такие прикладные направления, как машинное и робототехническое зрение ( рис. 2.1).
Суть термина проявляется более наглядно при рассмотрении родственных технологий, обозначенных на рис. 2.1. Обработка электронных сигналов (аналоговых или цифровых) может производиться с разной целью – например, для удаления шума, извлечения информации, для подготовки к выводу на дисплей в виде изображения и т. д. Термин “обработка изображений” часто используется для обозначения класса задач по улучшению качества изображения, т. е. когда на входе и на выходе алгоритма мы имеем одно и то же изображение, но разного качества.
Компьютерное зрение больше направлено на извлечение информации из изображений и делает акцент на анализе изображений. Типовыми задачами компьютерного зрения являются классификация, детекция и сегментация, о которых пойдет речь далее в этой лекции.
Компьютерное зрение и машинное зрение имеют области пересечения и в некоторых случаях могут использоваться как синонимы. При этом различия все-таки существуют. Машинное зрение – это инженерная область знания, которая в основном относится к промышленному использованию для автоматического контроля и управления процессами. Его можно считать дочерней областью, поскольку в нем используются методы и алгоритмы компьютерного зрения и обработки изображений.
Различие можно продемонстрировать на особенностях употребления. Например, когда мы говорим о том, что видеохостеры используют компьютерное зрение для выявления опасного контента в Интернете – здесь термин “машинное зрение” неуместен, а если речь идет о том, что системы компьютерного зрения были использованы на производственной линии завода для контроля качества, здесь возможно употребление терминов машинное или техническое зрение.
Робототехническое зрение – понятие родственное термину машинное зрение – также имеет свою специфику. Приложения машинного зрения не обязательно связаны с робототехникой – например, деталь для контроля на наличие дефектов может просто помещаться перед системой машинного зрения. Робототехническое зрение, как правило, является более сложной системой, чем машинное зрение, поскольку обеспечивает управление движением робота и должно быть включено в систему обратной связи, подразумевающей реакцию на действия робота.
Таким образом, робототехническое зрение подразумевает использование комбинации аппаратных средств, камеры и компьютерных алгоритмов, позволяющих роботам обрабатывать визуальные данные из окружающего мира и в некотором смысле понимать смысл происходящего.
Ключевые отличия перечисленных технологий можно наглядно проследить по тому, какие данные они получают на входе и в каком виде формируют данные на выходе (табл. 2.1)
Для более подробного обсуждения технологии компьютерного зрения вернемся к теме возникновения и эволюции данных систем. Одна из первых работ, в которой упоминалось компьютерное распознавание изображений и звука, вышла в 1955 г. – профессор Массачусетского технологического института Оливер Селфридж опубликовал статью “Глаза и уши для компьютера”. Работа, которую, несомненно, можно считать пионерской в области компьютерного зрения, мы уже упомянули в начале курса – это Персептрон Фрэнка Розенблата. Еще одним отцом компьютерного зрения называют Лоуренса Робертса (Lawrence Roberts), который в 1963 году опубликовал работу “Машинное восприятие трехмерных твердых тел”, в которой обсуждались вопросы извлечения трехмерной информации об объектах из двухмерных фотографий. Лоуренс защитил в этой области диссертацию и уже в 1970 году читал в MIT курс по компьютерному зрению.
В 1966 году Сеймур Пейперт организовал в Массачусетском технологическом институте проект по сегментации фона и переднего плана на фотоизображениях с целью извлечения из них непересекающихся объектов, который тоже можно отнести к пионерским проектам в области компьютерного зрения.
Одна из ранних прикладных задач компьютерного зрения – это оптическое распознавание символов OCR. Различные реализации данного рода программ существовали задолго до бума глубокого обучения. Ранние версии OCR обучались на изображениях отдельных символов и должны были переобучаться при каждом изменении шрифта. В 1970-х годах уже упомянутый в курсе изобретатель Рэй Курцвейл выпустил в продажу первый омнишрифтовой OCR, который мог обрабатывать текст, напечатанный практически любым шрифтом. В начале 90-х российские разработчики, впоследствии создавшие всемирно известную компанию ABBYY, начали проект по созданию OCR-программы, которая позднее стала популярным продуктом FineReader. Другая отечественная компания – Cognitive Technologies – примерно в это же время разрабатывала свою систему оптического распознавания текстов OCR CuneiForm. Как коммерческий продукт эта программа появилась в 1993 году. В начале 2000-х годов оптическое распознавание символов стало доступно в Интернете в виде облачного сервиса.
Параллельно развивались также приложения для распознавания лиц при участии и финансировании военных ведомств. Например, в 1993 стартовал проект “Технология распознавания лиц (FERET)”, который спонсировался правительством США, целью проекта было создание большой автоматической системы распознавания лиц для целей разведки, безопасности и правоохранительных органов. Проект преследовал задачи автоматизации процессов поиска по фотографиям с камер видеонаблюдения, контроль доступа к объектам и т. п. Примерно в это же время появились первые беспилотные системы управления автотранспортом. В 2003 году системы распознавания лиц стали использоваться в корпоративных приложениях.
В 2010-х годах в области распознавания и классификации изображений начался переход к методам глубокого обучения.
Распознавание изображений постепенно перешло из дорогой специфической технологии в доступную в широком наборе отраслей благодаря развитию алгоритмов, использованию больших наборов данных и росту вычислительной мощности доступного оборудования. Начиная с 2012 года активный рост ИИ был преимущественно обусловлен моделями глубоких нейронных сетей, которые, в отличие от классических методов машинного обучения, позволили исключить процедуру ручного извлечении признаков.
Рассмотренные нами выше методы классического машинного обучения, такие, как, например, метод опорных векторов, не могут быть применены непосредственно к необработанным данным, таким как изображения или текст. Необходим упомянутый этап предварительного извлечения признаков для решения исходной задачи (например, такой как классификация данных).
Извлечение особенностей или признаков изображения – это отдельная процедура (обнаружение цвета, краев, углов, объектов и т. п.). В подобных алгоритмах компьютерного зрения данные признаки создаются человеком, и точность моделей напрямую зависит от самих признаков и от методов их извлечения.
Для извлечения признаков применялись специальные алгоритмы, такие как, например, алгоритм SIFT. Согласно методике применения алгоритма, сначала извлекаются и запоминаются в базе данных ключевые точки объектов из набора контрольных изображений, и далее новый объект распознается на основе этих данных путем сравнивания каждого признака из нового изображения с признаками из базы данных.
Поясним это на примере – пусть модель машинного обучения используется для ответа на вопрос, изображен на конкретном изображении автомобиль или нет (рис. 2.2).
В верхней части рис. 2.2 показан процесс распознавания, при использовании классических ML-алгоритмов человек должен был вычленить уникальные особенности или признаки (опорные точки, наличие и координаты больших фрагментов изображения прямоугольной и круглой формы и т. д.), извлечь эти признаки и передать их алгоритму в качестве входных данных.
На основе выделенных признаков (если они правильно выбраны) алгоритм проведет классификацию изображений.
В случае с моделью глубокого обучения шаг извлечения признаков не нужен. Сеть извлекает эти признаки самостоятельно. Причем извлечение признаков возможно там, где человек выполнить подобную процедуру не может в принципе.
Действительно, даже если человек способен распознать тот или иной объект, он далеко не всегда может определить совокупность признаков, по которым он принял решение. Увидев ночью кошку или собаку, перебегающую дорогу даже при слабом освещении, мы, как правило, можем сказать, кто это был на самом деле, а вот сформулировать набор признаков, по которым мы смогли дать классификацию, крайне сложно.
Способность глубокого обучения в извлечении уникального набора признаков и демонстрация высочайшей производительности (более высокой, чем у человека) состоит в том, что глубокая нейронная сеть опирается при обучении на огромные объемы данных. Глубокие нейронные сети позволяют получить производительность, недостижимую для алгоритмов классического машинного обучения, но, как правило, требуют для этого наборы данных очень большого объема (рис. 2.3).
Рис. 2.3. Зависимость точности от объема данных для разных методов ИИ. Источник: Sumo logic
Многие достижения в области искусственного интеллекта за последние годы связаны именно с глубоким обучением. Наиболее точные модели на его основе требуют тысяч и даже миллионов элементов обучающих данных.
Для решения задач, возникающих в небольших компаниях с ограниченными финансами, такие большие наборы данных и такие вычислительные ресурсы для обучения сети недоступны. При этом следует отметить, что классические алгоритмы машинного обучения (которые мы упоминали выше) в ряде случаев не потеряли своей актуальности, и часто их применение бывает даже более эффективным (см. рис. 2.3).
Например, для того чтобы классифицировать на конвейере продукты разного цвета, не обязательно использовать глубокую нейросеть, решения можно добиться, используя простое пороговое цветовое выделение. Например, можно посчитать среднее значение цвета по всем пикселям изображения и различать по этому числу разные продукты.
Существует множество задач в области компьютерного зрения, таких как потоковая обработка видео, автоматическая сшивка панорам, оценка движения и идентификация движущихся объектов, которые иногда проще реализовать классическими методами.
Говоря об эволюции моделей на базе глубокого обучения, необходимо отметить, что здесь прорыв возможностей нейросетей по распознаванию изображений стал прямым результатом роста вычислительной мощности. Этот факт наглядно демонстрирует рис. 2.4, рассматривая эволюцию производительности аппаратного обеспечения и рост потребностей в вычислительных мощностях со стороны крупнейших нейросетевых проектов.
Рис. 2.4. Темпы роста вычислительной мощности для задач глубокого обучения и производительности оборудования. Источник: Документ “Вычислительные пределы глубокого обучения”.
На рисунке отмечено три периода – эра масштабирования Деннарда, эра многоядерных вычислений и эра глубокого обучения.
Как известно, рост производительности аппаратного обеспечения связывают с законом Мура. Удвоение производительности на ватт потребляемой мощности лежало в основе возможности периодичного обновления серверного оборудования примерно через каждые три-четыре года. Со временем стало наблюдаться так называемое замедление действия этого закона, показанное на схеме отставанием реальной кривой от прогнозируемой.
В районе 2004-2005 гг. закон масштабирования Деннарда перестал работать, поскольку при уменьшении размеров транзисторов токи утечки приводят к перегреву процессора и выходу его из строя. Невозможность наращивания тактовой частоты стимулировала альтернативный подход – разработку многоядерных процессоров. В соответствии, с чем следующий период назван “мультиядерная эра”.
В период с 1985 по 2009 год рост вычислительных требований наиболее крупных из используемых нейронных сетей увеличивался примерно пропорционально росту вычислительной мощности оборудования.
Поскольку рост вычислительной мощности в расчете на один доллар примерно повторяет рост вычислительной мощности в расчете на один чип, стоимость работы таких моделей была в значительной степени стабильной с течением времени примерно до 2009 года.
Переломным моментом стал перенос глубокого обучения на GPU, что дало ускорение в потреблении вычислительной мощности новыми моделями глубокого обучения в районе 2012 года, именно это, в частности, позволило осуществить важную победу Alexnet (о которой речь пойдет ниже) на конкурсе Imagenet в упомянутом году.
Таким образом, кривая роста потребностей в вычислительной мощности для крупнейших проектов глубокого обучения после примерно 2005 года изменялась с ускорением, а кривая роста производительности оборудования с замедлением.
Одно из направлений преодоления “замедления закона Мура” стимулировало подходы, основанные на увеличении количества серверов путем объединения их в кластеры. Другое исходило из того, что, если темпы увеличения производительности центрального процессора сервера замедляются, необходимо ускорить работу серверного оборудования путем создания специализированных процессоров. То есть вместо использования универсальных процессоров для обработки множества различных задач внедрить различные типы процессоров, адаптированных к потребностям конкретных задач. Так, одним из важнейших факторов для практического применения глубоких нейронных сетей стала доступность параллельных вычислений на графических ускорителях, о чем более подробно пойдет речь ниже.
Помимо проблем доступной вычислительной мощности следует отметить, что до 2005 года у специалистов не было достаточного количества данных, на основе которых можно было бы создать высокопроизводительные модели распознавания изображений. В 2009 году произошло объединение ряда американских институтов для создания массивного набора данных под названием ImageNet.
ImageNet – это проект по созданию и сопровождению массивной базы данных размеченных изображений из более чем 14 миллионов изображений 1000 классов, который предоставляет данные исследователям для обучения алгоритмов искусственного интеллекта.
С 2010 года в рамках ILSVRC проводятся соревнования, где конкурируют различные исследовательские группы по распознаванию объектов. На рис. 2.5 показаны данные результатов соревнований разработчиков ИИ в рамках данного проекта в период с 2010 по 2017 г.
Рис. 2.5. Динамика снижения ошибок в испытании “ILSVRC Top-5”.
На рис. 2.5 представлены данные в так называемой категории “Top-5 error”. Соревнование предполагает, что для ответа выбирается Топ-5 предсказаний, в которых сеть наиболее уверена, и если искомый ответ (класс) попал в эти пять предсказаний, то утверждается, что сеть не ошиблась, и напротив, если правильный класс в эти 5 предсказаний не попал, то, соответственно, считается, что сеть ошиблась.
Например, сеть распознает животное на картинке и выдает в порядке убывания вероятности следующие предположения: “ягуар, гепард, снежный леопард, египетская кошка” – если правильный ответ попадает в эти пять предположений, то этот ответ засчитывается как верный.
В 2011 году хорошим результатом считалась ошибка классификации на уровне 25%.
На рис. 2.5 выделяется 2012 год, который мы уже упомянули, говоря о новых возможностях доступного для обучения нейронной сети оборудования (см. рис. 2.4). В этом году исследователи из Университета Торонто использовали методы, основанные на глубоком обучении, чтобы установить новый уровень техники в конкурс ILSVRC – сверточная нейронная сеть AlexNet показала уникальный результат, достигнув ошибки на уровне 15,3% в “ILSVRCTOP-5”, что было более чем на 10,8 процентных пункта ниже, чем у проекта, занявшего второе место. Высокая производительность достигалась за счет глубины модели, что потребовало высокой производительности, которая достигалась благодаря использованию во время обучения графических процессоров (GPU).
Это было значимое событие поскольку ошибку удалось снизить радикально, показав результат, на который все остальные методы были неспособны. В последующие годы ошибка упала до нескольких процентов (рис. 2.5). В 2014 г. победителем конкурса ILSVRC стала сеть VGGNet. Модель, предложенная Симоняном и Зиссерманом, состояла из 19 слоев (138 млн параметров). В том же году GoogleNet, которая имела 22 слоя, еще снизила ошибку, а в 2015 году исследователи констатировали, что программы в определенных задачах проекта ILSVRC превзошли человеческие способности.
Нейронная сеть Resnet (Residual Networks), разработанная Microsoft Research, стала победителем конкурса ImageNet в 2015 году, она имела уже 152 слоя и демонстрировала ошибку на уровне 3,6%. В 2016 г. при использовании ансамбля моделей удалось показать результат с ошибкой в 3%, а в 2017 г. SENet снизила ошибку до уровня 2,25%.
После окончания конкурса в 2017 году исследователи продолжают использовать набор данных ImageNet для тестирования и разработки приложений компьютерного зрения. На рис. 2.6 показаны успехи систем, показывающих все более высокие результаты с течением времени. В отличие от рис. 2.5, где была показана ошибка, на рис. 2.6 показана точность в процентах “TOP-5 Accuracy”.
Рис. 2.6. Динамика показателей TOP-5 Accuracy в Imagenet-соревновании. Источник: AI Index Report 2021
В последние годы исследователи стали повышать производительность своих систем путем их предварительного обучения на дополнительных данных, в частности на фотографиях из социальных сетей. Предварительное обучение на этих наборах данных обеспечивает более эффективное использование данных ImageNet, что позволило в 2021 г. в категории “TOP-5 Accuracy” достигнуть точности на уровне 98,8% (ошибка всего в 1,2%).
Мы упомянули решающую роль архитектуры сверточных сетей в достижении высокой точности распознавания изображений. Учитывая важность данной технологии, рассмотрим принцип ее действия чуть подробнее.
Сверточные нейронные сети
Ранее мы отметили, что при решении задачи распознавания простого геометрического объекта мы можем описать правила его начертания (указать признаки, по которым его можно отличить). Однако, говоря о решении более сложной задачи (например, такой как необходимость отличить на фото кошку от собаки), описать признаки, по которым можно принять подобное решение, достаточно сложно. Животное может находиться в разных позах, может быть сфотографировано в разных ракурсах при разном освещении. Собака, если на фото видно лишь три лапы, не перестает быть собакой, при этом человеку достаточно мельком взглянуть на фото и определить, что это за животное, вне зависимости от того, видны на фото лапы и хвост или нет.
Как это делает человек?
Интересно заметить, что при мгновенном решении подобных задач человеку непросто перечислить, по каким именно признакам он отличил кошку от собаки на том или ином изображении. То есть найти признаки – это отдельная задача, которую необходимо формализовать для ИИ. Сверточная сеть обладает способностью самостоятельно учиться находить подобные признаки, составляя их на основании элементов изображения, причем решает она эту задачу более эффективно и экономично, чем многослойный персептрон.
Почему речь идет об экономичности?
Следует отметить, что обработка больших изображений по схеме, которую мы рассмотрели, говоря о работе многослойного персептрона рис. 1.28, когда на вход подаются значения каждого пикселя в виде входного вектора, требует весьма существенных вычислительных ресурсов. Например, если речь идет об обработке цветного изображения 100 на 100 пикселей, по схеме рис. 1.29, то число входных параметров (учитывая, что цвет обычно предоставляется значениями яркости по трем каналам Red Blue Green) составит 100 х 100 х 3, то есть 30 000. При изображении 1000 на 1000 точек мы получим уже три миллиона параметров. Одна из задач, стоявших перед разработчиками нейросетей для распознавания изображений, заключалась в получении экономичного решения, которое бы учитывало особенности представления информации в изображениях.
Большое количество параметров сети плохо не только с точки зрения вычислительной сложности, но и с точки зрения необходимого для обучения количества данных. Поскольку в процессе обучения параметры подстраиваются по обучающим примерам, то чем больше параметров необходимо подстроить – тем большее количество примеров необходимо. С точки зрения работы с изображениями это означает, что для распознавания кота необходимо показать нейросети изображения, на которых кот располагается во всех возможных позах во всех местоположениях внутри кадра. Распознавание же кота человеком устроено несколько по-другому – человек “сканирует” изображение, ища знакомые признаки (паттерны).
Известно, что изображения обладают свойством локальной связности, то есть если мы говорим, например, о том, что на фотографии изображен человек, то точки, принадлежащие отдельным элементам его лица, будут располагаться рядом, а не разбросаны по разным частям изображения. Когда мы двумерную матрицу, отображающую изображение, переводим в вектор, то информация о связности точек теряется (см. схему рис. 1.29). В отличие от персептрона, сверточные сети используют так называемые локальные рецепторные поля, которые обеспечивают локальную двумерную связность нейронов и за счет этого обеспечивают инвариантность к повороту, сдвигу и пространственным искажениям в изображении.
Описать подробно, как работает сверточная сеть в рамках данного курса (где мы планируем дать концептуальный обзор многих технологий), не предоставляется возможным, поэтому остановимся на описании только ключевых идей.
Идея сверточных сетей базируется на сведениях о некоторых механизмах зрительного восприятия у живых организмов. Согласно исследованиям Хьюбела и Визеля, проведенным еще в 1962 году, отдельные клетки нейронов в мозге реагируют при наличии в изображении краев определенной ориентации. Например, некоторые нейроны реагируют на вертикальные грани, другие на горизонтальные или диагональные.
Можно сказать, что именно идея наличия нейронов в зрительной коре, ответственных за поиск определенных характеристик изображения, лежит в основе сверточных нейронных сетей.
Существует достаточно много попыток художников проиллюстрировать механизм работы сверточных нейронных сетей (СНС), при этом каждая схема не идеальна в том смысле, что использует те или иные упрощенные аналогии. Мы приведем несколько подходов иллюстрирования работы сверточных сетей, которые интерпретируют идею на разном уровне абстракции и в сочетании дают возможность понять принцип работы СНС. Начнем с самого общего представления сверточной сети (рис. 2.7).
Рис. 2.7. Упрощенная схема работы сверточной нейронной сети.
На рис. 2.7 (в верхней части) показано, что сеть изначально обучается распознавать разные виды животных. Это стадия первичного обучения, когда сеть учится распознавать размеченные изображения, то есть такие, к которым прикреплены теги, несущие информацию о свойствах каждого объекта (принадлежность тому или иному классу животных). После того как сеть обучена, ей на распознавание дается новое неразмеченное изображение – как показано на рис. 2.7 – это изображение собаки, которое сеть должна отнести к одному из классов животных, которые она “знает”. Сверточная сеть состоит из нескольких скрытых слоев, так что при обработке изображения на этих слоях выявляются разные группы признаков – от наиболее простых до все более сложных. СНС может иметь десятки или даже сотни слоев, каждый из которых учится обнаруживать различные признаки. Выходные данные сверточного слоя используются в качестве входных данных для следующего слоя. В результате сеть дает заключение о том, к какому классу и с какой вероятностью относится исследуемое изображение.
Первые слои отвечают за распознавание простейших паттернов – уже упомянутых краев различной ориентации или определенной текстуры. Следующий слой отвечает за комбинирование паттернов предыдущего слоя – например, из двух наклонных штрихов он может составить “угол”, напоминающий ухо. Последующие слои учатся комбинировать результаты предыдущих слоев, тем самым образуя иерархию фрагментов различной степени содержательности.
Более подробно работу СНС рассмотрим на рис. 2.8. Здесь обозначены ранее упомянутые слои: сверточные (convolutional) слои, слои подвыборки или субдискретизации (subsampling, называемых также слоями пулинга / pooling) и слои “обычной” нейронной сети – персептрона.
Рис. 2.8. Схема работы сверточной нейронной сети
Сверточные сети получили свое название от “операции свертки”. Свертка в данном случае – это механизм выявления особенностей (признаков) из входных изображений. Свертка сохраняет пространственные отношения между пикселями, изучая особенности изображения, используя каждый раз небольшую площадь входных данных. Работа СНС заключается в том, что изображение “пропускается” через ряд сверточных (convolution), субдискретизирующих (subsampling) и полностью связанных (dense) слоев для получения на выходе результата ( рис. 2.8).
В рассматриваемом случае выходной сигнал является вероятностью принадлежности классу изображений, который наилучшим образом подходит к исследуемому изображению. На рис. 2.7 это показано как вероятность того, что исследуемое изображение принадлежит классу “собаки”, составляет 90%.
На рис. 2.9 представлен фрагмент распознаваемого изображения и показано положение фильтра размером 7х7 пикселов над рецептивным полем. Фильтр, показанный на рисунке (он же ядро или матрица весов 7х7), детектирует наличие на изображении кривой, которая задана четырьмя пикселами, расположенными вертикально, и одним по диагонали. На рисунке показан момент, в который матрица находится над элементом изображения, содержащего кривую, подобную искомой. Совпадение ненулевых значений пикселов на фильтре и на рецептивном поле выделено серым цветом.
Рис. 2.9. Пояснение к процедуре свертки.
В тот момент, когда фильтр расположен над рецептивным полем, как это показано на рисунке, перемноженные и просуммированные значения дадут в результате число 6600 (см. рис. 2.9).
Из рисунка также видно, что в момент, когда фильтр находился в положении левее на один пиксел, значение свертки равнялось нулю. При перемещении на один пиксел вправо от показанного на рисунке значение свертки увеличится, а потом, при дальнейшем перемещении фильтра вправо (когда он минует границу на исходном изображении), значение свертки опять станет нулевым. Таким образом, перемещая фильтр по всему изображению, мы можем найти все места на изображении, где содержится искомая кривая.
На выходе получается карта признаков, которая дает нам определенную информацию об изображении. Обычно за сверточным слоем следует слой субдискретизации (пулинга). Основная цель этого слоя – уменьшение пространственного размера свернутой карты признаков. Этот слой уменьшает количество параметров на входе, что позволяет снизить вычислительные затраты. Смысл этой операции в том, что, если мы обнаружили некоторый фрагмент изображения, нас перестает интересовать его точное положение с точностью до пиксела – поэтому мы можем заменить некоторую пиксельную окрестность (например, 2×2 или 3×3) одним значением, показывающим, был признак обнаружен в этой окрестности или нет. Как и в случае со сверточным слоем, операция пулинга прогоняет окно по всему полю, и (в зависимости от применяемого метода) на участке заданного размера выбирается максимальное значение (MaxPooling) или вычисляется среднее значение элементов на участке (Average pooling). На рис. 2.8 показан только один сверточный слой и один слой пулинга, на практике их могут быть десятки. На каждом следующем слое операция повторяется, в результате чего карта уменьшается в размере, при том, что количество каналов увеличивается. После прохождения всех слоев свертки и пулинга формируются сотни каналов с признаками, которые интерпретируются как самые абстрактные понятия, выявленные из исходного изображения.
На финальной стадии данные трансформируются в вектор и передаются на обычную полносвязную нейронную сеть (см. рис. 2.8). На выходе мы получаем ответ, в частности в представленном примере с вероятностью 90% сеть распознает изображение как принадлежащее классу “собака”.
Компьютерное зрение – это не только классификация
Ранее мы рассмотрели задачу классификации изображений, когда необходимо распознать и присвоить метку объекту (или множеству объектов), присутствующему на изображении, отвечая на вопрос “Что это?”. Со временем нейронные сети научились выполнять более сложные задачи, чем классификация изображений, например ИНС, научились выделять на фотографиях контуры объектов, даже если таких экземпляров несколько и они загораживают друг друга.
Сегментация объектов на изображениях подразумевает умение выполнять целый ряд операций (рис. 2.10).
Рис. 2.10. Основные элементы задачи распознавания объектов.
Локализация объектов подразумевает определение местоположения одного или нескольких объектов на изображении и построение прямоугольной рамки вокруг их границ. Обнаружение объектов объединяет локализацию и классификацию одного или нескольких объектов на изображении (рис. 2.11)
Рис. 2.11. Классификация, обнаружение, сегментация
Из рис. 2.11 (б) следует, что модель определила собак как один класс, а кошек как другой, что видно по цвету (тону) рамок. Еще одна задача компьютерного зрения – это сегментация, процесс идентификации похожих объектов, принадлежащих к одному классу, на уровне пикселей, то есть это задача отнесения каждого пикселя изображения к определенному классу: кошка, собака, человек, фон и т. д. (см. рис. 2.11 (в)). Сегментация является базовой технологией, например, для медицинских приложений (идентификация и выделение объектов на снимках) или для автономных автомобилей (идентификация и выделение объектов на дорогах).
Для обучения глубоких нейронных сетей пониманию городской среды используются специализированные наборы данных (датасеты), например такие, как Cityscapes.
Cityscapes фокусируется на семантической сегментации, включает набор городских уличных сцен из пятидесяти городов, сфотографированных в разное время года. Набор данных содержит около 5 тыс. изображений с аннотациями на уровне пикселей и около 20 тыс. частично маркированных изображений.
Существуют соревнования по оценке уровня точности сегментации объектов изображения на базе Cityscapes. Участники оцениваются на основе метрики (IoU – Intersection Over-Union), пересечение над объединением – это метрика для оценки точности модели, которая измеряет правильность предсказания ограничивающего объект контура. IoU – это число, которое количественно определяет степень перекрытия между двумя контурами: области “истины” и области предсказания (рис. 2.12).
Рис. 2.12. Иллюстрация смысла метрики IoU
Методика выглядит следующим образом: на обучающем изображении отмечают диапазон обнаруживаемого объекта, затем смотрят на диапазон результатов, полученных по используемому алгоритму, и берут отношение площади пересечения этих областей к площади их объединения. Таким образом, для идеально совпадающих областей получим IoU=1, а для полностью непересекающихся – 0.
В случае семантической сегментации изображения на основе нескольких классов, где на одном изображении могут быть объекты, принадлежащие к разным классам, каждому объекту необходимо присвоить свою метку и соответствующим образом обработать ее при вычислении IoU. Для этого можно найти среднее значение IoU, соответствующее различным классам, которое будет соответствовать фактической степени сходства. Это среднее значение обозначается как средний IoU (Mean IoU – mIoU).
Динамика совершенствования моделей на основе показателя mIoU (по данным соревнования на датасете Cityscape в решении задач семантической маркировки на уровне пикселя) представлена на рис. 2.13.
Технологии искусственного интеллекта позволяют не только распознавать существующие объекты, но и генерировать синтетические изображения новых, которые даже эксперты не могут отличить от фотографий реальных объектов нашего мира.
Новые возможности в данном направлении открыли так называемые генеративно-состязательные сети. Основа технологии была разработана Яном Гудфеллоу (Ian Goodfellow) в 2014 г. – в период, когда он являлся аспирантом Монреальского университета. Об этих сетях расскажем чуть подробнее.
Генеративно-состязательные сети
Генеративно-состязательные сети, или GAN (от Generative Adversarial Network) – это сравнительно молодая и быстро развивающаяся технология, которая поражает воображение возможностью генерировать фотореалистичные изображения несуществующих объектов, неотличимо похожих на реальные, которые невозможно определить как подделку.
“Фотографии несуществующих людей”, сгенерированные GAN-ами, обошли все конференции на тему GAN.
Генеративно-состязательные сети находят массу практических применений: их используют не только для создания изображений, но также для дополнения, восстановления и повышения качества изображений. Например, с помощью GAN можно перевести черно-белые фото и видеоматериалы в цветные, трансформировать летние изображения в зимние, дневные в ночные и так далее. Также GAN используют для улучшения технологий поиска, которые основаны на том, что отыскать конкретное изображение легче, если возможно создать другие синтетические изображения, похожие на него.
И заметим, что в данном разделе мы упоминаем лишь примеры из области работы с изображениями.
Прежде чем дать более полное толкование GAN, следует ввести понятие генеративных и дискриминативных моделей. Чтобы понять разницу в этих подходах, рассмотрим применение каждого для решения задач классификации (рис. 2.14).
Рис. 2.14. Сравнение дискриминативного и генеративного моделирования.
Дискриминативные классификаторы пытаются определить, какие признаки на входных данных наиболее полезны для классификации. Модель данного типа пытается определить границу, отделяющую один класс от другого. При этом дискриминативные модели классифицируют точки данных, не задаваясь целью определить, как эти точки были созданы.
Заметим, что мы уже рассматривали задачи классификации при описании метода опорных векторов и нейронных сетей и просто не упоминали, что получаемые модели относятся к дискриминативным. Хорошей иллюстрацией дискриминативного классификатора может служить рисунок 1.43, который мы рассматривали при описании метода SVM, где речь шла о нахождении гиперплоскости, оптимально разделяющей классы в N-мерном пространстве.
Для наглядного объяснения сути понятий генеративного и дискриминативного подходов и их различия можно обратиться к аналогии, которую приводят авторы работы. У отца двое детей. Ребенок “А” способен досконально изучать сущность предметов, ребенок “Б” может определять лишь различия между объектами.
В зоопарке дети видели львов и слонов. После посещения зоопарка отец показывает детям фото льва и спрашивает: “Кто это – лев или слон?” Ребенок “А” в ответ рисует на бумаге льва и слона, основываясь на том, что он видел в зоопарке, затем сравнивает оба изображения с животным на фото и принимает решение (генеративная модель). Ребенок “Б”, который только определяет различия, дает ответ на основе отличительных свойств каждого из животных, не прибегая к рисунку (дискриминативная модель).
То есть генеративные классификаторы пытаются моделировать класс. Когда этим классификаторам дается новое наблюдение, они пытаются предсказать, какой класс, скорее всего, породил данное наблюдение.
Как правило, дискриминативный классификатор более точен, поскольку пытается непосредственно решить задачу классификации, а не более общую задачу (в качестве промежуточного шага), как это делают генеративные.
Теперь дадим более общее определение. Генеративные модели основаны на использовании методов неконтролируемого машинного обучения, в процессе которого осуществляется автоматическое обнаружение и изучение закономерностей во входных данных таким образом, чтобы созданную модель можно было использовать для генерации новых примеров, которые, вероятно, могли быть получены из исходного набора данных.
Введя понятия дискриминативной и генеративной моделей, перейдем к определению генеративно-состязательной сети.
Генеративно-состязательная сеть – это метод глубокого обучения, построенный на соревновании двух нейронных сетей, двух моделей – генеративной и дискриминативной (рис. 2.15).
Рис. 2.15. Принцип работы генеративно-состязательной сети.
Генеративная сеть, или генератор (на рис. 2.15 обозначена как G), генерирует новые образцы, а вторая (сеть D – дискриминатор) их оценивает, то есть пытается различать настоящие образцы (“подлинные”) и поддельные (сгенерированные).
Сеть G принимает на вход случайный шум z, и ее задача – преобразовать шум таким образом, чтобы он приобрел структуру, подобную изображениям в наборе обучающих данных.
Сеть D на вход получает изображения х, при этом выходной сигнал D (x) представляет собой вероятность того, что x является настоящим реальным изображением (1 – стопроцентно реальное изображение; 0 – изображение реальным быть не может).
Сети G и D имеют противоположные цели – “создать образцы, которые не могут быть отбракованы” и “отбраковать образцы”. Эти две модели обучаются вместе в состязательной игре с нулевой суммой, пока модель дискриминатора не будет обманута примерно в половине случаев, что означает, что модель генератора создает правдоподобные примеры. По мере увеличения количества циклов обратной связи между противоборствующими сетями генератор производит все более качественные выходные данные, а дискриминатор все лучше распознает искусственно созданные данные.
Полученные сети могут применяться для создания реалистичных изображений. Для этого исключаем из схемы дискриминатор и с помощью генератора получаем необходимые изображения.
Далее разберемся более подробно, что делает каждый из упомянутых слоев.
Первым слоем в СНС является сверточный слой. Лучший способ объяснить работу свертки – это рассмотреть графическую интерпретацию процесса рис. 2.9. Здесь показано окно, которое перемещается по всем областям входного изображения. Это же окно показано и на рис. 2.8.
Упомянутое окно называют фильтром или ядром, а область, на которую оно в данный момент проецируется, – рецептивным полем. Фильтр (ядро) – это матрица небольшого размера с определенным набором параметров (весов). По мере того, как фильтр перемещается по исходному изображению, он производит операцию свертки, то есть поэлементно перемножает значения (веса) матрицы фильтра с исходными значениями пикселей рецепторного поля, получая число для каждого положения фильтра. На рис. 2.8 пунктирными линиями показан процесс преобразования матрицы рецептивного поля в точку – число (значение на сверточном поле). После серии последовательных перемещений фильтра по изображению получится массив чисел, который называется картой признаков.
Фильтр можно интерпретировать как графическое кодирование какого-либо признака, например, наличие вертикальной, горизонтальной или наклонной линии. Для исследования разных признаков используется множество фильтров, кодирующих разные типы графических элементов. Важно отметить, что ядра свертки не закладываются разработчиками, а формируются автоматически путем обучения сети с использованием метода обратного распространения ошибки. Фильтры на первом слое обрабатывают простейшие характеристики изображения и усложняются до характеристик, которые определяют объект целиком. Этот процесс мы уже абстрактно изобразили на рис. 2.7.
На рис. 2.8 показан один сверточный слой, на практике их могут быть десятки и даже сотни, и на каждом слое формируется несколько каналов (независимых карт признаков). На рис. 2.8 условно показано шесть каналов.
Для наглядного и упрощенного объяснения процесса (рис. 2.15) часто прибегают к аналогии, представляя один процесс в виде художника, пытающегося подделать картину, а другой в виде искусствоведа, который пытается отличить реальное изображение от сгенерированной фальшивки.
Представим, что в данной ситуации художник имеет возможность получать информацию о том, на каком основании искусствовед отличил картину-подделку от подлинника (не тот цвет, характер мазка и т. п.), и создавать улучшенную фальшивку. При многократном повторении данного цикла должен наступить момент, когда искусствовед не найдет отличий, – это и считается моментом появления изображения, неотличимого от оригинала.
Возвращаясь к состязательным сетям, можно сказать, что цель обучения модели G заключается в максимальном увеличении вероятности ошибки дискрминатора D. Использование этой техники и позволяет генерировать упомянутые нами ранее “фотографии несуществующих объектов”, которые человеческим глазом воспринимаются как натуральные фото реальных объектов. Например, известна попытка синтезировать фотографии кошек, которые вводят в заблуждение эксперта, считающего их естественными фото.
Можно сказать, что мы не можем отличить сгенерированные моделью объекты от реально существующих, поскольку модель смогла “понять” характер внешности того или иного объекта именно так, как его понимают люди.
GAN-ы – это еще один этап в эволюции возможностей техники в проявлении художественных способностей, переход от умения создать точные копии объекта до возможности передачи некоторой совокупности усредненных качеств объекта, позволяющих воссоздать новый уникальный объект, неотличимый от его реальных прототипов.
GAN-ы оказались очень эффективны в решении задачи генерации изображений. И, надо отметить, возможности моделей постоянно совершенствуются. Первоначально основным способом оценки качества подобных моделей являлась экспертная оценка сгенерированных объектов, проводимая специалистом, человеком в виде ответа на вопрос “Насколько синтетический объект соответствует реальному?”. Данный подход является субъективным, дорогим и малопригодным для обработки больших объемов данных. Со временем появились более объективные автоматические методы анализа характеристик генеративных моделей, которые позволяют количественно описать уровень качества создаваемых синтетических моделей и дают возможность аналитикам отслеживать процесс совершенствования моделей. Для оценки качества GAN используется ряд метрик, включая Fr?chet Inception Distance FID (начальное расстояние Фреше). Последняя метрика применима исключительно для оценки GAN, генерирующих изображения определенного формата. Метрика FID была введена в 2017 году для сравнения признаков сгенерированных и реальных изображений. Низкое значение FID соответствует изображениям высокого качества и наоборот. Добавление шума и искажений (снижение качества изображений) повышает FID.
На рис. 2.16 показан прогресс генеративных моделей за последние два года в создании синтетических изображений, проведенный по метрике FID на базе набора данных STL-10, который используется для проверки того, насколько эффективно системы генерируют изображения. STL-10 – это датасет для распознавания изображений, который состоит из 100 000 неразмеченных и 500 обучающих изображений и используется для разработки алгоритмов глубокого обучения и самообучения.
Рис. 2.16. Динамика показателя FID в соревновании STL-10 за период 2018-2020 г. Источник: AI Index Report 2021
Интересно отметить, что направления ИИ, связанные с обработкой изображений и естественного языка, в какой-то момент нашли пересечение.
В 2014 году одним из главных достижений в области ИИ стало появление технологии автоматического создания подписей к изображениям. К тому времени алгоритмы машинного обучения уже умели маркировать объекты на изображениях, и в дополнение к этому они научились создавать по изображению описания на естественном языке типа “На изображении девочка играет в мяч”.
Со временем появилась идея – нельзя ли выполнить обратную задачу и сгенерировать изображение по текстовому описанию. Для того чтобы продолжить разговор о взаимодействии языковых моделей ИИ и технологий генерации изображений, следует более подробно остановиться на эволюции технологий обработки естественного языка.