В настоящее время глубокое обучение используется для перевода, прогнозирования укладки белков, анализа рентгеновских и других медицинских снимков , а также для игр, столь сложных как го  - вот лишь некоторые варианты применения этой технологии, которая становится всепроникающей. Успех в этой и других отраслях привел технологию машинного обучения от безвестности в нулевые до доминирования сегодня.  Хотя, славные дни глубокого обучения начались сравнительно недавно, зародилась эта парадигма много лет назад. В 1958 году, когда компьютеры-мейнфреймы еще занимали целые залы и работали на электронно-лучевых трубках, Фрэнк Розенблатт из Корнельского университета, исходя из знаний о том, как устроены связи между нейронами в мозге, спроектировал первую нейронную сеть, которую прозорливо описал как «устройство для распознавания образов». Но амбиции Розенблатта сильно опережали его время – и он об этом знал. Даже в своей инаугурационной статье он был вынужден признать, с каким волчьим аппетитом нейронная сеть жрет вычислительные ресурсы, сетуя на то, что «по мере того, как количество связей в сети растет… нагрузка на традиционный цифровой компьютер вскоре становится чрезмерной».   К счастью для разработчиков таких искусственных нейронных сетей, вскоре влившихся в концепцию «глубокого обучения» и получивших дополнительные слои нейронов, десятилетия работы закона Мура и проистекающее из него улучшение аппаратного обеспечения позволили примерно в 10 миллионов раз увеличить объем вычислений, выполняемых компьютером в секунду. Поэтому, когда исследователи вернулись к разработке глубокого обучения в конце нулевых, у них уже были орудия, соразмерные этому вызову.      Новые компьютеры с принципиально возросшей мощностью позволили создавать сети, в которых было неизмеримо больше связей и нейронов, чем в прототипах; соответственно, они гораздо лучше подходили для моделирования сложных феноменов. Исследователи пользовались возможностью делать перерывы между записями, применяя алгоритмы глубокого обучения к решению новых задач. Притом, что взлет глубокого обучения вышел аэрокосмическим, будущее его может оказаться тернистым. Как и Розенблатт полвека назад, нынешние исследователи глубокого обучения приближаются к пределу возможностей тех инструментов, которыми располагают. Чтобы понять, почему это переформатирует все машинное обучение, сначала давайте разберемся, почему глубокое обучение оказалось столь успешным, и чего стоит держать его на таком уровне. Глубокое обучение – это современное воплощение в давней тенденции развития искусственного интеллекта, а именно движения от четко очерченных экспертных систем, опирающихся на конкретные знания, к гибким статистическим моделям. Первые системы в истории ИИ были основаны на правилах, для вывода результатов в них применялись логика и экспертные знания. Позже в такие системы была добавлена возможность обучения для настраивания некоторых параметров, но обычно число таких параметров было невелико. Нынешние нейронные сети тоже изучают значения параметров, но эти параметры входят в состав столь гибких компьютерных моделей, что – если эти модели достаточно велики – становятся универсальными аппроксиматорами функций, то есть, подходят для описания данных любого типа. Именно по причине такой неограниченной гибкости глубокое обучение применимо к столь разным предметным областям. Гибкость нейронных сетей обусловлена тем, что модель может принять множество видов ввода, а сеть – скомбинировать эту информацию мириадами способов. Таким образом, вывод нейронной сети получается применением не простых формул, а неизмеримо сложных.  Например, когда ультрасовременная система распознавания образов Noisy Student преобразует пиксельные значения изображения в вероятности, описывающие, что же может быть на нем, это делается при помощи сети, содержащей 480 миллионов параметров. Еще примечательнее сам процесс обучения, удостоверяющий верность такого множества параметров, поскольку в нем использовалось всего 1,2 миллиона размеченных изображений. Это может смутить тех читателей, которые помнят из школьного курса алгебры, что уравнений больше, чем неизвестных. Оказывается, ключ технологии – в том, что это правило нарушается. Модели глубокого обучения переполнены параметрами, то есть, параметров в них больше, чем точек данных, доступных для обучения. В классическом сценарии это должно приводить к переобучению, когда модель не только выучит общие тенденции, но и усвоит случайные закономерности, имеющиеся в учебных данных. При глубоком обучении такая ловушка обходится, поскольку параметры инициализируются случайным образом, а затем их множества уточняются итерация за итерацией для более полного соответствия данным. Такой метод называется «стохастический градиентный спуск». Удивительно, но (доказано) эта процедура гарантирует, что усвоенная модель хорошо обобщается. Успех гибких моделей глубокого обучения хорошо просматривается на примере машинного перевода. Десятилетиями применяются программы для перевода текстов с языка на язык. На первых этапах эта задача решалась при помощи правил, которые формулировали эксперты по грамматике. Но чем больше становился доступный объем текстовых данных на каждом конкретном языке, тем успешнее они поддавались обработке при помощи статистических подходов – имеющих столь мудреные наименования, как «максимальная энтропия», «скрытые Марковские модели» и «условные случайные поля».  Исходно успешность этих подходов для обработки каждого языка зависела от объема данных, доступных на нем, и от грамматических свойств языка. Например, перевод на основе правил для таких языков, как урду, арабский и малайский поначалу превосходил по качеству статистические методы перевода. Сегодня глубокое обучение обставило все альтернативные подходы и показало превосходные результаты практически на любом материале, к которому применялось. Итак, повод для оптимизма в том, что глубокое обучение обеспечивает чрезвычайную гибкость в работе. Повод для пессимизма – в том, что эта гибкость требует огромных вычислительных ресурсов. Эта темная сторона реальности имеет два аспекта. Первая часть актуальна для всех статистических моделей: чтобы улучшить производительность в k раз, для обучения модели должно применяться как минимум в k2 раз больше точек данных. Вторая часть вычислительных издержек связана непосредственно с чрезмерной параметризацией. Если учесть ее в полной мере, то для вышеуказанного улучшения требуемый рост издержек составит как минимум k4. Эта четверка в степени дается очень дорого. Например, для десятикратного улучшения результата потребуется как минимум 10 000-кратное увеличение объема вычислений.  Чтобы еще выразительнее представить этот компромисс между гибкостью модели и объемом вычислений, рассмотрим такой сценарий: мы пытаемся спрогнозировать, покажет ли рентгенограмма пациента признаки рака. Далее предположим, что верный ответ может быть найден, если проанализировать 100 деталей рентгенограммы (такие детали зачастую называются «переменными» или «признаками»). Сложность в том, что заранее мы не знаем, какие переменные будут важны, и пул переменных, которые потребуется рассмотреть, может быть очень велик.  Если бы эта проблема решалась с позиции применения экспертных систем, то нам бы потребовались специалисты, разбирающиеся в радиологии и онкологии, чтобы они указали те переменные, которые считают важными, после чего системе будет разрешено проверять лишь эти переменные. Гибкий подход к обучению — это протестировать максимально возможное количество переменных и позволить системе самой вывести, какие из этих переменных важны. В таком случае системе потребуется гораздо больше данных для анализа, и этот процесс повлечет значительно более высокие вычислительные издержки.   Модели, для которых эксперты установили релевантные переменные, могут быстро изучить, какие значения лучше всего работают с этими переменными, и для этого потребуется сравнительно небольшой объем вычислений. Именно поэтому как раз такие модели были наиболее популярны поначалу. Но обучение застопоривается, если эксперт не смог правильно задать все переменные, которые должны быть включены в модель. Напротив, гибкие модели, в частности, модели глубокого обучения, менее эффективны и требуют неизмеримо больше вычислений, чтобы потягаться в производительности с экспертными моделями. Но при наличии достаточного объема вычислений (и множества данных) гибкие модели могут обставить те, для которых эксперты попытались указать все релевантные переменные.  Определенно, можно повысить производительность глубокого обучения, если задействовать больше вычислительных ресурсов для построения более крупных моделей и обучать их на более обширных данных. Но какова будет цена такого вычислительного бремени? Могут ли эти расходы вырасти настолько, что станут тормозить прогресс?  Чтобы конкретно ответить на эти вопросы, недавно были собраны данные из более чем 1000 исследовательских статей по глубокому обучению, охватывающих такие предметные области, как классификация изображений, обнаружение объектов, ответы на вопросы, распознавание именованных сущностей и машинный перевод. Здесь мы подробно обсудим только классфикацию изображений, но описанные ниже закономерности применимы очень широко.   За годы работы сокращение количества ошибок при классификации изображений давалось колоссальным наращиванием вычислительной нагрузки. Например, в 2012 году модель AlexNet, впервые показавшая мощь глубокого обучения на графическом процессоре (GPU), обучалась с применением двух графических процессоров на протяжении пяти-шести дней. К 2018 году другая модель, NASNet-A, наполовину сократила количество допускаемых ошибок по сравнению с AlexNet, но потребовавшийся для этого объем вычислительных ресурсов оказался более чем в 1000 раз значительнее. Анализ этого феномена также позволил оценить, как эти результаты сочетаются с теоретическими ожиданиями. Теоретически вычисления должны масштабироваться как минимум в четвертой степени относительно фактического повышения производительности. На практике же для этого требовалось масштабирование как минимум в девятой степени. Данная девятая степень означает, что для уменьшения показателя ошибок наполовину следует ожидать, что вам потребуется более чем в 500 раз нарастить вычислительные ресурсы. Это сокрушительно высокая цена. Правда, здесь есть и луч надежды: такая пропасть между теоретическими прогнозами и практическими результатами может означать, что до сих пор остаются неоткрытые варианты оптимизации алгоритмов, которые позволили бы радикально повысить эффективность глубокого обучения. Как отмечалось выше, закон Мура и другие показатели совершенствования аппаратного обеспечения позволили невероятно повысить производительность чипов. Означает ли это, что постоянная эскалация требований к вычислительным мощностям непринципиальна? К сожалению, нет. Из 1000-кратной разницы в вычислениях между AlexNet и NASNet-A, лишь шестикратное увеличение было достигнуто на уровне улучшения оборудования. Вся остальная разница была достигнута наращиванием количества процессоров и все более длительным их использованием, а все это влечет дополнительные издержки. Оценив кривую «издержки-производительность» для распознавания изображений, можно использовать эти данные для прогноза, сколько вычислительных ресурсов потребуется для достижения еще более впечатляющих показателей производительности в будущем. Так, для снижения доли ошибок до 5% понадобится 10 19 миллиардов операций с плавающей точкой.  Важная работа ученых из Массачусетского университета в Амхерсте позволяет понять, каковы экономические издержки и углеродный след, сопряженные с такой вычислительной нагрузкой. Результаты удручают: обучение такой модели обойдется в 100 миллиардов долларов США и даст столько же парниковых выбросов, сколько дает город Нью-Йорк за месяц. А если оценить вычислительную нагрузку, необходимую для снижения доли ошибок до 1%, результаты будут гораздо печальнее.  Оправданны ли в данном случае экстраполяции на несколько порядков? И да, и нет. Конечно же, важно понимать, что прогнозы не совсем точны, но при таких плачевных результатах абсолютная точность и не нужна, чтобы передать общий месседж о неустойчивости подобных систем. Экстраполяция такого рода была бы неправомерной, если бы мы предположили, что исследователи так и будут следовать по нынешнему пути, вплоть до экстремального результата. Нет, мы этого не делаем. Исследователи, имея дело с зашкаливающими расходами, будут вынуждены либо найти более эффективные способы для решения задач глубокого обучения, либо забросить такие задачи – и прогресс остановится.  С другой стороны, экстраполяция таких результатов не только разумна, но и важна, поскольку помогает понять масштаб вызова, маячащего перед нами. Фронт этой проблемы уже хорошо просматривается. Когда компания DeepMind, ныне входящая в состав Google, учила свою систему играть в го, стоимость этой работы оценивалась в 35 миллионов долларов. Когда исследователи DeepMind спроектировали систему для игры в StarCraft II, они намеренно не пробовали нескольких вариантов проектирования одного важного компонента, поскольку такое обучение стоило бы слишком дорого. OpenAI, важный аналитический центр, занимающийся изучением машинного обучения, недавно спроектировал и натренировал весьма прославленную языковую систему глубокого обучения GPT-3, потратив на это более 4 миллионов долларов. Хотя они и допустили ошибку при реализации системы, эту ошибку не исправляли, пояснив это в приложении к своей научной статье так: "в силу стоимости обучения, не представлялось возможным переобучить модель." Даже бизнес, не относящийся к высоким технологиям, в настоящее время начинает чураться глубокого обучения из-за его высоких вычислительных издержек. Недавно крупная европейская сеть супермаркетов отказалась от своей системы глубокого обучения, хотя та и заметно помогала прогнозировать, какие товары будут приобретаться. Руководство компании свернуло эту разработку, сочтя, что обучение и эксплуатация этой системы обойдется слишком дорого. Имея дело с растущими экономическими и экологическими издержками, сообщество исследователей глубокого обучения изыскивает способы повысить производительность систем, но так, чтобы потребности в вычислительных мощностях не становились запредельными. Если этого не сделать, процессы начнут стагнировать. Но рано отчаиваться: для решения этой проблемы делается многое. Одна из стратегий – использовать процессоры, спроектированные специально с расчетом на эффективное глубокое обучение. Такой подход широко использовался на протяжении минувшего десятилетия, тогда на смену CPU пришли GPU, а в некоторых случаях – программируемые пользователем вентильные матрицы и специфичные для конкретного приложения интегральные схемы (в том числе, Tensor Processing Unit от Google). В целом, при всех этих подходах жертвуется универсальностью вычислительной платформы ради повышения эффективности и специализации. Но такая специализация становится все менее выгодной. Поэтому в долгосрочной перспективе будет перспективнее брать на вооружение совершенно иные аппаратные фреймворки, возможно, основанные на аналоговых, нейроморфных, оптических или квантовых системах. Правда, пока такие совершенно иные аппаратные фреймворки еще не играют заметной роли.  Другой подход к снижению вычислительного бремени сосредоточен на создании таких нейронных сетей, которые при реализации получаются меньше, чем современные. Такая тактика снижает стоимость каждого прогона нейронной сети, но часто увеличивает стоимость обучения (что и описано выше в этой статье). Какие из этих расходов наиболее важны – в основном зависит от ситуации. Для часто используемой модели именно эксплуатационные расходы будут наибольшим компонентом всей суммы инвестиций. Для других моделей, например, таких, которые часто требуется учить заново, могут преобладать расходы на обучение. В любом случае, общая сумма расходов будет превышать расходы собственно на обучение. Поэтому, как было показано выше, если расходы на обучение слишком высоки, то и общие расходы могут стать неподъемными.  И в этом основная проблема, касающаяся всех тактик, направленных на достижение компактной реализации: они не позволяют в достаточной степени сократить расходы на обучение. Например, какая-нибудь модель позволяет обучить большую сеть, но сильно увеличивает сложность обучения. Другая сопряжена с обучением большой сети и последующим отсечением неважных связей. Третья находит как можно более эффективную архитектуру, оптимизируясь на основе множества моделей – такой подход иногда называют «поиском нейронных архитектур». Притом, что каждая из этих техник может весьма положительно отразиться на реализации, на обучении она отражается слабо и определенно не решает описанных выше проблем, возникающих при обработке данных. Во многих случаях расходы только повышаются.   Сейчас начинает развиваться подход, который позволил бы снизить расходы на обучение, он называется «мета-обучение». Идея в том, что система учится на разнообразных данных, и затем этот результат может применяться во многих областях. Например, чтобы не создавать отдельных систем для распознавания на изображениях собак, кошек и автомобилей, можно обучить на всех трех этих множествах данных одну и ту же систему и многократно использовать ее. К сожалению, недавняя работа Андрея Барбу из MIT показала, насколько сложным может быть метаобучение. Они с соавторами показали, что даже небольшие различия между исходными данными и материалом, на котором предполагается использовать сеть, могут сильно понизить ее производительность. Они продемонстрировали, что современные системы распознавания изображений очень чувствительны к таким факторам, как, например, под каким углом и в какой позе был сфотографирован объект. Поэтому даже простая задача распознавания одних и тех же субъектов в различных позах может почти наполовину сбить точность системы. Бенджамин Рехт из Калифорнийского университета в Беркли и другие говорят об этом еще резче, показывая, что даже на совершенно новых множествах данных, в которых намеренно имитируются учебные данные, производительность сети падает более чем на 10%. Если даже небольшие изменения в данных столь подрывают производительность, то для полноценного метаобучения может понадобиться запредельно много информации. Поэтому большие перспективы метаобучения еще далеки от воплощения.  Другая стратегия, которая, возможно, позволит преодолеть вычислительные пределы глубокого обучения – перейти на другие, возможно, еще не открытые или недооцененные типы машинного обучения. Как было рассказано выше, системы машинного обучения, сконструированные с привлечением экспертного опыта, могут показывать завидную эффективность, но значительно уступают системам глубокого обучения, если эксперты не учтут при их формировании всех важных факторов. Разрабатываются нейро-символические методы и другие приемы, которые позволили бы сочетать силу экспертных знаний и рассуждений с гибкостью, присущей многим нейронным сетям. Как и в ситуации, с которой столкнулся Розенблатт на заре развития нейронных сетей, сегодня глубокое обучение подходит к границам возможностей имеющихся вычислительных инструментов. Столкнувшись с необходимостью непозволительного наращивания вычислений, необходимо либо откорректировать наши подходы к глубокому обучению, либо смириться с тем, что в будущем его прогресс значительно замедлится. Конечно, хотелось бы адаптироваться. Возможен умный прорыв, который дал бы нам либо более эффективные модели глубокого обучения, либо гораздо более мощное аппаратное обеспечение, которое позволило бы и дальше использовать эти крайне гибкие модели. В противном случае возможен откат, и нам вновь придется привлекать к работе экспертов, чтобы выявлять, каким именно данным необходимо обучать сеть.