Как устроены системы рекомендаций на базе AI
Разбираем архитектуру AI-рекомендаций: от коллаборативной фильтрации до трансформеров. Как Netflix, Spotify и Amazon подбирают контент.
Каждый раз, когда Netflix подсовывает идеальный фильм на вечер, а Spotify собирает плейлист «Открытия недели», за этим стоит не магия — а система рекомендаций на базе AI. Эти системы генерируют миллиарды долларов выручки: Amazon получает 35% дохода благодаря рекомендациям, а более 80% контента на Netflix находят именно через персонализированные подборки. Как устроены эти механизмы изнутри, какие алгоритмы лежат в их основе и куда движется технология — разбираем в этой статье.
Зачем нужны системы рекомендаций
Современный пользователь сталкивается с информационной перегрузкой: каталог Netflix содержит тысячи фильмов, на Spotify — свыше 100 миллионов треков, а Amazon предлагает сотни миллионов товаров. Без фильтрации человек просто потеряется.
Система рекомендаций решает три задачи:
- Релевантность — показать то, что действительно интересно конкретному пользователю
- Вовлечённость — удержать пользователя на платформе дольше
- Конверсия — подтолкнуть к покупке, просмотру или прослушиванию
Система рекомендаций Netflix экономит компании около $1 млрд в год за счёт снижения оттока подписчиков. Время, которое пользователь тратит на поиск контента, сократилось на 75%.
Три столпа: подходы к рекомендациям
Все рекомендательные системы строятся на трёх базовых подходах — или их комбинации.
Коллаборативная фильтрация
Самый классический метод. Идея проста: если пользователь A и пользователь B оценили одинаково 50 фильмов, то фильм, который понравился A, скорее всего понравится и B.
Коллаборативная фильтрация бывает двух видов:
| Тип | Принцип | Пример | Плюсы | Минусы |
|---|---|---|---|---|
| User-based | Ищет похожих пользователей | «Люди с вашими вкусами также смотрели…» | Интуитивно понятна | Плохо масштабируется |
| Item-based | Ищет похожие объекты | «Похожие товары» на Amazon | Хорошо масштабируется | Не учитывает контекст |
Математически это сводится к задаче матричной факторизации. Есть матрица «пользователь × объект» с оценками, большинство ячеек пусты. Алгоритм (SVD, ALS, SVD++) раскладывает её на две матрицы меньшего ранга и заполняет пропуски — предсказывает оценки.
# Пример: матричная факторизация с Surprise
from surprise import SVD, Dataset, Reader
import pandas as pd
# Загрузка данных: user_id, item_id, rating
reader = Reader(rating_scale=(1, 5))
data = Dataset.load_from_df(df[['user_id', 'item_id', 'rating']], reader)
# Обучение модели SVD
algo = SVD(n_factors=100, n_epochs=20, lr_all=0.005)
trainset = data.build_full_trainset()
algo.fit(trainset)
# Предсказание рейтинга для пользователя 42 и фильма 301
prediction = algo.predict(uid=42, iid=301)
print(f"Предсказанный рейтинг: {prediction.est:.2f}")
Контентная фильтрация (content-based)
Этот подход анализирует атрибуты самих объектов: жанр, режиссёр, ключевые слова, длительность. Если вы посмотрели три фантастических триллера — система предложит ещё один.
Плюс контентного подхода — он работает для новых пользователей, у которых ещё нет истории взаимодействий (проблема «холодного старта»). Минус — он замыкает пользователя в «пузыре фильтров», предлагая только похожий контент.
Гибридные системы
На практике почти все крупные платформы используют гибридный подход, совмещающий оба метода. Netflix, Amazon и YouTube комбинируют коллаборативную фильтрацию, контентный анализ и глубокое обучение в многоуровневых конвейерах.
graph TD
A[Пользователь] --> B[Сбор сигналов]
B --> C[Клики, просмотры, оценки]
B --> D[Время просмотра, скроллинг]
B --> E[Контекст: время, устройство]
C --> F[Модуль коллаборативной фильтрации]
D --> G[Модуль глубокого обучения]
E --> H[Контекстный модуль]
F --> I[Кандидатный пул]
G --> I
H --> I
I --> J[Ранжирование]
J --> K[Финальные рекомендации]
K --> L[A/B тестирование]
L --> A
Глубокое обучение в рекомендациях
Классическая матричная факторизация хорошо работает, но плохо улавливает нелинейные зависимости. Глубокое обучение изменило правила игры.
Neural Collaborative Filtering (NCF)
NCF заменяет скалярное произведение в матричной факторизации на многослойную нейросеть. Эмбеддинги пользователя и объекта подаются на вход сети, которая учит нелинейную функцию взаимодействия. Это позволяет улавливать сложные паттерны, недоступные линейным моделям.
DeepFM и Wide & Deep
Google предложил архитектуру Wide & Deep, которая объединяет «широкую» линейную модель (запоминает конкретные комбинации признаков) с «глубокой» нейросетью (обобщает паттерны). DeepFM развивает эту идею, добавляя factorization machine для автоматического перекрёстного взаимодействия признаков.
Двухэтапная архитектура
Большинство промышленных систем работают в два этапа:
| Этап | Задача | Алгоритмы | Скорость |
|---|---|---|---|
| Retrieval (отбор кандидатов) | Из миллионов объектов выбрать ~1000 потенциально релевантных | ANN-поиск, эмбеддинги, two-tower модели | Миллисекунды |
| Ranking (ранжирование) | Отранжировать кандидатов по релевантности | Глубокие нейросети, трансформеры, multi-task модели | Десятки миллисекунд |
На первом этапе скорость критична — нужно быстро отсеять нерелевантное. На втором этапе модель может быть сложнее, потому что работает с меньшим количеством объектов.
Трансформеры и LLM: новый рубеж
Архитектура трансформеров, изменившая NLP, активно проникает в рекомендательные системы.
SASRec и последователи
SASRec (Self-Attentive Sequential Recommendation) стал первым трансформер-подходом к рекомендациям. Вместо того чтобы смотреть на всю историю пользователя одинаково, self-attention выделяет наиболее значимые прошлые взаимодействия для предсказания следующего.
В 2025 году появилась архитектура MetaBERTTransformer4Rec (MBT4R), которая применяет принципы BERT к последовательным рекомендациям и превосходит предшественников по метрикам качества.
Графовые трансформеры
Отдельное активное направление — применение трансформеров к графовым структурам рекомендательных систем. Heterogeneous Graph Memory Transformer (HMT) объединяет гетерогенный графовый трансформер с модулями памяти, чтобы учить семантические представления из сложных графов «пользователь–объект–атрибут» и сохранять контекст длинных историй взаимодействий.
По данным обзора 2026 года в журнале Machine Intelligence Research, графовые трансформеры решают ключевые проблемы классических графовых нейросетей — oversmoothing (потерю информации на глубоких слоях) и шум при передаче сообщений между узлами.
LLM в рекомендациях
Крупнейшие платформы начинают интегрировать большие языковые модели:
- Spotify делает LLM «доменно-осведомлёнными» через «семантическую токенизацию» — вводит структурированные представления сущностей каталога (артисты, подкасты, аудиокниги) как специальные токены в дообученную модель LLaMA
- Netflix строит единую Foundation Model — фундаментальную модель, которая обучается на всех доступных данных о предпочтениях подписчиков и свойствах контента
Практические вызовы и решения
Построить хорошую систему рекомендаций — это не только выбрать алгоритм. Есть целый ряд инженерных и продуктовых вызовов.
Холодный старт
Новый пользователь или новый объект — у системы нет данных для рекомендаций. Решения:
- Для пользователей: онбординг-опрос («Выберите 5 любимых жанров»), использование демографических данных, контентная фильтрация по первым взаимодействиям
- Для объектов: контентные признаки (описание, жанр, метаданные), популярность как fallback, перенос обучения с похожих объектов
Разреженность данных
Даже активный пользователь Netflix просмотрел менее 1% каталога. Матрица взаимодействий — на 99%+ пустая. Методы борьбы: неявные сигналы (клики, время просмотра, скроллинг вместо явных оценок), аугментация данных, предобученные эмбеддинги.
Пузырь фильтров и serendipity
Слишком точная персонализация замыкает пользователя в эхо-камере. Платформы сознательно добавляют элемент «случайности»:
- Netflix выделяет часть выдачи под «exploratory» рекомендации
- Spotify в «Открытиях недели» миксует предсказуемо релевантное с неожиданным
- YouTube балансирует exploitation (показать то, что точно зайдёт) и exploration (предложить что-то новое)
Масштабирование
При сотнях миллионов пользователей и миллионах объектов нужны специальные техники: модельное квантование, дистилляция знаний, приблизительный поиск ближайших соседей (ANN), кэширование эмбеддингов.
Будущее рекомендательных систем — переход от «выбора из готового списка» к проактивному поиску того, что пользователю нужно, ещё до того, как он это осознает.
Как построить свою рекомендательную систему
Для тех, кто хочет начать с практики, — минимальный стек:
# Быстрый старт с implicit — библиотека для коллаборативной фильтрации
import implicit
import scipy.sparse as sparse
import numpy as np
# Создаём разреженную матрицу user-item (неявные сигналы)
# Строки = пользователи, столбцы = объекты, значения = кол-во взаимодействий
user_items = sparse.csr_matrix(interaction_matrix)
# Модель ALS (Alternating Least Squares)
model = implicit.als.AlternatingLeastSquares(
factors=64,
regularization=0.01,
iterations=50
)
model.fit(user_items)
# Рекомендации для пользователя 0
recommendations = model.recommend(
userid=0,
user_items=user_items[0],
N=10
)
print("Top-10 рекомендаций:", recommendations)
| Инструмент | Тип | Когда использовать |
|---|---|---|
| Surprise | Классическая CF | Прототипирование, малые датасеты |
| Implicit | ALS, BPR | Неявные сигналы, средний масштаб |
| LightFM | Гибридный | Есть метаданные объектов |
| RecBole | Deep learning | Исследования, SOTA-модели |
| Merlin (NVIDIA) | GPU-оптимизированный | Промышленный масштаб, большие данные |
Заключение
Системы рекомендаций прошли путь от простых правил «купили X — предложить Y» до многослойных архитектур с трансформерами, графовыми нейросетями и фундаментальными моделями. Ключевые выводы:
Гибридный подход побеждает. Ни один метод в изоляции не даёт лучших результатов — промышленные системы комбинируют коллаборативную фильтрацию, контентный анализ и глубокое обучение.
Трансформеры меняют ландшафт. Архитектуры вроде SASRec, графовых трансформеров и интеграция LLM (как у Spotify и Netflix) задают новые стандарты качества.
Алгоритм — это полдела. Холодный старт, масштабирование, пузырь фильтров и A/B-тестирование — инженерные и продуктовые вызовы не менее важны, чем выбор модели.
Порог входа снижается. Библиотеки вроде Implicit, LightFM и RecBole позволяют запустить качественную систему рекомендаций без команды из десяти ML-инженеров.
Если вы строите продукт с каталогом — будь то e-commerce, медиа или образовательная платформа — система рекомендаций перестала быть конкурентным преимуществом. Это базовое ожидание пользователя.
Источники
- How Machine Learning Powers Recommendation Systems
- Inside Spotify's Recommendation System: A Complete Guide (2025)
- Netflix Recommendations Research
- Key Insights from Netflix PRS Workshop 2025
- Transformer-based architecture for collaborative filtering
- Transformers for Graph-based Recommender Systems: A Survey
- AI Product Recommendations: From Amazon's 35% Revenue Model
- Netflix's ML Recs: 80% Views Personalized, $1B Saved