AlexNet — это название архитектуры сверточной нейронной сети (CNN), разработанной Алексом Крижевским в сотрудничестве с Ильей Суцкевером и Джеффри Хинтоном , который был научным руководителем Крижевского по докторской диссертации в Университете Торонто . [ когда? ] Она имела 60 миллионов параметров и 650 000 нейронов . [1]
Основным результатом оригинальной статьи было то, что глубина модели имела решающее значение для ее высокой производительности, что было связано с большими вычислительными затратами, но стало возможным благодаря использованию графических процессоров (GPU) во время обучения. [1]
Эти трое сформировали команду SuperVision [2] и представили AlexNet на конкурсе ImageNet Large Scale Visual Recognition Challenge 30 сентября 2012 года [3]. Сеть достигла ошибки среди пяти лучших сетей в размере 15,3%, что на 10,8 процентных пункта лучше, чем у занявшего второе место.
Архитектура оказала влияние на многие последующие работы в области глубокого обучения , особенно в области применения нейронных сетей для компьютерного зрения .
AlexNet содержит восемь слоев : первые пять являются сверточным слоем, за некоторыми из них следуют слои max-pooling , а последние три являются полностью связанными слоями. Сеть, за исключением последнего слоя, разделена на две копии, каждая из которых работает на одном GPU. [1] Вся структура может быть записана как
(CNN → RN → MP)² → (CNN³ → MP) → (FC → DO)² → Линейный → softmax
где
Он использовал ненасыщающую функцию активации ReLU , которая обучалась лучше, чем tanh и sigmoid . [1]
Поскольку сеть не помещалась на одном графическом процессоре Nvidia GTX580 3 ГБ, она была разделена на две половины, по одной на каждом графическом процессоре. [1] : Раздел 3.2
Обучающий набор содержал 1,2 миллиона изображений. Обучение проводилось в течение 90 эпох, что заняло от пяти до шести дней на двух графических процессорах NVIDIA GTX 580 3 ГБ [1], которые имеют теоретическую производительность 1,581 TFLOPS в float32 и отпускную цену 500 долларов США. [4]
Он был обучен с градиентным спуском импульса с размером партии 128 примеров, импульсом 0,9 и снижением веса 0,0005. Скорость обучения начиналась с и вручную уменьшалась в 10 раз всякий раз, когда ошибка проверки переставала уменьшаться. Она уменьшалась три раза во время обучения, заканчиваясь на .
Он использовал две формы дополнения данных , обе вычислялись «на лету» на центральном процессоре, таким образом, «вычислительно не требуя»:
Он использовал локальную нормализацию отклика и регуляризацию выпадения с вероятностью выпадения 0,5.
Все веса были инициализированы как гауссовы со средним значением 0 и стандартным отклонением 0,01. Смещения в сверточных слоях 2, 4, 5 и всех полностью связанных слоях были инициализированы константой 1, чтобы избежать проблемы умирающего ReLU .
AlexNet — это сверточная нейронная сеть. В 1980 году Кунихико Фукусима предложил раннюю CNN, названную неокогнитроном . [5] [6] Она была обучена с помощью алгоритма неконтролируемого обучения . LeNet-5 ( Yann LeCun et al., 1989) [7] [8] была обучена с помощью контролируемого обучения с алгоритмом обратного распространения , с архитектурой, которая по сути такая же, как AlexNet в небольшом масштабе. (J. Weng, 1993) добавил max-pooling . [9] [10]
В 2000-х годах, по мере совершенствования аппаратного обеспечения GPU , некоторые исследователи адаптировали их для вычислений общего назначения , включая обучение нейронных сетей. (K. Chellapilla et al., 2006) обучили CNN на GPU, которая была в 4 раза быстрее, чем эквивалентная реализация на CPU. [11] Глубокая CNN (Dan Cireșan et al. , 2011) в IDSIA была в 60 раз быстрее, чем эквивалентная реализация на CPU. [12] В период с 15 мая 2011 года по 10 сентября 2012 года их CNN выиграли четыре конкурса изображений и достигли SOTA для нескольких баз данных изображений . [13] [14] [15] Согласно статье AlexNet, [1] более ранняя сеть Cireșan «несколько похожа». Обе были написаны с использованием CUDA для работы на GPU .
В период с 1990 по 2010 год нейронные сети и не были лучше других методов машинного обучения, таких как ядерная регрессия , машины опорных векторов , AdaBoost , структурированная оценка и т. д. [16] . В частности, для компьютерного зрения большой прогресс был достигнут благодаря ручному проектированию признаков , например , признаков SIFT , признаков SURF , признаков HoG , мешков визуальных слов и т. д. В компьютерном зрении меньшинство придерживалось мнения, что признаки могут быть получены непосредственно из данных, и это положение стало доминирующим после AlexNet. [17]
В 2011 году Джеффри Хинтон начал обращаться к коллегам с вопросом «Что мне нужно сделать, чтобы убедить вас, что нейронные сети — это будущее?», и Джитендра Малик , скептически относящийся к нейронным сетям, порекомендовал задачу PASCAL Visual Object Classes. Хинтон сказал, что его набор данных слишком мал, поэтому Малик порекомендовал ему задачу ImageNet. [18]
Хотя AlexNet и LeNet по сути имеют одинаковую конструкцию и алгоритм, AlexNet намного больше LeNet и обучалась на гораздо большем наборе данных на гораздо более быстром оборудовании. За 20 лет и данные, и вычисления стали доступны по низкой цене. [17]
AlexNet очень влиятельна, что привело к многочисленным последующим работам по использованию CNN для компьютерного зрения и использованию GPU для ускорения глубокого обучения. По состоянию на середину 2024 года статья AlexNet была процитирована более 157 000 раз, согласно Google Scholar. [19]
На момент публикации не было фреймворка для обучения и вывода нейронных сетей на основе GPU. Кодовая база для AlexNet была выпущена под лицензией BSD и широко использовалась в исследованиях нейронных сетей в течение нескольких последующих лет. [20] [17]
В одном направлении последующие работы были направлены на обучение все более глубоких CNN, которые достигают все более высокой производительности на ImageNet. В этом направлении исследований находятся GoogLeNet (2014), VGGNet (2014), Highway network (2015) и ResNet (2015). Другое направление было направлено на воспроизведение производительности AlexNet с меньшими затратами. В этом направлении исследований находятся SqueezeNet (2016), MobileNet (2017), EfficientNet (2019).