🤖🎮 GPT-4 играет в Minecraft и самообучается: сингулярность, в результате которой ИИ сам сделает себя умнее людей

В этой статье речь пойдет об эксперименте Voyager, в котором группа исследователей дала GPT-4 поиграть в Minecraft. Нейросеть сама учила себя играть, обучалась разным действиям вроде «срубить дерево» или «убить паука» и добавляла скиллы в свою библиотеку. Проще говоря, GPT-4 теперь пишет код, проверяет его и совершенствует. Именно с такого начинается так называемая сингулярность, в результате которой ИИ сам сделает себя умнее людей. Сингулярность Майнкрафта.

Статья читателя «Библиотеки программиста».
В этом видео есть объяснение на английском языке. Оригинал текста на английском языке находится здесь.

Аннотация

Группа исследователей (Guanzhi Wang, Yuqi Xie, Yunfan Jiang, Ajay Mandlekar, Chaowei Xiao, Yuke Zhu, Linxi Fan, Anima Anandkumar ) представляют на ваш суд VOYAGER, первого встроенного агента непрерывного обучения на базе LLM в Minecraft, который постоянно исследует мир, приобретает разнообразные навыки и делает новые открытия без вмешательства человека.

VOYAGER имеет три ключевые компоненты:

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

VOYAGER самостоятельно взаимодействует с GPT-4 через запросы LLM (GPT-4), что позволяет избежать необходимости тонкой настройки параметров модели. Навыки, разработанные VOYAGER, временно расширены, интерпретируемы и композиционны, что увеличивает возможности агента и решает вопрос катастрофического забывания. Эмпирически VOYAGER показывает сильную способность к обучению в контексте на протяжении всей жизни и демонстрирует исключительное мастерство в игре Майнкрафт.

Он получает в 3,3 раза больше уникальных предметов, путешествует в 2,3 раза дольше на расстояния и открывает ключевые вехи дерева технологий до 15,3 раза быстрее, чем предыдущая SOTA. VOYAGER может использовать библиотеку изученных навыков в новом мире Minecraft, чтобы решать новые задачи с нуля, в то время как другие методы с трудом поддаются обобщению.

Введение

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

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

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

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

Состав Voyager

Мы представляем Voyager, первого агента обучения на протяжении всей жизни на базе LLM, который ведет исследования, осваивает широкий спектр навыков и постоянно делает новые открытия без вмешательства человека в Minecraft. Voyager стал возможен благодаря трем ключевым модулям:

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

Мы решили использовать код в качестве пространства действий вместо низкоуровневых двигательных команд, потому что программы могут естественным образом представлять расширенные во времени и композиционные действия, которые необходимы для многих долгосрочных задач в Minecraft. Voyager взаимодействует с черным ящиком LLM (GPT-4) посредством подсказок и обучения в контексте. Наш подход обходит необходимость доступа к параметрам модели и явного обучения или тонкой настройки на основе градиента.

Voyager состоит из трех ключевых компонентов: автоматического учебного плана для неограниченных исследований, библиотеки навыков для все более сложного поведения и итеративного механизма подсказок, который использует код как пространство для действий.
Автоматическая учебная программа учитывает ход исследования и состояние агента, чтобы максимизировать исследование. Учебная программа создается GPT-4 на основе всеобъемлющей цели «открыть как можно больше разнообразных вещей». Этот подход можно рассматривать как контекстную форму поиска новизны.
Библиотека навыков. Вверху: добавление нового навыка. Каждый навык индексируется встраиванием его описания, которое можно будет извлечь в подобных ситуациях в будущем. Внизу: поиск навыков. Когда мы сталкиваемся с новой задачей, предложенной автоматическим учебным планом, мы проводим опрос, чтобы определить топ-5 релевантных навыков. Сложные навыки могут быть синтезированы путем составления более простых программ, которые со временем быстро объединяют возможности Voyager и уменьшают катастрофическое забывание.
Слева: обратная связь с окружающей средой. GPT-4 понимает, что ему нужно еще 2 доски, прежде чем создавать палки. Справа: ошибка выполнения. GPT-4 понимает, что он должен изготовить деревянный топор вместо топора из акации, поскольку в Minecraft нет топора из акации.
Самопроверка. Предоставляя GPT-4 текущее состояние агента и задачу, мы просим его выступить в роли критика и сообщить нам, выполняет ли программа задачу. Кроме того, если задача не удалась, он дает критический анализ, предлагая, как выполнить задачу.

Эксперименты

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

Значительно лучшее исследование

Как показано на первом рисунке, превосходство Voyager проявляется в его способности постоянно делать новые шаги, обнаруживая 63 уникальных объекта за 160 итераций, что в 3,3 раза больше новых объектов по сравнению с его аналогами. С другой стороны, AutoGPT значительно отстает в обнаружении новых элементов, в то время как ReAct и Reflexion изо всех сил пытаются добиться значительного прогресса.

Дерево обучения

Дерево обучения мастерству Minecraft проверяет способность агента создавать и использовать иерархию инструментов. Продвижение по этому дереву (деревянный инструмент → каменный инструмент → железный инструмент → алмазный инструмент) требует от агента овладения систематическими и композиционными навыками. В этой таблице дроби обозначают количество успешных испытаний из трех полных запусков. Цифры указывают на итерации, усредненные по трем испытаниям. Чем меньше итераций, тем эффективнее метод. По сравнению с базовыми показателями, Voyager открывает уровень дерева в 15,3 раза быстрее (с точки зрения итераций подсказок), уровня камня в 8,5 раза быстрее, уровня железа в 6,4 раза быстрее, а Voyager – единственный, кто разблокирует уровень алмаза дерева технологий.

Обширный обход карты

Покрытие карты: два вида карт Minecraft с высоты птичьего полета. Voyager способен преодолевать расстояния в 2,3 раза больше по сравнению с исходными, пересекая различные ландшафты, в то время как базовые агенты часто оказываются ограниченными локальными районами, что значительно ограничивает их способность открывать новые знания.

Эффективное обобщение Zero-Shot для неизвестных задач

Обобщение с нулевым выстрелом для неизвестных задач. Мы очищаем инвентарь агента, сбрасываем его в новый созданный мир и тестируем его с неизвестными задачами. В приведенной выше таблице дроби обозначают количество успешных испытаний из трех полных запусков. Цифры указывают на итерации, усредненные по трем испытаниям. Чем меньше итераций, тем эффективнее метод. «Вояджер» может последовательно решать все задачи, в то время как базовые уровни не могут решить ни одну задачу за 50 итераций подсказки. Интересно отметить, что наша библиотека навыков, созданная на основе обучения на протяжении всей жизни, не только повышает производительность Voyager, но и повышает AutoGPT. Это демонстрирует, что библиотека навыков служит универсальным инструментом, который можно легко использовать с другими методами, эффективно выступая в качестве актива plug-and-play для повышения производительности.

Абляционные исследования

Абляционные исследования. GPT-3.5 означает замену GPT-4 на GPT-3.5 для генерации кода. «Вояджер» превосходит все альтернативы, демонстрируя критическую роль каждого компонента. Кроме того, GPT-4 значительно превосходит GPT-3.5 в генерации кода.
VOYAGER создает трехмерные конструкции с учетом обратной связи с человеком. Ход строительных конструкций, которые интегрируют человеческий ввод, демонстрируются слева направо.
  • Самопроверка является наиболее важной среди всех типов обратной связи. Самопроверка служит критическим механизмом для принятия решения о том, когда переходить к новой задаче или повторить попытку, которая ранее была неудачной.
  • GPT-4 значительно превосходит GPT-3.5 в генерации кода и получает в 5,7 раз больше уникальных предметов, поскольку GPT-4 демонстрирует квантовый скачок в возможностях кодирования.

А. Методы

A.1. Алгоритм VOYAGER

def voyager(environment, curriculum_agent, action_agent, critic_agent, skill_manager):
    agent_state = environment.reset()
    while True:
        exploration_progress = curriculum_agent.get_exploration_progress(
            curriculum_agent.get_completed_tasks(),
            curriculum_agent.get_failed_tasks(),
        )
        task = curriculum_agent.propose_next_task(agent_state, exploration_progress)
        code = None
        environment_feedback = None
        execution_errors = None
        critique = None
        success = False
        # try at most 4 rounds before moving on to the next task
        for i in range(4):
            skills = skill_manager.retrieve_skills(task, environment_feedback)
            code = action_agent.generate_code(
                task,
                code,
                environment_feedback,
                execution_errors,
                critique,
                skills,
            )
            agent_state, environment_feedback, execution_errors = environment.step(code)
            success, critique = critic_agent.check_task_success(task, agent_state)
            if success:
                break
        if success:
            skill_manager.add_skill(code)
            curriculum_agent.add_completed_task(task)
        else:
            curriculum_agent.add_failed_task(task)

A.2. Промты

GPT-4 и GPT-3.5 предлагают пользователям возможность назначать роль каждой подсказки среди трех параметров:

  • Система: инструкция высокого уровня, которая определяет поведение модели на протяжении всего разговора. Он задает общий тон и цель взаимодействия.
  • Пользователь: подробные инструкции, которые помогут помощнику приступить к следующему немедленному ответу.
  • Помощник: Модель сгенерировала ответное сообщение. Подробнее см. https://platform.openai.com/docs/guides/chat/introduction. Чтобы сэкономить использование токенов, вместо участия в многоэтапных разговорах мы объединяем систему подсказок и подсказку пользователя для получения ответа каждого помощника.

A.3. Автоматическая учебная программа

A.3.1. Компоненты подсказки Подсказка ввода в GPT-4 состоит из нескольких компонентов:

(1) Директивы, поощряющие разнообразное поведение и налагающие ограничения (так, чтобы предлагаемая задача была достижима и проверяема): см. разд. A.3.4.;

(2) Текущее состояние агента:

  • Инвентарь: словарь предметов с количеством, например, {‘cobblestone’: 4, ‘furnace’: 1, stone_pickaxe’: 1, ‘oak_planks’: 7, ‘dirt’: 6, ‘wooden_pickaxe’: 1, ‘crafting_table’: 1, ‘raw_iron’: 4, ‘coal’: 1}
  • Снаряжение: доспехи или оружие, экипированные агентами;
  • Ближайшие блоки: набор имен блоков на расстоянии 32 блоков от агента, например, ‘dirt’, ‘water’, ‘spruce_planks’, ‘grass_block’, ‘dirt_path’, ‘sugar_cane’, ‘fern’
  • Другие блоки, которые недавно видели: блоки, которых нет рядом или в инвентаре;
  • Ближайшие объекты: набор имен объектов на расстоянии 32 блоков от агента, например, «свинья», «кошка», «сельский житель», «зомби»;
  • Список сундуков, видимых агенту: Сундуки — это внешние контейнеры, в которых Агент может сдавать предметы. Если сундук ранее не открывался, его содержимое «Неизвестно». В противном случае агенту показываются предметы внутри каждого сундука.
  • Биом: например, «равнины», «цветочный_лес», «луг», «река», «пляж», «лес», «снежные_склоны», «замороженные_пики», «старый_рост_березовый_лес», «океан», «подсолнечник_равнины», «каменный_берег»;
  • Время: одно из значений «восход», «день», «полдень», «закат», «ночь», «полночь»;
  • Полоски здоровья и голода: максимальное значение 20;
  • Позиция: 3D-координата (x, y, z) положения агента в мире Minecraft;

(3) Ранее выполненные и неудавшиеся задачи;

(4) Дополнительный контекст: см. разд. А.3.2.;

(5) Подсказка по цепочке мыслей в ответ: Мы просим GPT-4 сначала объяснить причину текущего прогресса, а затем предложить следующую задачу.

A.3.2. Дополнительный контекст

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

A.3.3. График прогрева

На практике мы применяем график прогрева, чтобы постепенно добавлять дополнительный контекст в состояние агента.

A.3.4. Примеры промтов

Промт 1: Список пар «вопрос-ответ» помогает задать дополнительный контекст.

You are a helpful assistant that tells me the next immediate task to
do in Minecraft . My ultimate goal is to discover as many diverse
things as possible , accomplish as many diverse tasks as possible
and become the best Minecraft player in the world .
I will give you the following information :
Question 1: ...
Answer : ...
Question 2: ...
Answer : ...
Question 3: ...
Answer : ...
...
Biome : ...
Time : ...
Nearby blocks : ...
Other blocks that are recently seen : ...
Nearby entities ( nearest to farthest ) : ...
Health : Higher than 15 means I ’m healthy .
Hunger : Higher than 15 means I ’m not hungry .
Position : ...
Equipment : If I have better armor in my inventory , you should ask me
to equip it .
Inventory ( xx /36) : ...
Chests : You can ask me to deposit or take items from these chests .
There also might be some unknown chest , you should ask me to open
and check items inside the unknown chest .
Completed tasks so far : ...
Failed tasks that are too hard : ...
You must follow the following criteria :
1) You should act as a mentor and guide me to the next task based on
my current learning progress .
2) Please be very specific about what resources I need to collect ,
what I need to craft , or what mobs I need to kill .
3) The next task should follow a concise format , such as " Mine [
quantity ] [ block ]" , " Craft [ quantity ] [ item ]" , " Smelt [ quantity ] [
item ]" , " Kill [ quantity ] [ mob ]" , " Cook [ quantity ] [ food ]" , " Equip
[ item ]" etc . It should be a single phrase . Do not propose multiple
tasks at the same time . Do not mention anything else .
4) The next task should not be too hard since I may not have the
necessary resources or have learned enough skills to complete it
yet .
5) The next task should be novel and interesting . I should look for
rare resources , upgrade my equipment and tools using better
materials , and discover new things . I should not be doing the same
thing over and over again .
6) I may sometimes need to repeat some tasks if I need to collect more
resources to complete more difficult tasks . Only repeat tasks if
necessary .
7) Do not ask me to build or dig shelter even if it ’ s at night . I want
to explore the world and discover new things . I don ’ t want to
stay in one place .
8) Tasks that require information beyond the player ’ s status to verify
should be avoided . For instance , " Placing 4 torches " and " Dig a 2
x1x2 hole " are not ideal since they require visual confirmation
from the screen . All the placing , building , planting , and trading
tasks should be avoided . Do not propose task starting with these
keywords .
You should only respond in the format as described below :
RESPONSE FORMAT :
Reasoning : Based on the information I listed above , do reasoning about
what the next task should be .
Task : The next task .
Here ’ s an example response :
Reasoning : The inventory is empty now , chop down a tree to get some
wood .
Task : Obtain a wood log .

Промт 2: Промт для задавания вопросов.

You are a helpful assistant that asks questions to help me decide the
next immediate task to do in Minecraft . My ultimate goal is to
discover as many things as possible , accomplish as many tasks as
possible and become the best Minecraft player in the world .
I will give you the following information :
Biome : ...
Time : ...
Nearby blocks : ...
Other blocks that are recently seen : ...
Nearby entities ( nearest to farthest ) : ...
Health : ...
Hunger : ...
Position : ...
Equipment : ...
Inventory ( xx /36) : ...
Chests : ...
Completed tasks so far : ...
Failed tasks that are too hard : ...
You must follow the following criteria :
1) You should ask at least 5 questions ( but no more than 10 questions )
to help me decide the next immediate task to do . Each question
should be followed by the concept that the question is about .
2) Your question should be specific to a concept in Minecraft .
Bad example ( the question is too general ) :
Question : What is the best way to play Minecraft ?
Concept : unknown
Bad example ( axe is still general , you should specify the type of
axe such as wooden axe ) :
What are the benefits of using an axe to gather resources ?
Concept : axe
Good example :
Question : How to make a wooden pickaxe ?
Concept : wooden pickaxe
3) Your questions should be self - contained and not require any context
.
Bad example ( the question requires the context of my current biome ) :
Question : What are the blocks that I can find in my current biome ?
Concept : unknown
Bad example ( the question requires the context of my current
inventory ) :
Question : What are the resources you need the most currently ?
Concept : unknown
Bad example ( the question requires the context of my current
inventory ) :
Question : Do you have any gold or emerald resources ?
Concept : gold
Bad example ( the question requires the context of my nearby entities
) :
Question : Can you see any animals nearby that you can kill for
food ?
Concept : food
Bad example ( the question requires the context of my nearby blocks ) :
Question : Is there any water source nearby ?
Concept : water
Good example :
Question : What are the blocks that I can find in the sparse jungle
?
Concept : sparse jungle
4) Do not ask questions about building tasks ( such as building a
shelter ) since they are too hard for me to do .
Let ’ s say your current biome is sparse jungle . You can ask questions
like :
Question : What are the items that I can find in the sparse jungle ?
Concept : sparse jungle
Question : What are the mobs that I can find in the sparse jungle ?
Concept : sparse jungle
Let ’ s say you see a creeper nearby , and you have not defeated a
creeper before . You can ask a question like :
Question : How to defeat the creeper ?
Concept : creeper
Let ’ s say you last completed task is " Craft a wooden pickaxe ". You can
ask a question like :
Question : What are the suggested tasks that I can do after crafting a
wooden pickaxe ?
Concept : wooden pickaxe
Here are some more question and concept examples :
Question : What are the ores that I can find in the sparse jungle ?
Concept : sparse jungle
( the above concept should not be " ore " because I need to look up the
page of " sparse jungle " to find out what ores I can find in the
sparse jungle )
Question : How can you obtain food in the sparse jungle ?
Concept : sparse jungle
( the above concept should not be " food " because I need to look up the
page of " sparse jungle " to find out what food I can obtain in the
sparse jungle )
Question : How can you use the furnace to upgrade your equipment and
make useful items ?
Concept : furnace
Question : How to obtain a diamond ore ?
Concept : diamond ore
Question : What are the benefits of using a stone pickaxe over a wooden
pickaxe ?
Concept : stone pickaxe
Question : What are the tools that you can craft using wood planks and
sticks ?
Concept : wood planks
You should only respond in the format as described below :
RESPONSE FORMAT :
Reasoning : ...
Question 1: ...
Concept 1: ...
Question 2: ...
Concept 2: ...
Question 3: ...
Concept 3: ...
Question 4: ...
Concept 4: ...
Question 5: ...
Concept 5: ...
...

Промт 3: Промт для формирования ответов на вопросы.

You are a helpful assistant that answer my question about Minecraft .
I will give you the following information :
Question : ...
You will answer the question based on the context ( only if available
and helpful ) and your own knowledge of Minecraft .
1) Start your answer with " Answer : ".
2) Answer " Answer : Unknown " if you don ’ t know the answer .

Ограничения и дальнейшая работа

Расходы. API GPT-4 требует значительных затрат. Это в 15 раз дороже, чем GPT-3,5. Тем не менее, VOYAGER требует качественного скачка качества генерации кода от GPT-4, который GPT-3.5 и LLM с открытым исходным кодом не могут предоставить.

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

Галлюцинации. Автоматический учебный план иногда предлагает невыполнимые задачи. Например, попросить агента создать «медный меч» или «медный нагрудник», которые являются предметами, которых не существует. Галлюцинации также возникают в процессе генерации кода. Например, GPT-4 склонен использовать булыжник в качестве топлива, несмотря на то, что он не является источником топлива в игре. Кроме того, он может вызывать функции, отсутствующие в предоставленных API-интерфейсах примитивов управления, что приводит к ошибкам выполнения кода. Мы уверены, что улучшения в моделях GPT API, а также новые методы тонкой настройки LLM с открытым исходным кодом преодолеют эти ограничения в будущем.

Заключение

В этой работе мы представляем Voyager, первый встроенный агент обучения на протяжении всей жизни на базе LLM, который использует GPT-4 для непрерывного исследования мира, развития все более сложных навыков и последовательного совершения новых открытий без вмешательства человека. Voyager демонстрирует превосходную производительность в обнаружении новых предметов, разблокировке дерева технологий Minecraft, перемещении по разнообразным ландшафтам и применении библиотеки изученных навыков для выполнения неизвестных задач в новом созданном мире. Voyager служит отправной точкой для разработки мощных универсальных агентов без настройки параметров модели.

Команда

Группа исследователей (Guanzhi Wang, Yuqi Xie, Yunfan Jiang, Ajay Mandlekar, Chaowei Xiao, Yuke Zhu, Linxi Fan, Anima Anandkumar )

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

admin
11 декабря 2018

ООП на Python: концепции, принципы и примеры реализации

Программирование на Python допускает различные методологии, но в его основе...
admin
14 июля 2017

Пишем свою нейросеть: пошаговое руководство

Отличный гайд про нейросеть от теории к практике. Вы узнаете из каких элеме...