🤖🎮 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 и его базовые показатели с точки зрения их исследовательской производительности, мастерства дерева технологий, охвата карты и возможности обобщения с нуля для решения новых задач в новом мире.
Значительно лучшее исследование
Как показано на первом рисунке, превосходство Voyager проявляется в его способности постоянно делать новые шаги, обнаруживая 63 уникальных объекта за 160 итераций, что в 3,3 раза больше новых объектов по сравнению с его аналогами. С другой стороны, AutoGPT значительно отстает в обнаружении новых элементов, в то время как ReAct и Reflexion изо всех сил пытаются добиться значительного прогресса.
Дерево обучения
Обширный обход карты
Эффективное обобщение Zero-Shot для неизвестных задач
Абляционные исследования
- Самопроверка является наиболее важной среди всех типов обратной связи. Самопроверка служит критическим механизмом для принятия решения о том, когда переходить к новой задаче или повторить попытку, которая ранее была неудачной.
- 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 служит отправной точкой для разработки мощных универсальных агентов без настройки параметров модели.