Шрифт:
Интервал:
Закладка:
Выполнение этой процедуры – ввод изображения, вычисление ошибки на выходе, коррекция весов – для всех изображений из тренировочного множества называется “эпохой” тренировки. Тренировка сверточной нейронной сети требует множества эпох, в каждой из которых сеть снова и снова обрабатывает каждое изображение. Сначала сеть очень плохо распознает собак и кошек, но постепенно, корректируя веса на протяжении многих эпох, она начинает справляться с задачей все лучше. Наконец в какой-то момент сеть “сходится”: ее веса перестают сильно изменяться от эпохи к эпохе, и она (в принципе!) очень хорошо распознает собак и кошек на изображениях из тренировочного множества. Но мы не узнаем, хорошо ли сеть в целом справляется с этой задачей, пока не проверим, может ли она применять все то, чему научилась, к изображениям, не входившим в тренировочное множество. Любопытно, что программисты не ориентируют сверточные нейронные сети на выявление конкретных признаков, но при тренировке на больших множествах настоящих фотографий они выстраивают иерархию детекторов, подобную той, которую Хьюбел и Визель обнаружили в зрительной системе мозга.
В следующей главе я расскажу о бурном развитии сверточных нейронных сетей, которые сначала пребывали в тени, но теперь практически безраздельно господствуют в сфере машинного зрения. Эта трансформация стала возможной благодаря сопутствующей технологической революции – революции “больших данных”.
Изобретатель сверточных нейронных сетей Ян Лекун всю жизнь работал над нейронными сетями: начав еще в 1980-х, он пережил немало зим и весен ИИ. Во время аспирантуры и постдокторантуры он восхищался перцептронами Розенблатта и неокогнитроном Фукусимы, но отмечал, что последнему не хватает хорошего алгоритма обучения с учителем. Вместе с другими учеными (в частности, с научным руководителем его постдокторантуры Джеффри Хинтоном) Лекун принял участие в разработке такого метода обучения – по сути, того же самого метода обратного распространения ошибки, который сегодня используется в сверточных нейронных сетях[107].
В 1980-х и 1990-х годах, работая в Лабораториях Белла, Лекун обратился к проблеме распознавания рукописных цифр и букв. Совместив идеи неокогнитрона с алгоритмом обратного распространения ошибки, он создал LeNet – одну из первых сверточных нейронных сетей. Способности LeNet к распознаванию рукописных цифр принесли ей коммерческий успех: в 1990-х и 2000-х годах в Почтовой службе США LeNet использовали для автоматизированного распознавания индексов, а в банковской сфере – для автоматизированной обработки чеков.
LeNet, как и ее преемница, сверточная нейронная сеть, не справилась с переходом на следующий уровень для решения более сложных зрительных задач. К середине 1990-х годов интерес к нейронным сетям среди исследователей ИИ стал угасать, и на первый план вышли другие методы. Но Лекун верил в сверточные нейронные сети и продолжал постепенно совершенствовать их. “Можно сказать, он поддерживал огонь даже в самые темные времена”, – сказал впоследствии Джеффри Хинтон[108].
Лекун, Хинтон и другие сторонники нейронных сетей полагали, что усовершенствованные, более масштабные вариации СНС и других глубоких сетей сумеют завоевать сферу компьютерного зрения, если предоставить им достаточный объем тренировочных данных. Все 2000-е годы они упорно работали в тени, но в 2012 году факел исследователей сверточных нейронных сетей вдруг озарил целый мир, когда их разработка победила в соревновании по компьютерному зрению на базе данных изображений ImageNet.
Исследователи ИИ склонны к соперничеству, а потому нет ничего удивительного в том, что они любят проводить соревнования, чтобы двигать науку вперед. В сфере зрительного распознавания объектов давно проводятся ежегодные конкурсы, которые помогают специалистам определить, чья программа справляется с задачей лучше всего. На каждом соревновании используются “эталонные данные”, куда входят фотографии с присвоенными людьми метками, описывающими объекты на снимках.
В 2005–2010 годах самым престижным был ежегодный конкурс PASCAL[109] Visual Object Classes (Классификация визуальных объектов), набор данных которого к 2010 году включал около пятнадцати тысяч фотографий, загруженных с фотохостинга Flickr, с присвоенными людьми метками для двадцати категорий объектов, такими как “человек”, “собака”, “лошадь”, “овца”, “автомобиль”, “велосипед”, “диван” и “цветок в горшке”.
В рамках этого соревнования в “классификации”[110] соперничали программы компьютерного зрения, которые брали фотографию в качестве входного сигнала (не видя присвоенную ей человеком метку) и на выходе определяли для каждой из двадцати категорий, присутствует ли на изображении относящийся к ней объект.
Конкурс проходил следующим образом: организаторы разбивали всю массу фотографий на тренировочное множество, которое участники могли использовать для обучения своих программ, и тестовое множество, которое не предоставлялось участникам и использовалось для оценки работы программ с незнакомыми изображениями. Перед конкурсом тренировочное множество размещалось в интернете, а в ходе соревнований исследователи представляли на суд свои натренированные программы, которые сдавали экзамен на секретном тестовом множестве. Победителем признавалась программа, показавшая самую высокую точность при распознавании объектов на изображениях тестового множества.
Ежегодные конкурсы PASCAL привлекали большое внимание и стимулировали исследования в сфере распознавания объектов. С годами программы-участницы постепенно совершенствовались (любопытно, что сложнее всего им было распознавать цветы в горшках). Однако некоторые исследователи полагали, что эталонные данные PASCAL в некотором роде сдерживают развитие компьютерного зрения. Участники уделяли слишком много внимания конкретным двадцати категориям объектов, классификация по которым проходила в рамках конкурса, и не создавали системы, способные работать с огромным количеством категорий объектов, распознаваемых людьми. Более того, в наборе данных не хватало фотографий, чтобы представленные на соревнование программы могли узнать все возможные вариации внешнего вида объектов и научиться обобщать.