Это произошло в 2012 году в Торонто. В спальне Алекса Крижевского было слишком жарко, чтобы уснуть. Его компьютер, соединенный с двумя графическими процессорами Nvidia GTX 580, работал днем и ночью с максимальной нагрузкой, вентиляторы разгоняли горячий воздух уже целых две недели.
– Было очень жарко, – рассказывает Крижевский, – и громко [38].
Он учил машину видеть.
Джеффри Хинтону, научному руководителю Крижевского, исполнилось 64 года, и он не собирался сдаваться. У него была причина надеяться на лучшее.
В 1980‐е годы стало понятно, что многослойные сети (так называемые «глубокие» нейронные сети) в самом деле можно натренировать на примерах так же, как перцептрон [39]. «Теперь я полагаю, – признал Минский, – что с книгой несколько переборщил» [40].
В конце 1980‐х и начале 1990‐х бывший научный сотрудник Хинтона по имени Ян Лекун, работавший в Bell Labs, научил нейронную сеть распознавать написанные от руки цифры от 0 до 9. Так нейросети впервые получили широкое коммерческое использование: чтение индексов в почтовых отделениях и депозитных чеков в банкоматах [41]. К началу 1990‐х нейросети Лекуна обрабатывали 10–20 % всех чеков в Соединенных Штатах [42].
Но развитие отрасли вновь достигло плато, и к 2000‐м исследователи по большей части так и колдовали над базами данных написанных от руки почтовых индексов. Никто еще не понял, что достаточно большая нейросеть при наличии значительного количества данных и времени может научиться практически чему угодно [43]. Но ни у кого не было достаточно быстрых компьютеров, достаточного количество данных для обучения и достаточно терпения, чтобы извлечь выгоду из этой теоретической возможности. Многие теряли интерес, и те, кто занимался компьютерным зрением или вычислительной лингвистикой, переключались на другие вещи. Как позднее говорил Хинтон, «наши маркированные наборы данных были в тысячи раз меньше, чем надо. А компьютеры – в миллионы раз медленнее» [44]. Тем не менее и то, и другое изменилось.
Интернет развивался, и, если вам было нужно не пятьдесят, а пятьсот тысяч «дидактических карточек», вы неожиданно получали доступ к практически бездонному хранилищу изображений. Была лишь одна проблема: на них обычно не стояла метка категории. Нельзя обучать нейросеть, не зная, что предполагается на выходе.
В 2005 году компания Amazon запустила сервис Mechanical Turk, дающий возможность в больших масштабах использовать наемный человеческий труд, что позволило нанять тысячи людей, выполняющих простые действия «по пенни за клик». (Сервис был особенно хорошо приспособлен для вещей, которые будущие ИИ, как предполагалось, смогут делать, поэтому подзаголовком сайта и стало выражение «искусственный искусственный интеллект»). В 2007 году профессор Принстона Фей-Фей Ли использовала Amazon Mechanical Turk, чтобы нанимать исполнителей в масштабах, ранее считавшихся немыслимыми, и создала такой набор данных, какой прежде был просто невозможен. На эту работу ушло более двух лет, в набор данных вошло три миллиона изображений, каждое из которых было промаркировано человеком по более чем пяти тысячам категорий. Ли назвала свое детище ImageNet и выпустила его в 2009 году. Отрасль компьютерного зрения неожиданно получила огромный набор данных для обучения – и новые большие трудные задачи. Начиная с 2010 года, команды со всего мира начали соревнование по созданию системы, которая сумеет взглянуть на изображение – пылевого клеща, грузового корабля, мотороллера, леопарда – и уверенно заявить, что это такое.
Тем временем достаточно устойчивое развитие техники в соответствии с законом Мура [45] в 2000‐е годы означало, что теперь компьютеры могут делать за считанные минуты то, на что у компьютеров 1980‐х уходили часы и дни. Но жизненно важным оказалось еще одно изобретение. В 1990‐е годы индустрия видеоигр начала производить графические процессоры (GPU), разработанные для рендеринга сложных трехмерных изображений в реальном времени. Вместо того чтобы одну за другой выполнять инструкции с идеальной точностью, как это делает традиционный CPU, эти устройства производили множество простых и иногда приблизительных вычислений одновременно [46]. Уже позднее, в середине 2000‐х, стало ясно, что графические процессоры могут делать гораздо больше, чем просто отображать свет, текстуры и тени [47]. Выяснилось, что эти комплектующие, разработанные для компьютерных игр, словно изготовлены на заказ для обучения нейронных сетей.
В университете Торонто Алекс Крижевский прошел курс по написанию кода для графических процессоров и решил опробовать их с нейронными сетями. Он взялся за распознавание изображений из популярного тестового набора CIFAR‐10, который содержал миниатюрные картинки одной из десяти категорий: самолет, автомобиль, птица, кошка, олень, собака, лягушка, лошадь, корабль или грузовик. Крижевский создал нейросеть и начал учить ее распределять по категориям изображения из CIFAR‐10 с помощью графического процессора. Как ни поразительно, но он смог натренировать ее со случайно выбранной начальной конфигурации до идеальной точности. За восемьдесят секунд [48].
В то же время коллега Крижевского по лаборатории Илья Суцкевер заметил попытки Алекса и предложил сделать то, что прозвучало как сладкозвучная песня сирены. «Держу пари, – сказал Суцкевер, – ты сможешь заставить ее работать на ImageNet».
Они создали гигантскую нейронную сеть: шестьсот пятьдесят тысяч искусственных нейронов, расположенных на восьми слоях и связанных шестьюдесятью миллионами настраиваемых весовых связей. В своей спальне в родительском доме Крижевский начал показывать ей картинки.
Шаг за шагом, мало-помалу система становилась на несколько процентов точнее.
Набора данных, каким бы большим он ни был (несколько миллионов изображений), было недостаточно. Но Крижевский понял, как это обойти. Он начал делать «раздутие данных» – показывать зеркально отраженные, слегка обрезанные или затемненные изображения. (Кошка, в конце концов, остается кошкой, даже если вы наклоните голову или смените естественное освещение на искусственное.) Кажется, это помогло.
Крижевский перебирал разные варианты архитектуры – то или иное количество слоев, – более-менее вслепую нащупывая, какая конфигурация сработает лучше.
Иногда Алекс терял веру в успех. С Суцкевером этого никогда не случалось. Снова и снова он воодушевлял Крижевского: «Ты сможешь заставить эту штуку работать!»
«Илья был кем‐то вроде религиозного лидера, – рассказывал Алекс. – Хорошо, когда рядом с тобой такой человек».
Испытания новой версии модели и ее тренировка до максимальной точности занимали примерно две недели круглосуточной работы, а значит, в какой‐то мере безумный проект давал участникам много свободного времени. Крижевский думал. И экспериментировал. И ждал. Хинтону пришла в голову идея под названием «дропаут», или «исключение», когда во время обучения определенные части нейронной сети случайным образом отключаются. Крижевский попробовал, и это, по той или иной причине, помогло. Он попытался использовать нейроны c так называемой выпрямленной линейной функцией активации. И это тоже, кажется, помогло.
Крижевский успел представить свою лучшую модель в последний день приема заявок на конкурс по распознаванию изображений ImageNet 30 сентября. Теперь оставалось только ждать.
Два дня спустя Алекс получил письмо из Стэнфорда от Дзя Дэна, который занимался организацией конкурса. Получателями письма значились все участники соревнования. Сухим безэмоциональным языком Дэн указывал, что следует пройти по ссылке и ознакомиться с результатами.
Что Крижевский и сделал.
Его команда не просто победила – она буквально уничтожила всех конкурентов по отрасли. Нейронная сеть, обученная в спальне Алекса – официально она называлась SuperVision, но в историю попала как AlexNet, – допустила вполовину меньше ошибок, чем модель, оказавшаяся на втором месте.
К пятнице, когда пришло время для семинара ImageNet Large Scale Visual Recognition Challenge, новость уже распространилась. Крижевский должен был выступать последним, и в 17:05 он вышел на трибуну докладчика. Алекс оглядел помещение. В первом ряду сидела Фей-Фей Ли, рядом с ней – Ян Лекун. Казалось, послушать его собралось большинство ведущих исследователей компьютерного зрения в мире. Зал был переполнен, люди стояли в проходах и вдоль стен.
«Я нервничал, – вспоминал Алекс. – Было очень неуютно».
И тогда Крижевский, которому было очень некомфортно, рассказал обо всем.
Когда Фрэнк Розенблатт давал интервью о перцептроне в 1958 году, его спросили о том, какое практическое или коммерческое использование могут иметь такие машины. «В данный момент никакого, – бодро ответил он. – В науке, знаете ли, вы сначала изобретаете, а потом находите применение» [49].