Эмбеддинги пользователей для matching-рекомендаций
Как обучить эмбеддинги пользователей для matching: какую архитектуру, loss и target выбрать, если пользователям рекомендуются другие пользователи?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
Подходит two-tower/siamese или metric learning: encode каждого пользователя, score пары через dot/cosine или learned head. Target лучше строить не только по one-sided likes, а по reciprocal match, диалогу, ответу или другому mutual outcome с учетом exposure bias.
Полный разбор
Для user-to-user matching естественны two-tower или siamese architectures: одна сеть кодирует каждого пользователя в общий embedding space, а пары оцениваются dot product, cosine similarity или небольшим interaction head. Loss может быть contrastive, triplet, sampled softmax/BPR-style ranking или binary cross-entropy по парам.
Ключевой вопрос - что считать positive. One-sided like удобен, но может оптимизировать показ “самых желанных” профилей и ухудшить reciprocal outcome. Лучше смотреть mutual match, reply, conversation start, meaningful interaction, retention или weighted target из нескольких событий. Негативы должны учитывать exposure: если пользователь не видел профиль, это не настоящий negative.
В serving нужны constraints: география, активность, safety, diversity, freshness, exposure caps и exploration. Для matching особенно важно не только “кого я хочу лайкнуть”, но и вероятность взаимного результата и качество пары для обеих сторон.
Теория
Reciprocal recommendation оптимизирует outcome пары, а не только preference одной стороны.
Типичные ошибки
- Учиться только на one-sided likes.
- Считать unseen pairs негативами.
- Игнорировать attractiveness/popularity bias и exposure.
Как отвечать на собеседовании
- Рано скажите, что mutual match лучше one-sided like.
- Назовите two-tower/siamese и contrastive/ranking losses.