attention deficit
202 subscribers
8 photos
1 file
17 links
тема этого сезона: ads recommendation и recsys в целом

ситуативные разборы статей, случайные мемы и нерегулярный репост популярных каналов

by @ploshkin
Download Telegram
📄 Video-to-Video Synthesis [NeurIPS 2018]

Это основная статья про видео-дипфейки. В ней впервые предложен фреймворк для conditional video generation, когда для каждого кадра есть семантическая информация, например, карта сегментации, по которой генерируется реалистичное видео

Подробнее тут: https://teletype.in/@ploshkin/vid2vid
Слишком объёмный разбор получился, больше времени потратил на публикацию, чем на сам разбор. Причём в разы)

Успокаиваю себя тем, что это реально очень нужная мне статья, и ещё не раз пригодится. Плюс дальше будет несколько опирающихся на неё статей

В общем, дальше посты будут поменьше
📄 Few-shot Video-to-Video Synthesis [NeurIPS 2019]

Статья-продолжение vid2vid. Здесь предлагается решение задачи «как сгенерировать видео из домена, которого не было в обучении». Главная идея — модуль, который на основе картинок-примеров генерирует веса для другого модуля — генерации картинок

Пересказ тут: https://teletype.in/@ploshkin/few-shot-vid2vid
📄 World-consistent Video-to-Video Synthesis [ECCV 2020]

Достигнута глобальная консистентность синтезируемого видео: теперь, если объект появляется в видео повторно, гарантируется, что его внешний вид будет таким же, как и раньше.

Для этого при генерации кадр за кадром строится 3D point-cloud сцены, чтобы «помнить» состояние всех точек. Для нового кадра сцена проектируется на плоскость камеры, и получается guidance image, который служит ориентиром для цветов в новом кадре

Детали: https://teletype.in/@ploshkin/world-consistent-vid2vid
📄 pix2pixHD [CVPR 2018]

Развитие статьи pix2pix для conditional-генерации реалистичных картинок высокого разрешения. Эта работа послужила фундаментом и proof-of-concept для vid2vid-подходов.

Здесь предложены разные работающие хаки для стабилизации обучения GAN’ов:
* coarse-to-fine генератор
* разномасштабные дискриминаторы
* feature-matching лосс
* использование инстанс-сегментации

Помимо этого этого предложен способ, как на инференсе влиять на синтезируемый контент (например, как превратить асфальтовую дорогу в брусчатку)

Подробные хайлайты: https://teletype.in/@ploshkin/pix2pixhd
Вообще я понял, что погорячился с идеей разбирать по статье каждый день. На посты у меня уходит по 2–3 часа (уже не 6 как в первый раз), но они помогают хорошо структурировать информацию и лучше запомнить

Поэтому, чтобы не страдало погружение, подробность постов и я сам, я решил постить раз в 2 дня — типа день на чтение, и день на написание

Но челлендж был 1 день — 1 статья и так 30 дней, так что формально если я таки разберу 30 статей, условия будут выполнены 🤡🤡🤡
📄 SPADE [CVPR 2019]

Новый подход в conditional-генерации картинок: оказывается, карты сегментации нельзя пропускать через нормализацию — теряется пространственная информация. Поэтому авторы предложили выбросить энкодер и прокидывать семантику через adaptive-денормализацию, причём так, чтобы у каждого пикселя были свои параметры преобразования. А эти параметры вычислять с помощью небольших fully-conv сетей.

Но самое главное: теперь есть настоящая демка! Там можно в реалтайме нарисовать карту сегментации для пейзажа, а сетка сгенерирует картинку:
http://nvidia-research-mingyuliu.com/gaugan

Люблю, когда можно наглядно посмотреть результат, а не только черрипикнутые картинки в статье 🌚

Press F to see details: https://teletype.in/@ploshkin/spade
📄 UNIT: Unsupervised Image-to-Image Translation Networks [NeurIPS 2017]

Продолжаем разбирать статьи из репозитория imaginaire

В этой работе решается общая задача image-to-image translation между двумя доменами. Поскольку сбор обучающей выборки с разметкой может быть очень дорогим (дневная / ночная съёмка) или вообще невозможным (превращение пород собак), на помощь приходит unsupervised-обучение. Имея два независимых множества картинок из разных доменов хочется смоделировать функцию, способную переводить один домен в другой не нарушая семантику.

Для этого часто используется условие cycle-consistency (см. CycleGAN), но авторы пошли дальше и предложили shared-latent space, когда для двух соответствующих картинок латентные коды в некотором пространстве совпадают.

Что из этого вышло, можно посмотреть по ссылке: https://teletype.in/@ploshkin/unit
Небольшой тизер 🐆➡️🐈
📄 MUNIT: Multimodal Unsupervised Image-to-Image Translation [ECCV 2018]

Авторы работы добились мультимодальной генерации картинок между двумя доменами. Теперь не нужно обучать модель для каждой пары пород собак, т.к. порода — это просто стиль собаки 🐶

Для этого общее латентное пространство разделяется на 2: content и style, причём общим остаётся только content-пространство, а style-пространство своё у каждого домена. Сэмплируя стиль при генерации, авторы получают разные результаты.

Также в работе есть несколько теоретических результатов, наиболее важный из которых — доказательство, что cycle-consistency приводит к дельта-функциям распределения латентных кодов и как следствие к унимодальным результатам генерации.

10 эмбеддингов стиля из 10: https://teletype.in/@ploshkin/munit
Среда объявляется днём мемов в этом канале
attention deficit pinned «Среда объявляется днём мемов в этом канале»
Жду такое же письмо
У меня тут произошли разные случайные и не очень события, поэтому пришлось пару недель почилить без статей

Хайлайтом было то, что меня попросили выступить referee для кандидата в американский стартап. Интересный опыт, теперь я чуть лучше понимаю, что спрашивают на таких интервью, как надо к ним готовиться и кого самому выбирать в качестве referee. Стресс от общения тоже был, но я постарался и надеюсь, там всё сложится 🌚

А теперь к статьям 🌝
📄 StyleGAN: A Style-Based Generator Architecture for Generative Adversarial Networks [CVPR 2019]

Из
разбора вы узнаете:
🥑 Почему StyleGAN не переносит стиль
🥑 Как развязать пространство признаков
🥑 Что кроется за скрещиванием стилей
🥑 Как измерить длину пути между картинками
🍆 Как правильно обрезать генератор и не пострадать

Читайте, уже можно: https://teletype.in/@ploshkin/stylegan
как говорил классик, хороший камбек должен быть тщательно подготовлен
Всем привет! Меня зовут Саша @ploshkin, а это мой канал ML-ной направленности: здесь ситуативные разборы статей, случайные мемы и нерегулярные репосты более популярных каналов

Я руковожу группой в R&D рекомендательных технологий Яндекса. Днём мы разрабатываем новые методы ранжирования рекламы, а в свободное время контрибьютим в опенсорс — в 2025, например, выложили Yambda

Но так было не всегда — до перехода в рексистемы я 5 лет занимался разным компьютерным зрением, а в универе копал в 3D- и 360-видео в видеогруппе МГУ

В этом сезоне у меня есть ощущение, что ad tech — очень интересная область. В ней сочетаются подходы из современных рексистем, теория аукционов, дизайн механизмов, высокие нагрузки и разные костыли, чтобы всё это работало. Я неплохо шарю в части рекомендательного стека и хочу разобраться в остальном

Помимо этого мне нравится recsys в целом, т.к. это одна из последних областей DL, в которой до сих пор нет единого подхода и накручивания бенчмарков через агентов и тулколлинг. В общем, по сравнению с NLP и CV здесь дикий запад — и это весело!

Поэтому в ближайшее время планирую тут писать про
• устройство рекламных сетей в целом
• математику аукционов
• новые подходы в ранжировании
• генеративные и end-to-end рексистемы
🔥722
attention deficit pinned «Всем привет! Меня зовут Саша @ploshkin, а это мой канал ML-ной направленности: здесь ситуативные разборы статей, случайные мемы и нерегулярные репосты более популярных каналов Я руковожу группой в R&D рекомендательных технологий Яндекса. Днём мы разрабатываем…»
Зачем нужны аукционы в рекламных сетях

Рекламы в интернете много, и это очень прибыльная область. Судя по фин. отчётам, у яндекса она составляет 30% годовой выручки, у гугла 70% и у меты почти 100%. Я даже слышал мысль, что общий объём трат на рекламу всегда занимает некоторую фиксированную долю от ВВП

Может показаться, что если вы умеете накидать двухбашенную модель и выучить распределение p(click|show), то дело останется за малым — привлечь рекламодателей, подключить площадки и начать откручивать баннеры, собирая при этом котлеты денег. Но всё немного сложнее

В реальности у интернет-рекламы есть 3 стороны, каждая из которых оптимизирует свою выгоду:
1. пользователь — в идеале сидит с адблоком, но если нет, то хочет релевантную рекламу, ведущую к покупке;
2. рекламодатель — хочет вложить фиксированный бюджет и получить за него максимум продаж;
3. площадка — максимизирует долгосрочный доход с учётом удержания пользователей и рекламодателей.

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

На этом рынке стороны имеют разную приватную информацию: рекламодатель знает, сколько для него стоит привлечение клиента, а рекламная сеть обладает данными о пользователях и умеет предсказывать p(click|show) = pCTR. Возникает задача: распределить дефицитный слот между рекламодателями при условии разной ценности для них

Для этого и появляется аукцион: каждый рекламодатель делает ставку, сколько он готов заплатить за то, чтобы его баннер увидел конкретный пользователь в конкретном контексте. При этом ставка должна отражать ценность привлечения клиента для его бизнеса, а как этого добиться — отдельная большая тема. В итоге ранжирование происходит по формуле:

eCPM = bid × pCTR × pCVR (× quality)

Она объединяет интересы обеих сторон рынка и отражает ценность для рекламодателя — в идеальном мире это буквально доход, который получает рекламодатель от 1000 показов (осторожно! тут неочевидный переход от расходов к доходам — об этом поговорим в посте про дизайн аукционов). А в множитель quality (в некоторых системах это аддитивная добавка) зашиты все возможные костыли, которые в маркетинговых материалах можно обозвать "качеством баннера"

Самая ML-ная часть находится в компоненте pCTR × pCVR — здесь работает полноценный рекомендательный стек с кандидатогенерацией, сложными нейросетевыми фичами и несколькими стадиями ранжирования. В некоторых компаниях научились заменять его на генеративную end-to-end систему и сверху наворачивать стадию алайнмента — про это обязательно будет серия постов

Важно понимать, что прод устроен значительно сложнее — система умеет обрабатывать разные варианты оплаты (за показы, клики или конверсии), делать ставки за рекламодателя в зависимости от скорости трат, проклеивать конверсии с сайтов рекламодателей и много чего ещё

———
CTR = click-through rate
CVR = conversion rate
CPM = cost per mille
eCPM = effective CPM
🔥61