Practical ML Conf 2024.
Ну что, как всегда — очерки из кулуаров после конференции :)
Про компании:
* яндексоиды из ex-Дзена обустраивают под себя VK: ввели яндексовые перформанс ревью
* в Wildberries подводят итоги первого полугодия после массивного рексис найма
* в Авито активно улучшают рекомендации, судя по кол-ву участников конференции и по кол-ву вопросов про трансформеры и u2i двухбашенные модельки
* в Сбере тоже активно работают над трансформерами, в частности над использованием контентных представлений для айтемов
* еще про Wb: после выхода на работу доступы получать как минимум неделю, а еще на старте могут дать задачку про категоризацию товаров :)
* в Детском Мире нет ресурсов :(
* Яндекс Маркет активно занимается нейросетями: внедрили несколько трансформеров, и нейросетевое ранжирование пробуют (обошлось не без вашего покорного слуги)
* в Яндекс Музыке лучшие музыкальные рекомендации (уже пятый трансформер внедряем)
Остальное:
* найм стажеров — лучшее изобретение человечества
* трансформеры не могут освоить язык дельфинов, нужна смена парадигмы
* как минимум несколько человек подходило поговорить про то, что двухбашенные трансформерные u2i модели выдают не очень разнообразные рекомендации
* люди периодически заговорщически полушепотом спрашивали "а что-нибудь с РЛ'ем делаете?"
* кажется, впервые лицом к лицу столкнулся в России с человеком, у которого тоже есть oura ring
* активно тизерил, что буду делать доклад про наши успехи в масштабировании рексистем в ближайший год
Успел во время нетворкинга осипнуть и через полчаса отсипнуть, не думал, что такое возможно =)
Появилась запись с Turbo ML Conf — https://www.youtube.com/watch?v=NlVXgGJnnX4
Еще советую посмотреть доклад Олега Лашинина про РЛ в рексисе — https://www.youtube.com/watch?v=rjzmqjLWRoM
#arxiv_weekly (05.08.24 — 09.08.24)
Сводка новостей с arxiv recent ir.
1. Товарный поиск: Амазон исследует пользу от query understanding модуля в ранжировании (статья Exploring Query Understanding for Amazon Product Search), а в JD.com улучшают качество классификации интентов на тяжелом хвосте запросов с помощью графовых нейросетек A Semi-supervised Multi-channel Graph Convolutional Network for Query Classification in E-commerce.
2. LLM: в Гугле продолжают покорять рекомендашки языковыми моделями в статьях Leveraging LLM Reasoning Enhances Personalized Recommender Systems от команды Ed Chi (на амазоновских beauty и movies/tv), и PERSOMA: PERsonalized SOft ProMpt Adapter Architecture for Personalized Language Prompting от других товарищей из Google Research (на movielens). У Linkedin вышла статья про LLM и графы, Understanding and Modeling Job Marketplace with Pretrained Language Models.
3. Uncertainty modeling: любопытная статья от Shopee Discovery Ads про моделирование uncertainty для генерации кандидатов. При моделировании тяжелого хвоста айтемов имеем большую неопределенность, влияющую на построение индекса и поиск по нему. Утверждается, что при построении индекса хотим свести неопределенность к минимуму (для высокой релевантности), а при поиске в индексе хотим побольше неопределенности (для новизны). В том числе предлагают как эту uncertainty моделировать в нейросетях. Статья Deep Uncertainty-Based Explore for Index Construction and Retrieval in Recommendation System.
Еще одна статья на тему uncertainty от Alibaba Group: Modeling User Intent Beyond Trigger: Incorporating Uncertainty for Trigger-Induced Recommendation. Чуть статы: при клике на товар-клавиатуру, 46.9% в последствии купят какую-нибудь клавиатуру, 30.8% купят что-нибудь популярное, и 22.3% купят что-то комплементарное (e,g. мышку). В самой статье опять предлагают какие-то "модули": "we design an Explicit Intent Exploit Module (EIEM), Latent Intent Explore Module (LIEM), Intent Uncertainty Measurement Module (IUMM)", вчитываться я не стал :)
4. В тему последнего поста от Миши про генерацию кандидатов на GPU, в Xiaohongshu Inc опубликовали статью с говорящим названием A Real-Time Adaptive Multi-Stream GPU System for Online Approximate Nearest Neighborhood Search.
5. Misc: Huawei / Tencent выпустили обзор Embedding Compression in Recommender Systems: A Survey, а в Yahoo продолжают тюнить факторизационные машины Low Rank Field-Weighted Factorization Machines for Low Latency Item Recommendation.
Turbo ML Conf.
В этот раз обсудили трансформерную персонализацию на более фундаментальном уровне. Поговорили про формирование истории, кодирование событий, а также обсудили как в модели обрабатывается кандидат, для которого считаем скор; и на какую задачу нужно учить модель.
Что обсуждали в кулуарах:
* инфраструктуру (в частности YTsaurus и насколько он хорош)
* зачем нужны аналитики в рексистемах
* как дипмайнд теперь назовет новую версию DCN'а, учитывая что DCN-v3 уже занят
* сколько в Wildberries рекомендательных команд и как они уживаются
* у кого в Т-банке больше гпушек: у ресерча или рнд
* у рексистем есть потолок качества или "насколько мы вообще можем повлиять на траекторию пользователя рекомендациями?"
* тикток, ютуб, kuaishou; онлайн-дообучение; почему ютуб рекомендует видео десятилетней давности
* Яндекс Ритм
* аплифт моделирование
* предстоящий рексис и как на него попасть
* нужна ли галочка для отключения персонализации
Презентацию прикладываю в первом комментарии к посту, запись выступления будет через пару недель. Узнаем, уложился ли я в 20 минут.
Как всегда, спасибо всем, кто подходил и говорил, что читает канал. Это очень приятно :) В этот раз спросили "где пост про РЛ", который я обещал наверно где-то полгода назад... Уверенно ответил "в бэклоге".
Мы ищем стажеров!
👩🌾 shorties
— это персональная программа, в которой мы выращиваем таланты до полноценных Research Engineer’ов или Research Scientist’ов в зависимости от ваших интересов.
🔭 Intern Research Scientist
Вы будете заниматься написанием статей на top-tier ИИ конференции (NeurIPS, ICLR, ICML) и участием в научном дискурсе: проведение экспериментов, проверка и генерация исследовательских идей, которые направлены на развитие научного знания.
🧪 Intern Research Engineer
Вы будете заниматься созданием новых frontier-технологий и применением Reinforcement Learning в реальных задачах.
Turbo ML Conf.
Буду выступать 20-го июля на конференции Turbo ML Conf с третьим, юбилейным докладом про трансформерную персонализацию.
В этот раз попробую сделать более фундаментальный рассказ: обсудим на что учить нейросеть, как формировать историю, как кодировать события. Опыт четырехлетней практики в Яндексе.
Приходите понетворкаться пообщаться :)
Scaling Law for Recommender Systems.
Я на Датафесте рассказывал про масштабирование рексистем: хотим как в NLP/CV, чтобы можно было увеличивать модельки и получать серьезные приросты по качеству рекомендаций. Пока таких эффектов не наблюдается, особенно с т.з. dense части моделей (энкодеров). Давайте посмотрим на статьи:
Scaling Law for Recommendation Models: Towards General-purpose User Representations (NAVER, 2021).
Активность пользователя в разных сервисах — это разные модальности, e.g. поиск vs еком. Учат модель на contrastive learning, затем переиспользуют векторы модальностей в downstream тасках. Демонстрируют скейлинг по размеру обучающего датасета и по длине посл-ти событий. Нет таймсплита для оценки качества (делят на train/test по юзерам).
Understanding Scaling Laws for Recommendation Models (Meta, 2022).
Показывают, что типичная для меты нейросетевая архитектура DLRM не скейлится с точки зрения размера энкодера, но скейлится по кол-ву данных для обучения. Прозвучало роковое "parameter scaling is out of steam for the model architecture under study, and until a higher-performing model architecture emerges, data scaling is the path forward", другими словами "надо искать новую архитектуру, чтобы заскейлиться".
Pivotal Role of Language Modeling in Recommender Systems: Enriching Task-specific and Task-agnostic Representation Learning (NAVER, 2022).
Одна из первых работ про LM-ки в рекомендациях: представляют историю пользователя в виде сплошного текста, e.g."tomcruise movies → missionimpossible → mi7 release date → [EOS]", учат языковую модель, тюнят ее под рекомендательный сценарий с двухбашенной моделью. Утверждают, что есть скейлинг по размеру энкодера, но опять-таки нет таймсплита (leave-one-out strategy, когда замеряем кач-во на последнем взаимодействии пользователя).
Scaling Generative Pre-training for User Ad Activity Sequences (Amazon Ads, 2023).
Учат next event prediction, формируют отдельные лоссы по предсказанию всех признаков события. Утверждают, что скейлинг для претрейн лосса по размеру энкодера есть, и что прирост на downstream тасках тоже имеется. Таймсплита нет.
Breaking the Curse of Quality Saturation with User-Centric Ranking (Meta AI, 2023).
Утверждают, что для ранжирующих моделей даже по обучающим данным нет скейлинга. Предлагают user-centric подход: представлять айтемы через обучаемые эмбеддинги пользователей. Показывают, что такой подход скейлится хотя бы по данным.
Scaling Law of Large Sequential Recommendation Models (Gaoling School of Artificial Intelligence, 2023).
Для канала эта статья была историческим моментом, когда я разразился постом на тему неправильных эвалов в рекомендашках :) Учат next item prediction, приходят к выводу что в рексисе скейлинг по энкодеру даже лучше, чем в NLP. Но опять нет тайм-сплита и leave-one-out схема.
Actions Speak Louder than Words: Trillion-Parameter Sequential Transducers for Generative Recommendations (Meta AI, 2024)
Показывают, что софтмакс в трансформере вредит, а затем и остальную часть энкодера очень сильно меняют. Переходят к генеративной постановке и для ранжирования, и для ретривала. Тема скейлинга все еще на раскрыта; только промелькнул абзац "We observe this phenomenon across three orders of magnitude, up till the largest models we were able to test (8,192 sequence length, 1,024 embedding dimension, 24 layers of HSTU)".
Wukong: Towards a Scaling Law for Large-Scale Recommendation (Meta AI, 2024).
Вышла примерно в одно время с прошлой статьей, но при этом предлагает концептуально другой подход с очень кастомным способом стакинга факторизационных машин. Утверждают, что scaling law для энкодера выполняется.
Еще есть серия статей про sparse часть моделей, т.е. матрицы эмбеддингов, которые у Меты/Гугла достигают триллионных размеров (например, см 1, 2, 3).
Computer Architecture and Memory Systems.
Прямо сейчас проходит пятидневная летняя школа EFCL Summer School в ETH Zurich, в которой один из треков — про память и компьютеры, в том числе в контексте машинного обучения.
Ведет его научная группа Onur Mutlu, у которой есть очень крутые курсы: вводный Digitial Design and Computer Architecture и продвинутый Computer Architecture. Всё выкладывается на ютуб, включая вышеназванный трек из EFCL. Можно даже на трансляцию подключиться и что-нибудь поспрашивать.
Был довольно забавный keynote от Yale Patt (который, собственно, самого Onur Mutlu и учил когда-то), в котором в том числе промелькнул тезис, что учиться надо в стиле “bottom-up”, изучая системы с самых основ; e.g. сначала изучать как устроен компьютер, и уже потом идти учиться программировать. Был пример с гугловским TPU, где один из авторов когда-то слушал курсы про железо, и поэтому заюзал систолические массивы. Еще Yale жалуется, что сейчас машин лернеры чаще всего ничего про этот самый “bottom” не знают :)
Были и тезисы про ресерч: например, что во многих областях ресерч — это про более глубокое понимание того, что уже есть (или того, что было раньше); а у нас, в более инженерных “науках”, ценится исключительно выдумывание чего-то нового. И что пока это не изменится, будем страдать (см. проблемы в академии, со статьями и конференциями). Что инновации всегда следуют за более глубоким пониманием, и в текущих реалиях многие ресерчеры пытаются этот этап перешагнуть, делая статьи-пустышки.
Когда-то давно, в порывах восполнить пробелы в образовании после ВМК, я искал на просторах интернета хорошие лекции про комп. архитектуру; канал Onur Mutlu — лучшее, что нашел. Лекции всяких MIT выглядят гораздо хуже. Справедливости ради, целиком контент я до сих пор не посмотрел (материала там много), но периодически возвращаюсь и что-то досматриваю :)
Про публичные выступления.
С раннего возраста периодически где-то выступаю: музыкальный хор, интеллектуальные дебаты, и вот, последние лет 6, на ML митапах. Еще люблю спортивную мафию, которая, на мой взгляд, развивает те же навыки (но об этом как-нибудь в другой раз).
Хотел тезисно поделиться парой советов про выступления:
1. Презентация — ваш лучший друг. Хорошая презентация сильно облегчает задачу рассказчику. А хорошо сделанная картинка — лучше тысячи слов. На работе тоже этим активно пользуюсь.
2. У меня плохая дикция: я часто оговариваюсь, не выговариваю какие-то слова, поправляю себя; главное — делать это уверенно. Если вы уверенно говорите, пускай и с оговорками — это смотрится вполне нормально.
3. Прогоны. Полезно сделать парочку прогонов до выступления. Я это делаю еще как минимум чтобы понять, укладываюсь ли в time limit; а еще, после первого прогона обычно становится понятно что надо подправить в презентации, чтобы рассказывать было легче.
А еще пожалуюсь:
1. Не умею делать короткие презентации: пихаю слишком много контента и вынуждаю себя тараторить. Структура доклада всегда получается такая, что еле укладываюсь в time limit. Интересно было бы когда-нибудь попробовать сделать более "медленный" доклад с более медленной манерой речи.
2. Не поборол слова паразиты: "вот", "то есть", "эээ". Без них сложно тараторить :)
3. Срываю голос на каждом выступлении: почему-то начинаю на выступлениях очень громко разговаривать, довольно быстро сажаю голос, и в середине выступления начинаю говорить каким-то странным тембром (и во время нетворкингов тоже)
4. Не смотрю на аудиторию: редко когда получается качественно посмотреть на слушателей, чаще утыкаюсь в презентацию. По канонам ораторских книжек нужно все-таки на людей смотреть :)
Еще заметил интересный эффект: у меня было рабочее полугодие, во время которого очень много разговаривал (докладывал статьи, etc); затем было полугодие, где активность поутихла. Когда я об этом явно задумался, начал гораздо хуже выступать. Fear is a mind killer :)
Data Fest 2024.
Завтра буду рассказывать про RecSys тренды в индустрии на Датафесте, в 15:30. Приходите пообщаться!
А теперь затизерю тренды, которые выбрал для доклада :)
P.S: если ваш любимый тренд в список не попал — не обижайтесь; у меня всего 20-30 минут для рассказа, все не вместить :)
UPD: ссылка на трансляцию
Face reveal: https://youtu.be/iBhGAKFGKdQ?si=2omgFLtuDxv0UjbF
Рассказываю про нейросетевое ранжирование для рекомендаций.
После доклада за кулисами обсудили РЛ, графовые сетки, bias'ы, трансформеры для персонализации, академию, индустрию, роблокс, рекомендательные ленты, next item prediction, movielens, как делать надо и как не надо, симуляции пользователей, языковые модели, объяснения рекомендаций, манипуляции вместо рекомендаций, trust bias, фидбек луп.
P.S: Подписчики на митапе зашеймили за отсутствие постов на канале. Заверил, что это временно :)
Обучаемые векторы для рекомендательных систем.
Есть конечное множество пользователей и айтемов. Хотим рекомендовать пользователям айтемы.
Пусть для каждого объекта задано векторное представление, при этом предпочтения пользователя u
определяются через скалярное произведение <u, i>
для любого айтема i
. Тогда говорят, что векторы пользователей и айтемов находятся в одном семантическом пространстве, а такую модель называют двухбашенной. Эти векторы еще часто называют эмбеддингами, потому что объекты буквально вкладываются (англ. to embed) в векторное пространство.
Почти в любой нейросети возникают векторы объектов. Иногда это целевая задача - получить эмбеддинги, обладающие определенными полезными свойствами (привет, representation learning). В рекомендашках это тоже актуально; и (1) для кандидатогенерации, которую часто делают на основе эмбеддингов (embedding-based retrieval), и (2) для ранжирования, серьезный вклад в которое вносят нейросетевые признаки.
В случае обучаемых эмбеддингов векторы объектов объявляются частью параметров модели; их значения подбираются в процессе оптимизации. Рассмотрим двухбашенную модель с обучаемыми векторами: она задается функционалом потерь (+ данными для обучения), процедурой оптимизации и, непосредственно, набором обучаемых векторов.
Утверждается, что у такой модели максимальная емкость. Что вообще такое емкость модели (англ. model capacity)? Это способность выражать взаимосвязи, аппроксимировать функции. В терминах двухбашенной модели об этом думать проще: представим, что у нас есть некоторая оптимальная структура семантического пространства (если нас волнует только семантическая близость объектов, то с точностью до поворотов, сдвигов и, возможно, масштабов), которую мы хотим получить.
В теории, двухбашенная модель с обучаемыми векторами может выучить любую структуру семантического пространства. Пусть у нас есть какая-то другая модель (e.g. мешок слов, трансформер, графовые нейросети), тогда можно инициализировать обучаемые эмбеддинги векторами из этой модели. В обратную сторону это не работает - имея набор векторов, не всегда можно так настроить "content-based" модель, чтобы она выдавала нужные векторы (привет, дистилляция).
Почему бы тогда не использовать всегда только обучаемые векторы? Несколько причин:
1. Недостаточно данных. Bias-variance tradeoff гласит, что более сложные модели сильнее переобучаются, hence для них нужно больше данных. Double descent в рекомендашках я пока не наблюдал, поэтому будем считать, что это правда :)
2. Тяжелые хвосты (long tail distributions). Если у вас большая часть объектов мало встречается в данных (т.е. хвост тяжелый), то про них сложновато делать выводы без дополнительной информации (e.g. контента), и тем более сложно выучить хорошие векторные представления.
3. Постоянно появляются новые объекты, поэтому нужна индуктивность - умение работать на объектах, не встречавшихся в обучении. У обучаемых векторов она отсутствует, они трансдуктивны.
4. Нестационарность распределений. Интересы пользователей меняются, содержимое айтемов обновляется, тренды (популярности объектов) эволюционируют. Обучаемые векторы это не учитывают.
Последние два пункта частично лечатся инкрементальным дообучением (получили новые данные - дообучились). Но:
* проблема курицы и яйца - чтобы дообучиться, надо накопить фидбек для новых объектов. Чтобы его накопить, нужно их рекомендовать. Если модель на них не дообучалась, то и рекомендовать их не будет.
* у инкрементального дообучения будет определенная задержка, побороть которую можно только невероятными инфраструктурными усилиями. Пока дообучение не произойдет, качество работы на новых и изменившихся объектах будет плохое.
Что же тогда делать? Вносить индуктивное смещение (англ. inductive bias): анализировать содержимое айтемов, делать нейросетевые энкодеры, добавлять регуляризацию, представлять пользователя через историю взаимодействий, etc. Об индуктивном смещении и как оно помогает бороться со всеми этими проблемами поговорим в другой раз :)
Иногда в контексте канала появляются идеи, которые выходят за рамки написания постов. Я, честно говоря, не ожидал, что канал когда-нибудь дойдет до текущих масштабов (преодолели сегодня тысячу участников), и мне казалось, что с ростом аудитории будет только сложнее выходить за рамки уже существующего формата. Но в реальности происходит другое - я наоборот смелею, и желание экспериментировать растет.
Решил заложить под определенное количество подписчиков определенный контент. Не с целью чтобы ускорить рост (не думаю, что это влияет), а чтобы были дедлайны по реализации. В моменте всегда находится что-то, из-за чего эти идеи откладываются. С этим поможет только коммитмент :)
1. Видеозапись с рассказом про ML в Пинтересте, когда наберется 1250 подписчиков. Про ранжирование, графовые сетки, трансформеры для персонализации, etc. Посты в телеграме по размеру ограничены, и я, на самом деле, большую часть постов подбиваю под эти ограничения. Приходится дробить повествование и создавать cliffhanger'ы, но зато меньше времени нужно на написание отдельных постов. Вот в формате часового видео можно довольно много рассказать и никаких ограничений нет. И текст вылизывать не нужно =) На работе я постоянно где-то что-то рассказываю, и не раз посещала мысль, что было бы круто что-то записать и для вас.
2. Пародия на аватарку канала с моей физиономией на 1500 подписчиков. Пункт шуточный, чтобы основательно подготовиться к следующему :)
3. Подкаст про рекомендательные системы на 1750 подписчиков. В составе из четырех яндексоидов, вместе с моим бывшим тимлидом Севой @yalinter, Сашей @knowledge_accumulator и Мишей @WazowskiRecommends. Обсудим тренды рексистем (трансформеры, РЛ, языковые модели, графы, etc), соберем ваши вопросы, и на самые интересные постараемся ответить.
4. Ридинг группа (почти виртуальный митап) на 2000 подписчиков (надеюсь, не все две тысячи придут). Обсудим выбранную голосованием статью, или даже несколько. Может, поговорим про то, как их вообще искать и читать. Я про это уже писал, но, кажется, еще осталось что обсудить. В этом поучаствует Сережа @pragmaticml, который, собственно, недавно пришел ко мне с предложением сделать что-нибудь про чтение статей.
Для меня все эти пункты звучат довольно сложно, но если хотя бы какой-нибудь реализуется, и реализуется успешно - буду доволен. Спасибо за то, что читаете канал, ставите реакции и пишете комментарии!
Необходимое условие для успеха нейросетевого ранжирования — это масштабирование по данным. У нейросетевых рекомендательных моделей качество сильно растет при увеличении обучающего датасета, у градиентного бустинга — нет.
Чаще всего в ранжирующий катбуст запихивают ~50кк сэмплов. В сервисах побольше — это неделя залогированных данных с андерсэмплингом, в сервисах поменьше — две недели / месяц. Для нейросетей с почти любой архитектурой это количество данных далеко от оптимального. Можно использовать вплоть до миллиардов сэмплов, получая приличные приросты метрик качества (как мы делаем с трансформерами над историей пользователя).
У нейросетевого ранжирования емкость модели (возможность выучивать какие-то зависимости) гораздо больше. Почему так получается — обсудим в других постах. Но чтобы эту емкость реализовать, нужны большие датасеты.
Есть такая область, как табличный DL. Там нет e2e анализа последовательностей, upstream моделей, и, самое главное, нет достаточно больших датасетов. Поэтому примерно все существующие статьи (e.g. (1) Are Neural Rankers still Outperformed by Gradient Boosted Decision Trees?, (2) When Do Neural Nets Outperform Boosted Trees on Tabular Data?) репортят доминацию GBDT.
Немного цитат из индустрии:
Applying Deep Learning To Airbnb Search
We were able to deprecate all that complexity by simply scaling the training data 10x and moving to a DNN with 2 hidden layers.
As the dataset size increases, the marginal improvement in the neural ranker’s performance is higher than that of GBDTs.
Deep learning have been dominating recommendation models as the gigantic amount of user data is a natural fit for massively data-driven neural models.
#arxiv_weekly (08.01.24 — 12.01.24)
1. Один из способов борьбы с холодным стартом в рекомендашках — это meta-learning. В статье G-Meta: Distributed Meta Learning in GPU Clusters for Large-Scale Recommender Systems инженеры из Alibaba рассказывают как адаптировали обучение DLRM (нейросетевых рексистем) под мета-лернинг сетап. Говорят, кстати, что с 2022-го года мета-лернинг в проде в поиске и рекомендациях Alipay, и принес +6.48% CVR / +1.06% CTR для рекламы на главной странице.
2. Актуальность сжатия больших матриц эмбеддингов в рекомендашках мы уже обсуждали в дайджесте про JPQ (joint product quantization). Инженеры из Meta адаптировали под сценарий частичного прунинга метод AdaEmbed, который глядя на градиент и частоту лукапов прунит эмбеддинги. Бьем эмбеддинг на чанки, и в рамках каждого чанка используем стратегию из AdaEmbed. При использовании эмбеддинга в обучении/применении паддим (заполняем) нулями запруненные чанки. Статья Fine-Grained Embedding Dimension Optimization During Training for Recommender Systems.
3. В Ant Group (та же Алибаба) предлагают обучать кластеризацию интентов (читай пользовательских намерений) end-to-end, совместно с обучением самих пользовательских эмбеддингов. Прошлые алгоритмы (e.g. ICLRec) делали это двухстайдийно или итеративно, то есть эмбеддинги пользователей и кластеры обучались отдельно. Здесь же предлагается сделать эмбеддинги центроидов обучаемыми параметрами и добавить парочку лоссов к next item prediction. Из интересного — в одном из лоссов эмбеддинг пользователя сближается сразу cо всеми центроидами, таким образом авторы борятся с проблемой confirmation bias. Статья End-to-end Learnable Clustering for Intent Learning in Recommendation.
4. В Deezer выпустили шортпейпер по мотивам своей презентации с ECIR'24 про борьбу с холодным стартом в рекомендациях новых музыкальных релизов: проблемы возникают из-за того, что у них основные модели строятся на коллаборативном сигнале. Рассказывают про использование бандитов и дистилляцию эмбеддингов коллаборативной модели в модель, использующую метаданные. Статья Let's Get It Started: Fostering the Discoverability of New Releases on Deezer.
5. В Sharechat опубликовали сразу две статьи. В Learning-to-Rank with Nested Feedback парадигма learning to rank адаптируется под сценарий “вложенных списков”, в котором взаимодействие с айтемом из выдачи приводит к появлению новой карусели рекомендаций. А в статье Variance Reduction in Ratio Metrics for Efficient Online Experiments предлагается использовать градиентный бустинг для снижения дисперсии в аб-тестах. Я по АБ-тестам не эксперт, возможно насколько это разумно нам подскажет @cryptovalerii.
6. Вышел обзор про кросс-доменные рекомендации от китайского Shenzhen University: A Survey on Cross-Domain Sequential Recommendation.
Related Pins at Pinterest: The Evolution of a Real-World Recommender System.
В далеком 2013-м году два инженера из Пинтереста за три недели склепали первую версию рексистемы для рекомендаций похожих пинов: взяли Pin-Board граф, посчитали мапредьюсом совстречаемости пинов, положили результаты в kv-хранилище. Через два года под развитие этого модуля выделили отдельную команду, и к моменту, когда в 2017-м году была опубликована обсуждаемая статья, уже 40% всех показанных и сохраненных пинов атрибуцировалось рекомендациям похожих пинов.
Что было сделано:
1. Перешли на случайные блуждания (Pixie) вместо мапредьюсного подсчета совстречаемостей. Вдохновлялись наработкой Твиттера аж 2013-го года, WTF: The Who to Follow Service at Twitter. Как минимум забустили качество для более редких, "тяжелохвостовых" пинов, у которых не набиралось достаточное количество соседей в своих бордах.
2. Добавили ранжирование:
* вырастили клики и сохранения пинов на 30% с помощью линейной модели над девятью фичами, использующей только характеристики query/candidate пинов (эмбеды текстов, картинки, категории, etc)
* добавили персонализацию: историю пользователя, соцдем, etc
* перешли на градиентный бустинг: это позволило упростить препроцессинг фичей (нормализацию, бакетизацию, etc), а также дало возможность добавлять query-level фичи
* пересели на pointwise (!) лосс вместо pairwise
* spoiler: позже они перейдут на ранжирующую нейросеть, о чем я рассказывал в посте про эволюцию ранжирования в Pinterest
3. Увеличили полноту/разнообразие кандидатогенерации, добавив больше источников кандидатов:
* Pin2Vec: word2vec над сессиями пользователей, эмбеды пинов из которого используются в ANNS
* поисковые кандидаты: ходят с текстовыми аннотациями query-пина в свой текстовый поиск, и с картинкой в визуальный; помогло с холодным стартом
* "срезовые" кандидатогенераторы: выделили отдельные кандидатогенераторы для более специфичных срезов пинов (e.g. свежие, региональные пины)
4. Про проблемы:
* фидбек луп: не получалось побить продовую ранжирующую модель, обучаясь на её же фидбеке; выделили для обучения 1% трафика, в котором отобранные кандидаты ранжировались случайно. Получили более хорошие модели, чем на исходном большом трафике
* меморизующие счетчики: была еще такая штука как MemBoost, которая изначально использовалась как прибавка к скору Pin-Board совстречаемости; по сути, это взвешенная сумма счетчиков вида "сколько раз при показе данного кандидата по этому запросу пользователи его сохраняли/кликали/etc". После введения ранжирующей модели стали использовать их в качестве фичей. Заметили, что из-за них сложно проводить АБ — эффекты от оцениваемых изменений прорастают через них в другие сплиты, и обратный эксп тоже нормально не поставишь; но ничего с этим не сделали
* столкнулись с тем, что любое изменение в рексистеме инвалидирует оптимальность всех ее компонентов, и всякие захардкоженные гиперпараметры/константы нужно переподбирать; полечили это автоматизацией — при каждом изменении стараются как можно больше всего автоматически перетюнить
5. Еще чуть про инфру:
* было сложно итерироваться, когда весь стек, включая ранжирование, был оффлайновый; каждое изменение ранжирования/кандгена требовало полный переобход всей базы; покрытие запросов тоже было не очень; в итоге перевели ранжирование и большую часть кандидатогенераторов в онлайн
* передавать по сети туда-сюда сырые данные пинов, чтобы посчитать фичи — затратно, система будет упираться в сеть; поэтому делают шардирование исходной базы кандидатов; на каждом шарде хранятся все сырые данные про пины и сразу считаются все нужные скоры / фичи
Это была краткая историческая сводка из 2017-го года. Что произошло за следующие семь лет? To be continued :)
Не так давно я узнал, что в нашей индустрии появился новый тренд. Причем там, где, казалось бы, и так всё неплохо работает и улучшить не так-то просто.
Как мы уже не раз обсуждали, для генерации кандидатов лучше всего работают двух-башенные сети и ANN-индексы для быстрого поиска, например HNSW.
Так вот, сначала Meta, а потом LinkedIn (и по слухам — ТикТок тоже) показали, что в современном мире это можно делать лучше.
Двух-башенные сети на первой стадии всё ещё остаются. Но вот складывать в ANN-индекс не нужно. А нужно… Просто использовать GPU!
При небольшой размерности эмбеддингов, да ещё и в квантизованном виде, на одной карточке A100 можно хранить порядка 100 миллионов документов (а этого хватит, конечно же, всем... ну почти) и успевать с ними со всеми посчитать скалярное произведение за несколько десятков миллисекунд. А для хорошего throughput запросные эмбеддинги стоит собирать в батчи (матрицы), чтобы всё это можно было сделать одним матричным перемножением.
Какие у этого преимущества?
1) Полнота поиска выше. Как бы мы ни любили ANN, их полнота на практике выше 95%, но всё-таки не 100%. А тут мы считаем произведение со всеми объектами в базе.
2) Если обычно мы отбираем одну или несколько тысяч кандидатов из ANN, то здесь можно выдавать сразу 100'000. ANN с таким количеством работают уже не очень хорошо. Только вот что делать дальше с этими 100000? Мета предлагает на следующей стадии ранжировать их моделью потяжелее, mixture-of-logits, MoL (всё ещё двух-башенная, но в конце не произведение, а более сложная сеть), тоже на GPU. И уже результат этого выдавать в тяжелое ранжирование, как и раньше.
3) А ещё такой подход позволяет намного быстрее и чаще обновлять эмбеддинги документов. Их же просто нужно обновить в памяти GPU. В ANN-индексе же это сложнее, поэтому обычно так часто не обновляют.
Выглядит перспективно.
#arxiv_weekly (15.07.24 — 19.07.24)
Захожу сегодня на arxiv recent ir, вижу "DCNv3: Towards Next Generation Deep Cross Network for Click-Through Rate Prediction". Думаю "Ну, новая эпоха нейросетевого ранжирования началась...". Открываю, а там какой-то китайский Anhui University и ни слова про оригинальных авторов DCN, DCN-V2 из Google Deepmind =)
1. Вышел 66-страничный обзор рексистем от канадского Vector Institute: A Comprehensive Review of Recommender Systems: Transitioning from Theory to Practice. Foundational модели, нейросети, графы, РЛ, LLM, мультимодальность, etc
2. Очередная обзорная работа про LLM, в этот раз от Noah's Ark Lab, Huawei: All Roads Lead to Rome: Unveiling the Trajectory of Recommender Systems Across the LLM Era. Утверждают, что развитие рекомендательных LLM происходило по двум разным развилкам, но всё в итоге сошлось в одну область (см. картинку).
3. Статья про преранжирование (стадия между генерацией кандидатов и ранжированием) от Credit Karma. Многовекторные представления пользователей и айтемов, сэмплирование негативов со всех стадий рексистемы, дистилляция и хитрые ранжирующие лоссы в статье RankTower: A Synergistic Framework for Enhancing Two-Tower Pre-Ranking Model.
4. Deep Bag-of-Words Model: An Efficient and Interpretable Relevance Architecture for Chinese E-Commerce от Alibaba Group: обучаемый мешок слов. Вместо "плотного" векторного представления для айтемов/запросов, выучивают широкий эмбеддинг (размера словаря), координаты в котором транслируются на веса слов.
SIGIR 2024.
Бегло глянул опубликованный пару дней назад SIGIR 2024 Proceedings. Смотрел только пейперы от индустрии (не от университетов). Не густо:
1. Новая статья про скейлинг в рекомендашках от Mercado Libre Inc.: Scaling Sequential Recommendation Models with Transformers. Эксперименты ставят на амазоновских датасетах, и опять leave-one-out схема эвала. На картине изображена моя реакция :)
2. Была некая панельная дискуссия от eBay и Spotify про то, достаточно ли нам эмбеддингов в рекомендашках и поиске: Are Embeddings Enough? SIRIP Panel on the Future of Embeddings in Industry IR Systems. Вопрос хороший, интересно к чему пришли =)
3. Snapchat еще на SIGIR 2023 рассказали как используют графовые нейросетки для отбора кандидатов (Embedding Based Retrieval in Friend Recommendation), а здесь решили рассказать как простым советским query expansion смогли улучшить эту же технологию. На первый взгляд кажется, что переизобрели item-based коллаборативную фильтрацию. Статья Improving Embedding-Based Retrieval in Friend Recommendation with ANN Query Expansion.
4. JD.com подали сразу три шортпейпера: раз, два, три. Открыл одну из статей, увидел в абстракте "We introduce a Views User Interest Extractor Layer, Views Feature Generator Layer, Global Label Space Multi-Task Layer", закрыл.
5. Что-то от Google Research и YouTube про a/b тесты (избавление от них?) для улучшения онбординга в YouTube Music: Minimizing Live Experiments in Recommender Systems: User Simulation to Evaluate Preference Elicitation Policies. Судя по всему, учат симуляции пользователя.
6. Data Sciences, Target Corporation (крупный американский еком) применяют процесс Хоукса для предсказания повторных покупок в статье SLH-BIA: Short-Long Hawkes Process for Buy It Again Recommendations at Scale. Если мне не изменяет память, ребята из Т-банка в своей работе Time-Aware Item Weighting for the Next Basket Recommendations тоже процесс Хоукса применяли, но только для предсказания следующей корзины целиком.
7. В Visa Research экспериментируют с графовым трансформером: Masked Graph Transformer for Large-Scale Recommendation, когда мы целиком весь граф запихиваем в аттеншн. Делают этот самый аттеншн линейным; но это все заводится только на маленьких публичных датасетах, не web-scale :(
8. В Amazon рассказали как адаптировали генеративный трансформер для исправления ошибок в поиске к data drift: Striking the Right Chord: A Comprehensive Approach to Amazon Music Search Spell Correction. Используют RL?
9. Ребята из СПБГУ, ПОМИ РАН и Сберовской AI лабы в пейпере Neural Click Models for Recommender Systems адаптируют кликовые модели к рекомендациям.
Если вам понравились какие-то статьи из SIGIR 2024 Proceedings, про которые я не написал, — дайте знать про них в комментариях!
UPD:
10. What Matters in a Measure? A Perspective from Large-Scale Search Evaluation от Microsoft и Amazon - рассуждают про метрики для поиска.
11. От Kuaishou: пользователи устают от похожего контента (тык) и про моделирование переходов между поиском и рекомендациями (тык).
12. Интеграция рекламы в рекомендательную ленту от Meituan в статье Deep Automated Mechanism Design for Integrating Ad Auctionand Allocation in Feed.
#arxiv_weekly (10.06.24 — 14.06.24)
В этот раз чуть более кратко чем обычно, но, надеюсь, все равно полезно. Итак, новинки за неделю:
1. Async Learned User Embeddings for Ads Delivery Optimization от Meta Platforms: продолжают продвигать асинхронные эмбеддинги пользователей; получают эмбеддинги с помощью трансформера над гетерогенной историей пользователя. Используют для кандидатогенерации, через u2u вытаскивают кликнутую рекламу других пользователей. Как учат трансформер — не рассказывают.
2. Measuring Fairness in Large-Scale Recommendation Systems with Missing Labels от TikTok Inc: исследуют fairness метрики (utility-based, creator-side/item-side group fairness) с использованием случайного трафика.
3. Survey for Landing Generative AI in Social and E-commerce Recsys – the Industry Perspectives: обзор с говорящим за себя названием от разношерстного коллектива авторов из Linkedin, Amazon, Tiktok, Microsoft.
4. Сразу три новых статьи от Kuaishou: про Generative Flow Networks для моделирования ретеншна [1], про калиброванное ранжирование [2] и про оптимизацию времени посылки нотификаций [3].
5. Counteracting Duration Bias in Video Recommendation via Counterfactual Watch Time от Huawei: продолжают борьбу с duration bias.
6. ElasticRec: A Microservice-based Model Serving Architecture Enabling Elastic Resource Scaling for Recommendation Models от KAIST: предлагают свою микросервисную архитектуру для инференса рекомендаций. Dense (MLP) и sparse (эмбеды) части рексистемы в разных шардах, sparse шарды делятся на горячие и холодные, etc.
7. Negative Feedback for Music Personalization от SiriusXM Radio: "The training architecture is a hybrid of SASRec and BERT4Rec" — мораль думайте сами :)
8. Matryoshka Representation Learning for Recommendation от Hong Kong Baptist University: применили матрешку к рекомендациям.
Anna Karenina Strikes Again: Pre-Trained LLM Embeddings May Favor High-Performing Learners — победитель номинации "тайтл недели" :)
#arxiv_weekly (03.06.24 — 07.06.24)
Решил тряхнуть стариной и сделать дайджест за неделю :) Пока что по личным причинам все еще не смогу заниматься этим регулярно, но, надеюсь, в какой-то момент получится вернуть эту практику на постоянной основе.
Item-Language Model for Conversational Recommendation от Google Research. Тюнить LLM целиком под рекомендательную задачу страшно, так как теряются ее изначальные способности и появляются privacy concerns, а без тюнинга возникает modality gap (качество плохое). Пробуют это побороть, обучив Q-Former энкодер для айтемов, который используется вместе с зафриженной LLM.
Auto-Encoding or Auto-Regression? A Reality Check on Causality of Self-Attention-Based Sequential Recommenders от University of California (в авторах Julian McAuley). Исследуют, что лучше для sequential рекомендаций: auto-encoding (e.g. BERT4Rec) или auto-regression (e.g. SASRec). Используют leave-one-out схему эвала :(
System-2 Recommenders. Disentangling Utility and Engagement in Recommendation Systems via Temporal от FAIR (Meta). Декомпозируют эффект от рекомендаций на краткосрочный (влияние на текущую сессию) и долгосрочный (на будущие сессии). Моделируют ретеншн с помощью процесса Хоукса. Выглядит очень любопытно!
Large Language Models as Recommender Systems: A Study of Popularity Bias от Amazon Music и AWS. Подвержены ли LLM рекомендательному popularity bias'у? Придумывают свою метрику, чтобы это оценить. Делают по ней вывод, что LLM'ки от этого страдают меньше коллаборативных алгоритмов (но и качество у них так себе, судя по статье).
A Bi-metric Framework for Fast Similarity Search от MIT. Пусть у нас есть очень хорошая метрика близости для ANN, но ее тяжело считать. И есть какая-то прокси метрика, которая хуже по качеству, но проще считается. Предлагают алгоритм, который использует сильные стороны обоих метрик.
И чуть более коротко:
On Overcoming Miscalibrated Conversational Priors in LLM-based Chatbots от Microsoft (в авторах есть Tobias Schnabel). Утверждают, что LLM плохо рекомендует на "unspecified" запросах (начинает что-то выдумывать), и из-за особенностей разметки плохо умеет доуточнять интенты в рамках многошагового диалога. Пытаются это побороть.
Появился обзор A Survey of Generative Information Retrieval от National Taiwan University.
Новая модификация Decision Transformer'а от Data 61, см. Maximum-Entropy Regularized Decision Transformer with Reward Relabelling for Dynamic Recommendation.
Две статьи от Walmart: Session Context Embedding for Intent Understanding in Product Search, в которой авторы исследуют насколько полезен контекст (история пользователя) для задачи определения интента пользователя по поисковому запросу в екоме; и Large Language Models for Relevance Judgment in Product Search про то, как лучше затюнить LLM под задачу релевантности в еком поиске.
И есть некая статья от Alibaba под названием Robust Interaction-based Relevance Modeling for Online E-Commerce and LLM-based Retrieval, в которой они тоже что-то делают с релевантностью.
What’s on Google's Deepmind? (RecSys статьи за ~последний год).
HyperFormer: Learning Expressive Sparse Feature Representations via Hypergraph Transformer. Улучшают качество на тяжелом хвосте признаков с помощью гиперграфа, в котором вершины — это объекты, а гиперребра — значения признаков. Делают message passing в два этапа (от признаков к объектам и vice versa).
Unified Embedding: Battle-Tested Feature Representations for Web-Scale ML Systems. Используют единую матрицу эмбеддингов для всех признаков, для каждого признака используется несколько лукапов по хэшу (с коллизиями).
Hierarchical Reinforcement Learning for Modeling User Novelty-Seeking Intent in Recommender Systems. С помощью RL оценивают потребность пользователя в новизне и разнообразии. Используют DDPG и DQN (дальше было страшно читать, не стал).
Better Generalization with Semantic IDs: A case study in Ranking for Recommendations. У холодных айтемов плохие обучаемые эмбеды, а контентные эмбеды делать затратно (дорого хранить). Обучают с помощью RQ-VAE "иерархические" семантические айдишники по контенту, которые затем считают для всех (и холодных тоже) айтемов.
Density Weighting for Multi-Interest Personalized Recommendation. Хотят несколько векторов пользователя, но все векторы пользователя забиваются популярными интересами/айтемами. Используют хитрую двухэтапную процедуру обучения. Вводят обучаемые векторы глобальных интересов и делают "параметрический" аттеншн.
Improving Training Stability for Multitask Ranking Models in Recommender Systems. Борятся с нестабильностью обучения больших нейросетевых ранжирующих моделей с помощью своего хитрого клиппинга поверх Adagrad'а.
Fresh Content Needs More Attention: Multi-funnel Fresh Content Recommendation. Строят отдельный стек рекомендаций для нового и long-tail контента (с уклоном в content-based модели), дают ему один слот в выдаче.
Efficient Data Representation Learning in Google-scale Systems. Хвалятся, что unified эмбеддинги и DCN-v2 используют по всему гуглу (>50 моделей).
Online Matching: A Real-time Bandit System for Large-scale Recommendations. Используют контекстуальных линейных бандитов, упрощают их с помощью кластеризации пользователей.
Multitask Ranking System for Immersive Feed and No More Clicks: A Case Study of Short-Form Video Recommendation. Моделируют trailing bias в рекомендациях коротких роликов. Перевзвешивают лоссы c помощью мета лернинга; регуляризуют MoE экспертов, чтобы меньше коррелировали.
Hiformer: Heterogeneous Feature Interactions Learning with Transformers for Recommender Systems. Модифицируют аттеншн для нейросетевого ранжирования, чтобы учитывал гетерогенную природу признаков.
Large Language Models as Data Augmenters for Cold-Start Item Recommendation. С помощью LLM генерят данные для холодных айтемов и тюнят на них рекомендательную модель.
Long-Term Value of Exploration: Measurements, Findings and Algorithms. Исследуют как в A/B замерять эффект от эксплорейшна (делят выборки не только по юзерам, но и по айтемам), используют NeuralLinear бандитов для ранжирования.
Aligning Large Language Models with Recommendation Knowledge. Тюнят LLM на Masked Item Modeling и BPR в текстовом формате.
Cluster Anchor Regularization to Alleviate Popularity Bias in Recommender Systems. Делают иерархическую кластеризацию content-based эмбедов айтемов, добавляют на ее основе регуляризацию для сближания обучаемых векторов head/tail айтемов.
Diversifying by Intent in Recommender Systems. Предсказывают намерения пользователя (intent'ы), используют формулу полной вероятности. Каждый следующий айтем выбирают в предположении, что ранее выбранные интенты не подошли.
LLMs for User Interest Exploration: A Hybrid Approach. С помощью LLM предсказывают верхнеуровневые интересы, далее рекомендательной моделью ищут среди айтемов из этого интереса лучшие.
Много коллабятся с Youtube'ом; фокус на короткие видео (shorts). Киворды: long-tail, матрицы эмбедов, новизна, разнообразие, эксплорейшн, LLM, ранжирование, дебаясинг, RL.
Какая статья вам больше понравилась? Дайте знать в комментариях :)
Data Fest 2024, часть 2.
Видеозапись выступления — https://youtu.be/PvZuTUnZa2Q?t=14345 (пока вроде бы доступна)
Что обсуждали за кулисами:
* двухбашенные модели — плохие кандидатогенераторы
* будущее за LLM'ками?
* является ли человек перемножением матриц?
* кросс-домен рекомендации
* как делать ресерч и как не делать
* рекомендации музыки
* существует ли пространство айтемов вне моделей и Виттгенштейна (Олег в комментариях напомнил)
Спасибо всем, кто подходил со словами что читает канал. Мне это всегда очень приятно =)
Презентацию приложу в комментариях к посту.
Чем занимается наша R&D команда.
С годами задачи меняются: сначала был фокус на развитие одной R&D технологии (трансформерной персонализации), затем на ее распространение по Яндексу, а сейчас мы с командой занимаемся R&D для рекомендаций в целом, не ограничивая себя одной конкретной технологией.
На что декомпозируется работа:
1. Поиск новых технологий — постоянное изучение arxiv'а, конференций, воркшопов, инженерных блогов. Об этом я писал чуть подробней в посте Про чтение статей (для R&D). Потребность в R&D, как правило, драйвится с двух сторон: либо мы сами "приносим" новые технологии для улучшения рекомендаций в продуктах; либо продукты приходят к нам со своими проблемами. Для нас первый сценарий реализуется чаще, поэтому поиск новых технологий — очень важная часть работы.
2. Экспериментальная деятельность, прототипирование — выдвигаем и проверяем различные гипотезы, большая часть из которых выглядит как "если сделаем Х, улучшим базовое качество рекомендаций на Y". Довольно неплохое мерило успешности R&D команды, помимо прямого влияния на бизнес-метрики — это количество выдвинутых / проверенных / успешных гипотез, эдакая "пропускная способность" в гипотезах. При этом, чтобы было много успешных гипотез, нужна хорошая ресерчевская 'интуиция'. Чтобы выработать интуицию, нужна хорошая теоретическая база и опыт (как положительный, так и отрицательный) — про это упоминал в посте "Про ML соревнования".
3. Поддержка и развитие R&D инструментов:
* фреймворк для обучения нейросетей (он же трейн луп) - самая важная компонента, больше всего влияющая на количество проверяемых гипотез. Предела совершенству здесь нет: как лучше сделать конфигурирование обучения, как должен выглядеть конструктор модели, какие нужны коллбеки, что нужно логировать. Хорошая утилизация ресурсов тоже очень важна (не упираться в чтение по сети и в cpu, использовать оптимальные реализации слоев).
* работа с данными — зачастую самые профитные гипотезы связаны именно с данными. Подать что-то новое в модель, изменить представление входных данных, модифицировать целевую задачу, придумать новую процедуру предобучения. При этом нам доступны по-настоящему большие данные, триллионы пользовательских событий. Чтобы не состариться при проверке очередной гипотезы, требующей "варки" нового датасета, нужен удобный, гибкий и быстрый фреймворк. Дата инженеров у нас нет — нам важно уметь самим залезать в обработку данных и что-то быстро в ней менять. Да и инструменты для работы с данными в Яндексе настолько хороши (YQL, YT), что даже ресерчеры вполне способны их освоить :)
* инструменты для внедрений — "быстрые применялки" моделей, регулярные процессы дообучения, сервисы для применения моделей, оффлайн насчеты векторов, индексы для кандидатогенерации, etc. Здесь частично мы справляемся сами, частично нам помогают другие команды. Некоторые инструменты мейнтейнят и развивают выделенные команды. Конечная цель у нас — это всегда real-world impact, поэтому с этим всем мы тоже много сталкиваемся.
* командные процессы — совершенствуем их от полугодия к полугодию. На мой biased взгляд, выстраивание процессов для эффективного R&D гораздо сложнее, чем в обычной разработке. Вопросов много: сколько людей должно заниматься одним проектом, как лучше проводить планирования, сколько проектов должно быть у каждого человека, как логировать эксперименты, как организовать семинары по чтению статей, etc.
4. Внедрения — мы постоянно общаемся с продуктовыми командами, рассказываем про новые технологии и наши планы, договариваемся про совместные внедрения, делаем общие для экосистемы Яндекса инструменты. Зачастую от сервисов узнаем много нового, вырабатываем новые интуиции, а потом еще и "кросс-опыляем" сервисы, рассказывая одному сервису про фишки другого :) Ну и, конечно, очень приятно видеть импакт на продукты, которые использует много людей (Музыка, Кинопоиск, Маркет, Алиса, Поиск, etc)
К чему я это все: у меня есть вакансия; если прочитали и чувствуете, что душа к нам лежит — приходите ко мне в личку @kkhrylchenko :)
P.S: приступаю к созданию видео про Pinterest 🙂
🎉 Делимся предварительной программой ML Party!
Вот первые темы выступлений:
🔘 Кирилл Хрыльченко, руководитель группы исследования перспективных рекомендательных технологий в Яндексе. Расскажет, как и почему градиентный бустинг для ранжирования проигрывает нейросетевым моделям.
🔘 Никита Рыжиков, руководитель службы технологий голосового ввода в Яндексе. Поделится историей о том, как мы переносили Алису с телефона на колонку и какие проблемы решали в процессе.
🔘 Александр Воронцов, руководитель группы машинного обучения рекламной платформы в Яндекс Маркете. Объяснит, как в Маркете запускали автогенерацию рекламных баннеров.
📎 ML Party пройдёт 14 марта в Москве в офлайн- и онлайн-формате. Зарегистрироваться можно здесь.
Подписывайтесь:
💬 @Yandex4ML
📹 YandexforML">@YandexforML
NLP образца 2020-го года.
В далеком 2017-м я начинал познавать дивный нейросетевой мир с области обработки естественного языка. В те времена эмбеддинги слов формировались с помощью предобученных word2vec / glove / fasttext, а в качестве энкодера использовались RNN. Механизм внимания вне NMT почти не использовали (см., например, HAN). Были еще сверточные сети над текстом, как раз кодил такие для соревнования Toxic Comment Classification Challenge.
С этого соревнования, собственно, у меня и остались самые яркие воспоминания про то время. Топ-1 kaggle kernel там был от основателя fastai Jeremy Howard'а. Медальку за соревнование он так и не получил (у меня было серебро).
NLP тогда воспринималось по-другому. Наверно также, как я сейчас воспринимаю рекомендательные системы. Область бурно развивалась, только-только появились трансформеры, было очень интересно вчитываться в статьи. Сам факт, что такие задачи как sentiment analysis, NER, NMT удавалось решать нейросетями — был большим вдохновением.
Успехи в компьютерном зрении мне были не так интересны; на то время могу выделить разве что image captioning и style transfer. Я тогда еще иногда встречался с доуниверситетскими друзьями, и объяснял как работает word2vec и как в машинном обучении мы составляем признаковые пространства для объектов. Это казалось чем-то очень интересным =)
К чему я это все: в те годы у меня не было каких-либо "умных" систем для хранения статей. Как вчерашний студент, я хранил гигантские стопки бумажных заметок. Первая попытка это преодолеть произошла как раз перед выходом в Яндекс, когда я еще самоидентифицировался как NLP'шник и не занимался рексисом. Я сконструировал эдакий граф цитирования важных на мой взгляд NLP/DL статей с временной шкалой.
До сих пор иногда мне пишут коллеги с просьбой скинуть "ту самую NLP пдфку со статьями". Делюсь ею и с вами (см. первый комментарий) :)
У кого лучшие рекомендательные системы в России? Ответ кажется очевидным.
Не будем тянуть. Сегодня наш гость, Кирилл Хрыльченко – лид команды R&D рекомендаций в Яндексе и автор канала @inforetriever, рассказал о том, как работают SOTA персонализации рекомендаций на примере Яндекса.
#arxiv_weekly (15.01.24 — 19.01.24)
1. Один из недостатков ранжирования — при формировании выдачи не учитывается взаимное влияние айтемов; скоры считаются поточечно (pointwise). Чтобы это исправить, добавляется стадия переранжирования, основная проблема которой — вычислительная сложность. Кроме того, сама постановка задачи переранжирования довольна амбициозна — в идеале оно должно заменить большую часть бизнесовой логики постпроцессинга ранжирования, самостоятельно обеспечивая нужные сервису качества выдачи, типа разнообразия, свежести, релевантности. В LinkedIn сделали подход к снаряду и предложили свой жадный последовательный алгоритм с линейной сложностью (еще и с RL сравнились) в статье MultiSlot ReRanker: A Generic Model-based Re-Ranking Framework in Recommendation Systems.
2. Рекомендательные системы многостадийны: кандген, преранжирование, ранжирование, переранжирование, etc. Одна из проблем применения РЛ к рекомендашкам — чаще всего пытаются обучить одного агента, в предположении что он работает с полным корпусом айтемов и формирует выдачу для пользователя. В то время как в реальности агент если и будет применяться, то только в составе одной из стадий. Инженеры из Kuaishou пробуют обучить сразу несколько агентов (MARL — multi-agent RL), по одному на каждую стадию, в статье UNEX-RL: Reinforcing Long-Term Rewards in Multi-Stage Recommender Systems with UNidirectional EXecution.
3. В прошлых дайджестах мы уже обсуждали проблематику формирования таргетов из просмотров видеороликов. Распределение длительности просмотров очень сильно скошено в сторону коротких значений. Стандартный подход в индустрии — побить значения на бакеты (<30 секунд, 30<x<60 секунд, etc; чаще это делают по квантилям) и использовать ординальную регрессию. Инженеры из Kuaishou исследуют как лучше формировать бакеты: придумали довольно сложную систему, в которой есть классификаторы (для бакетов) и "рестораторы", восстанавливающие исходные длительности просмотров. Предлагается подбирать бакеты так, чтобы минимизировать ошибки классификации и "ресторации". Статья CREAD: A Classification-Restoration Framework with Error Adaptive Discretization for Watch Time Prediction in Video Recommender Systems.
4. В Ant Group (Alibaba, Alipay, etc) построили граф данных для рекламных баннеров (из метаданных баннеров и взаимодействий с пользователями и страницами) и обучили на нем вариационный авто-кодировщик. Репортят большие приросты по CTR (особенно для холодного старта) от использования полученных эмбеддингов баннеров в рекламных моделях. Статья GACE: Learning Graph-Based Cross-Page Ads Embedding For Click-Through Rate Prediction.
5. Uber выложили очень простенький pre-print Handling Large-scale Cardinality in building recommendation systems, в котором описывают сетку для, кажется, ранжирования в Uber Eats. Модель очень напоминает 2016-й год :(
6. В Spotify исследуют сценарий, в котором пользователи обмениваются контентом. "Получатель" более склонен провзаимодействовать с контентом, если (1) музыкальный вкус совпадает с "отправителем", (2) они близки и (3) артист, которым поделились, популярен среди круга общения "получателя". Подробности в Link Me Baby One More Time: Social Music Discovery on Spotify.
7. Вышло две статьи про аудио-эмбеддинги от SiriusXM-Pandora: (1) On the Effect of Data-Augmentation on Local Embedding Properties in the Contrastive Learning of Music Audio Representations и (2) Similar but Faster: Manipulation of Tempo in Music Audio Embeddings for Tempo Prediction and Search.
8. Не так давно появился новый сценарий рекомендашек под названием trigger-induced recommendations, в котором рекомендации генерятся в ответ на взаимодействие с айтемом, e.g. при клике на товар появляется плашка с рекомендациями. Утверждается, что это очень важный сценарий для еком платформ типа Алибабы и Амазона. Инженеры из Alibaba предлагают очень мудреную нейросетку в статье Deep Evolutional Instant Interest Network for CTR Prediction in Trigger-Induced Recommendation.
Нейросетевой мир победил (в ранжировании).
В каждой рекомендательной системе есть алгоритм, который определяет финальную выдачу. Иногда он работает сразу над всем каталогом айтемов, т.е. full-scan, но чаще всего ему на вход приходит уже отфильтрованное множество из сотен-тысяч кандидатов.
В составе этого алгоритма могут быть различные бизнес-правила и эвристики. Например, не показывать на соседних позициях в выдаче айтемы из одной категории; или что-то посложнее, типа DPP или MMR. Логика бывает разная: буст разнообразия, новизны, тяжелого хвоста, замешивание разных источников (e.g. органики и рекламы). Сервисы и поверхности (e.g. ленты/фиды, рекомендации похожих айтемов, поиск) довольно сильно разнятся по набору работающих эвристик.
А вот составляющая ранжирования, формирующая для пар (пользователь, айтем) скоры предпочтения, всегда очень похожа:
1. Информация, идущая на вход модели, декомпозируется на пользовательские (user), айтемные (item) и совместные (user-item) признаки. Используется раннее связывание информации про кандидата и пользователя, т.е. в рамках модели моделируется взаимодействие между признаками пользователей и айтемов. Термин не совсем строгий, и приобретает смысл в первую очередь в контексте нейросетей: ему противопоставляются двухбашенные модели, в которых информация про пользователя и айтем анализируется раздельно. Операция скалярного произведения над векторами айтема и пользователя называется поздним связыванием.
2. Для обучения используются в первую очередь объекты, которые прошли через всю воронку рексистемы, т.е. были представлены пользователю. Чаще всего их называют impressions; например, на рексисе есть воркшоп Workshop on Learning and Evaluating Recommendations with Impressions. По сути, все эти объекты уже довольно хороши для пользователя, и зачастую отсутствие положительного фидбека объясняется вспомогательными эффектами, e.g. position bias (пользователь уже удовлетворил свои нужды объектами с более ранних позиций).
3. Модель учится выдавать вероятность положительного события / релевантности (pointwise) или явно ранжировать кандидатов (pairwise, listwise). Либо делает и то, и другое, e.g. Regression Compatible Listwise Objectives for Calibrated Ranking with Binary Relevance от Google.
Можно выделить два основных класса архитектур, использующихся в больших сервисах:
1. Градиентный бустинг (J. Friedman) и его комбинации с линейными моделями (e.g. Practical Lessons from Predicting Clicks on Ads at Facebook). Он прожевывает до десятков миллионов сэмплов (e.g. пар для ранжирования), очень понятным образом работает с признаками (делает по ним сплиты в решающих деревьях), позволяет из коробки интерпретировать важность признаков (e.g. через количество сплитов по признаку), обладает хорошей обобщающей способностью, не сильно страдает от объектов-выбросов, заводится на небольших датасетах и быстро работает на CPU. По сути, это венец эволюции классического ML в контексте ранжирования.
2. Нейросетевое ранжирование. В целом, линейные модели — тоже нейросети. Но обычно подразумевается что-то с более сложной нейросетевой архитектурой. Категориальные признаки превращаются в эмбеддинги, вещественные фичи нормализуются и, зачастую, тоже превращаются в эмбеддинги. Затем следует энное количество различных нейросетевых слоев, явно и неявно моделирующих взаимодействие между признаками. В конце нейросети может быть как предсказание какой-то одной характеристики, так и многоголовая архитектура, предсказывающая одновременно разные типы событий (e.g. клик, лайк, покупку, дизлайк).
Большая часть компаний в своих крупных продуктах использует нейросетевое ранжирование (e.g. YouTube, Pinterest, Airbnb, X (Twitter), Meta, Alibaba). Развитие такого же подхода внутри Яндекса — это одна из задач, которой мы с командой занимаемся (кроме графовых моделей, о которых я уже рассказывал).
В будущих постах обязательно покроем, почему этим стоит заниматься и за счет чего нейросети превосходят градиентный бустинг в ранжировании. А пока, можете почитать посты про нейросетевое ранжирование в Pinterest и YouTube :)