Как стать автором
Поиск
Написать публикацию
Обновить

Консолидация памяти — или как избежать альцгеймера у LLM

Время на прочтение7 мин
Количество просмотров2.4K

Просыпаюсь утром, открываю свой чат с GPT, начинаю увлеченно обсуждать архитектуру нового проекта. Через час диалог превращается в философский трактат о смысле жизни, еще через час - в рецепт борща. И вот, когда я пытаюсь вернуться к архитектуре, модель смотрит на меня как на незнакомца: "А что за проект? Борщ, говорите?"

Если очень коротко, у современных LLM есть одна маленькая проблема, они вполне страдают тем же самым “альцгеймером”, что и люди, хоть и причины немного иные (а может и нет) и это конечно не медицинский диагноз, а конкретная технологическая проблема, которое бьет не только по качеству результата, но и по нашим с вами кошелькам :)

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

Анатомия забывчивости

Давайте начнем с простого вопроса: как вообще работает диалог с LLM? Многие думают, что модель "помнит" разговор, как человек. На самом деле всё куда прозаичнее - при каждом новом запросе вся история диалога заново скармливаеться в LLM.

Видите проблему? С каждым сообщением мы отправляем всё больше и больше текста. И тут начинается самое интересное.

Представьте, что вы ведете диалог с моделью. Первое сообщение стоит условные $0.001. Но с каждым новым сообщением цена растет экспоненциально, ведь мы платим за обработку всей истории диалога:

• 10 сообщений ≈ $0.055 (обработано ~550 токенов суммарно) • 50 сообщений ≈ $1.25 (обработано ~12,500 токенов) • 100 сообщений ≈ $5.00 (обработано ~50,000 токенов) • 200 сообщений ≈ $20.00 (обработано ~200,000 токенов)

И это еще оптимистичный сценарий! В реальности рост часто оказывается еще более драматичным, особенно если вы обсуждаете что-то сложное с большими фрагментами кода или документации, есть конечно еще понятие “кеширование” диалога, но это будет отдельная тема для обсуждения :)

Когда модель начинает "галлюцинировать"

Но деньги - это еще полбеды. Настоящая проблема начинается при заполнении значительной части контекстного окна. У разных моделей эта граница отличается: у одних проблемы начинаются уже при 30% заполнения, у других только после 50%.

Модель начинает:

  • Забывать важные детали из начала разговора

  • Путать факты между собой

  • Генерировать откровенно неверную информацию

  • Игнорировать ранее установленные правила и ограничения

Почему так происходит? Дело в архитектуре transformer'ов. Механизм внимания (attention) начинает "размазываться" по огромному объему токенов, теряя фокус на действительно важной информации. Это как пытаться найти конкретную строчку в книге, листая все 1000 страниц одновременно.

Но как работает наш мозг?

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

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

Нельзя не заметить параллели между проблемами памяти у LLM и нейродегенеративными заболеваниями человека, такими как болезнь Альцгеймера и другие формы деменции. Хотя механизмы совершенно разные, симптомы порой поразительно схожи:

  • Потеря контекста: Пациенты с деменцией и "уставшие" LLM одинаково теряют нить разговора и забывают недавно обсужденные темы

  • Конфабуляции: Как LLM начинает "галлюцинировать" при переполнении контекста, так и пациенты с Альцгеймером могут непроизвольно создавать ложные воспоминания, чтобы заполнить пробелы

  • Сохранение процедурной памяти: Интересно, что даже при тяжелой деменции процедурная память часто сохраняется дольше всего — пациенты могут помнить, как играть на пианино или готовить, даже забыв имена родных. У LLM мы наблюдаем похожий феномен — модель может "забыть" детали диалога, но всё ещё следовать установленным шаблонам поведения

  • Временной градиент: При болезни Альцгеймера новые воспоминания формируются хуже, но старые сохраняются дольше. В LLM наблюдается обратная картина — информация из начала диалога может 'теряться' при переполнении контекста, в то время как недавние взаимодействия остаются более доступными.

Эти параллели не просто любопытны — они подсказывают, что методы борьбы с "забывчивостью" LLM могут иметь что-то общее с когнитивными стратегиями, которые используются для поддержки пациентов с деменцией: регулярные повторения ключевой информации, структурирование данных, визуальные подсказки и т.д.

Что такое консолидация памяти у человека

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

Вот как это происходит:

  • Сначала информация попадает в рабочую (кратковременную) память - аналог контекстного окна у LLM

  • Затем во время сна, особенно в фазе глубокого сна, происходит консолидация - мозг выделяет важное, отбрасывает шум

  • Гиппокамп играет ключевую роль, "переигрывая" события дня и передавая их в неокортекс для долговременного хранения

  • Информация не копируется дословно, а реорганизуется, связывается с существующими знаниями

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

Нейробиологические исследования показывают, что мозг приоритизирует эмоционально значимую информацию и данные, которые согласуются с нашими существующими знаниями или противоречат им, то есть чем ярче ваш “эмоциональный” всплеск на событие, тем крепче оно будет запоминаться, но есть и исключения

Сравнение с LLM

Удивительно, но в наших попытках решить проблему "альцгеймера LLM" мы фактически имитируем то, что мозг делает естественным образом:

  • Периодическая суммаризация диалога → Консолидация памяти во время сна

  • Извлечение ключевых фактов → Отсеивание несущественных деталей

  • Включение резюме в системный промпт → Интеграция в семантическую память

Разница в том, что мозг делает это непрерывно и элегантно, а мы с вами будем вынуждены построить более примитивный аналог, как говорится, эхолакаторы достались нам от дельфинов, а работа с памятью LLM из нашего же с вами мозга :D

Но, объективно, я уверен, что следующими шагами развития LLM моделей - это конечно же улучшение обработки информации за счет более точного моделирования консолидации памяти, но уже на уровне самой модели.

Паттерны работы с памятью

За годы работы с LLM сообщество выработало несколько подходов к решению проблемы памяти.

Давайте разберем основные концепции:

1) Семантическая память - хранит фактические знания, концепции и взаимосвязи. В LLM-системах это реализуется через векторные базы данных, RAG (Retrieval-Augmented Generation), и структурированные хранилища знаний.

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

3) Процедурная память - содержит алгоритмы, процессы и паттерны поведения. В LLM-агентах это проявляется как внутренние рутины, методы решения задач и навыки использования инструментов.

Консолидация памяти

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

Как это работает на практике?

Представим типичный диалог клиента с AI риелтором

Пользователь: Привет! Ищу квартиру в СПб
AI: Здравствуйте! Буду рад помочь. Какой район вас интересует?
Пользователь: Ну я работаю на Петроградке, хотелось бы недалеко
AI: Понятно. Какой бюджет рассматриваете?
Пользователь: До 80к в месяц
...
[20 сообщений спустя]
Пользователь: А кстати, у меня кот, это важно
AI: Хорошо, буду искать pet-friendly варианты
...
[еще 15 сообщений]
Пользователь: Ой, забыл сказать - жена беременна, так что нужно думать о будущем
AI: Это меняет дело. Стоит рассмотреть двушки с возможностью...
...
[обсуждение конкретных квартир, метро, парковок и т.д.]

После 50 сообщений система генерирует сжатое резюме:

{
  "client_profile": {
    "budget": "до 80,000 руб/мес",
    "work_location": "Петроградский район",
    "family_status": "женат, ожидает ребенка",
    "pets": "кот",
    "critical_requirements": [
      "разрешены животные",
      "близость к Петроградской",
      "потенциал для детской комнаты"
    ]
  },

  "preferences_discovered": {
    "districts": {
      "priority_1": ["Петроградский", "Приморский"],
      "rejected": ["Купчино - слишком далеко", "Васильевский - не понравились пробки на мостах"]
    },
    "apartment_type": "эволюция: студия → 1-комн → 2-комн (после упоминания о ребенке)",
    "transport": "метро важнее парковки (нет машины)",
    "infrastructure": "важны детские сады в шаговой доступности"
  },

  "viewing_history": {
    "liked": [
      "2-комн на Чкаловской, 75к - понравилась планировка",
      "2-комн у Черной речки, 78к - хороший район для детей"
    ],
    "rejected": [
      "1-комн на Горьковской, 65к - слишком шумно",
      "2-комн на Пионерской, 82к - превышает бюджет"
    ]
  },

  "next_session_context": {
    "focus": "2-комнатные квартиры 70-80к в Приморском районе",
    "must_remember": "семья расширяется, нужна детская инфраструктура",
    "scheduled": "просмотр на Черной речке в субботу 11:00"
  }
}

Это резюме становится частью системного промпта, а история сообщений очищается. Модель "помнит" ключевую информацию, но работает с чистым контекстом.

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

Итоги:

Итак, что мы имеем? LLM страдают от своего рода "цифрового Альцгеймера" — стоит контексту переполниться, и модель начинает забывать всё, о чем вы говорили в начале. Важные детали проекта? Забыты. Архитектурные решения? Как не было. И вот вы уже в десятый раз объясняете, что да, мы используем PostgreSQL, а не MongoDB.

Решение? Консолидация памяти — тот самый механизм, который наш мозг использует каждую ночь. Вместо того чтобы пытаться запихнуть всю историю переписки в контекстное окно (спойлер: не влезет), мы создаем умные резюме. Эпизодическая консолидация после каждой сессии + системная консолидация для общей картины = ваш LLM помнит, что вы обсуждали неделю назад. Магия? Нет, просто грамотная работа с ограничениями технологии.

P.S. Кстати, в моем телеграм канале будет еще дополнительное продолжение про то, как и этот паттерн работы можно было бы улучшить

Теги:
Хабы:
+11
Комментарии4

Публикации

Ближайшие события