Что меняется, когда узел графа — не просто точка, а агент
Агентные системы сейчас вообще везде. Кажется, если у тебя нет агентной системы, ты уже и не самый модный ML-инженер.
Сначала агенты громко зашли в LLM-мир. Им начали отдавать генерацию текста, память, планирование, выбор действий и доступ к тулам. Дальше эта логика постепенно пошла еще шире — в сторону систем, где модели уже не просто отвечают, а сами решают, какую информацию собрать, что сделать следующим шагом и как адаптировать поведение под контекст. И, похоже, теперь эта волна добралась и до графовых нейросетей ❤️. В статье про https://arxiv.org/html/2508.00429v4 авторы предлагают посмотреть на граф совсем по-другому: не как на набор узлов, которые обязаны проходить через один и тот же message passing, а как на среду, где каждый узел может быть агентом — со своей памятью, планированием и выбором, когда брать локальный контекст, когда искать глобально релевантную информацию, а когда вообще ничего не делать. Именно в этом, на мой взгляд, и есть самое интересное. Агентный подход начинает менять даже такую классическую для ML область, как обучение на графах! ➕
В классических GNN каждый узел агрегирует информацию примерно по общей схеме (смотри на соседей, обновляй представление, повторяй). 🚨 Проблема в том, что графы редко настолько равномерны, так как одни узлы богаты полезным контекстом, другие шумные, бедные по связям или вообще требуют не локальных, а далеких по структуре, но семантически близких сигналов. Именно на это и направлен ReaGAN. Для узла в плотно связанном кластере достаточно локального обмена. Для узла-«моста» (не знаю, как тут грамотно сформулировать, но надеюсь, что ты понял) критически важен глобальный поиск. Для узла с уже богатой "историей" (памятью) можно вообще пропустить ход, особенно если он в себе уверен. Это и есть настоящая адаптивность! Граф обрабатывается не единым конвейером, а как результат миллиардов миллионов микрорешений его элементов. 🤹
В этой архитектуре узел сам решает, что делать дальше:
— собирать локальную информацию от соседей;
— делать глобальный retrieval по всему графу через RAG;
— комбинировать оба режима;
— или вообще ничего не делать, если контекста уже достаточно.
Мне особенно нравится здесь два момента.
1️⃣ - Авторы не ограничиваются соседями по ребрам, а разрешают узлу доставать семантически похожие, но структурно далекие узлы. Это важный шаг для графов, где полезная информация не обязана жить рядом. Разрешая агенту делать глобальный retrieval (RAG по всему графу), мы разрываем тиранию топологии. Узел может найти идею, сформулированную в совершенно другой части графа, если она семантически близка его текущей задаче. Для анализа кода это бесценно.
2️⃣ - Модель не обучают под задачу привычным способом — LLM выступает как reasoning/planning engine, который помогает каждому узлу выбирать действия и накапливать релевантную память. Вместо еще одной жестко заданной схемы появляется более адаптивное поведение. Значит, не будет метода проб и ошибок и обучение получится дешевле. Сама LLM, выступающая в роли мозга агента, может быть предобучена и заморожена (или дообучаться легко). Мы не учим ее заново агрегировать информацию. Вместо этого мы учим стратегию поведения (какой инструмент (локальный поиск, глобальный поиск, пропуск хода)) использовать, когда остановиться (тут, кстати, поле непаханое для ресеча). Это дешевле и интерпретируемее, чем обучать новую GNN с миллионами параметров под каждую новую задачу.
Какой из этого вывод? - Надо идти пробовать на анализе кода, я считаю)
Похоже, обучение на графах постепенно смещается от жестко заданного обмена сообщениями к более агентному, адаптивному и опирающемуся на поиск способу рассуждения.
Похожий сдвиг виден и в других направлениях. Например, в работе https://arxiv.org/pdf/2603.04384 поиск тоже связывают с рассуждением: агент перед каждым шагом формулирует, что уже понятно, чего не хватает и что искать дальше.
Так что, возможно, будущее некоторых задач на графах — не в еще одном новом слое графовой нейросети, а в системах, где узлы сами выбирают стратегию взаимодействия.
Все!
🐍