Negative sampling и embeddings без таргета
Какие проблемы есть у in-batch negatives и как обучать embeddings объявлений, если пользовательских действий еще нет?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
In-batch negatives дешевы, но могут давать popularity bias и false negatives. Без таргета embeddings учат через self-supervised задачи: текстовые пары, атрибуты, категории, аугментации, pseudo-labels и активную разметку сложных пар.
Полный разбор
In-batch negatives используют объекты из того же батча как отрицательные примеры. Это дешево и хорошо масштабируется, но есть риски. Популярные объекты чаще попадают в батчи и чаще штрафуются как negatives. Кроме того, часть negatives может быть на самом деле релевантной, особенно в длинном хвосте или соседних категориях.
Коррекции: смешивать random и hard negatives, учитывать sampling probability, не брать очевидные false negatives из близких групп, добавлять temperature, debiasing или отдельные popularity features. Для retrieval важно проверять не только loss, но и Recall@K по валидному набору.
Если пользовательских действий нет, можно учить представления self-supervised способом: title-description matching, предсказание категории и атрибутов, contrastive learning между аугментациями текста, image-text matching, похожие товары по правилам/каталогу, pseudo-labels от базовой модели. Когда появляется разметчик, полезнее отдавать ему спорные пары: близкие по модели, но потенциально разные, или одинаковые категории, которые модель разводит далеко.
Теория
Качество embeddings определяется тем, какие пары модель считает близкими и далекими; sampling negatives задает это поведение не меньше, чем архитектура.
Типичные ошибки
- Считать все объекты в батче настоящими негативами.
- Не учитывать popularity bias.
- Учить embeddings без downstream-проверки на retrieval-задаче.