Охота на электроовец. Большая книга искусственного интеллекта
Шрифт:
Неокогнитрон представлял собой развитие идей, лежавших в основе когнитрона. Причём источником вдохновения для Фукусимы стали во многом работы Хьюбела и Визеля, ссылки на работы которых сопровождают рассуждения создателя неокогнитрона о принципах организации синаптических связей нейронной сети. Главной проблемой, которую решал Фукусима, стала способность сети реагировать на стимулы, предъявляемые с различным горизонтальным и вертикальным смещением. Стремясь добиться инвариантного (неизменного) относительно сдвига стимула ответа сети, Фукусима пришёл к выводу, что каждый слой сети можно составить из нейронов, использующих для своего набора входных синапсов один и тот же набор значений (весов). Такие нейроны будут похожи на клетки, которые в экспериментах Хьюбела и Визеля реагировали на предъявление глазу специфических геометрических структур. Вне зависимости от того, в каком именно участке слоя окажется искомая структура, один из нейронов, в соединимой области которого она окажется, среагирует на её появление. При этом реакция нейронов слоя будет единообразной, поскольку, благодаря общему набору входных синаптических весов для каждого из нейронов, их ответ на предъявление одной и той же геометрической структуры на входе будет одинаковым. С математической точки зрения операция, производимая таким слоем, называется операцией взаимной корреляции (или кросс-корреляции), применяемой к двум матрицам: матрице входных сигналов и «ядру» — вышеупомянутому набору значений входных синапсов, одинаковых для всех нейронов слоя (если строго, то это матрица синаптических весов, размерность которой равна размеру соединимой области нейронов, а её элементами являются значения данных синаптических весов). Из-за того что в названии «свёрточная сеть» присутствует слово «свёртка», возникла путаница: многие авторы вполне разумно предполагают, что
1470
Draelos R. (2019). Convolution vs. Cross-Correlation / GLASS BOX: Machine Learning and Medicine, by Rachel Lea Ballantyne Draelos, July 26, 2019 // https://glassboxmedicine.com/2019/07/26/convolution-vs-cross-correlation/
1471
Rosebrock A. (2021). Convolution and cross-correlation in neural networks / pyimagesearch, May 14, 2021 // https://www.pyimagesearch.com/2021/05/14/convolution-and-cross-correlation-in-neural-networks/
Слой, составленный из описанных выше нейронов, в наши дни принято называть свёрточным слоем, а сеть с таким слоем — свёрточной сетью. Благодаря наличию в неокогнитроне такого способа соединения нейронов, по современной классификации его можно считать свёрточной нейронной сетью, хотя сам Фукусима в то время не употреблял этот термин и не использовал понятие свёртки, а сами свёрточные слои неокогнитрона получили у автора название S– слоёв.
По сравнению с полносвязным слоем или слоем когнитрона свёрточный слой описывается сравнительно небольшим числом параметров, что снижает вычислительные затраты на обучение. Фукусима сделал ещё один важный шаг вперёд, когда пришёл к выводу, что свёрточный слой может быть основан не на одном, а на нескольких ядрах свёртки. Каждому из ядер свёртки соответствует отдельная «плоскость» [cell-plane] следующего слоя сети. Выход свёрточного слоя сегодня принято называть «картой признаков» [feature map]. Карта признаков представляет собой трёхмерный массив (или, как модно говорить в наши дни, трёхмерный тензор), составленный из плоскостей для каждого из ядер свёртки (сейчас вместо термина «плоскость» чаще используется термин «канал»).
Если сеть составить только из описанных выше свёрточных слоёв, то каждый следующий слой будет содержать всё большее и большее количество нейронов, ведь входу каждого свёрточного слоя размером w x h нейронов (где w — ширина, а h — высота слоя) будет соответствовать выход размером w x h x d (где d — количество каналов карты признаков). Понимая это, Фукусима использовал также специальные слои сети для понижения размерности данных, так называемые C– слои. Каждый C– нейрон, так же как и S– нейрон, получал сигналы от нейронов в квадратной по форме зоне предыдущего слоя, однако эти соединимые области C– нейронов не пересекались между собой. Далее C– нейрон усреднял сигналы, полученные им на вход, и передавал в следующий слой полученное усреднённое значение. Производимая им операция напоминает понижение размера картинки в графическом редакторе: уменьшая картинку размером 100 x 100 пикселей до размера 50 x 50, графический редактор обычно просто разделяет исходную картинку на квадратики размером 2 x 2 пикселя, усредняет цвет внутри квадратика и этот усреднённый цвет делает цветом соответствующего пикселя результирующего изображения. Сегодня такие слои называют слоями «пулинга» [pooling] или «субдискретизации» [subsampling]. Вместо функции усреднения в наши дни чаще всего используют операцию «максимизирующего пулинга» [max pooling], при котором C– нейрон не усредняет входные значения, а отбирает среди них максимальное, а разновидность пулинга, использованная Фукусимой, сегодня называется «усредняющим пулингом» [mean pooling].
На момент изобретения неокогнитрона Фукусима не был знаком с методом обратного распространения ошибки. Фокус его исследований был сосредоточен на собственном методе обучения сети без учителя — и это, конечно, серьёзно ограничивало возможности новой модели.
5.2.4.3 Ян Лекун: внедрение метода обратного распространения ошибки для обучения свёрточных нейронных сетей
Первые применения метода обратного распространения ошибки для обучения свёрточных нейронных сетей относятся ко второй половине 1980-х. В области компьютерного зрения первым исследователем, которому удалось совместить две решающие новации в одной модели, стал франко-американский исследователь Ян Лекун, в ту пору являвшийся сотрудником Исследовательского подразделения адаптивных систем в AT&T Bell Laboratories в Холмделе (Нью-Джерси, США). Именно здесь Лекун разработал ряд новых моделей машинного обучения, созданных под влиянием данных об устройстве биологических систем. К числу этих моделей относились и свёрточные нейронные сети, постепенное совершенствование которых в последующем и привело к прорыву в области компьютерного зрения. В 2018 г. вклад Яна Лекуна в дело революции глубокого обучения был отмечен престижной премией Тьюринга, которую Лекун разделил с Джеффри Хинтоном и Йошуа Бенджио. Премия была вручена с формулировкой «За концептуальные и инженерные прорывы, которые сделали глубокие нейронные сети критически важным компонентом вычислений» [1472] .
1472
Yann LeCun (2018) / Heidelberg Laureate Forum // https://www.heidelberg-laureate-forum.org/laureate/yann-lecun.html
Ян Лекун родился в коммуне Суази-су-Монморанси, в 15 км от Парижа. Его фамилия в прошлом писалась раздельно — Le Cun — и произошла от старой бретонской формы Le Cunff, что буквально означало «хороший парень» [1473] . В англоязычных источниках фамилия Лекун обычно записывается с заглавной буквой C в середине — LeCun, но русский язык не любит таких вольностей, поэтому в русскоязычных источниках он стал просто Лекуном. Окончив Высшую инженерную школу (Ecole Superieure d’Ingenieurs en Electrotechnique et Electronique, ESIEE) в Париже, Лекун в 1983 г. поступил на программу углубленного обучения [d’etudes approfondies] в Университет Пьера и Марии Кюри (Universite Pierre et Marie Curie), где в 1987 г. получил степень доктора философии по информатике. Его диссертация была посвящена разработке одной из ранних разновидностей метода обратного распространения ошибки. С 1987 по 1988 г. Лекун был постдокторантом в Университете Торонто, где работал под началом Джеффри Хинтона, после чего устроился на работу в AT&T Bell Laboratories [1474] . Лекун так в шутку формулирует своё кредо: «Я воплощаю в себе всё, что так раздражает религиозных правых: учёный, атеист, левый (по американским меркам, по крайней мере), профессор университета и француз» [1475] .
1473
Lecun Y. Fun stuff / Yann LeCun home page // http://yann.lecun.com/ex/fun/
1474
Lecun Y. (2014). Biographical Sketch / Yann LeCun home page // http://yann.lecun.com/ex/bio.html
1475
Lecun Y. Fun stuff / Yann LeCun home page // http://yann.lecun.com/ex/fun/
Руководителем подразделения, в котором оказался Лекун, был Лоуренс Джекел — один из разработчиков системы для распознавания цифр в рукописных почтовых индексах. Основой этой системы, воплощённой в виде отдельной специализированной СБИС, был «экстрактор признаков», напоминавший неокогнитрон, свёрточные ядра которого (размером 7 x 7) подбирались создателями
1476
Denker J. S., Gardner W. R., Graf H. P., Henderson D., Howard R. E., Hubbard W., Jackel L. D., Baird H. S., Guyon I. (1989). Neural network recognizer for hand-written zip code digits / Advances in neural information processing systems, 1-Dec-1989, pp. 323—331 // https://dl.acm.org/doi/10.5555/89851.89898
Лекун совершил ещё один шаг вперёд — он сделал все веса нейронной сети изменяемыми в процессе обучения, отказавшись от вручную подобранных свёрточных ядер, и применил для вычисления синаптических весов метод стохастического градиентного спуска, основанный на методе обратного распространения ошибки. В результате уровень ошибки на тестовой выборке снизился ещё на один процентный пункт — до 5% [1477] .
В 1998 г. в результате исследований Лекуна, Леона Ботту, Йошуа Бенджио и Патрика Хаффнера увидела свет архитектура свёрточной нейронной сети LeNet-5, ставшая классической. Эта сеть состоит из трёх свёрточных слоёв, перемежаемых слоями максимизирующего пулинга, и завершается на выходе двумя полносвязными слоями. Данная сеть оказалась способна распознавать рукописные цифры размером 32 x 32 пикселя, достигнув уровня ошибки в 0,8% на тестовой выборке при использовании датасета MNIST [1478] .
1477
LeCun Y., Boser B., Denker J. S., Henderson D., Howard R. E., Hubbard W., Jackel L. D. (1989). Backpropagation Applied to Handwritten Zip Code Recognition; AT&T Bell Laboratories // http://yann.lecun.com/exdb/publis/pdf/lecun-89e.pdf
1478
LeCun Y., Bottou L., Bengio Y., Haffner P. (1998). Gradient-based learning applied to document recognition / Proceedings of the IEEE. 86 (11): 2278–2324 // https://doi:10.1109/5.726791
Основным «классическим» конкурентом LeNet-5 на тот момент был метод опорных векторов [support vector machines или support vector method, SVM], а точнее — его разновидность под названием V-SVM, разработанная Бернхардом Шёлькопфом и его коллегами. В основе SVM лежит идея построения оптимальной разделяющей гиперплоскости, предложенная в 1963 г. Владимиром Вапником и Алексеем Червоненкисом. В 1992 г. Бернхард Босер, Изабель Гийон и Вапник придумали способ создания нелинейного классификатора за счёт объединения этой идеи с идеей перехода от скалярных произведений к произвольным ядрам [1479] . Последняя идея известна в наши дни под названием kernel trick, она была предложена впервые Марком Айзерманом, Эммануилом Браверманом и Львом Розоноэром для метода потенциальных функций [1480] . Звезда SVM взошла в середине 1990-х гг. — новый метод обучения с учителем, благодаря своей математической изящности и впечатляющим результатам, пленил сердца многих специалистов в области машинного обучения. Вообще вклад Вапника и Червоненкиса в математический фундамент современной теории машинного обучения трудно переоценить. Например, ими был разработан способ оценки выразительной силы (иногда также употребляют термины: ёмкость, сложность, богатство, гибкость) моделей-классификаторов на основе так называемой комбинаторной размерности, более известной в наши дни под названием размерность Вапника — Червоненкиса или VC-размерность [1481] . Лучший результат метода V-SVM (модификация SVM) на MNIST в 1998 г. совпадал с результатом Лекуна, обеспечивая те же 0,8% ошибки на тестовой выборке. Однако объём вычислений, необходимый V-SVM для достижения такой точности, многократно превышал [1482] объём вычислений, необходимый LeNet-5. В очередной раз научное сообщество было поставлено перед фактом: нейронные сети, как ту стюардессу из анекдота, не стоило хоронить так быстро.
1479
Guyon I., Boser B., Vapnik V. (1993). Automatic Capacity Tuning of Very Large VC-dimension Classifers / Advances in Neural Information Processing Systems // https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.17.7215
1480
Айзерман М. А., Браверман Э. М., Розоноэр Л. И. (1964). Теоретические основы метода потенциальных функций в задаче об обучении автоматов разделению входных ситуаций на классы // Автоматика и телемеханика. 1964. №6. с. 917-936.
1481
Вапник В. Н., Червоненкис А. Я. Теория распознавания образов (статистические проблемы обучения). Москва: Наука, 1974 // https://books.google.ru/books?id=LAGzAAAAIAAJ
1482
LeCun Y., Bottou L., Bengio Y., Haffner P. (1998). Gradient-based learning applied to document recognition / Proceedings of the IEEE. 86 (11): 2278–2324 // https://doi:10.1109/5.726791
Свёрточные нейронные сети Лекуна не были первой моделью, воплощающей в себе принцип построения глубоких нейронных сетей на основе параметризованных слоёв с регулярной структурой и обучающейся с применением метода обратного распространения ошибки. Первой такой моделью стала нейронная сеть с временной задержкой (Time delay neural network, TDNN), впервые представленная научной общественности в 1987 г. Её создатели — Александр Вайбель, Тосиюки Ханазава, Киёхиро Сикано, Кевин Лэнг и вездесущий Джеффри Хинтон — использовали эту архитектуру в задачах распознавания речи. Входным представлением для TDNN является спектрограмма анализируемого звука, к которой последовательно применяются операции свёртки вдоль осей времени и частотных диапазонов. Именно для TDNN в 1990 г. Коуити Ямагути и его коллеги впервые предложили использовать максимизирующий пулинг. Целью этой работы было создание системы для качественного распознавания речи без привязки к конкретному голосу. TDNN-сети нередко применяются для решения задач в области обработки речи и в наши дни. По всей видимости, в силу того, что TDNN-сети использовались для обработки звука, а не изображений, про них иногда забывают, рассуждая об истории свёрточных нейронных сетей. По современной классификации TDNN-сети считаются свёрточными, что создаёт видимый парадокс: TDNN-сети были свёрточными сетями ещё до того, как
Конструктор, из которого современные разработчики собирают свёрточные нейронные сети, за последние два десятилетия обзавёлся множеством новых деталей. Различными могут быть размеры и формы (форма задаётся за счёт введения маски для ядра свёртки) свёрточных ядер, вертикальный и горизонтальный шаг [stride] между ними (а также шаги в других измерениях, если используется свёртка с большим числом измерений), поле свёртки может выходить за границы слоя с различным размером дополняющего [padding] поля. Сеть может включать в себя разное количество слоёв свёртки, пулинга (максимизирующего, усредняющего, пулинга с областью интереса и т. д.), полносвязных слоёв, слоёв нормализации и так далее. В особо глубоких нейронных сетях могут существовать синаптические связи, огибающие отдельные слои (их обычно называют skip connections — «перепрыгивающие связи»). В различных слоях могут использоваться различные функции активации, слои могут группироваться в более крупные блоки, а при обучении сетей могут применяться различные способы инициализации синаптических весов и другие трюки, направленные на улучшение сходимости и достижение лучших результатов. В 2010-е гг. глубокое обучение стало своеобразным экспериментальным разделом математики, где полученный результат в некоторой мере может зависеть от случая и от удачи исследователей и разработчиков в процессе применения метода проб и ошибок. Этот факт породил сравнение глубокого обучения со средневековой алхимией и множество остроумных мемов на эту тему. К счастью, в отличие от алхимиков, архитекторы нейронных сетей всё-таки неплохо справляются с достижением поставленных целей, а применение объективных метрик успеха при создании моделей исключает субъективизм в трактовке результатов.