Графові нейромережі в рекомендаціях: від LightGCN до гібридних KG-моделей

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

Чому GNN-рекомендації точніші на розріджених даних

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

Матриця взаємодій заповнена на частки відсотка, і чим ширший каталог, тим швидше падає щільність відомих зв'язків.

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

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

Графові нейромережі змінюють постановку задачі: користувачі й товари — вершини одного двочасткового графа, дії — ребра, а ознаки позиції (категорія, бренд, атрибути) додають зв'язки між схожими товарами.

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

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

Вимірюваний ефект графових моделей: швидкість, повнота, стійкість

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

Метрики рекомендацій знімаємо пошарово: окремо за активними користувачами, окремо за рідкісними сегментами. Середній показник інакше маскує провал на ніші, а саме він визначає, чи побачить покупець щось, крім бестселерів. Граф додає до пар «користувач — товар» ребра за атрибутами, категоріями та спільними переглядами.

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

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

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

Підходи до побудови графових моделей: порівняння

Представлення даних задає стелю якості для GNN-рекомендацій сильніше, ніж сама архітектура.

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

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

Варіант Коли підходить Обмеження
Лише граф взаємодій щільний трафік, багато повторних дотиків до одних і тих самих позицій холодний старт: нові користувачі та товари без історії не отримують зв'язків
Лише граф знань каталог із вираженими зв'язками, подій мало не відображає смаки конкретної аудиторії, потребує вивіреної онтології
Гібридна модель: взаємодії плюс знання про товар обидва джерела заповнені, є довгий хвіст позицій дорожча в підготовці даних, складніше пояснювати причину видачі
Ознаки об'єктів без графа розріджені дані, потрібно швидко запустити базовий рівень упирається в стелю, не вловлює спільні покупки

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

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

Як ми будуємо GNN-рекомендації: етапи впровадження

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

Тому етапи розробки йдуть від логів до продукту, і на кожному є артефакт, який можна перевірити до переходу далі.

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

Порядок етапів послідовний, але не лінійний: якщо перевірка якості провалилася, ми повертаємося до схеми зв'язків або вітрин, а не перенавчаємо модель наосліп.

Артефакти проєкту: схеми графа, вітрини ознак, регламенти

Модель на графі живе не сама по собі: її поведінка визначається тим, як описано зв'язки та ознаки.

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

  • Схема графа. Типи вузлів і ребер, напрямок зв'язків, ваги, правила злиття дублів. Схема версіонується: додавання нового типу ребра не ламає вже навчені моделі.
  • Опис складання зв'язків. З яких подій формується ребро, яке вікно спостереження береться, як відсікаються випадкові та накручені взаємодії.
  • Вітрина ознак. Вузлові та реброві ознаки з джерелом кожної, розклад перезбирання, перевірки на зміщення розподілу між вітринами.
  • Регламент перенавчання. Тригери запуску — накопичення нових взаємодій або просідання метрик ранжування; порядок валідації, критерій приймання та відкат на попередню версію.
  • Правила доступу. Ролі, рівні знеособлення, розмежування вітрин за чутливістю, журнал звернень до даних про поведінку користувачів.
  • Контроль якості. Набори перевірок вхідних даних, тести цілісності графа, метрики якості видачі та порядок розбору інцидентів із зазначенням відповідальних.
  • Документація та передача. Інструкції із запуску й навчання, конфігурації середовищ, схема розгортання, розбір архітектури з вашою командою.

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

Кейс: як графова модель підняла попадання в топ видачі

Каталог — це довгий хвіст: більшість позицій отримує поодинокі взаємодії, а топ-1% товарів збирає основну частку переглядів.

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

Що змінили в моделі

Ми перебудували дані в граф: вузли — користувачі, товари, категорії та атрибути, ребра — взаємодії та зв'язки між атрибутами.

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

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

Частка попадань у топ-10 зросла приблизно в 1,8 раза, а товари поза топ-1% за популярністю стали отримувати помітно більше показів — 26% проти 7%.

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

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

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

Чим відрізняється граф знань від графа взаємодій?

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

Така структура щільна й швидко застаріває, зате відповідає на питання «що схоже за поведінкою» з точністю, недосяжною для атрибутів. Слабке місце — холодний старт: у нового об'єкта та в нового користувача ребер просто немає.

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

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

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

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

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

Технічні сумніви: дані, якість, пояснюваність

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

Чи вистачить обсягу історії?

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

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

Як переживає щоденні правки каталогу?

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

Чим доведете, що граф кращий за поточну видачу?

Офлайн-замір на відкладеному періоді: порівнюємо recall і NDCG на рівній кількості позицій, окремо рахуємо частку холодних товарів у топі. Фінальне слово за онлайн-тестом на частині трафіку — офлайн не показує, як користувачі реагують на нову видачу.

Як часто перенавчаєте модель?

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

Що покажете в поясненні рекомендації?

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

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

Чим точніші вхідні дані, тим менше припущень у плані робіт. На етапі обговорення задачі нам не потрібен доступ до робочого контуру — достатньо вибірки логів, опису каталогу та поточної логіки видачі.

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

  • Продукт і сценарій: що і де рекомендуємо — головна, картка об'єкта, розсилки; який об'єкт рекомендації і наскільки великий каталог.
  • Поточна видача: правила, «популярне», колаборативна фільтрація — що працює зараз, які метрики вже збираєте і чим результат не влаштовує.
  • Логи взаємодій: вивантаження подій за період із типом дії, міткою часу, ідентифікаторами користувача й об'єкта; частка анонімного трафіку та глибина історії.
  • Зв'язки об'єктів: категорії, атрибути, бренди, постачальники, спільні покупки — усе, з чого будуються ребра графа, і в якому вигляді це зберігається.
  • Цільові метрики: повнота на перших K позиціях, частка переходів, конверсія; як заміряєте зміни і чи є контрольна група.
  • Обмеження: час відповіді сервісу рекомендацій, частота перенавчання, вимоги до пояснюваності видачі, правила роботи з персональними даними.
  • Інфраструктура та ролі: де рахуються моделі, хто відповідає за дані й доступи, як виходять оновлення — чи можна змінювати видачу без релізу застосунку.

За цим набором ми розкладемо план робіт на етапи: підготовка даних і графа, базова графова модель, гібридна схема зі зв'язками предметної області, замір у робочому контурі. Повернемося з оцінкою строків і переліком того, що знадобиться від вашої команди.

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

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

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