Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Опыт запуска Discover для 90 млн пользователей: пять рекомендаций ML-разработчикам

5d08ba0cd07942f2ddbf82e5b21ba5e7?s=47 FunCorp
February 11, 2019

Опыт запуска Discover для 90 млн пользователей: пять рекомендаций ML-разработчикам

«Опыт запуска Discover для 90 млн пользователей: пять рекомендаций ML-разработчикам», Андрей Законов, vk.com

О докладе

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

5d08ba0cd07942f2ddbf82e5b21ba5e7?s=128

FunCorp

February 11, 2019
Tweet

Transcript

  1. Опыт запуска Discover для 90 млн пользователей: пять рекомендаций ML-разработчикам

    Андрей Законов директор по росту и исследованиям, Команда ВКонтакте
  2. Специфика ML задач: сложно оценивать сроки и прогнозировать качество 


    Как эффективно подходить к таким задачам?
  3. 1. Максимально уточняем какую именно задачу решаем

  4. Задача: выбрать самые интересные посты для пользователя

  5. Задача: выбрать самые интересные посты для пользователя Лента новостей: выбрать

    лучшее среди нескольких тысяч постов Х месяцев
 Y серверов Рекомендации: выбрать лучшее среди десятков миллионов постов 3*Х месяцев
 5*Y серверов
  6. 1. Персонализированные рекомендации контента Заранее думаем про связанные задачи

  7. 1. Персонализированные рекомендации контента 2. Анализ медиаконтента 3. Определение спама

    / треш контента 4. Накрутки и попытки обмануть алгоритм 5. Smart Crop для фотографий 6. Определение уникальности контента 7. … Заранее думаем про связанные задачи
  8. Уточняем: Какие выглядят входные данные и как часто меняются? Какую

    задачу пользователя решаем? Какая нагрузка? Какие требования по скорости работы? Что будет если ошибаемся (false positive, false negative)? Важна ли интерпретируемость? Какие продуктовые приоритеты? …
  9. Задача: распознавание текста

  10. Фотографии: мало текста, разный фон, слэнг и опечатки, десятки миллионов

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

  12. Проще: Найти среди нескольких сотен друзей Х месяцев
 Y серверов

    Сложнее: Найти среди нескольких сотен миллионов аккаунтов 3*Х месяцев
 10*Y серверов Задача: распознавание лиц на фотографиях
  13. Задача: распознавание лиц Время: 
 несколько секунд Требования к качеству:

    
 можно настроить на уровне продукта Время: важны миллисекунды Требования к качеству: очень высокие, нельзя допускать false positive
  14. Нужен ли ML?

  15. 2. Решение задачи состоит из многих этапов, причём общий результат

    определяется самым слабым звеном
  16. 1. Формулировка задачи и выбор метрики 2. Сбор данных и

    подготовка датасета 3. Обучение модели 4. Поддержка фичи в продакшн 5. Качество сбора метрик и оценка экспериментов Общий результат определяется самым слабым звеном
  17. 1. Формулировка задачи и выбор метрики 2. Сбор данных и

    подготовка датасета 3. Обучение модели 4. Поддержка фичи в продакшн 5. Качество сбора метрик и оценка экспериментов Общий результат определяется самым слабым звеном
  18. Предметная область и подготовка данных Ожидания + ML =

  19. Предметная область и подготовка данных Ожидания Реальность + ML =

    + ML =
  20. Предметная область и подготовка данных Ожидания Реальность + ML =

    + ML = Работает + ML = $
  21. Лайк != интересно

  22. Аватарка != лицо

  23. 3. Пока не запустишь – не узнаешь

  24. 1. Формулируем MVP и критерии для быстрого запуска в продакшн

    тест 2. Независимые тест группы, ротация пользователей, стат. значимость, … 3. Регламентируем способ подведения итогов и принятия решений 4. Заранее описываем ожидаемый результат и запоминаем полученный (обучаемся) Пока не запустишь – не узнаешь
  25. Ни дня без эксперимента

  26. Тестируем на проценте.
 Готовим критерии: - запуска эксперимента; - отката/отключения;

    - «фича не взлетела»; - выкатки на всех. Как запускаем? Алгоритм
  27. Тестируем на проценте.
 Готовим критерии: - запуска эксперимента; - отката/отключения;

    - «фича не взлетела»; - выкатки на всех. Как запускаем? Алгоритм Алгоритм + UI Дополнительно: - выбираем минимальную тестовую группу; - критерии увеличения тестовой группы - инфраструктура для
 управления экспериментом
  28. Тестируем на проценте.
 Готовим критерии: - запуска эксперимента; - отката/отключения;

    - «фича не взлетела»; - выкатки на всех. Как запускаем? Алгоритм Алгоритм + UI The point of no return Дополнительно: - выбираем минимальную тестовую группу; - критерии увеличения тестовой группы - инфраструктура для
 управления экспериментом Максимизируем количество проверяемых гипотез за единицу времени: - сразу запускаем с разными алгоритмами и тест группами; - заранее готовим список гипотез.
  29. 4. Полезно иметь план Б

  30. Идеальные персональные рекомендации План А План Б 1. Простые эвристики:

    топ по лайкам/ комментариям/времени 2. Трендовый контент в срезе соцдема, гео, … 3. Соц граф, второй круг друзей, … 4. Курируемый контент 5. … 6. …
  31. Требования к качеству можем настраивать на уровне продукта always on

    (нет выбора)
  32. Требования к качеству можем настраивать на уровне продукта opt-out (можно

    отключить) always on (нет выбора)
  33. Требования к качеству можем настраивать на уровне продукта opt-out (можно

    отключить) opt-in (можно включить) always on (нет выбора)
  34. Требования к качеству можем настраивать на уровне продукта opt-out (можно

    отключить) opt-in (можно включить) opt-in с выбором (можно выбрать) always on (нет выбора)
  35. 5. Инвестируем время в оценку результатов (влияния на продукт)

  36. 1. Среднее, медиана, перцентиль, распределение – не рассказывают насколько «счастливы»

    конкретные пользователи. 2. Гетерогенный эффект: 80% стало лучше, 20% стало хуже. Как заметить? 3. Инфлюенсеры, активные пользователи, новые пользователи – оцениваем отдельно. 4. Анализируем обращения в поддержку. Структурируем процесс. 5. Создаем комьюнити вокруг продукта и спрашиваем мнение пользователей. Смотрим не только на цифры и графики
  37. Позитивный пример: Больше обратной связи -> больше мотивации писать ->

    авторы создают больше постов -> больше интересного контента -> больше активности Негативный пример: Новый алгоритм учитывает обратную связь -> спустя некоторое время появляются «накрутки» лайков или комментариев -> плохие посты в ленте Отложенные эффекты: рекомендации контента
  38. Позитивный пример: Новый алгоритм подбора кандидатов -> начинаю лучше относиться

    к блоку рекомендаций друзей -> со временем активность растёт Негативный пример: Новый алгоритм подбора кандидатов -> в моменте больше заявок так как новые люди -> со временем работает хуже, чем старый Отложенные эффекты: рекомендации друзей
  39. 1. Регулярно возвращаемся к оценке запущенных фич. 2. Долго сохраняем

    тестовую группу с baseline вариантом. 3. Иногда возвращать старые варианты и оценивать эффект. 4. Ведем историю экспериментов. Как оценивать отложенные эффекты?
  40. Фичи с ML в продакшн — праздник, который всегда с

    тобой
  41. 1. Максимально уточняем какую именно задачу решаем
 2. Решение задачи

    состоит из многих этапов, причём общий результат определяется самым слабым звеном
 3. Пока не запустишь – не узнаешь
 4. Полезно иметь план Б
 5. Инвестируем время в оценку результатов Summary:
  42. Жизнь слишком коротка, чтобы делать то, что никому не нужно

  43. ВКонтакте с вами
 vk.com/andrewz