Классический путь написания программ требует от программиста довольно детального понимания задачи, которая должна быть разработана, чтобы можно было явно задать ход ее решения, состоящий из последовательности математически точно описанных шагов, выраженных в исходном коде13. (На практике программисты полагаются на библиотеки подпрограмм, выполняющих определенные функции, которые можно просто вызывать без необходимости разбираться в деталях их реализации. Но эти подпрограммы изначально были созданы людьми, которые все-таки отлично разбирались в том, что делали.) Этот подход работает при решении хорошо знакомых задач, чем и занято большинство существующих ПО. Однако он перестает работать в ситуации, когда никто толком не понимает, как должны быть решены стоящие перед программой задачи. Именно в этом случае становятся актуальными методы из области разработок искусственного интеллекта. В некоторых приложениях можно использовать машинное обучение для точной настройки нескольких параметров программ, в остальном полностью созданных человеком. Например, спам-фильтр можно обучать на массиве вручную отобранных сообщений электронной почты, причем в ходе этого обучения классифицирующим алгоритмом будут изменяться веса, которые он присваивает различным диагностическим атрибутам. В более амбициозном приложении можно создать классифицирующий механизм, который будет сам обнаруживать такие атрибуты и тестировать их пригодность в постоянно меняющейся среде. Еще более совершенный спам-фильтр может быть наделен некоторыми возможностями размышлять о компромиссах, на которые готов пойти пользователь, или о содержании анализируемых им сообщений. Ни в одном из этих случаев программисту не нужно знать наилучший способ отделения спама от добропорядочной почты — он должен лишь определить алгоритм, при помощи которого спам-фильтр сам улучшит свою эффективность за счет обучения, обнаружения новых атрибутов или размышлений.
По мере развития ИИ у программиста появится возможность сэкономить большую часть умственных сил, которые нужны для поиска путей решения стоящей перед ним задачи. В предельном случае ему будет достаточно задать формальный критерий успешности решения и предложить задачу ИИ. В своем поиске ИИ будет руководствоваться набором мощных эвристических правил и методов, позволяющих выявить структуру пространства возможных решений. ИИ мог бы продолжать свой поиск до тех пор, пока не будет найдено решение, удовлетворяющее критерию успеха. А затем или внедрить решение самостоятельно, или (например, оракул) сообщить о нем пользователю.
Элементарные формы такого подхода сегодня уже используются очень широко. Тем не менее ПО, в котором работают методы ИИ и машинного обучения, хотя и имеет некоторые шансы найти решение, неожиданное для людей, их создавших, во всех практических смыслах функционирует как обычные программы и не создает экзистенциального риска. В опасную зону мы попадаем лишь тогда, когда методы, используемые в поиске, становятся слишком мощными и универсальными, то есть когда они начинают переходить на общий уровень интеллекта, а особенно — на уровень сверхразума.
Есть (как минимум) два случая, когда могут возникнуть проблемы.
Во-первых, сверхразумный процесс поиска может найти решение, которое не только неожиданно, но и категорически неприемлемо. Это приведет к пагубному отказу по одному из обсуждавшихся выше типов (порочная реализация, инфраструктурная избыточность, преступная безнравственность). Особенно очевидна такая возможность, когда действуют монарх и джинн, напрямую воплощающие в жизнь найденные ими решения. Если компьютерные модели, призванные символизировать счастье, или заполонение планеты скрепками — первые из обнаруженных сверхразумом решений, удовлетворяющие критерию успеха, тогда мы получим сплошные смайлики и скрепки14. Но даже оракул, всего лишь сообщающий о решении, если все идет хорошо, — может стать причиной порочной реализации. Пользователь просит оракула представить план достижения определенного результата или технологию выполнения определенной функции, а затем следует этому плану или воплощает в жизнь технологию, в результате чего сталкивается с порочной реализацией точно так же, как если бы реализацией решения занимался сам ИИ15.
Во-вторых, проблемы могут возникнуть на этапе работы самого ПО. Если методы, которыми оно пользуется для поиска решения, достаточно сложны, они могут допускать управление процессом поиска в интеллектуальном режиме. В этом случае компьютер, на котором запущено ПО, будет выглядеть уже не как инструмент, а скорее как агент. То есть программа может начать разрабатывать план проведения поиска. В ее плане будут определены области, которые следует изучить в первую очередь, методы их изучения, данные, которые нужно собрать, модель использования наилучшим образом имеющихся вычислительных мощностей. Разрабатывая план, отвечающий внутреннему критерию ПО (в частности, который имеет довольно высокую вероятность привести к решению, удовлетворяющему определенному пользователем критерию в отведенное на это время), программа может остановиться на какой-то необычной идее. Например, план может начаться с получения дополнительных вычислительных мощностей и устранения потенциальных препятствий (в том числе людей). Столь «творческий подход» вполне возможен после достижения ПО высокого интеллектуального уровня. Если программа решит реализовать такой план, это приведет к экзистенциальной катастрофе.
ВРЕЗКА 9. НЕОЖИДАННЫЕ РЕЗУЛЬТАТЫ СЛЕПОГО ПОИСКА
Даже простые процессы эволюционного поиска иногда приводят к совершенно неожиданным для пользователя результатам, которые тем не менее формально удовлетворяют поставленным критериям.
Область способного к эволюции аппаратного обеспечения представляет много примеров данного явления. Поиск проводится при помощи эволюционного алгоритма, который прочесывает пространство возможных схем аппаратных средств и тестирует каждую из них на пригодность путем реализации каждого варианта в виде интегральной схемы и проверки правильности ее функционирования. Часто в результате эволюционного дизайна удается достичь значительной экономии. Например, в ходе одного из подобных экспериментов была обнаружена схема дискриминации частот, которая функционировала без тактового генератора — компонента, считавшегося обязательным для выполнения такого рода функции. Исследователи оценили, что схемы, полученные в результате эволюционного дизайна, на один-два порядка меньше, чем те, которые для тех же целей создали бы инженеры-люди. Такие схемы использовали физические свойства входящих в них компонентов совершенно нетрадиционными способами, в частности, некоторые активные и необходимые для работы компоненты вообще не были соединены с входными или выходными ножками! Вместо этого они взаимодействовали с другими компонентами за счет того, что обычно считается досадными помехами: скажем, электромагнитных полей или нагрузки источника питания.
Другой эксперимент по эволюционной оптимизации с заданием разработать осциллятор, привел к исчезновению из схемы, казалось бы, еще более необходимого компонента — конденсатора. Когда успешное решение было получено и ученые посмотрели на него, то первой реакцией были слова: «Это не будет работать!» Однако после более тщательного анализа оказалось, что алгоритм, словно секретный агент Макгайвер[25], переконфигурировал свою материнскую плату, лишенную датчиков, в импровизированный радиоприемник, использовав дорожки печатной схемы в качестве антенны для приема сигналов, генерируемых компьютером, который располагался поблизости в той же лаборатории. Затем эти сигналы усиливались схемой и преобразовывались в выходной сигнал осциллятора16.
В других экспериментах эволюционные алгоритмы разрабатывали схемы, которые определяли, что материнскую плату проверяли осциллографом или что в лаборатории в розетку включали паяльник. Эти примеры показывают, как программы в процессе свободного поиска могут изменить назначение доступных им ресурсов, чтобы обеспечить себе неожиданные сенсорные возможности такими средствами, которые привычно мыслящий человеческий ум не готов не только использовать, но и просто понять.