Information Retriever – Telegram
Information Retriever
3.44K subscribers
254 photos
1 video
8 files
127 links
Download Telegram
Channel created
Channel photo updated
Привет!

Я (@kkhrylchenko) — исследователь и преподаватель из ФКН ВШЭ.

Раньше работал в Яндексе — руководил командой, которая занималась R&D для рекомендательных систем. Мы делали исследования и внедрения на стыке DL и RecSys — трансформерные модели над историей пользователя, специализированные модели для нейросетевого ранжирования, графовые нейросети, etc. Например, мы первыми внедрили большой трансформер (и про это публично рассказали) для рекомендаций музыки — про это рассказывал на Data Fest 2025.

Теперь я занимаюсь исследованиями и передачей накопленных знаний (преподаванием) в области рексистем. Примеры статей за моим первым авторством:
* Correcting the LogQ Correction: Revisiting Sampled Softmax for Large-Scale Retrieval (RecSys’25)
* Scaling Recommender Transformers to One Billion Parameters (KDD’26)

На этом канале пишу про все, что вздумается:
- делюсь новостями (личными и не очень)
- выкладываю образовательные материалы
- освещаю конференции
37👍3🔥1
#arxiv_weekly (06.11.23 - 10.11.23)

1. Towards Deeper, Lighter and Interpretable Cross Network for CTR Prediction от Fudan University и Microsoft Research Asia. Предлагают усложнить DCN-V2 (sota нейросетевого ранжирования от Google), добавив механизм гейтинга в кросс-слои. Также предлагают оптимизировать размерности матриц эмбеддингов с помощью PCA: после обучения оцениваем какое количество размерностей надо оставить и переобучаем модель с новыми размерностями. Разобрали в посте.

2. ITEm: Unsupervised Image-Text Embedding Learning for eCommerce от eBay про мультимодальный эмбеддинг товара в eBay. Бьют картинку на патчи, бпе-токенизируют текст, подают патчи и токены вместе в энкодер трансформера. Используют пять задач предобучения, две из них я раньше не видел — предсказание замаксированных токенов/патчей через глобальный (CLS) эмбеддинг товара и позицию токена. Пост с разбором.

3. Unbiased Offline Evaluation for Learning to Rank with Business Rules от Amazon Music и Cornell University про влияние бизнес-правил в ранжировании на оценку качества с помощью оффлайн-датасетов. Показывают что бизнес-правила вносят bias в оффлайн-оценку качества, предлагают корректировать этот bias с помощью Birkhoff-von-Neumann decomposition.

4. CAME: Competitively Learning a Mixture-of-Experts Model for First-stage Retrieval от CAS Key Lab of Network Data Science and Technology. Рассматривается сценарий поиска, когда у нас есть несколько нейросетевых кандидатогенераторов и хочется выучить их максимально ортогонально, чтобы они доставали разных кандидатов. Авторы предлагают "competitive learning" механизм, в котором каждый эксперт обучается только на тех примерах, где работает лучше других экспертов. Таким образом эксперты начинают фокусироваться на разных "подзадачах" и приобретают свою специализацию, отличную от других экспертов.

5. A Comprehensive Summarization and Evaluation of Feature Refinement Modules for CTR Prediction от Fudan University и Microsoft Research Asia. В CTR моделях как правило есть слой, который маппит входные фичи в эмбеддинги, и слой, моделирующий взаимодействие между фичами (т.н. feature interaction слой). Иногда между ними вставляют еще один слой, целью которого является сделать более хорошие контекстуальные представлений фичей (feature refinement). Авторы исследуют 14 различных вариантов такого слоя, пробуют комбинировать их с разными feature interaction слоями, включая DCN-V2. Вроде как от этого есть неплохие приросты качества.

6. LlamaRec: Two-Stage Recommendation using Large Language Models for Ranking от University of Illinois и NVIDIA про эффективное использование LLM'ок для рекомендаций. Сначала с помощью простого sequential recommender'а (LRURec) получаем небольшое множество кандидатов, затем в виде специального текстового промпта подаем их в LLM'ку и просим отобрать самого лучшего. При этом в промпте сопоставляем каждому кандидату букву (A, B, C ...) и просим ответ выдать в виде буквы, таким образом избавляясь от необходимости авторегрессивно генерировать название кандидата.

7. Bandit Learning to Rank with Position-Based Click Models: Personalized and Equal Treatments от The Ohio State University и Amazon. Довольно тяжело читаемый препринт с кучей математики про использование многоруких бандидатов вместе с позиционными моделями для ранжирования.
👍2
Towards Deeper, Lighter and Interpretable Cross Network for CTR Prediction от Fudan University и Microsoft Research Asia:

Авторы тюнят архитектуру нейросетевой модели для задачи предсказания CTR. В целом эти наработки хорошо обобщаются на любую задачу ранжирования, не только на CTR. На текущий момент самая популярная архитектура в области — это DCN-V2 от Google c хитрым кросс-слоем, неявно моделирующим взаимодействия между фичами заданного порядка.

1. В статье предлагается улучшение DCN-V2 с помощью добавления гейтинга в кросс-слой: добавляем поэлементное умножение промежуточного вектора на сигмоиду от вектора, полученного линейным слоем (похоже на всякие GRU/LSTM). Таким образом модель может лучше контролироватЬ, какие взаимодействия между фичами ей важны.

2. Одна из основных проблем CTR моделирования нейросетками — это сложность обработки категориальных фичей. В большинстве моделей используются таблицы эмбеддингов и приходится подбирать размерности эмбеддингов для отдельных фичей. А самих фичей могут быть тысячи. Простой вариант, в котором мы всем фичам даем одну и ту же размерность эмбеддинга, занимает очень много памяти (и флопсы тоже сильно растит). Поэтому приходится выдумывать какие-то эвристики или механизмы автоматического определения размерностей фичей. Авторы приводят как пример эвристику из DCN-V2: embedding_dim = 6 * cardinality^{1/4}, т.е. размер эмбеддинга скейлится от размера словаря фичи. В статье же предлагается более умный подход: сначала обучаем модель с одинаковым размером всех эмбеддингов, затем для каждой отдельной матрицы эмбеддингов с помощью PCA оцениваем какое количество компонент можно оставив, потеряв минимум информации. Полученные количества компонент используем как новые размерности эмбеддингов, с которыми заново обучаем модель.

Результаты у обоих изменений хорошие: гейтинг улучшает качество, FDO (так авторы назвали технику из второго пункта) позволяет в несколько раз ужаться по памяти.
🔥3
ITEm: Unsupervised Image-Text Embedding Learning for eCommerce от eBay.

Инженеры в eBay рассказывают про свой опыт создания мультимодального эмбеддинга товара. Основная сложность по мнению авторов — это неравнозначная полезность разных модальностей, которая приводит к тому что финальный эмбеддинг может учитывать не всю полезную информацию.

Архитектура простая, похожа на то, что я видел в других статьях: бьем картинку на патчи, текст бпе-токенизируем (авторы строят свой токенизатор), затем вместе с CLS-эмбеддингом подаем это всё в трансформер. В статье на написано как конкретно патчи превращаются в эмбеддинг, обычно это либо небольшой ResNet, либо просто выпрямление патча в эмбеддинг с небольшой MLP'шкой поверх.

Пять задач предобучения: три довольно стандартные (матчинг тайтла и картинки товара, MLM и MIM, I for image), а вот другие две вижу в первый раз — из глобального представления товара, полученного с помощью CLS токена, предсказываем значения замаскированных токенов/патчей. Для этого конкатенируем глобальный вектор с позицией замаскированного токена и проводим через MLP. Таким образом заставляем модель выучивать хорошее глобальное представление товара.

Лоссы для задач авторы подбирают так, чтобы они были в одном масштабе: IMT (image-noscript matching) с весом 1, языковые задачи про бпе-токены с весом 0.1, и задачи про патчи картинки сс весом 0.01.

Качество оценивают на двух задачах: нахождения дубликатов товаров (данные собрали внутри компании с помощью асессоров) и предсказание листовой категории товара. В первом случае модель применяют сразу, во втором случае на задачу дообучаются. Сравниваются с text-only робертой, image-only ResNet50 и с мультимодальным CLIP'ом (в котором эмбеддинги картинки и текста просто конкатенируются): по качеству всех превосходят.

В статье не хватает ссылок на аналогичные статьи от Алибабы (1, 2, 3, 4, 5, 6, 7, 8) и Меты (хотя бы CommerceMM), видимо либо статья уже старая, либо авторы не сильно прошерстили литературу. Тем не менее, если воспринимать статью как технический репорт, то она довольно неплоха — рассказ цельный, все детали присутствуют.
1
#spotlight

Hiformer: Heterogeneous Feature Interactions Learning with Transformers for Recommender Systems — статья про нейросетевое ранжирование от Google DeepMind. Препринт, опубликовали сегодня на архиве. Есть авторы DCN-V2.

- В нейросетевом ранжировании, в отличие от других областей, трансформеры все еще не жгут. Авторы статьи выдвинули свою гипотезу и сумели побить нетрансформерную соту, при этом еще и адаптировали свою архитектуру так, чтобы инференс был не тяжелей чем у DCN-V2

- Трансформер плохо работает с гетерогенными, неоднородными данными. В NLP, CV и sequential рекомендашках этот эффект не возникает, т.к. текстовые токены, патчи картинок и пользовательские исторические события довольно однородны и могут спокойно жить в одном семантическом пространстве. Про исторические события пользователя еще можно поспорить, но и по нашим экспериментам, и по статьям кажется что особых проблем с гетерогенностью для них не возникает.

- К каждому токену входной последовательности применяются одни и те же линейные преобразования (Q,K,V в аттеншне и FFN слои). Между каждыми двумя токенами близость считается одной и той же формулой. Такой подход логичен, когда все токены живут в одном семантическом пространстве. Но такое предположение слишком сильно для фичей ранжирования: они очень разные по своей семантике, происхождению, способу получения и т.д.; у фичей могут быть разные распределения. Чтобы выжать максимум качества, нужно применять к разным фичам разные преобразования, и каждая пара фичей должна обрабатываться по-разному. По мнению авторов это главное отличие сеток типа DCN-V2 от простого применения трансформера над фичами: там эту проблему уже давно решили и взаимодействия между фичами учитываются по-разному.

- Авторы вводят гетерогенный трансформер, в котором для каждого токена-фичи i вводятся свои матрицы Q_i, K_i, V_i, и в FFN-слоях тоже матрицы отдельные. Получается, что все фичи обрабатываются по-разному, и скалярные произведения между разными фичами тоже разные. Мы довольно сильно раздуваемся по памяти, но по флопсам такой трансформер эквивалентен обычному.

- Следующий вариант архитектуры, Hiformer, выглядит еще сложнее: конкатенируем эмбеды фичей в единый большой эмбеддинг [x1, x2, ..., xn], затем домножаем на гигантскую матрицу, возвращающую вектор той же размерности. Так делаем чтобы получить Q, K, V представления фичей для аттеншна. Мы предполагаем что в этом новом векторе координаты сооветствуют всё тем же фичам, и сплитим этот вектор обратно в отдельные фичи. Чтобы такая штука была внедряема, нужно добавить низкоранговое разложение для этой большой матрички.

- Другие интересности: уменьшают количество входных вещественных фичей — конкатенируют их и домножают на матричку, порождающую N разных эмбедов одинаковой размерности; для лоссов и решения задач используют CLS токены на входе трансформера, которые называют task embeddings; размерности эмбеддингов фичей — 128, размерности ключей и запросов в одной голове аттеншна — 16, размерности value — 64.

- Внедряются в Google Play Store: всего 30 вещественных фичей и 31 категориальная. Размеры словарей категориальных фичей от сотен до миллионов. По флопсам равны DCN-V2, по качеству дают +0.4% "engagement metrics". Оффлайн метрики можно посмотреть в табличке.
👍32
Learning from Negative User Feedback and Measuring Responsiveness for Sequential Recommenders от Google — моя любимая статья с прошедшего в августе RecSys 2023.

Обычно в кандидатогенерации мы используем contrastive loss, заточенный под положительный фидбек пользователя. Самый популярный сеттинг — берем "позитив" пользователя, добавляем к нему "in-batch" и "random" негативы, возможно делаем log-q correction (Mixed Negative Sampling, PinnerFormer). И максимизируем логарифм позитива после взятия софтмакса по всем объектам. Если вас испугало обилие терминологии, загляните в комментарии :)

Одна из проблем такого подхода — он плохо учитывает explicit и implicit негативы пользователя. Для продукта youtube shorts, про который идет речь в статье, негативный фидбек — это скипы и дизлайки коротких видео. У модели с таким лоссом нет реактивности на негативный фидбек. В какой-то мере это можно полечить простой фильтрацией по историческим негативам пользователя, идущей уже после кандидатогенерации. Тем не менее такой способ тратит ёмкость и квоту нашего кандидатогенератора.

Авторы предлагают добавить "not-to-recommend" лосс, который является полной противоположностью стандартному лоссу: берем "негатив" пользователя, добавляем к нему чужие "in-batch" объекты. Затем максимизируем вероятность, что мы НЕ выберем истинный негатив пользователя. По сути, мы учим модель рекомендовать что угодно кроме истинного негатива, т.е. чужие объекты из батча. Важно, что здесь именно максимизируется log(1 - prob(neg)), а не минимизируется log(prob(neg)) — второй вариант вычислительно не стабилен при маленьких вероятностях. Обычный "позитив" лосс всё так же остается, т.е. теперь мы оптимизируем два лосса.

Также авторы добавляют негативный фидбек в историю, но это уже не ноу-хау — в рекомендациях short-form content так делают многие, в т.ч. мы в трансформерах для Яндекс Музыки. Тем не менее сам факт, что этого недостаточно для хорошей реактивности на негативный фидбек, вызывает интерес. Лосс авторов дает значительное улучшение метрик поверх добавления негативов в историю. Конкретные метрики можно сравнить в статье, их там довольно много.

Последний интересный момент — авторы с помощью симуляции проверяют, что их новая модель реактивна к негативному фидбеку, что рекомендации меняются, когда приходит негативный фидбек. Симуляциям пользователей я обычно не доверяю. Учить с помощью них модели или оценивать качество страшновато, т.к. сами модели, используемые для симуляции, довольно плохо приближают пользователей. Иначе они сами по себе были бы хорошими рекомендательными системами и ничего симулировать не нужно было бы :) Но в данном случае идея выглядит здраво: генерируем какую-нибудь случайную траекторию пользовательских взаимодействий, затем в конце траектории рассматриваем два сценария — положительное и отрицательное взаимодействие с одним и тем же айтемом. Затем сравниваем насколько сильно меняется распределение по рекомендованным айтемам. Авторы показывают что их архитектура гораздо больше реагирует на негативный фидбек, чем варианты без негативного лосса или без негативного фидбека в истории.
🔥9👍2
Дорогие подписчики, для вас ребус. Нужно найти несуществующую рекомендательную модель :)

P.S: здесь почти все модели — это так называемые sequential recommenders, по истории пользователя предсказывающие его следующие взаимодействия.
🤔5🔥2
#arxiv_weekly (13.11.23 - 17.11.23)

1. Hiformer: Heterogeneous Feature Interactions Learning with Transformers for Recommender Systems от Google Deepmind. Авторы предлагают свою трансформерную архитектуру для ранжирования, хорошо работающую с гетерогенными данными, т.е. фичами разной природы. Бьют по качеству DCN-V2 с таким же latency, в проде +0.4 "engagement metrics" для Google Play Store. Разбор статьи.

2. Scaling User Modeling: Large-scale Online User Representations for Ads Personalization in Meta от **** про единые пользовательские эмбеддинги по пользовательским фичам (не путать с sequential recommender) для рекламных CTR моделей. Сервис считает эмбеддинги асинхронно с запросом, отдавая устаревшую версию с нулевым latency. Борятся с embedding distribution shift при дообучении с помощью усреднения последних трех версий пользовательского эмбеддинга. В проде +2.67% "online ads metric gains", интегрально по всей Мете. Разобрали в прошлом посте.

3. Mitigating Pooling Bias in E-commerce Search via False Negative от Instacart и Pennsylvania State University. Авторы рассматривают задачу e-commerce поиска, в которой надо для запроса находить релевантные товары. Предлагается использовать близость между поисковыми запросами, чтобы уменьшать количество false negative'ов среди отобранных из батча отрицательных примеров.

4. Towards a Technical Debt for Recommender System от Tampere University, Roku Inc. и University of Oulu про технический долг в рекомендательных системах. Парочка интересных пунктов есть, но обычно мне такие пдфки нравятся больше, здесь она довольно короткая и без особенных инсайтов. Для сравнения, есть крутая пдфка от Google 2015-го года Hidden Technical Debt in Machine Learning Systems, а про рекомендательные системы не так давно вышла Methodologies for Improving Modern Industrial Recommender Systems.

5. От **** вышло еще две статьи с говорящими за себя названиями, про NAS (Neural Architecture Search) и AutoML: Rankitect: Ranking Architecture Search Battling World-class Engineers at Meta Scale и AutoML for Large Capacity Modeling of Meta's Ranking Systems.

6. Вышло две статьи, в которых много аффилиаций из Kuaishou: Mixed Attention Network for Cross-domain Sequential Recommendation с довольно сложной нейросеткой для кросс-домен сценария и Inverse Learning with Extremely Sparse Feedback for Recommendation про металернинг для борьбы с шумными таргетами в рекомендациях.

7. ID Embedding as Subtle Features of Content and Structure for Multimodal Recommendation от китайского Northeastern University про использование обучаемых эмбеддингов по айдишникам в мультимодальных рекомендательных моделях.

P.S: прошлый arxiv weekly отредактировал, привёл в похожий формат с короткими комментариями. Посты про добавление гейтинга в DCN-V2 и мультимодальный эмбеддинг товара в eBay тоже причесал. Призываю глянуть :)
🔥15
Сегодня вышла статья Scaling Law of Large Sequential Recommendation Models от WeChat, Tencent и Gaoling School of Artificial Intelligence. Я, заинтригованный, бросился её читать. И тут на пятой странице вижу следующий абзац:
We adopt the widely-used leave-oneout strategy, in which the last item is used as the test item, the item before the last item is used as the validation item, and the remaining items are used for training.

Т.е. авторы используют постановку next item prediction, в которой нужно глядя на историю пользователя предсказывать следующее взаимодействие. Причем для теста откладывается последнее взаимодействие из каждой пользовательской истории.

Почему это плохо:

1. Нет деления на трейн/тест по времени. Это буквально data leakage, не соответствующий сценарию реального применения модели в продакшне. В таком сетапе можно выбить высокие метрики не за счет обобщающей способности, а за счет меморизации. Трансдуктивные модели, которые используют обучаемые айдишники, могут в таком сетапе показывать очень высокие метрики, а потом в продакшне давать нулевой профит. Референсы для чтения: A Critical Study on Data Leakage in Recommender System Offline Evaluation и Take a Fresh Look at Recommender Systems from an Evaluation Standpoint от Nanyang Technological University.

2. Предсказание следующего айтема, даже если добавить тайм-сплит, не очень хорошая задача. Траектория взаимодействий пользователя очень сильно зависит от продакшна (logging policy). Более хорошие метрики с большой вероятностью получит та модель, которая будет лучше имитировать продакшн. Даже если в продакшне очень плохие рекомендации. Референс: Offline Evaluation for Reinforcement Learning-based Recommendation: A Critical Issue and Some Alternatives от Naver Labs Europe.

3. Предсказывать следующее событие в истории пользователя без лага — жадная задача, которая приводит к плохому разнообразию рекомендаций. Об этом писал Pinterest в статье TransAct: Transformer-based Realtime User Action Model for Recommendation at Pinterest. Лучше эмулировать хотя бы небольшую задержку доставки данных. Pinterest, например, при обучении случайным образом выкидывает сколько-то последних событий пользователя за последний день, чтобы модель не скатывалась в эдакий "локальный оптимум" однообразных рекомендаций, похожих на недавнюю историю.

4. Обычно в таком сетапе для оценки качества сэмплируют небольшое количество случайных негативов (сотню). В качестве метрик репортится nDCG и HitRatio для позитива против негативов. Такая метрика не очень устойчива, от сэмплирования к сэмплированию все меняется. И непонятно что оценивает, т.к. реальный сценарий использования модели будет другой. Либо модель предполагается как верхняя стадия рекомендаций, ранжирование, и тогда эта сотня кандидатов будет вовсе не случайная, а из кандидатогенератора. Либо модель используется как кандидатогенератор / одностадийная рекомендательная система, тогда в качестве негативов надо использовать весь каталог айтемов. Референс: On Sampled Metrics for Item Recommendation от Google Research.

Довольно много статей репортят такие метрики. Иногда на это можно закрыть глаза, если предлагаемый в статье inductive bias должен увеличивать скорее генерализацию, а не меморизацию. Но в статье про скейлинг моделей это довольно сомнительно, т.к. при росте модели может очень сильно буститься меморизация.

Я часто использую термины трансдуктивность / индуктивность. Индуктивность предполагает, что модель умеет работать на новых объектах, не встречавшихся в обучении. Например, языковые модели и рекомендательные модели, представляющие айтемы через текст, индуктивны. А модели, использующие для айтемов обучаемые айдишники, e.g. SASRec, трансдуктивны. Почитать про это можно в Situating Recommender Systems in Practice:Towards Inductive Learning and Incremental Updates от Microsoft.

Меморизация — это больше про способность запоминать корреляции в обучающих данных. Генерализация, т.е. обобщающая способность, больше про транзитивность, умение выводить новые знания. См. Wide & Deep Learning for Recommender Systems от Google.
👍29🔥83
Пару дней назад, на конфе Сбера состоялся доклад от Pinterest. Рассказывали про эволюцию ранжирования рекламы. По выступлению Andrew Zhai на WWW'22 можно сказать, что вся информация справедлива и для рекомендательного стека. Итак, эволюция ранжирования:

1. (2014) Логистическая регрессия над вручную подобранными, handcrafted фичами.

2. (2017) Добавили трансформацию фичей с помощью градиентного бустинга, вдохновившись статьей Practical Lessons from Predicting Clicks on Ads at Facebook. Т.е. листья деревьев из GBDT используются как фичи для логрега. Меморизующий логрег инкрементально дообучается каждый час, генерализующий GBDT обучается реже, оффлайново.

3. (2018) Перешли на нейросеть для ранжирования. Называют её Deep&Wide, но кажется, что в отличие от оригинала, она без линейной модельки. В первой версии оставили всё те же фичи, которые были у прошлой модели. Чтобы измерять важность фичей, используют случайные перестановки. Overall важный переход, без которого будущие улучшения были невозможны.

4. (2020) Вместо отдельной нейросетки под каждый таргет, сделали одну мультизадачную нейросеть. Убрали ручной feature engineering, добавили в нейросеть неявное моделирование взаимодействия фичей с помощью LatentCross слоёв (e.g. DCN-V2 и MaskNet). Решили назвать это AutoML (не путать с neural architecture search).

5. (2021) Добавили attention для обработки краткосрочной истории пользователя. Как и у Алибабы в Deep Interest Network, используют раннее связывание кандидата и истории. Айтемы представляют через предобученные PinSage эмбеддинги.

6. (2022) Апгрейднули аттеншн до трансформера, стали обрабатывать долгосрочную историю (100+ событий за 3 месяца истории), подтюнили работу с последовательностями (умная обработка таймстемпов, эмбеддинг типа события).

7. (2022) PinnerFormer. Сделали универсальный эмбеддинг пользователя в Пинтересте с помощью оффлайнового трансформера, заточенного под long-term сигнал. End-to-end архитектуру можно глянуть в Rethinking Personalized Ranking at Pinterest: An End-to-End Approach.
👍16🔥4
#arxiv_weekly (20.11.23 — 23.11.23)

Неделя в плане статей была неурожайная, поэтому дайджест будет не совсем рекомендательный и не совсем серьезный. Тем не менее, все статьи из секции information retrieval:

1. У китайского e-commerce гиганта Meituan вышла статья про использование глубокой пользовательской истории в CTR моделях: Deep Group Interest Modeling of Full Lifelong User Behaviors for CTR Prediction. Добавляют в историю к кликам другие действия (добавления в корзину, заказы, etc). "Сжимают" все события с одинаковым item_id в один "групповой" вектор. Чтобы сформировать предсказание для кандидата, используют эти групповые векторы + все события с таким же item_id, как у кандидата, на входе в аттеншн.

2. Deezer, один из крупнейших музыкальных сервисов, выпустил статью про Mere Exposure Effect: когда пользователю рекомендуешь один и тот же айтем, его интерес сначала возрастает, затем падает. Моделируют этот эффект в своей простенькой модельке, чтобы получить побольше качества. См. Ex2Vec: Characterizing Users and Items from the Mere Exposure Effect.

3. LLM'ки всё еще не бьют по качеству более классические рекомендательные модели, тем не менее у них есть большое преимущество в виде возможности генерировать объяснения рекомендациям. А что если мы научим LLM'ку генерировать объяснения для рекомендаций какой-то другой модели? Авторы из University of Science and Technology of China и Microsoft Research Asia исследуют этот сценарий в статье RecExplainer: Aligning Large Language Models for Recommendation Model Interpretability.

4. Машинное обучение поможет шарить за мемы: авторы из USC Information Sciences Institute и Vrije Universiteit Amsterdam с помощью визуального трансформера и готового каталога с мемами анализируют посты с Дискорда и Реддита. Ищут среди них мемы, соотносят с каталогом, анализируют тренды. Статья Contextualizing Internet Memes Across Social Media Platforms.

5. Коллаб между KAIST и корейской таможней: авторы из KAIST совместно с корейскими таможенными офицерами разработали модельку, по текстовому описанию помогающую классифицировать товар. Она также предлагает объяснение своему выбору, выделяя кусочек описания выбранного кода классификации. Explainable Product Classification for Customs.

6. Я тут выше задокументировал свое негодование по поводу сомнительных эвалов в next-item-prediction в контексте статьи Scaling Law of Large Sequential Recommendation Models от WeChat, Tencent и Gaoling School of Artificial Intelligence. Если вас это не смутило или у вас есть юзкейсы, похожие на next-item-prediction, то в этой статье может быть вполне интересная информация про скейлинг (рост качества в зависимости от размера) sequential recommender'ов.

7. На arxiv мелькнула статья с названием Fact-based Court Judgment Prediction от Indian Institute of Technology. Название интересное, ситуация страшная.
👍12🔥6
Хочу порекомендовать вам канал своего коллеги из Яндекса @toshiknoscript. Антон пишет про программирование, нейросети, компьютерное зрение, тайм-менеджмент, рабочие процессы, постит мемы. Все посты очень читабельные и понятные: даже мне, два раза в год пишущему код на плюсах, удаётся их распарсить. Не говоря уже о мемах :)

Это уникальная возможность посмотреть на все эти вещи через призму сеньор-разработчика из Яндекса и главного мемолога Службы Компьютерного Зрения.

Ссылка на канал: @blog_toxa
🔥6
Забавный факт про Spotify.

Первые пять лет существования (2008 — 2013) в Spotify не было рекомендательной системы. Затем один из инженеров, Erik Bernhardsson, в своё свободное время сколотил первую версию Discover Weekly. Менеджеры к этому сначала отнеслись скептически, но поделку хорошо оценили сами сотрудники и по итогу фича проросла в продукт.

Первая рекомендательная система была довольно простенькая. Erik вдохновлялся успехами Нетфликса (Netflix Prize), а также word2vec и PLSA. Построил большую user-item матрицу количества прослушиваний, в которой в качестве айтемов были треки и возможно другие сущности (артисты, альбомы, etc). Затем применил матричную факторизацию. Итоговые векторы размерности 40 использовались для рекомендации новых треков пользователю. Чтобы батчовая джоба поиска ближайших соседей бежала побыстрее, Эрик написал собственный движок ANNOY. Судя по всему, и по сей день подобная коллаборативная фильтрация является основным кандидатогенератором для персональных рекомендаций в Spotify.

Ну и, наконец, держите видео, на котором Эрик прыгает через диван в офисе Спотифая 12 лет назад :)
🔥14👍7😁4
Представляю вашему вниманию самый популярный лосс для кандидатогенерации, знаменитый Sampled Softmax Loss. Он же InfoNCE, NTExent и Softmax with sampled negatives.

Обычно я посты пишу на русском, и затем перевожу на англ для Линкедина, в этот раз получилось наоборот. Если ваш english is perfect, призываю прочитать оригинал. Формулы вставить в телеграме я не смог, они будут в комментариях к посту.

Надеюсь, после этого поста будет проще распарсить часть моих будущих (и прошлых) постов.
👍4
Sampled Softmax Loss for Retrieval Stage in Recommender Systems.

Рекомендательные системы обычно состоят как минимум из двух стадий: кандидатогенерация и ранжирование. "Кандген" из больших каталогов айтемов отбирает сотни-тысячи, ранжирование еще дальше фильтрует небольшое множество кандидатов с прошлых стадий и превращает в отранжированную итоговую выдачу.

Чтобы обучить кандген модельку, чаще всего используется contrastive learning. Самый популярный нынче вариант — это sampled softmax loss. У него много разных названий, пожалуй, два других самых известных — это InfoNCE и NTExent. По названию можно понять в чём суть: чтобы посчитать вероятность позитива, вместо софтмакса по всей коллекции айтемов сэмплируем небольшое количество негативов. Можно считать, что мы таким образом аппроксимируем исходный софтмакс по всей коллекции. Почему бы не сделать полный софтмакс? Это медленно. Что-то подобное, кстати, уже делали во времена word2vec в качестве альтернативы иерархическому софтмаксу.

Cпособов сэмплировать негативы несколько. Самый очевидный — сэмплировать равномерно по всей коллекции. Градиент лосса с таким софтмаксом будет несмещенной оценкой градиента лосса для софтмакса по всей коллекции (it's nice actually). Подход рабочий, особенно если используются трансдуктивные эмбеды по айдишникам: не нужно делать никаких особенных телодвижений для получения векторов, только лукап по таблице эмбеддингов.

Теперь, если вы вдруг обучаете нейросетку над айтемом, т.н. айтем башню, то равномерно сэмплировать негативы уже больновато. Нужно целиком прогонять эту нейросетку для каждого сэмплированного негатива. Да еще и данные, которые идут на вход нейросетке, тоже надо откуда-то доставать. По счастью есть еще один потенциальный источник негативов, in-batch negatives: когда мы набираем батч из пар <юзер, айтем>, айтемы других пар из батча можно переиспользовать как негативы для текущей пары. Так как эмбеды всех пар мы и так считаем, это бесплатно. В мульти-гпу сетапе так вообще можно использовать в качестве негативов айтемы со всех гпу-карточек — cross-device in-batch negatives.

Однако оценка градиента становится смещённой. Ин-батч негативы не совсем "случайны". Вероятность айтема попасть в батч пропорциональна частоте его появления в данных, aka unigram distribution. Чем популярнее айтем, тем чаще он появляется в батче, а значит используется как негатив для остальных пар из батча. Эффект довольно легко интерпретировать: модель часто видит в качестве негативов популярные айтемы и начинает их больше штрафовать, "меморизуя" их популярность. С какой-то точки зрения это полноценный popularity debiasing, см. Contrastive Learning for Debiased Candidate Generation in Large-Scale Recommender Systems by DAMO Academy, Alibaba Group.

Смещение оценки градиента приводит к падению римской империи качества, что демонстрирует Google в статье Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations. Для спасения предлагается техника под названием logQ correction, под капотом которой дважды применяется importance sampling.

Ещё не все проблемы решены: хоть у нас теперь и правильное распределение, но в негативах не встречаются объекты, редко попадающие в выдачу, aka стюпиды aka изи негативы. А когда мы выкатываемся в продакшн, эти стюпиды попадут в ANN индекс и мы на них будем плохо работать. В качестве фикса нужно добавить щепотку равномерно сэмплированных негативов. Получаем технику Mixed Negative Sampling от Google: Mixed Negative Sampling for Learning Two-tower Neural Networks in Recommendations.

Кроме Гугла ин-батч негативы || logQ || MNS
используют такие компании, как JD.com, Pinterest, Meta, Instacart, Miscrosoft, Alibaba, Etsy, eBay, Walmart, Baidu.

Fun fact: Yoshua Bengio это всё исследовал еще в начале нулевых, см. раз и два.

P.S: оригинал поста на линкедине.

P. P. S: у Миши @WazowskiRecommends есть хороший пост на эту же тему, я его специально не перечитывал, чтобы сделать ансамблирование :)
👍242🔥2
В телеге появились рекомендации похожих каналов. Вероятно, там какая-то простенькая метрика близости, основанная на подписчиках. Теперь ждём единую ленту рекомендаций с постами из разных каналов :)

Вообще идей для рекомендаций в тг можно нагенерировать кучу, интересно что в итоге действительно реализуется.
🔥23