Дайте исключениям обнаружить, доказать себя, получше укрепиться, прежде чем применять по отношению к ним особые методы.
Невежество предпочтительнее ошибки; тот, кто не знает ничего, ближе к истине, чем тот, кто обладает ложным знанием.
Как мы уже убедились, одна из причин печально известной уязвимости современных систем компьютерного зрения в том, что их обучают в искусственном мире. В нем все, что видит система, принадлежит к одной из немногих категорий. В реальности же подавляющее большинство комбинаций пикселей, с которыми может столкнуться программа, вообще ни на что не похожи.
Традиционные системы устроены так, что их ответ всегда формулируется как распределение вероятностей внутри конечного списка классов – и неважно, насколько абсурдно выглядят исходные данные. Неудивительно, что такие ответы часто лишены смысла. Если показать нейросети чизбургер, психоделический фрактал или геометрическую сетку и спросить, насколько она уверена, что это кошка, а не собака, какой ответ вообще можно считать адекватным? Изучение подобных ситуаций и составляет суть «проблемы открытой категории».
Но если оставить в стороне отсутствие ответа «ничто из вышеперечисленного», существует и другая проблема: модели не просто пытаются втиснуть неизвестное в рамки знакомых категорий – они делают это с пугающей самоуверенностью. Эти две проблемы идут рука об руку: система решает, что «это больше похоже на собаку, чем на кошку», и в итоге выдает ответ с феноменально высокой степенью «уверенности», которая не отражает того факта, что картинка вообще не похожа ни на что виденное ею ранее.
Ярин Галь руководит группой прикладного и теоретического машинного обучения в Оксфорде, где преподает в течение учебного года, а летом читает лекции в NASA. Как он с усмешкой рассказал мне, его первая лекция – еще до того, как написана первая строчка кода, доказана теорема или обучена модель – практически полностью посвящена философии [712].
Его студенты играют в игры, где учатся аргументировать позицию в спорах, переводить свои убеждения и догадки в вероятности и с нуля выводить законы теории вероятностей. Это гносеологические игры. Что вы знаете? Во что верите? Насколько вы в этом уверены? «Это дает отличный фундамент для машинного обучения, – говорил Галь. – Вы учитесь создавать алгоритмы и цифровые инструменты, которые опираются на подобные принципы рациональности, чтобы работать с фактором неопределенности».
В этом кроется ирония: глубокое обучение, несмотря на свои давние статистические корни, как правило, игнорирует неопределенность. Разумеется, существует богатая традиция теоретических работ по теории вероятностей, но они редко становятся ядром реально работающих систем. Практические модели создают для классификации данных или выполнения действий в упрощенных средах, и неопределенность обычно остается за скобками.
«Скажем, я дам вам стопку фотографий собак и попрошу создать определитель пород, – рассуждал Галь. – А потом дам для классификации вот это».
Он протягивает фотографию кошки.
«Чего бы вы ждали от своей модели в такой ситуации? Не знаю как вы, а я бы не хотел, чтобы моя программа относила кошку к одной из пород собак. Я хочу, чтобы она сказала: „Я не знаю. Я никогда не видела ничего подобного. Это выходит за границы моих данных. Я не буду угадывать породу“. Сейчас это кажется надуманным примером. Но подобные ситуации сплошь и рядом возникают при принятии решений в физике, биологии и медицине. Представьте, что вы врач, и от решения модели (есть ли у пациента рак) зависит, начинать лечение или нет. Я бы не стал доверять алгоритму, который не умеет сообщать, насколько он уверен в своих выводах» [713].
Бывший научный руководитель Галя Зубин Гахрамани, профессор Кембриджского университета и глава лаборатории ИИ в Uber, согласен с тем, что отсутствие фактора неопределенности в нейросетях может быть опасным. «Во многих промышленных сферах от таких систем просто будут держаться подальше, – уверял Гахрамани. – Людям нужно четко понимать границы возможностей системы» [714].
Еще в 1980‐х и 1990‐х годах исследователи изучали идею так называемых байесовских нейронных сетей, которые оперируют вероятностями и неопределенностью не только в финальных ответах, но и в самой своей архитектуре. Как мы помним, суть нейросети – это веса связей между нейронами (числа, на которые умножаются сигналы). В байесовской нейросети вместо жестко заданных чисел используются распределения вероятностей. Например, вместо точного значения «0,75» связь имеет форму колоколообразной кривой с пиком около 0,75, отражающей степень уверенности алгоритма в том, каким должен быть этот вес. В процессе обучения этот разброс (неуверенность) может сужаться, но никогда не исчезает полностью.
Но как пользоваться моделью, в которой параметры не заданы жестко, а «плавают»? Очевидно, что нельзя легко перемножить десятки миллионов вероятностных распределений. Но можно просто брать из них случайные значения. При одном прогоне модель умножит сигнал конкретного нейрона на 0,71. При следующем – достанет случайное число 0,77. Из-за этого модель перестает выдавать один и тот же ответ. Сейчас она увидит на картинке добермана, а через секунду на ней же – корги.
Но это не баг, а фича. Вариативность ответов позволяет оценить надежность модели. Если при каждом прогоне ответы радикально меняются (от добермана до тако и от кожной сыпи до дивана), вы понимаете: происходит нечто странное, модель не понимает, что видит. Но если результаты множества прогонов кучно ложатся в узкий диапазон, вы можете быть уверены: алгоритм действительно понимает, с чем имеет дело [715].
Но эта прекрасная теория разбивалась о суровую практику. Никто не знал, как обучить такие сети за адекватное время. «Если обратиться к истории нашей отрасли, байесовский подход всегда считался идеалом, к которому нужно стремиться, – объясняет Галь. – Проблема в том, что он требует неподъемных вычислительных мощностей… У нас есть эта красивая математика, но применить ее на практике было почти невозможно» [716]. Говоря проще, метод не масштабировался и потому был предан забвению [717].
Но сейчас ситуация меняется. «По сути, мы переживаем его воскрешение», – отмечал Галь.
Уже давно понятно, что байесовскую неопределенность можно сымитировать с помощью ансамблей – то есть обучить не одну модель, а сразу несколько. Ансамбль моделей будет выдавать единодушные ответы на данных, похожих на те, на которые они обучались. Но если подсунуть им нечто совершенно незнакомое, их мнения разойдутся. Этот разнобой – полезный сигнал: ансамбль раскололся, консенсуса нет, значит, действовать нужно с осторожностью.
Представьте, что у нас есть не одна, а сотня моделей, обученных определять породы собак. Если мы покажем им фотографию с телескопа «Хаббл» и спросим, кто это – дог, доберман или чихуахуа, – каждая отдельная модель ответит с абсолютной, но ложной уверенностью. Главное здесь то, что их ответы будут разными. Степень разногласий между моделями становится отличным индикатором того, насколько мы можем им доверять. Иными словами, мы можем измерять неопределенность через уровень разногласий [718].
Математически доказано, что байесовские нейронные сети можно рассматривать как бесконечно большие ансамбли [719]. И хотя ясно, что работать с бесконечностью на практике нельзя, использование даже просто большого количества моделей имеет очевидные минусы – это долго и требует огромной памяти. Вспомните, как Алекс Крижевский неделями обучал одну AlexNet. Обучение ансамбля из 25 таких сетей заняло бы год. Кроме того, этот тяжеловесный комплект нужно еще как‐то уместить в памяти компьютера.
Однако выяснилось, что эффективный способ приблизиться к этому «золотому стандарту» не просто существует – многие исследователи уже им пользовались. Ответ на загадку, мучившую ученых десятилетиями, все это время лежал у них перед носом, просто они этого не осознавали.
Как мы помним, одним из небольших, но гениальных решений, обеспечивших триумф AlexNet в 2012 году, стала функция «дропаут»: во время обучения случайные нейроны принудительно отключались. На каждом шаге решение принимала не вся сеть целиком, а лишь ее случайный фрагмент (50 % или 90 %). Метод не позволял отдельным частям нейросети стать доминирующими и заставлял систему гибко комбинировать разные пути решения. Это сделало ИИ гораздо стабильнее машинного обучения [720].
В то время как научное сообщество начало осознавать важность байесовской неопределенности и искать практичные замены этому недостижимому идеалу, Галь и Гахрамани поняли, что ответ все это время был на виду. Дропаут и был аппроксимацией байесовской неопределенности. Инструмент, который они искали, уже находился в их распоряжении [721].
Обычно дропаут использовали только во время тренировки, а когда готовую модель применяли на практике, его принудительно отключали (чтобы вся сеть работала слаженно и давала точные прогнозы). Но что будет, если оставить дропаут включенным у работающей системы? Делая предсказания много раз, при этом каждый раз отключая случайную часть сети, вы получите набор слегка отличающихся ответов. Это как получить огромный ансамбль сетей по цене одной модели. Оказалось, что возникающая при этом неопределенность ответов не просто похожа на поведение идеальной математической байесовской модели. Как доказали ученые, в рамках строгих теоретических границ это она и есть.
В итоге появился инструмент, который сделал некогда абстрактную теорию применимой в реальной жизни. «Это грандиозное изменение последних лет, – говорил Галь. – Теперь мы можем взять всю эту красивую математику, создать приближенные модели и применять их для решения по-настоящему сложных задач» [722].
Галь скачал из Интернета несколько лучших систем распознавания изображений и запустил их «как есть», но с одним изменением: он не отключил дропаут при тестировании. Программа прогоняла картинку несколько раз, а Галь считал средний результат. Выяснилось, что в таким режиме «скрытого ансамбля» модели работают даже точнее, чем в обычном [723].
«Оценка неопределенности – это то, без чего нельзя обойтись при решении задач классификации, – утверждал Галь. – Нейросети становятся гораздо точнее, если дают нам инструмент для измерения собственной неуверенности» [724]. Научив модель понимать, когда именно она чего‐то не знает, мы делаем огромный шаг вперед [725].
Один из самых ярких примеров такого подхода можно найти в медицине, а именно в диагностике диабетической ретинопатии (одной из главных причин слепоты среди людей трудоспособного возраста) [726]. Группа ученых из Института офтальмологии Тюбингенского университета в Германии под руководством Кристиана Лейбига решила применить идею Галя и Гахрамани на практике [727].
В первые же годы после появления AlexNet нейросети продемонстрировали колоссальный потенциал в медицине: новости о том, что «ИИ диагностирует болезнь Х с точностью 99 % (лучше врачей)», появлялись еженедельно. Но была одна огромная проблема. Как отмечали Лейбиг и его коллеги, обычные нейросети поставлялись «без каких‐либо инструментов для контроля неопределенности». ИИ не имел сугубо человеческой способности признавать, что он чего‐то не знает. «Врач всегда чувствует, если он не уверен в диагнозе, – писали исследователи, – и при необходимости проконсультируется с более опытным коллегой». Ученым нужна была система, способная на то же самое.
Опираясь на работы Галя и Гахрамани, группа Лейбига использовала дропаут для создания встроенного измерителя сомнений. Они научили нейросеть отличать здоровую сетчатку от больной, а затем настроили ее так, чтобы в 20 % случаев – там, где сомнения программы были максимальны – она запрашивала второе мнение: либо назначала дополнительные анализы, либо отправляла пациента к живому врачу.
Система знала, что она чего‐то не знает. И это не только повысило ее надежность. Хоть ученые из Тюбингена и не ставили себе такой цели, их ИИ выполнил и даже превзошел строгие требования Национальной службы здравоохранения Великобритании к автоматизированной постановке диагнозов. Это дает веские основания полагать, что подобные алгоритмы войдут в реальную медицинскую практику уже в ближайшем будущем [728].
В робототехнике все сложнее: машина не всегда может «позвать врача». Однако у системы, сомневающейся в своих решениях, есть универсальный способ проявить осторожность – просто снизить скорость. Группа исследователей из Беркли под руководством Грегори Кана связала показатель неопределенности (полученный через дропаут) напрямую со скоростью движения роботов – квадрокоптера и радиоуправляемой машинки [729]. Сначала роботов заставляли слегка врезаться в препятствия на малых скоростях, чтобы обучить систему прогнозировать столкновения. В эту систему был встроен механизм дропаута. В результате, когда робот оказывался на незнакомой территории и система предсказания начинала «сомневаться», он автоматически сбрасывал скорость и двигался крайне осторожно [730]. Чем больше опыта накапливал робот и чем увереннее становились прогнозы системы, тем быстрее ему разрешалось ехать.
Этот пример иллюстрирует глубокую связь между уверенностью и последствиями. Для робота главным негативным последствием было столкновение: скорость движения прямо пропорциональна ущербу от удара. Выяснилось, что неопределенность и размер ущерба неразрывно связаны. Интуитивно это очевидно: чем серьезнее последствия наших действий, тем увереннее мы должны быть перед тем, как их совершить. Это поднимает ряд сложных вопросов – в медицине, юриспруденции и машинном обучении: как именно измерять масштаб последствий и как в зависимости от этого должен меняться сам процесс принятия решений?