Лесная экономика и первый крах
В первом выпуске этих заметок я рассказал историю, которой гордился. Я создал Лесную легенду под названием «Набег на Запасы Уны» — банковский кризис 1929 года в оформлении лесного фольклора — и наблюдал, как сова-хранительница мёда реагирует на панику и начинает распродавать запасы. Волна предложения обрушила цену мёда с 10 до 3 за несколько ходов. Никто не писал скрипт. Переосмысленный банковский набег заставил агента сбросить актив, и это движение сдвинуло цену.
В этом и состоял тезис: дай маленькой модели роль и бюджет — и эмерджентное рыночное поведение возникнет само. Затем я пересобрал лес, и крах перестал происходить. Этот выпуск — о том, почему, потому что неудача научила меня о работе с агентами больше, чем первоначальный успех.
Пять лабораторий, пять архитектур
При пересборке одну модель, управлявшую пятью персонажами, заменил совет из пяти малых моделей разных лабораторий, каждая из которых управляет своим персонажем: модель OpenAI (исследовательская компания), модель NVIDIA (технологическая компания), модель OpenBMB (китайская исследовательская организация) и модель с полумиллиардом параметров собственной дообучки — на ней работают двое из пяти персонажей.
Смысл был в честности. Если утверждение состоит в том, что малые модели способны поддерживать живую экономику, то наиболее сильная версия этого утверждения — пять различных архитектур, принимающих самостоятельные решения на одном рынке, а не одна модель в пяти ролях. Именно эта гетерогенность разрушила историю, которую я уже написал.
Я пересобрал и сторону оператора. Игрок теперь финансист, работающий из тени: открыть короткую позицию по товару, запустить правдивый слух, чтобы создать условия для падения, активировать легенду и снять прибыль, когда цена рухнет. Я сделал эту цепочку видимой на экране — с целью, таблицей результатов и первой сделкой в один клик. Сделать обещание видимым — самый быстрый способ обнаружить, что обещание ложно.
Когда я открыл короткую позицию по мёду и запустил «Набег на Запасы Уны», мёд не упал. Он вырос. Модели совета, получившие слух о пустом хранилище и подсказку о гибели урожая, не стали сбрасывать мёд, как это сделала исходная единственная модель. Они начали накапливать. Дефицит вместо распродажи. Короткая позиция принесла убыток, а заголовок, который написал нарратор без всякой иронии, гласил, что ставка на мёд себя не оправдала.
В этом и состоит ключевой урок, и он не специфичен для игры. В агентной экономике базовая цена — не регулятор, который можно повернуть. Это остаток того, по чему агенты действительно договорились торговать. Исходный крах был реальным, но он зависел от диспозиции одной модели, а не являлся устойчивым свойством системы. Смените состав — и задокументированное эмерджентное поведение попросту испарится.
Три убыточные попытки
Я провёл три живых прогона, пытаясь вернуть крах, воздействуя на экономику снаружи — так же, как в учебнике шокируют модель спроса и предложения.
Сначала оставил легенду в виде чистого слуха и рассчитывал на реакцию агентов. Они не стали продавать. Затем добавил каждому персонажу внеплановые запасы мёда, рассудив, что избыток обрушит спрос и потянет цену вниз. Против тестовой политики — правилового заменителя (rule-based proxy), который я использую для быстрых офлайн-прогонов, — это сработало блестяще: заменитель следует механическому порогу желаний и прекращает покупать, когда запасы переполнены. Живые модели проигнорировали избыток и торговали исходя из собственного прочтения ситуации. Ставка снова проиграла. Третий раз я увеличил размер короткой позиции — что лишь увеличило убыток.
Три записи, три убытка: минус пятнадцать, минус двадцать шесть, минус двадцать семь камушков — при том что вся предпосылка состояла именно в том, что так зарабатывают деньги. Закономерность была предупреждением. Каждый рычаг, за который я тянул, являлся входным данным для решения агентов, а агенты были вправе отказаться. Невозможно направить гетерогенную группу моделей с помощью механического шока, потому что шок лишь смещает выбор, который они всё равно делают сами.
Ловушку внутри ловушки стоит назвать отдельно. Решение, сработавшее против быстрого тестового заменителя, дало ложную уверенность и стоило одного живого прогона на опровержение. Когда дешёвый заменитель и реальные агенты расходятся во мнениях, врёт именно заменитель, и любой результат, воспроизводимый только под заменителем, — не результат.
Авторируй шов, а не входные данные
Решением стало перестать убеждать агентов и сделать панику истинной по конструкции. Банковский набег — по определению — это крах. Поэтому легенда теперь обваливает товар при расчёте, после того как рынок завершил клиринг за ход, путём прямой перезаписи базовой цены. Агенты торгуют сколько угодно; затем набег наступает как факт, цена падает вдвое, и короткая позиция, открытая заранее, закрывается с прибылью. Крах больше не является поведением, на которое я надеюсь. Это авторское следствие, которое я налагаю в той единственной точке, где ничто ниже по потоку не может с ним поспорить.
Это звучит как отказ от эмерджентности — и является противоположным. Эмерджентный слой — пять моделей, торгующих, сплетничающих, накапливающих, формирующих обиды, — по-прежнему выполняет всю работу, которая делает лес живым. Надёжные результаты достигаются не более сильным давлением на эмерджентные входные данные. Они достигаются выбором точного шва, в котором авторируется детерминированный override (принудительное замещение результата), при сохранении свободы всего, что находится выше по потоку.
Эмерджентность — для текстуры, авторский контроль — для моментов, которые должны произойти. Мастерство состоит в том, чтобы понять, что есть что и где проходит шов между этими двумя слоями.
Ниже — сводная таблица четырёх миров, в которых я проверял одну и ту же ставку: одна модель → крах эмерджентный, цена мёда упала с 10 до 3, победа; совет из пяти моделей с одним лишь слухом → агенты выбрали удержание, цена выросла на дефиците, минус 15; совет с избытком запасов → коллапс спроса сработал только под тестовой политикой, цена почти не изменилась, минус 26–27; совет с override при расчёте → цена упала принудительно вдвое после клиринга, плюс 40. Крах был эмерджентным и хрупким под управлением одной модели, отсутствовал под управлением гетерогенного совета и стал надёжным только после авторирования в расчётном шве.
Выводы
Три вывода, и все три выходят за рамки игры.
Первое: эмерджентность случайна, а не устойчива. Поведение, наблюдаемое и описанное на основе одной популяции агентов, может исчезнуть при смене популяции, даже если всё остальное не меняется. Считайте единственный впечатляющий прогон анекдотом, а не свойством системы — до тех пор, пока он не выдержит другой состав.
Второе: управлять рынком агентов через шок входных данных невозможно. Рычаги спроса и предложения лишь смещают выборы, которые агенты всё равно делают сами, а гетерогенный совет часто откажется следовать. Надёжные результаты приходят через авторирование в расчётном шве, ниже по потоку от каждого решения, а не через усиление давления выше по потоку.
Третье: дешёвый симулятор, позволяющий быстро итерировать, — он же с наибольшей вероятностью польстит ложному решению. Когда заменитель и реальные агенты расходятся, верьте агентам.
Я строю агентные рыночные модели профессионально и допустил каждую из этих ошибок в большем масштабе и с более высокими ставками, чем лес лесных существ. Было полезно допустить их снова там, где под угрозой оказалась лишь горка камушков и история, рассказанная мной с чрезмерной уверенностью в первый раз. Малые модели, большие приключения, и крах, который приходится авторировать самому.