# Джефф Хьюбер: «Мы научили базу данных Chroma играть в Doom без логического вывода»

Источник: https://www.youtube.com/watch?v=CK5QGWUf1vo
Канал: DeepLearning.AI
Опубликовано: 27.03.2025

---

В рамках конференции AI Dev 25 сооснователь и генеральный директор Chroma Джефф Хьюбер (Jeff Huber) представил необычный эксперимент в духе «code golf». Его целью было проверить, насколько далеко можно продвинуться в создании игрового ИИ, полностью отказавшись от этапа логического вывода (reasoning) и полагаясь исключительно на механизмы памяти. В качестве полигона для испытаний была выбрана легендарная игра Doom.

## 🧠 Философия ИИ: память против рассуждений
[[JUMP:01:20]]

Джефф Хьюбер отмечает тенденцию в современной индустрии ИИ: основное внимание уделяется логическому выводу (reasoning) и возможностям больших языковых моделей (LLM), в то время как память часто воспринимается как второстепенный инструмент, сводящийся к простому поиску по PDF-файлам (Retrieval-Augmented Generation, RAG) [01:33].

По мнению Хьюбера, ИИ следует рассматривать не как магическое решение всех проблем человечества, а как новый способ написания программного обеспечения [02:14]. В этой парадигме LLM выступает в роли процессора (CPU), который обрабатывает неструктурированные данные, используя «здравый смысл» (common sense).

Ключевые тезисы Хьюбера о роли памяти в архитектуре ИИ:

*   **Динамический контекст:** Память делает контекстное окно модели адаптивным к реальному миру, полному краевых случаев (edge cases) [05:27].
*   **Альтернатива дообучению:** В отличие от fine-tuning, системы на базе памяти обновляются в реальном времени и легко интерпретируются человеком [05:40].
*   **Замкнутый цикл:** Использование памяти позволяет создавать системы, которые учатся на собственном опыте, записывая результаты своих действий и корректируя будущие ответы.

## 🕹️ Технология «обучения» Chroma игре в Doom
[[JUMP:06:08]]

Для реализации этой задачи Джефф Хьюбер применил подход, схожий с обучением с подкреплением (Reinforcement Learning), но перенесённый на рельсы векторной базы данных Chroma [06:48]. Вместо сложной политики нейросети используется прямое сопоставление визуальных состояний и действий.

Процесс обучения и игры разделен на три этапа:

1.  **Сбор данных (Запись пар «кадр-действие»):** Хьюбер прошел один и тот же уровень Doom восемь раз [07:52]. В процессе игры система делала «снимки» экрана и фиксировала соответствующие нажатия клавиш и движения мыши.
2.  **Создание эмбеддингов:** Каждый кадр был преобразован в вектор с помощью модели CLIP (или OpenCLIP) и сохранен в Chroma [11:48]. В метаданных вектора записывались бинарные значения действий (например, «1» — клавиша нажата, «0» — нет) [11:34].
3.  **Воспроизведение (Retrieval):** Во время автономной игры агент Chroma на каждом кадре ищет в базе данных семантически похожие изображения, извлекает связанные с ними действия и выполняет их [09:11].

В качестве технического фундамента использовалась библиотека **ViZDoom** — популярный в академической среде фреймворк, предоставляющий Python-интерфейс для взаимодействия с движком Doom [10:03].

## 🧪 Демонстрация и анализ «глюков»
[[JUMP:12:41]]

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

**Интересные наблюдения и ошибки:**

*   **«Любовь к окнам»:** Агент упорно стремился подойти к определённому окну и стрелять в него. Хьюбер объяснил это спецификой обучающих данных: вероятно, в процессе записи он провел там много времени, и система посчитала это действие приоритетным [14:14].
*   **Проблема дверей:** ИИ часто зацикливался, открывая и тут же закрывая двери. Это происходит из-за того, что система нажимает «пробел», видя закрытую дверь, но не учитывает время, необходимое для её полного открытия, и нажимает клавишу снова [16:53].
*   **Отсутствие функции вознаграждения:** Поскольку в эксперименте была «вырезана» логика, у агента нет понимания прогресса. Он может начать двигаться в обратную сторону по уровню, так как просто видит «знакомый коридор» и не понимает, ведет ли он к цели [15:59].

Хьюбер подчеркнул важность обучения на «грязных» данных. В первой итерации он играл идеально, и когда агент попадал в нестандартную ситуацию (упирался в стену), он не знал, что делать. Во второй раз Хьюбер намеренно играл хаотично, врезаясь в препятствия и разворачиваясь, что сделало ИИ более устойчивым [15:21].

## 🛠️ Будущее систем с «человеком в контуре»
[[JUMP:13:22]]

Одной из ключевых особенностей системы стала функция «запроса помощи». Если агент понимает, что он застрял (состояние не меняется), он подаёт сигнал человеку [13:22]. Когда Джефф перехватывает управление на несколько секунд, эти новые кадры и действия мгновенно отправляются в базу данных Chroma. Таким образом, система доучивается прямо в процессе эксплуатации (human-in-the-loop) [13:49].

Джефф Хьюбер подытожил, что создание ИИ-систем сегодня очень похоже на классическую разработку ПО: это постоянный процесс исправления багов и добавления фич, с той лишь разницей, что в мире ИИ типы данных не являются «строго типизированными» и могут вести себя непредсказуемо [18:50].

Весь код проекта был обещан к публикации в открытом доступе в GitHub-репозитории автора (Jeffy Huber) для дальнейших экспериментов сообщества по замыканию цикла обучения через функции вознаграждения [10:42].