Ученые часто вдохновляется нашими или животными биологическими структурами: CNN, MLP, Backprop, и для многих других исследований можно найти сходства в реальном мире. Недавно вышла статья, которая делает то же самое, но для RAG (Retrieval-Augmented Generation). В некотором роде, это недостающая современным LLM долгосрочная память. Это понятно, а причем тут неокортекст, гиппокамп и другие сложные слова? Давайте посмотрим.
LLM сейчас встраиваются во все наши сферы, ChatGPT наделал куча шуму, но за это время так и не была решена одна из основных проблем: как контролировать память модели? Вот мы обучили новейшую o1, но все равно вешаем плашку “Модель обучена на данных до октября 2023 года” - а дальше как? Целый ряд задач очень сложно решить без контекста современного мира - модель знает только то, на чем она обучалась. RAG - один из способов контроля долговременной памяти для LLM. Видов имплементации RAG множество, но остановимся мы сегодня на одном - Hippo-RAG. Это краткий пересказ статьи этого года.
Теория индексации памяти гиппокампом
– это теория, объясняющая принцип работы долговременной памяти. В ней участвуют три участка мозга: неокортекса, парагиппокампальные области и сам гиппокамп. Вместе они работают над двумя задачами: разделение паттернов, обеспечивающая уникальность представлений воспринимаемых событий и завершение паттернов, позволяющая воспроизводить полные воспоминания из частичного импульса.
Разделение паттернов осуществляется во время кодирования памяти:
Кодирование памяти начинается с того, что неокортекс (новая кора) получает и обрабатывает воспринимаемые стимулы, преобразуя их в более высокоуровневые признаки.
Затем эти признаки передаются через парагиппокампальные области к гиппокампу, который выполняет их индексирование.
В гиппокампе значимые сигналы включаются в “индекс” и связываются друг с другом.
Завершение паттернов позволяет "находить" в памяти близкие воспоминания к определенному событию.
Начинается он с получения гиппокампом частичных сигналов через парагиппокампальный тракт.
Гиппокамп использует свою контекстно-зависимую систему памяти, которая, как считается, реализована через плотную сеть нейронов в подрегионе CA3, чтобы идентифицировать полные и релевантные воспоминания в своём индексе.
Затем эта информация передаётся обратно в неокортекс для симуляции полного воспоминания.
Так, это было много теории. Осознаем все еще раз: неокортекс извлекает высокоуровневые признаки из стимулов, затем гиппокамп их индексирует, а когда память необходимо извлечь, гиппокамп использует нейронку для нахождения релевантных воспоминаний и передает это обратно в неокортекст. На Рис. 1 это все проиллюстрировано.
HippoRAG
Архитектура имеет ML компоненты для каждого из трех участков мозга. В качестве неокортекса выступает LLM, парагиппокампальные области – энкодеры, а гиппокамп – граф знаний и PageRank для поиска. Есть здесь, соответственно и свои стадии разделения и завершения паттернов. У нас есть набор параграфов текста P, которые выступают нашими "воспоминаниями".
Offline Indexing, или разделение паттернов
Вместо неокортекста, здесь используется LLM для извлечение триплетов – N, например, (Томас, изучать, Альцгеймер). Авторы аргументируют свой выбор в пользу триплетов вместо векторных представлений, возможностью разделять знания на более гранулярные части. Что немного сомнительно, но окэй. Затем они используют Retrieval Encoders (просто энкодер + cosine distance) для создания в графе знаний дополнительных ребер между близкими по смыслу сущностями – это нам потребуется во время извлечения знаний. Так, извлекая и расширяя граф знаний для каждого из параграфов, у нас получается матрица, содержащая количество триплетов в каждом параграфе:
Она потребуется нам на следующем этапе, чтобы определять наиболее близкие параграфы к запросу.
Online Retrieval, или завершение паттернов
Имитируя процесс воспроизведения памяти в человеческом мозге, в данном алгоритме извлечение использует схожие процессы. Как и неокортекст, LLM извлекает триплеты из запроса. Затем, используя все тот же Retrieval Encoders, ищутся релевантные узлы в нашем графе знаний (что похоже на триплеты запрос). Получившийся из триплетов запроса и близких к ним, частичный сигнал передается в гиппокамп для поиска релевантных индексов параграфов.
Человеческие индексы гиппокампа "активируют" друг друга с помощью нейронных связей, что похоже на обход графа. Авторы имитируют этот процесс с помощью алгоритма Personalized PageRank, который позволяет находить релевантные связи на основе заданных узлов (некоторое подобие частичного сигнала).
Более формально,
Извлечение триплетов из запроса
Поиск схожих триплетов на триплеты запроса в базе знаний, M - энкодер, e - триплеты в графе знаний
Затем мы запускаем PPR алгоритм на триплетах из запроса и полученных синонимичных триплетах
Изначальная вероятность для узлов E = 0, а для C распределена равномерно. PPR учитывает начальный сигнал, и в итоге фокусируется только на упомянутых в запросе узлах и их соседях. После мы получаем распределение вероятности на всех триплетах. Для получения ранга параграфов, умножаем вероятности триплетов на матрицу I
То есть, чем более вероятны и частоты триплеты из параграфа являются частью запроса или их соседями, тем больший ранг будет у параграфа по отношению к запросу.
Метрики
Окей, а как вся эта сложная конструкция ведет себя на бенчмарках? Проверяют этот подход на задачах multi-hop reasoning, когда у нас есть несколько кусочков информации и необходимо ответить на вопрос, используя часть каждого. К примеру:
Параграф 1: Фильм Убить Билла вышел в 2003 году
Параграф 2: Фильм Аватар вышел в 2009 году
Вопрос: Какой фильм вышел раньше, Аватар или Убить Билла?
Чтобы ответить на вопрос, необходимо сначала понять, в каком году вышел каждый из фильмов, а затем сравнить эти даты. То есть проделать несколько шагов.
Сравнивая на датасетах с другими Retrieval системами, HippoRAG имеет больше в среднем на 5-10 пунктов R@2 и 10-15 пунктов R@5. Если подключить дополнительные шаги, например, IRCoT, то результаты будут похожими.
Еще авторы сравнили, какой из этапов наиболее важный для системы. Наибольшая просадка происходит при замене PPR на другой алгоритм, что довольно логично при задаче рассуждения с несколькими шагами - важнее правильно определить соседей наших начальных узлов, ведь без них не получится достать ответ.
Итог
В последнее время не так часто натыкаюсь на статьи, которые были воодушевлены человеческими процессами. Удивительно, что это сработало лучше альтернатив, да еще и с детерминированным алгоритмом PPR. Что показалось вам необычным? Оставляйте комментарии
P.S.
Работаю сейчас над multihop-reasoning статьей на похожих датасетах и результаты моего метода выглядят еще более многообещающе. Если интересно следить, то подписывайтесь на телеграмм канал.