Перейти к содержанию

6.2.1.2 SuperVision и её особенности

Материал из Охота на электроовец: Большая Книга Искусственного Интеллекта

Результат лучших моделей распознавания изображений на соревнованиях ILSVRC в 2010 г. составлял 28,19% ошибок, в 2011 г. — 25,77% ошибок.

А в 2012 г. результат команды SuperVision Университета Торонто составил уже лишь 16,42% ошибок, с отрывом почти в десять процентных пунктов от второго места — команды ISI с результатом 26,17% ошибок[1], [2], [3].

Команда SuperVision (в названии игра слов: super vision — суперзрение, supervision — надзор; supervised learning — обучение с учителем) состояла из трёх человек. Первый из них — Алекс Крижевский, именно в его честь архитектура сети, использованная командой SuperVision, получила название AlexNet.

После победы SuperVision на ILSVRC-2012 корпорация Google поручила своему стажёру Войцеху Зарембе воссоздать сеть на основе публикации с описанием модели. Поскольку в Google существует традиция называть нейронные сети именами их создателей, реплика нейронной сети SuperVision изначально называлась WojNet. Позже Google удалось убедить Крижевского стать её сотрудником, после чего имя сети было изменено на AlexNet.

Хотя события, спровоцировавшие медийный бум в отношении глубокого обучения, и были непосредственно связаны с именем Крижевского, биографические сведения о нём весьма скудны. Известно, что родился он в/на Украине, а вырос в Канаде[4]. Я не могу даже поручиться, что его фамилия по-русски должна быть записана как «Крижевский», а не как «Крыжевский».

Вторым участником команды был Илья Суцкевер. Сегодня он известен как руководитель исследовательского отдела OpenAI, однако в 2012 г. это имя вряд ли что-то сказало бы неспециалистам.

И наконец, третьим участником команды был научный руководитель Суцкевера и Крижевского — Джеффри Хинтон собственной персоной.

Кстати говоря, команда Хинтона причастна и к созданию популярных и в наши дни баз данных изображений CIFAR-10 и CIFAR-100, созданных за счёт средств Канадского института передовых исследований (Canadian Institute for Advanced Research, CIFAR). Оба датасета, созданные Алексом Крижевским, Винодом Наиром и Джеффри Хинтоном, были опубликованы в 2009 г. и с тех пор пользуются большой популярностью в качестве стандартного набора изображений в задачах распознавания образов.

CIFAR-10 содержит 60 000 изображений, относящихся к 10 непересекающимся классам (6000 изображений на класс). В CIFAR-100 тоже 60 000 изображений, но уже 100 классов (по 600 изображений на класс). Оба датасета являются размеченными подмножествами набора данных Visual Dictionary, содержащего 80 млн крошечных (вписывающихся в рамку 32 × 32 пикселя) изображений[5].

Основой для создания датасетов CIFAR стал датасет «80 Million Tiny Images» [80 млн крошечных изображений], или просто Tiny Images, — набор данных, который содержит почти 80 млн цветных изображений размером 32 × 32 пикселя. Для его создания исследователи из MIT подготовили набор из 75 062 конкретных (не абстрактных) имён существительных, входящих в состав лексической базы WordNet, затем использовали каждое из этих существительных в качестве текста запроса по поиску изображений к семи различным системам — Altavista, Ask.com, Flickr, Cydral, Google, Picsearch и Webshots, после чего произвели уменьшение размеров полученных картинок[6].

В 2020 г. датасет Tiny Images был изъят его создателями из обращения после сообщений, что обученные на этом датасете модели демонстрировали проявления предвзятости в отношении расы и пола. Например, авторы статьи «Огромные датасеты: пиррова победа для компьютерного зрения?» (Large datasets: a pyrrhic win for computer vision?)[7] продемонстрировали, что многие популярные датасеты изображений, в частности Tiny Images, содержат в своей разметке оскорбительные слова (вроде печально известного N-word), подмножества изображений с метками child_molester [растлитель малолетних], rape_suspect [подозреваемый в изнасиловании], pedophile [педофил] и тому подобное, содержат фотографии конкретных людей, а некоторые попавшие в датасет изображения носят порнографический характер.

В ответ создатели Tiny Images попросили других исследователей не использовать этот датасет для дальнейших исследований и удалить свои копии набора данных[8], [9], [10], [11]. К счастью, датасеты CIFAR при создании подвергались дополнительной фильтрации, поэтому изъятие Tiny Images из оборота на них не повлияло.

Несколько слов о самой сети AlexNet. Сеть состоит из пяти двумерных (на самом деле сами тензоры при этом трёхмерные, поскольку к двум пространственным измерениям добавляется ещё наличие трёх цветовых каналов, однако число каналов в изображении равно числу каналов в ядрах свёртки, поэтому сама свёртка является двумерной) свёрточных и трёх полносвязных слоёв. Причём на выходах из первого, второго и пятого слоёв в целях сокращения размерности применяется максимизирующий пулинг[12].

Рис. 118. Схема сети AlexNet

Первая особенность AlexNet, отличающая её от разных версий LeNet, применявшихся на MNIST, заключается в том, что, поскольку сеть должна работать с цветными изображениями, все её свёрточные ядра не двумерные, а трёхмерные. Третьим измерением становится число цветовых каналов, в данном случае три — красный, зелёный и синий[13]. Вторая интересная особенность AlexNet — использование в качестве функции активации: f(x)=max(0,x). По-английски такая функция называется rectifier — выпрямитель.

Рис. 119. Различные функции активации

В наши дни для обозначения элемента нейронной сети, выполняющего подобное преобразование, обычно используют аббревиатуру ReLU (rectified linear unit, выпрямляющий линейный блок). Эта функция активации для нейронных сетей была впервые предложена[14] швейцарским исследователем Рихардом Ханлозером и его коллегами в статье, опубликованной в Nature в 2000 г. В 2011 г. Ксавье Глоро, Антуан Борд и Йошуа Бенджио продемонстрировали[15], что использование этой функции активации позволяет более эффективно обучать глубокие нейронные сети по сравнению с более популярными ранее логистической функцией и гиперболическим тангенсом. И в наши дни ReLU остаётся самой популярной функцией активации в глубоких нейронных сетях, хотя с тех пор было изобретено немало[16] интересных альтернатив, таких, например, как LReLU, CReLU, PReLU, SELU и даже ReLU-6.

Мне кажется, что замена логистической функции на ReLU концептуально более всего похожа на выпуск Илоном Маском автомобиля Tesla Cybertruck.

Среди радикальных преимуществ ReLU — вычислительная «дешевизна» этой активационной функции «в стиле панк». Бонусом к ней идёт простота имплементации этой операции на GPU.

Веса AlexNet были инициализированы белым гауссовским шумом, после чего сеть обучалась при помощи стохастического градиентного спуска на двух GPU Nvidia GTX 580 в течение примерно недели[17].

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

Казалось бы, почему просто не присваивать весам на старте нулевые значения? Ну или заполнять их случайным образом, не заботясь о параметрах распределения? Оказывается, соотношения значений весов в различных слоях существенно влияют на поведение градиентов при использовании метода обратного распространения ошибки, на их тенденцию исчезать или, напротив, «взрываться». Для того чтобы добиться наиболее благоприятной для последующего обучения ситуации с градиентами, было придумано несколько различных схем инициализации синаптических весов[18]. Например, инициализация Ксавье [Xavier] (она же инициализация Глоро [Glorot], поскольку названа в честь Ксавье Глоро)[19], инициализация Хе[20] (в честь Каймина Хе), а также инициализация Каймина [Kaiming] (как несложно догадаться, также в честь Каймина Хе, но, в отличие от Глоро, Хе удалось изобрести два разных способа инициализации, поэтому инициализация Хе — это не то же самое, что инициализация Каймина!)[21]. Разные способы инициализации являются оптимальными в зависимости от различных функций активации, применяемых в слоях нейронной сети[22]. В наши дни для инициализации синаптических весов искусственных нейронных сетей нередко используют и более «интеллектуальные» алгоритмы, такие, например, как предложенный в 2021 г. GradInit[23], который пересчитывает параметры распределения случайных значений в каждом из слоёв сети таким образом, чтобы первый шаг оптимизации привёл к максимальному улучшению значения целевой функции.

AlexNet содержит порядка 650 000 искусственных нейронов, примерно 630 млн соединений между ними и около 60 млн параметров[24], [25]. Рецептивный слой сети содержит 227 × 227 × 3 нейронов. Для обучения сети каждое изображение из базы ImageNet сначала было уменьшено таким образом, чтобы его меньшее измерение стало равно 256 пикселям, а затем из центра получившейся картинки вырезался фрагмент размером 256 × 256. Из полученного набора квадратных картинок при обучении сети на её вход передавался случайно выбранный фрагмент изображения размером 227 × 227 пикселей. Также для увеличения количества прецедентов применялось горизонтальное отражение изображений. В оригинальных слайдах Крижевского к его докладу, сделанному по результатам ILSVRC-2012, размер окна указан равным 224 × 224 пикселей, а также указано неправильное количество нейронов в первом свёрточном слое (253 440 вместо 290 400). По всей видимости, это стало следствием банальных опечаток, но в итоге в будущем внесло смятение в молодые умы начинающих специалистов в области глубокого обучения[26], [27].

Если когда-нибудь столкнётесь с чем-нибудь подобным, ни в коем случае не падайте духом!

Все изображения были также подвергнуты нормализации, для чего из каждой цветовой компоненты каждого пикселя картинки вычиталось среднее значение этой компоненты для всего датасета. Грубо говоря, авторы вычли из каждой конкретной картинки усреднённую картинку.

Для полносвязных слоёв сети при обучении применялась техника так называемого прореживания [dropout]. Суть этого метода заключается в том, что каждый из нейронов с некоторой вероятностью (в данном случае — 50%) отключается, то есть передаёт на выход нулевое значение. Эта методика позволяет обычно получать более устойчивые модели, а также избегать переобучения.

Переобучение [overfitting] — одна из типичных проблем, встречающихся при решении задач машинного обучения. Внешне ситуация выглядит следующим образом. По мере обучения вашей модели величина ошибки на обучающей выборке продолжает падать, однако на тестовой выборке начинает расти. Иногда говорят, что модель заучивает конкретные примеры из обучающей выборки вместо того, чтобы находить признаки, необходимые для успешной классификации. Причина переобучения обычно кроется в чрезмерном количестве параметров модели относительно имеющегося размера обучающей выборки. Исследованию проблемы переобучения посвящено множество работ, а для борьбы с ним, помимо прореживания, разработано множество методик, таких как, например, регуляризация (добавление к целевой функции некоторого штрафа за определённые свойства параметров модели: например, если за каждый ненулевой параметр модели начислять штраф, прямо пропорциональный абсолютному значению этого параметра, то такой метод называется «регуляризация L1», а если штраф пропорционален квадрату параметра, то это уже «регуляризация L2»); ранняя остановка (просто прекращаем обучение модели, если величина ошибки на тестовой выборке начала расти); аугментация (augmentation — увеличение, приумножение) обучающей выборки (дополняем обучающую выборку изображениями, повёрнутыми на некоторые случайные углы, дополненные некоторым шумом или изуродованные ещё каким-либо оригинальным образом, при условии что внесённые искажения не изменят метку класса) и так далее. Переобучению также посвящено множество мемов, популярных в сообществе специалистов по машинному обучению.

  1. * Команда SuperVision отправляла ещё одну версию сети, при обучении которой к обучающей выборке были добавлены изображения с прошлогодних соревнований, и эта модель смогла «выгадать» ещё чуть более процентного пункта, сократив ошибку до 15,32%, но поскольку некоторые исследователи считают это не совсем честным трюком, то в прессе часто приводят первое значение.
  2. Russakovsky O., Deng J., Su H., Krause J., Satheesh S., Ma S., Huang Z., Karpathy A., Khosla A., Bernstein M., Berg A. C., Fei-Fei L. (2015). ImageNet Large Scale Visual Recognition Challenge / International Journal of Computer Vision, Vol. 115, pp. 211–252 // https://doi.org/10.1007/s11263-015-0816-y
  3. Deng J., Berg A., Satheesh S., Su H., Khosla A., Fei-Fei L. (2012). Large Scale Visual Recognition Challenge 2012 (ILSVRC2012). Held in conjunction with PASCAL Visual Object Classes Challenge 2012 (VOC2012) // http://image-net.org/challenges/LSVRC/2012/index
  4. Gershgorn D. (2018). Rise of AlexNet: The inside story of how AI got good enough to dominate Silicon Valley / QUARTZ, June 18, 2018 // https://qz.com/1307091/the-inside-story-of-how-ai-got-good-enough-to-dominate-silicon-valley/
  5. Krizhevsky A. (2009). Learning Multiple Layers of Features from Tiny Images // https://www.cs.toronto.edu/~kriz/learning-features-2009-TR.pdf
  6. Torralba A., Fergus R., Freeman W. T. (2008). 80 million tiny images: a large data set for nonparametric object and scene recognition / IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 30, Iss. 11, pp. 1958—1970 // https://doi.org/10.1109/TPAMI.2008.128
  7. Prabhu V. U., Birhane A. (2020). Large image datasets: A pyrrhic win for computer vision? // https://arxiv.org/abs/2006.16923
  8. Torralba A., Fergus R., Freeman B. (2020). June 29th, 2020 // https://groups.csail.mit.edu/vision/TinyImages/
  9. Ustik G. (2020). MIT removes huge dataset that teaches AI systems to use racist, misogynistic slurs / TheNextWeb, July 1, 2020 // https://thenextweb.com/neural/2020/07/01/mit-removes-huge-dataset-that-teaches-ai-systems-to-use-racist-misogynistic-slurs/
  10. Gorey C. (2020). 80m images used to train AI pulled after researchers find string of racist terms / siliconrepublic, 13 Jul 2020 // https://www.siliconrepublic.com/machines/mit-database-racist-misogynist-discovery-abeba-birhane
  11. Quach K. (2020). MIT apologizes, permanently pulls offline huge dataset that taught AI systems to use racist, misogynistic slurs. Top uni takes action after El Reg highlights concerns by academics / The Register, 1 Jul 2020 // https://www.theregister.com/2020/07/01/mit_dataset_removed/
  12. Krizhevsky A., Sutskever I., Hinton G. E. (2012). ImageNet Classification with Deep Convolutional Neural Networks / Advances in Neural Information Processing Systems 25 (NIPS 2012) // https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
  13. Bai K. (2019). A Comprehensive Introduction to Different Types of Convolutions in Deep Learning: Towards intuitive understanding of convolutions through visualizations / Towards Data Science, Feb 12, 2019 // https://towardsdatascience.com/a-comprehensive-introduction-to-different-types-of-convolutions-in-deep-learning-669281e58215
  14. Hahnloser R. H. R., Sarpeshkar R., Mahowald M. A., Douglas R. J., Seung S. (2000). Digital selection and analogue amplification coexist in a cortex-inspired silicon circuit / Nature, Vol. 405, pp. 947—951 // https://doi.org/10.1038/35016072
  15. Glorot X., Bordes A., Bengio Y. (2011). Deep Sparse Rectifier Neural Networks. / Journal of Machine Learning Research 15 (2011), pp. 315-323 // https://proceedings.mlr.press/v15/glorot11a/glorot11a.pdf
  16. Liu D. (2017). A Practical Guide to ReLU: Start using and understanding ReLU without BS or fancy equations // https://medium.com/@danqing/a-practical-guide-to-relu-b83ca804f1f7
  17. Krizhevsky A., Sutskever I., Hinton G. E. (2012). ImageNet Classification with Deep Convolutional Neural Networks (Slides) // http://image-net.org/challenges/LSVRC/2012/supervision.pdf
  18. Godoy D. (2018). Hyper-parameters in Action! Part II — Weight Initializers / Towards Data Science, Jun 18, 2018 // https://towardsdatascience.com/hyper-parameters-in-action-part-ii-weight-initializers-35aee1a28404
  19. Glorot X., Bengio Y. (2010). Understanding the difficulty of training deep feedforward neural networks / Proceedings of the Thirteenth International Conference on Artificial Intelligence and Statistics, Journal of Machine Learning Research, Vol. 9, pp. 249—256 // http://www.jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf
  20. He K., Zhang X., Ren S., Sun J. (2015). Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification / Proceedings of the 2015 IEEE International Conference on Computer Vision (ICCV), pp. 1026—1034 // https://doi.org/10.1109/ICCV.2015.123
  21. Liang X. (2019). Understand Kaiming Initialization and Implementation Detail in PyTorch: Initialization Matters! Know how to set the fan_in and fan_out mode with kaiming_uniform_ function / Towards Data Science, Aug 7, 2019 // https://towardsdatascience.com/understand-kaiming-initialization-and-implementation-detail-in-pytorch-f7aa967e9138
  22. Godoy D. (2018). Hyper-parameters in Action! Part II — Weight Initializers / Towards Data Science, Jun 18, 2018 // https://towardsdatascience.com/hyper-parameters-in-action-part-ii-weight-initializers-35aee1a28404
  23. Zhu C., Ni R., Xu Z., Kong K., Huang W. R., Goldstein T. (2021). GradInit: Learning to Initialize Neural Networks for Stable and Efficient Training // https://arxiv.org/abs/2102.08098
  24. Krizhevsky A., Sutskever I., Hinton G. E. (2012). ImageNet Classification with Deep Convolutional Neural Networks / Advances in Neural Information Processing Systems 25 (NIPS 2012) // https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
  25. Krizhevsky A., Sutskever I., Hinton G. E. (2012). ImageNet Classification with Deep Convolutional Neural Networks (Slides) // http://image-net.org/challenges/LSVRC/2012/supervision.pdf
  26. Karpathy A. CS231n Convolutional Neural Networks for Visual Recognition (Stanford CS class) // http://cs231n.github.io/convolutional-networks/
  27. Girard R. (2015). How does Krizhevsky's '12 CNN get 253,440 neurons in the first layer? / StackExchange // https://stats.stackexchange.com/questions/132897/how-does-krizhevskys-12-cnn-get-253-440-neurons-in-the-first-layer
Loading comments...