Шрифт:
Интервал:
Закладка:
6.2.1.3 Предшественники AlexNet
Надо заметить, что AlexNet не была первой свёрточной сетью, для ускорения обучения которой использовались GPU. Более того, победа AlexNet на ILSVRC-2012 не была первой победой такой сети на соревнованиях по распознаванию изображений.
Немного расскажем о предшественниках сети AlexNet и их результатах.
Ещё в 2006 г. Кумар Челлапилла, Сидд Пьюри и Патрис Симар добились примерно четырёхкратного ускорения обучения сети по сравнению с CPU при помощи видеокарты Nvidia GeForce 7800 Ultra. Правда, применение для CPU библиотеки BLAS (basic linear algebra subroutines, базовые подпрограммы линейной алгебры), содержащей оптимизированные на низком уровне процедуры для выполнения операций линейной алгебры, позволяло достичь примерно троекратного прироста скорости и на CPU.
Эксперименты производились на датасетах MNIST и Latin. Последний содержал изображения 94 символов (заглавные и строчные буквы латинского алфавита, цифры, скобки, знаки препинания и арифметических операций, а также некоторые используемые в англоязычных текстах символы). В ходе экспериментов использовались различные размеры изображений, подаваемых на вход сети: 29 × 29, 37 × 37, 61 × 61[1863].
В 2009 г. свет увидела работа немецких учёных Фабиана Нассе, Гернота Финка (оба из Технического университета Дортмунда) и Кристиана Турау (из Фраунгоферовского института интеллектуального анализа и информационных систем, Fraunhofer-Institut für Intelligente Analyse- und Informationssysteme, Fraunhofer IAIS) под названием «Определение лиц при помощи свёрточных нейронных сетей на базе GPU» (Face Detection Using GPU-Based Convolutional Neural Networks). В этой работе авторы использовали приближение гиперболического тангенса при помощи рядов Тейлора и в итоге, применив видеокарту Nvidia GeForce 8800 GT, смогли достичь ускорения обучения по сравнению с CPU в 11–13 раз. Эксперименты были поставлены на собственном датасете, содержавшем 12 000 изображений (на половине из них присутствовали лица). На вход сети подавались изображения размером 32 × 32 пикселя[1864].
Но наибольший успех до команды SuperVision показали Дэн Чирешан со своими коллегами из уже знакомой нам группы Юргена Шмидхубера в лаборатории искусственного интеллекта швейцарского института IDSIA, которые смогли к 2011 г. достичь 60-кратного выигрыша в скорости по сравнению с CPU. С мая по сентябрь 2012 г. их модель одержала победу как минимум в четырёх конкурсах по распознаванию изображений. Кроме того, Чирешану и его коллегам удалось значительно улучшить описанные на тот момент в научной прессе рекордные результаты в точности распознавания для нескольких датасетов изображений. Именно в 2011 г. на соревнованиях по распознаванию знаков дорожного движения, проводившихся в рамках ежегодной Международной объединённой конференции по нейронным сетям (International Joint Conference on Neural Networks), модель Чирешана и его коллег не только стала победителем, но и продемонстрировала сверхчеловеческую точность распознавания (ошибка в 0,56% против 1,16% в среднем для людей). Их модель представляла собой ансамбль из 25 свёрточных сетей, каждая из которых имела два свёрточных слоя с максимизирующим пулингом, а также два полносвязных слоя[1865].
При обучении модели Чирешан и его коллеги осуществляли аугментацию обучающей выборки, используя небольшие изменения масштаба, повороты изображений и различные типы их нормализации (аналогично участникам команды SuperVision на ILSVRC-2012). Для обучения применялись четыре видеокарты Nvidia GTX 580.
Использованная на соревнованиях обучающая выборка содержала 39 209 изображений, тестовая — 12 630. Все изображения были поделены на 43 непересекающихся класса (соответствующие каждому из знаков дорожного движения). Размер картинок варьировался от 15 × 15 до 250 × 250 пикселей, причём картинки не всегда были квадратными и не всегда дорожный знак находился в центре изображения. Поэтому для подачи изображений на вход сети Чирешан и его коллеги привели все картинки к размеру 48 × 48 пикселей.
Использованная архитектура имела приблизительно 1,5 млн параметров, половина которых приходилась на два последних полносвязных слоя. Обучение всего ансамбля сетей на четырёх графических картах продолжалось 37 часов[1866], [1867].
6.2.1.4 Последователи AlexNet. GoogLeNet как новый уровень
Неудивительно, что победителем ILSVRC-2013 также стала свёрточная нейронная сеть. Обычно её называют ZFNet, но это не совсем точно.
Сеть была разработана доктором Робом Фергюсом из Нью-Йоркского университета и его тогдашним аспирантом Мэтью Зейлером. В своей статье авторы благодарят также Яна Лекуна, который, будучи профессором Нью-Йоркского университета, участвовал в обсуждениях при работе над моделью. Окончательная версия сети, показавшая наилучший результат на соревнованиях, называется Clarifai — по имени стартапа, основанного Зейлером. Но всё-таки чаще эту модель называют ZFNet (по первым буквам фамилий её создателей).
Итоговая величина ошибки Clarifai составила 11,74% (11,20% с привлечением дополнительных данных для обучения, не принадлежащих к обучающей выборке)[1868]. Модель представляла собой ансамбль из шести сетей, по архитектуре идентичных AlexNet[1869].
В 2014 г. авторам сети GoogLeNet (другое её название — Inception V1; это название сеть получила в честь одноимённого научно-фантастического фильма) удалось уменьшить величину ошибки до дьявольски низкого значения в 6,66%[1870].
Так или иначе, показатели сетей приблизились к человеческому уровню, который организаторы конкурса теперь были вынуждены оценить. Сделать это оказалось не так просто. Для того чтобы побить точность GoogLeNet, потребовалось потратить некоторое время на обучение персонала. После нескольких дней обучения человек-эксперт (им был Андрей Карпатый, ныне — директор по ИИ и зрению автопилота в Tesla) смог достичь уровня ошибки в 5,1%. Ансамбль экспертов продемонстрировал уровень ошибки в 3,6%[1871]. Трудно признать эти оценки достаточно надёжными, однако именно их принято в наши дни использовать для оценки точности людей при распознавании картинок ImageNet.
GoogLeNet — свёрточная сеть, в названии которой явно читается отсылка к LeNet. Основой сети стал новый элемент, получивший название «модуль основания» [inception module] (далее в тексте я буду писать «модуль inception», поскольку «модуль основания» по-русски никто не говорит). Изюминкой модуля inception является использование свёртки с ядром 1 × 1 — для снижения размерности выходов предшествующих слоёв. То есть к пространству признаков размерностью X × Y × Z применяется свёртка с ядром 1 × 1 с размером фильтра 1 × 1 × Z, дающая слой размерностью X × Y × 1. Совершив N таких свёрток (с разными