Вы здесь

Встроенная Агентность. Согласование подсистем

Абрам Демски, Скотт Гаррабрант

Примечание переводчика - из-за отсутствия на сайте нужного класса для того, чтобы покрасить текст в оранжевый цвет, я заменил его фиолетовым. Фиолетовый в тексте соответствует оранжевому на картинках.

Вы хотите что-то выяснить, но пока не знаете, как это делать.

Вам надо как-то разбить задачу на под-вычисления. Нет атомного действия «думанья»; интеллект должен быть построен из не-интеллектуальных частей.

То, что агент состоит из частей – часть того, почему затруднительны контрфакты, ведь агенту может понадобиться рассуждать о невозможных конфигурациях этих частей.

То, что агент состоит из частей – то, что делает рассуждения о себе и самомодификацию вообще возможными.

Впрочем, то, что мы в основном будем обсуждать в этом разделе – другая проблема: когда агент состоит из частей, враждебным может быть не только внешнее окружение, но и что-то внутри агента.

Этот кластер задач называется Согласованием Подсистем: как удостовериться, что подсистемы не работают друг против друга; избежать подпроцессов, оптимизирующих нежелательные цели:

  • Благотворная индукция
  • Благотворная оптимизация
  • Прозрачность
  • Меса-оптимизаторы

Вот чучельная схема агента: 

Эпистемическая подсистема просто хочет, чтобы у неё были точные убеждения. Инструментальная подсистема использует эти убеждения, чтобы отслеживать, насколько хорошо она справляется. Если инструментальная подсистема становится слишком способной сравнительно с эпистемической, то она может попробовать обмануть эпистемическую подсистему, как показано на картинке.

Если эпистемическая подсистема становится слишком сильна, то это тоже может привести к нехорошим исходам.

Эта схема агента считает эпистемическую и инструментальную подсистемы агента отдельными агентами со своими собственными целями, что не особо реалистично. Однако, как мы видели в разделе про вайрхединг, проблемы того, что подсистемы работают на конфликтующие цели, сложно избежать. И эта проблема становится ещё затруднительнее, если мы создали эти подсистемы ненамеренно.

Одна из причин избегать запуска суб-агентов, которые хотят разных вещей – то, что нам хочется устойчивости при относительном масштабировании.

Подход устойчив при масштабировании, если он всё ещё работает или аккуратно проваливается, когда вы масштабируете его способности. Есть три варианта: устойчивость при масштабировании вверх; устойчивость при масштабировании вниз; и устойчивость при относительном масштабировании.

  • Устойчивость при масштабировании вверх означает, что ваша система не перестанет хорошо себя вести, если станет лучше оптимизировать. Один из способов проверить это – подумать о том, что случится, если функция, которую ИИ оптимизирует, будет в самом деле максимизирована. Вспомните о Законе Гудхарта.
  • Устойчивость при масштабировании вниз означает, что ваша система всё ещё работает, если стала менее мощной. Конечно, она может перестать быть полезной, но она не должна переставать работать безопасно и без необязательных затрат.

Ваша система может работать, если она может в точности максимизировать некую функцию, но безопасна ли она, если вы аппроксимируете? К примеру, может, система безопасна, если она способна очень точно изучить человеческие ценности, но аппроксимация делает её всё более несогласованной.

  • Устойчивость при относительном масштабировании означает, что ваш план не полагается на то, что подсистемы агента имеют схожую мощность. К примеру, обучение GAN (Генеративно-Состязательных Сетей) может провалиться, если одна подсеть становится слишком сильной, потому что обучающий сигнал прекращается.

Недостаток устойчивости при масштабировании не обязательно полностью обрушивает предложение, но его стоит иметь в виду; если его нет, то вам нужна надёжная причина считать, что вы находитесь на нужном уровне масштабирования.

Устойчивость при относительном масштабировании особенно важна для согласования подсистем. Агент с интеллектуальными под-частями не должен полагаться на способность их переиграть, если у нас нет сильного аргумента о том, почему это всегда возможно.

Мораль для большой картины: стремитесь к единой системе, которая не конфликтует сама с собой.

С чего бы кому-то создавать агента, чьи части борются друг с другом? Есть три очевидных причины: подцели, указатели и поиск.

Разделение задачи на подцели может быть единственным способом эффективно найти решение. Однако, делая вычисления, связанные с подцелями, вы не должны полностью забывать о большой картине!

Агенту, спроектированному, чтобы строить дома, не следует запускать субагента, которого волнует только строительство лестниц.

Интуитивно хочется, чтобы, несмотря на то, что подсистемам нужно иметь свои собственные цели для разделения задач на части, эти подцели должны устойчиво «ссылаться» на главную цель.

Агент, строящий дома, может запустить подсистему, которую волнуют только лестницы, но только лестницы в контексте домов.

Однако вам нужно это сделать каким-то способом, который не сводится к тому, что у вашей системы, строящей дома, есть в голове вторая система, строящая дома. Это приводит меня к следующему пункту:

Указатели: Для подсистем может быть сложно таскать с собой цель всей системы, потому что предполагается, что им надо упрощать задачу. Однако такие окольные пути, кажется, склонны приводить к ситуациям, когда стимулы разных подсистем не согласованы.

Как мы видели в примере эпистемической и инструментальной подсистем, как только мы начинаем оптимизировать ожидание какого-то рода, а не напрямую получать обратную связь о том, что мы делаем по некоторой по-настоящему важной метрике, мы можем создать извращённые мотивации – это Закон Гудхарта.

Как мы попросим подсистему «сделай X», а не «убеди систему в целом, что делаешь X», не передавая всю систему целей?

Это похоже на то, как нам хотелось, чтобы агенты-наследники устойчиво ссылались на ценности, потому что сложно их записать. Однако, в этом случае, изучение ценностей большего агента тоже было бы бессмысленно, подсистемы и подцели должны быть меньше.

Может быть, не так сложно решить согласование подсистем для случая подсистем, полностью спроектированных людьми, или подцелей, в явном виде выделенных ИИ. Если вы уже знаете, как избежать несогласованности и как устойчиво делегировать свои цели, обе задачи кажутся решаемыми.

Однако, спроектировать все подсистемы настолько явно не кажется возможным. В какой-то момент, решая задачу, вы разбиваете её на части настолько сильно, насколько получается, и начинаете полагаться на метод проб и ошибок.

Это приводит нас к третьей причине того, с чего подсистемам оптимизировать разные вещи – поиск: решение задачи путём просматривания большого пространства возможностей, которое само по себе может содержать несогласованные подсистемы.

Исследователи машинного обучения вполне знакомы с этим явлением: проще написать программу, которая найдёт вам высокопроизводительную систему машинного перевода, чем напрямую написать эту систему самостоятельно.

Этот процесс может в итоге зайти ещё на шаг дальше. Для достаточно богатой задачи и достаточно впечатляющего процесса поиска, найденные этим поиском решения могут сами что-то интеллектуально оптимизировать.

Это может произойти случайно, или же быть намеренной стратегией решения сложных задач. В любом случае, появляется высокий шанс обострения Гудхартоподобных проблем – у вас теперь есть две системы, которые могут быть несогласованы, вместо одной.

Эта проблема описана у Хубинджера и пр. в «Рисках Выученной Оптимизации в Продвинутых Системах Машинного Обучения».

Давайте назовём изначальный процесс поиска базовым оптимизатором, а обнаруженный поиском процесс поиска – меса-оптимизатором.

«Меса» – антоним «мета». Если «мета-оптимизатор» - это оптимизатор, спроектированный для создания другого оптимизатора, то «меса-оптимизатор» – это любой оптимизатор, сгенерированный изначальным оптимизатором – неважно, хотели ли программисты, чтобы их основной оптимизатор отыскивал новые оптимизаторы.

«Оптимизация» и «поиск» – неоднозначные термины. Я буду считать, что к ним относится любой алгоритм, который можно естественно интерпретировать как исполняющий значительную вычислительную работу для «нахождения» объекта, высоко оцениваемого некой целевой функцией.

Целевая функция базового оптимизатора не обязательно совпадает с целевой функцией меса-оптимизатора. Если базовый оптимизатор хочет сделать пиццу, то новому оптимизатору может нравиться замешивать тесто, нарезать ингредиенты, и т.д.

Целевая функция нового оптимизатора должна помогать базовой цели, по крайней мере в тех примерах, которые проверяет базовый оптимизатор. В ином случае меса-оптимизатор не был бы выбран.

Однако, меса-оптимизатор должен как-то упрощать задачу; нет смысла в запуске в точности такого же поиска заново. Так что кажется, что его цели будут иметь склонность быть подобными хорошим эвристикам; более простыми для оптимизации, но в общем случае отличающимися от базовой цели.

Почему разница между базовыми и меса-целями может вызывать беспокойство, если новый оптимизатор всё равно хорошо оценивается согласно базовой цели? Даже если мы в точности правильно справимся с описанием ценностей, всё равно между обучающим набором и развёртыванием будет некоторый сдвиг распределения. (См. Амодей и пр. «Конкретные Задачи Безопасности ИИ».)

В общем-то маленькие сдвиги распределения могут оказаться важны для способного меса-оптимизатора, который может заметить мельчайшие различия и сообразить, как их использовать для своей собственной цели.

На самом деле даже использование термина «сдвиг распределения» кажется неверным в контексте встроенной агентности. Мир не состоит из одинаково распределённых независимых переменных. Аналогом «отсутствия сдвига распределения» было бы обладание точной моделью всего будущего, связанного с тем, что вы хотите оптимизировать, и способностью запускать её снова и снова по ходу обучения. Так что нам надо иметь дело с очень большим «сдвигом распределения».

Ещё мы можем хотеть оптимизировать не в точности то, чего мы хотим вообще. Очевидный способ избежать появления агентов, которые добиваются подцелей ценой основной цели – делать подсистемы не агентными. Просто искать среди способов строить лестницы, не создавать что-то, беспокоящееся о лестницах.

Проблема, получается, в том, что мощные меса-оптимизаторы оптимизируют не то, что волнует базовую систему, и что у меса-оптимизаторов присутствует конвергентный стимул быть агентными.

Вдобавок, есть возможность, что меса-оптимизатору станет известно о базовом оптимизаторе, в каком случае он может начать явно пытаться хорошо справиться с базовой целью просто для того, чтобы продолжить существование, в то же время высматривая знаки того, что обучение закончилось, и он может перестать притворяться. Это версия описанного Ником Бостромом «предательского разворота».

Это та же история, как с Встроенная Агентность. Устойчивое делегирование: в пространстве поиска есть нечто агентное, отвечающее на наш выбор прокси так, что прокси перестаёт хорошо работать.

Вы можете попробовать избежать предательских разворотов, повторно симулируя «конец обучения, время для развёртывания» во время обучения, что-то вроде вложенного сна. Цель – протестировать достаточно слоёв симуляции, чтобы вы могли сделать вывод о том, что при реальном развёртывании предательского поворота не будет.

К сожалению, сходимость при таком обучении будет такая себе. Обычно в машинном обучении хорошее качество работы означает хорошее в среднем. Но предательский разворот – это «ошибка», которая может быть аккуратно размещена так, чтобы нанести наибольший ущерб. Мы хотим удостовериться, что её не произойдёт.

Проблема частично в том, что некоторые выводы намного важнее других. Развёртывание важнее обучения, а некоторые критические или уязвимые моменты во время развёртывания будут особенно важны. Мы хотим быть особенно уверены, что всё пойдёт как надо в важных случаях, а не просто получить хороший средний результат.

Но мы не можем решить это, сказав системе, что важно. На самом деле, кажется, мы надеемся, что она не сможет этого понять – мы полагаемся на способность обобщить качество работы с маловажных случаев на более важные. Поэтому исследование техник машинного обучения для избегания редких катастроф (или «ловушек») связано с задачей получения гарантии, что меса-оптимизаторы согласованы с базовыми.

Сложно доверять произвольному коду – а им являются модели из обширных классов моделей – основываясь только на эмпирическом тестировании. Рассмотрим сильно упрощённую задачу: мы хотим найти программу, которая всегда выводит 1. 0 – это катастрофический провал.

Если бы мы могли сами просмотреть код, то задача была бы простой. Но вывод машинного обучения зачастую сложно проанализировать; давайте предположим, что мы вовсе не можем понимать код.

Теперь, в некотором смысле, мы больше можем доверять простым функциям. Короткий кусок кода с меньшей вероятностью содержит жёстко закодированной исключение. Давайте опишем это количественно.

Рассмотрим набор всех программ длины $L$. Некоторые программы $p$ будут долгое время печатать $1$, но затем напечатают $0$. Мы пытаемся этого избежать.

Назовём время до первого нуля $W_{p}$.  ($W_{p}=∞$, если программе $p$ можно доверять, то есть она никогда не выведет $0$.)

Высочайшая конечная $W_{p}$ из всех программ длины $L$ – это вариация функции Занятого Бобра, так что я буду обозначать её $BB(L)$. Если мы хотим быть совершенно уверены, что случайная программа длины $L$ достойна доверия, то нам надо пронаблюдать $BB(L)$ единиц от этой программы.

Однако, факт про функцию Занятого Бобра – $BB(n)$ растёт быстрее любой вычислимой функции. Так что такое эмпирическое зарабатывание доверия в худшем случае занимает невычислимо много времени.

Что в среднем случае?

Если мы предположим, что все остальные программы длины $L$ – простые случаи, число программ длины $L$ pастёт экспоненциально, так что среднее будет $BB(L)/exp(L)$. Но экспоненты вычислимы. Так что $BB(L)/exp(L)$ всё ещё растёт быстрее любой вычислимой функции.

Так что хоть использование коротких программ в теории даёт нам некоторую уверенность, сложность вывода обобщённых заключений крайне быстро растёт с ростом длины.

Если ограничения длины не так уж практичны, может, нам может помочь ограничение вычислительной сложности? Интуитивно кажется, что меса-оптимизатору необходимо время подумать, чтобы успешно выполнить предательский разворот. Так что программа, которая приходит к выводам быстрее, может быть более достойна доверия.

Однако ограничение класса сложности, к сожалению, не позволяет нам обойти поведение Занятого Бобра. Стратегии, долго выжидающие перед тем, как вывести $0$, могут быть ещё сильнее замедлены лишь небольшим увеличением длины программы $L$.

Если все эти проблемы кажутся слишком гипотетическими, посмотрите на эволюцию жизни на Земле. Эволюцию можно рассматривать как максимизатор приспособленности к размножению.

(На самом деле об эволюции можно думать как об оптимизаторе многих вещей, или как вообще не об оптимизаторе, но это неважно. Суть в том, что если бы агент хотел максимизировать приспособленность к размножению, то он мог бы использовать систему, похожую на эволюцию.)

Интеллектуальные организмы – меса-оптимизаторы эволюции. Хотя их стремления точно коррелируют с приспособленностью к размножению, организмы хотят много всего разного. Есть даже меса-оптимизаторы, которые смогли понять эволюцию, и даже периодически ей манипулировать. Мощные и несогласованые меса-оптимизаторы выглядят реальной возможностью, по крайней мере при достаточной вычислительной мощности.

Проблемы возникают, когда вы пытаетесь решить задачу, которую решать не умеете, с помощью поиска по большому пространству в надежде, что «кто-нибудь» сможет её решить.

Если источник трудностей – решение задач путём обширного поиска, может быть, нам следует поискать другие способы решать задачу. Может, нам стоит решать задачи, понимая что к чему. Но как вы решите задачи, которые пока не знаете, как решать, иначе кроме как пробуя варианты?

Давайте отступим на шаг назад.

Встроенные модели мира – о том, как встроенному агенту вообще думать; теория принятия решений – о том, как действовать. Устойчивое делегирование – о создании достойных доверия наследников и помощников. Согласование подсистем – о том, как составить одного агента из достойных доверия частей.

Проблемы в том, что:

  • Мы не знаем, как думать об окружении, когда мы меньше его.
  • В той степени, в которой мы умеем это делать, мы не знаем, как думать о последствиях действий в этих окружениях.
  • Даже когда мы умеем это делать, мы не знаем, как думать о том, чего мы хотим.
  • Даже когда у нас нет всех этих проблем, мы не знаем, как нам надёжно выводить действия, которые приведут нас к желаемому!

Это - последний из основных постов в цепочкет Скотта Гаррабранта и Абрама Демски «Встроенная Агентность». Заключение: Встроенные Странности.


Перевод: 
Выменец Максим
Оцените качество перевода: 
Голосов пока нет
  • Короткая ссылка сюда: lesswrong.ru/3008