Розробка AI-системи на базі графових нейронних мереж (GNN)

Графові нейронні мережі розкривають себе там, де зв’язки між об’єктами важливіші за самі об’єкти. Ми розробляємо такі системи під ключ: від аудиту даних до передачі моделі — і на практиці скорочуємо частку хибних спрацювань удвічі. Результат — стійка робота на живих даних, а не лише на навчальній вибірці.
Часті запитання

Чому графові нейронні мережі втрачають точність на живих даних

На відкладеній вибірці графові нейронні мережі показують високу якість, а в робочому контурі точність моделі на реальних даних просідає — іноді вдвічі. Причина майже ніколи не в архітектурі: ламається зв’язка «дані — граф — модель».

Перше місце — розмітка зв’язків. Ребра розмічені фрагментарно: підтверджені зв’язки є в невеликої частки вузлів, решта добудовується евристиками за збігом атрибутів.

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

Друге — дрейф структури. Склад вузлів і типів ребер змінюється: з’являються нові ролі, частина старих зв’язків перестає породжувати події. Топологія перебудовується поступово, метрики сповзають непомітно, і розходження виявляється вже за якістю рішення, а не за моніторингом.

Третє — розходження вивантаження й потоку подій. Навчання йде за пакетним зрізом з агрегатами й добовою затримкою, а в роботі події надходять із запізненням і дублями. Ознаки обчислюються за різними вікнами, і граф на вході моделі виглядає інакше, ніж на навчанні.

Тому підготовка графа даних — не одноразовий етап перед навчанням, а частина циклу: звірка схеми зв’язків, контроль частки розмічених ребер, єдині правила перерахунку ознак для навчання й робочого контуру. Розбираємо, як це закривається.

Що дає впровадження: ефект у вимірюваних величинах

Графова модель спирається не на окремий запис, а на зв’язки між сутностями, тому ефект від впровадження видно в метриках, а не у відчуттях. П’ять пунктів нижче ми перевіряємо до старту й фіксуємо після виведення в роботу — на відкладеній вибірці та на бойовому трафіку.

  • Час навчання й перенавчання. Перерахунок іде за торкнутим підграфом, а не по всій базі: оновлення після появи нових зв’язків укладається в хвилини, повне перенавчання — години замість доби, без вікна простою.
  • Якість на рідкісних класах. Ознаки сусідів доповнюють нечисленні приклади, тому частка хибних спрацювань на рідкісних подіях падає, а повнота зростає там, де табличні моделі недобирають статистики.
  • Стійкість до нових вузлів. Нова сутність отримує оцінку одразу за своїми зв’язками, без накопичення історії та ручної розмітки.
  • Усунений клас відмов. Зникає клас помилок, який не ловився правилами: аномалії через ланцюжки непрямих зв’язків, а не через одну ознаку.
  • Навантаження на супровід. Частина ручних правил замінюється структурою графа — інженерних годин на підтримку й підлаштування порогів стає менше.

Ефект вважаємо на інфраструктурі, де графові шари зібрані на PyTorch Geometric: єдиний конвеєр ознак для навчання й виведення, тому метрики зіставні між ітераціями.

Режими навчання й виведення: що підходить під задачу

Режим навчання обирають не за «новизною» методу, а за тим, як часто змінюється сам граф і скільки часу є на відповідь. Навчання на історичних вивантаженнях дає відтворюваний результат: один зріз даних, однакові метрики, зрозуміла точка відкату.

Доонавчання на нових зв’язках потрібне там, де структура змінюється щодня — інакше модель втрачає актуальність.

Пакетне виведення обчислює оцінки по всьому зрізу за раз — це зручно для регулярної звітності. Потокове відповідає на подію в момент її появи, але спирається лише на ті зв’язки, що вже дійшли до системи. Гібрид із суворими правилами закриває ділянки, де помилка моделі неприпустима.

Варіант Коли підходить Чим обмежений
Навчання на історичних вивантаженнях Структура зв’язків стабільна, важлива відтворюваність Дані старіють між перезбираннями
Доонавчання на нових зв’язках Граф зростає щодня, є розмітка свіжих прикладів Без контролю дрейфу помилки переносяться в наступні версії
Пакетне виведення Оцінки потрібні регулярно, за розкладом Немає реакції на подію в момент її появи
Потокове виведення Рішення потрібне одразу, в момент події Бачить лише відомі зв’язки, слабкий старт за новими вузлами
Гібрид із суворими правилами Є ділянки, де помилка неприпустима Правила потребують супроводу й перегляду

На практиці режими комбінують: навчання йде за вивантаженням, виведення — потоком, а правила страхують критичні рішення.

Етапи роботи: від аудиту даних до передачі моделі

Графова модель починається не з коду, а з інвентаризації сутностей і зв’язків між ними. Нижче — сім етапів, які проходить проєкт: від аудиту джерел до передачі навченої моделі з відтворюваним конвеєром перенавчання.

  1. Аудит даних. Розбираємо джерела: у яких таблицях, журналах і сервісах лежать сутності, а в яких — зв’язки між ними. Фіксуємо пропуски, дублі, застарілі записи та частоту оновлення.
  2. Проєктування схеми графа. Визначаємо типи вузлів і ребер, напрямок зв’язків, ваги та часові мітки. Схему звіряємо з предметною логікою: зв’язок, якого немає в реальному процесі, у графі не з’явиться.
  3. Підготовка ознак вузлів і ребер. Приводимо атрибути до єдиного вигляду, кодуємо категорії, нормуємо числові поля, додаємо агрегати за сусідніми вузлами.
  4. Налаштування навчання. Підбираємо архітектуру під задачу — класифікація вузлів, передбачення зв’язків або ранжування, — а також глибину поширення й регуляризацію.
  5. Перевірка на відкладеній вибірці. Якість вважаємо на періоді, що не брав участі в навчанні, з розбиттям за часом: випадкове розбиття дає витік і завищені цифри.
  6. Порівняння з поточним рішенням. Проганяємо модель і чинну логіку на одному наборі даних і показуємо різницю в показниках, а не лише їхні абсолютні значення.
  7. Приймання й передача. Віддаємо ваги, конфігурації навчання, схему графа, скрипти збирання графа й документацію; фіксуємо досягнуті показники та регламент перенавчання.

Що залишається у вас: схеми, конфігурації, регламенти

Передаємо не підсумковий звіт, а робочий комплект, за яким ваша команда зможе навчати, перевіряти й розширювати графову модель без нас.

Кожен артефакт ми розбираємо на дзвінку з інженерами й проганяємо один цикл перенавчання вже на вашій стороні — щоб регламенти не залишилися документом, який ніхто не відкривав.

  • Опис схеми графа: типи вузлів і ребер, атрибути, звідки надходить кожне поле, правила й частота оновлення — з прикладами вивантажень на реальних даних.
  • Конфігурації навчання: гіперпараметри, розбиття на навчальну та відкладену вибірки, фіксація випадковості — прогін відтворюється й дає зіставну метрику.
  • Документація на модель: що саме передбачає, на якому періоді даних навчалася, де межі застосовності та які класи помилок уже відомі.
  • Регламент перенавчання: тригери (частка змінених зв’язків, зсув розподілу ознак, падіння метрики нижче порогу), періодичність, хто запускає й як приймається результат.
  • Регламент реагування на деградацію: контрольні метрики, порядок відкату на попередню версію ваг, відповідальний за рішення та час реакції.
  • Розмежування доступу: ролі на читання сирих даних графа й на самі лише передбачення, журналювання звернень, порядок видачі прав новим співробітникам.
  • Інструкція з випуску нової версії: перевірка на фіксованому наборі прикладів, критерії приймання, порядок заміни моделі в робочому контурі.

Усе лежить у вашому репозиторії та вашому сховищі — доступи залишаються у вас, ми не тримаємо копій у себе.

Кейс: як знизили частку хибних спрацювань удвічі

Кейс впровадження — виявлення прихованих зв’язків між контрагентами: спільні реквізити, телефони, адреси та ланцюжки платежів через підставні ланки.

Початкова система перевіряла сутності за табличними правилами й ручними порогами, кожен запис окремо, а зв’язки підтягувала вивантаженнями. Сигнал спрацьовував на формальному збігу поля, і частка хибних спрацювань сягала 58% — аналітики вручну розбирали шість випадків із десяти.

Що змінили

Модель даних перевели в графову: сутності стали вузлами, а операції, договори й спільні реквізити — ребрами з типом і часовою міткою. Ідентифікатори нормалізували й згорнули дублікати, щоб один контрагент не розпадався на кілька вузлів; зберігання графа зібрали на Neo4j.

Ознаки вважаємо за околицею в 2-3 переходи, а не за одним записом, тому в оцінку ризику потрапляють посередники та збіги другого рівня.

Метрики до й після

Метрика До Після
Частка хибних спрацювань 58% 27%
Повнота на розмітці аналітиків 0.71 0.89
Глибина знайдених ланцюжків 2 вузли 5 вузлів
Розбір одного сигналу години хвилини

Окремий ефект дало навчання на розмітці, яку аналітики накопичили за час роботи: частину зв’язків модель знаходить сама, без прописаного правила.

Графові моделі чи табличні: що вибрати під задачу?

Вибір між табличними й графовими моделями рідко впирається в якість алгоритмів. Він впирається в питання: чи залежить відповідь щодо об’єкта від того, з ким цей об’єкт пов’язаний, чи об’єкт достатньо описати його власними ознаками. Якщо зв’язок несе сигнал — граф дає приріст; якщо ні — додає лише вартість супроводу.

Таблична модель бачить рядок: ознаки об’єкта з відомими значеннями. Графова додає другий канал — ребра, за якими на кожному шарі агрегуються ознаки сусідів, і об’єкт отримує контекст оточення.

В антифроді, рекомендаціях, розборі ланцюжків постачання й пошуку пов’язаних контрагентів це дає помітний виграш: схеми, невидимі за окремими записами, видно як структуру.

Зворотний бік — дані. Граф потрібно регулярно перезбирати: схема вузлів і ребер, порядок появи зв’язків, їхня якість, частки пропусків.

Помилка в ребрах тиражується на всі шари й погіршує результат тихіше, ніж помилка в ознаках, а пояснити відповідь складніше — не завжди видно, який сусід вплинув на оцінку.

Практичний порядок вибору такий. Спочатку збираємо табличну модель і додаємо в неї агрегати за зв’язками: кількість сусідів, частки за категоріями, середні за оточенням. Такий набір часто закриває більшу частину можливого приросту за меншої вартості підтримки.

Графовий підхід беремо, якщо залишкова помилка системно пов’язана зі структурою — провали зосереджені в щільних групах пов’язаних об’єктів.

Гіпотезу перевіряємо на одному відкладеному зрізі, порівнюючи обидва підходи за цільовою метрикою. Рішення на користь графа приймаємо лише тоді, коли приріст стійкий на різних періодах і на нових вузлах, а не лише на тих, що були в навчанні.

Технічні сумніви: стійкість, дані, підтримка

Нижче — чотири питання, які найчастіше звучать на прийманні: як поводиться модель при появі нових вузлів, що робити при малому обсязі розмітки, як пережити зміну схеми джерела й що залишається команді після передачі. Відповідаємо про механізми, а не про обіцянки.

Що відбувається, коли в графі з’являються нові вузли та зв’язки?

Модель працює в індуктивному режимі: представлення вузла збирається з його ознак і ознак сусідів, тому нові вершини не потребують перенавчання.

Представлення для них обчислюються швидко, а повний перерахунок потрібен лише при зсуві розподілу зв’язків — його ловить контроль частки нових ребер і зв’язності.

Чи вистачить розмітки, якщо її мало?

Структура зв’язків сама несе сигнал, тому навчання йде з частковим спостереженням: розмічаємо найбільш інформативні вузли, а не підряд. До старту оцінюємо, якого обсягу міток достатньо для цільової якості, — інакше розмітка з’їдає терміни без віддачі.

Джерело змінило схему даних — модель доведеться переписувати?

Ні. Шар перетворення джерела в граф відокремлений від моделі: змінюється мапінг полів, ядро залишається. Вхідний контракт перевіряється на схемі, тому невідповідність типів зупиняє завантаження до викату, а не після нього на проді.

Що залишається нам після передачі проєкту?

Конфігурація, схема ознак, регламент перенавчання й панель контролю зміщення — цього достатньо, щоб супроводжувати модель своїми силами.

Працюємо на відкритому стеку з живим співтовариством, PyTorch Geometric зокрема: інженерів під такий контур на ринку знайти реально, без прив’язки до нас.

Обговоримо задачу: повернемося з оцінкою та планом робіт

Щоб оцінка проєкту спиралася на факти, а не на припущення, для старту достатньо опису задачі й доступу до зрізу даних.

Ключове для графових нейронних мереж — не обсяг таблиць, а структура: які сутності стають вузлами, які зв’язки між ними значущі, чи є розмітка й як часто змінюється граф. Надішліть:

  • опис задачі у вільній формі — який прогноз або ранжування потрібні на виході, хто й як використовує результат;
  • схему даних — таблиці або вивантаження з тим, що вважаєте вузлами й ребрами, включно з довідниками та зв’язками «багато-до-багатьох»;
  • зріз реальних даних за характерний період, з пропусками й шумом, а не вичищений зразок;
  • розмітку, якщо вона є: як формувалася, скільки класів, наскільки збалансовані;
  • поточний орієнтир — як задача вирішується зараз (правила, евристики, ручна робота) і яку метрику вважаєте прийнятною;
  • обмеження контуру — де має працювати рішення: закритий контур, свої сервери або зовнішнє середовище, які вимоги до доступів і журналювання.

У відповідь повернемося з оцінкою проєкту: реалістичний діапазон термінів, склад команди й перелік ризиків із зазначенням, як їх закриваємо.

Далі — план робіт за етапами з контрольними точками, пропозиція щодо пілотного запуску на вашому зрізі даних і умови передачі рішення: документація, відтворювані середовища та навчання ваших інженерів. Опишіть задачу в зручному вигляді — решту уточнимо самі.

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142