31 июля 2018
Почему мы видим во «ВКонтакте» то, что видим? Разработчики рассказывают об умной ленте и рекомендациях музыки и видео

В 2016 году во «ВКонтакте» заработала умная лента новостей, которая на основе предпочтений пользователя отбирает для него наиболее интересные записи. Сейчас ей пользуется больше 85 % пользователей. Новую ленту запустила команда роста и исследований, она же разработала алгоритмы для раздела «Рекомендации», сервисов «Прометей» и «Немезида».

По какому принципу соцсеть рекомендует пользователям музыку и тексты, как лента отбирает интересные посты и что будет, если пользователь начнет интересоваться суицидом и шутингами в школах? «Бумага» поговорила с директором роста и исследований «ВКонтакте» Андреем Законовым и руководителем команды CoreML Андреем Якушевым.

«Бумага»: Как во «ВКонтакте» появилась команда роста и исследований и над какими проектами она работала?

Андрей Законов: Команда начала формироваться около четырех лет назад. Одной из первых задач было создание системы продуктовой аналитики, чтобы мы понимали и изучали, что нужно пользователям. Потом задач стало больше, мы начали работать над рекомендациями, анализировать активность пользователей в ленте новостей. Затем запустили такой большой проект, как алгоритмическая лента. Следующей задачей стало создание раздела «Рекомендации». Постепенно параллельно с задачами росла и команда. Сейчас в ней 25 человек, мы работаем со стажерами и ищем новых ребят.

Б: Какие люди у вас работают? Важно быть талантливым разработчиком или иметь большой научный бэкграунд?

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

Андрей Якушев: Существует такая наука — data science, она описывает набор методов работы с данными. Но когда ты сталкиваешься с конкретной задачей, то не можешь знать заранее, какой из методов сработает: у каждого сервиса своя продуктовая задача и способ ее реализации. Кроме того, у пользователей каждого сайта свои привычки: где-то люди любят много комментировать, где-то репостить, где-то лайкать. Соответственно, для каждой из этих ситуаций нужен свой метод.

Кроме того, все методы работы, описанные в книжках, скорее всего, не сработают в своей базовой реализации. Их нужно комбинировать. Например, мы берем данные и смотрим простую закономерность: у скольких наших пользователей больше 100 друзей. Если у большинства пользователей больше 100 друзей, то у нас о них много данных и на них хорошо сработает один метод, если таких пользователей мало, нужен другой.

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

Б: Как всё это происходило на примере внедрения алгоритмической ленты?

З: Перед нами стоит задача — понять, какие записи пользователь считает интересными и важными, и показывать ему именно их. Мы знаем очень много о взаимодействии пользователей с записями: видим, какие он открывает в отдельном экране, какие комментирует, к каким возвращается, какие лайкает, какие репостит, с какого устройства и сколько времени тратит на запись и так далее. У нас очень много сигналов, по которым нужно определить, какие фотографии или тексты действительно интересны пользователю.

Для этого нужно научиться понимать, что вообще изображено на фотографии или написано в тексте. Если говорить о фотографиях, то, например, нужно различать фото людей, фото собак или пейзажи. И сегодня наши алгоритмы различают тысячи разных объектов на фотографиях.

Б: Если фотографии более-менее понятно, как можно поделить, то каким образом работать с текстом?

Я: Есть разные подходы. Один из самых простых: текст представляется в виде «мешка слов». То есть изначальный текст вы представляете в виде неупорядоченной последовательности слов, которые в нем встречаются. Таким образом, из любого текста вы получаете огромный вектор в многомерном пространстве. Затем, используя различные нейросети, мы преобразуем эту последовательность в очень компактный числовой вектор. Он абсолютно непонятен для человека, но неявно хранит семантику текста. Например, если взять вектор слова «король», вычесть вектор слова «мужчина» и добавить вектор слова «женщина», то получится вектор слова «королева».

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

На фото Андрей Законов

Б: Вы сказали про текст, выклянчивающий лайк. Какие еще подобные типы постов можно выделить?

З: Классический тип — это кликбейт. Его можно определить и по тексту, и по времени, которое пользователь провел на записи по ссылке. Но если кому-то действительно нравится кликбейт, то такие посты не будут скрываться у него в ленте.

Правда, тут важна еще и продуктовая логика. Если мы поняли, что пользователю нравится футбол, это всё равно не означает, что у него в ленте должно быть подряд 20 постов о футболе, это наскучит. Поэтому мы алгоритмически добавляем ему в ленту записи друзей, какие-то видео или важные новости.

Б: Алгоритм может понять, что два текста написал один и тот же человек?

Я: Не всегда. Есть примеры, когда получается выделить характерный стиль писателя или поэта. Но это вряд ли возможно сделать для всех.

З: Понять, написал конкретный текст Толстой или Пелевин, несложно, но отличить, например, мой текст про нейросети от текста коллеги — не факт, [что получится].

Б: Для рекомендаций вы используете все открытые данные пользователей?

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

Б: Что и кому сложнее всего рекомендовать?

Я: Есть два крайних случая. Первый: вы ничего не знаете о пользователе. Второй: пользователь потребляет очень много контента, но делает это абсолютно хаотично.

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

Б: Как вы работаете с музыкой?

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

В нашей сети мы строим рекомендации музыки, не анализируя сам звук. И делаем это именно на основании ваших плейлистов, потому что можем представить их как текст на некотором языке. Методы, применимые для анализа текстов, так же хорошо сработали и для рекомендаций музыки.

Б: Вы учитываете, что добавляют в плейлисты похожие на конкретного пользователя люди?

Я: На текущий момент нет. Мы не ищем людей с похожими интересами, но, естественно, у людей с похожими плейлистами — похожие вектора. Теоретически мы можем найти пользователя с музыкальным вкусом, идентичным вашему.

Б: Как вы рекомендуете посты от СМИ? Отличается ли алгоритм, если учитывать, что одно и то же событие два издания могут описывать совершенно по-разному?

З: Для СМИ у нас нет отдельного алгоритма. Мы подстраиваемся под интересы пользователя. Если он много взаимодействует с конкретным СМИ, то мы и в ленте покажем именно его.

Б: Вы как-то пытаетесь бороться с тем, что на Западе называют fake news?

З: Мы внимательно следим за фидбеком к каждой записи. На любой пост можно пожаловаться, и это является сильным негативным сигналом для алгоритмов рекомендации. Кроме того, у нас есть команда модераторов, которая оперативно реагирует на такие жалобы.

Б: Вам не кажется, что рекомендованная лента новостей создает информационный пузырь, в котором человек видит только то, что хочет видеть, даже если это отличается от реального положения вещей?

З: От этого мы уходим чисто алгоритмическим способом. Самый легкий способ выйти из такого пузыря — это раздел рекомендаций, но и в ленту новостей тоже попадает самый разный контент. Например, тот, с которым взаимодействуют ваши друзья. Это позволяет узнать, что еще происходит, помимо того, о чем пишут источники, которые вам нравятся.

Я: Это классическая проблема для рекомендательных систем. Система может замкнуться только на том, что пользователю интересно. Мы же явно добавляем в алгоритмы то, что позволяет выйти за пределы этого пузыря.

З: Такая проблема всегда существовала, например, для музыки. Если все рекомендации сведутся к двум исполнителям, то пользователь быстро заскучает. Этот пузырь — далеко не новая проблема, которую алгоритмы уже довольно хорошо решают.

Б: Как реагирует лента, если человек начал активно лайкать и проявлять всяческий интерес к очевидно деструктивным темам? Например, к шутингу в школах. Она предлагает ему еще почитать про это?

З: Такие тематики мы не продвигаем в рекомендациях. Мы очень внимательно смотрим, на что жалуются люди, на какие тематики прилетают жалобы от людей, не состоящих в тематических группах. Это важные сигналы и для алгоритмов, и для модераторов. Плюс такие тематики, как «Колумбайн» или «Синий кит», часто блокируются в соцсети.

Б: Хорошо, а если менее радикальная ситуация? Например, если у меня депрессия, я подписался на десятки пабликов о том, что жизнь — плохая штука, и начинаю их активно лайкать. Лента мне будет постоянно напоминать о том, что жизнь действительно плохая?

Я: На этот случай в алгоритме и предусмотрено разнообразие, которое не дает ей превратиться в поток постов об одном и том же. Вполне вероятно, что алгоритм сделает резкий шаг в сторону и покажет что-то, наоборот, о счастье.

Вообще, мы не хотим как-то сильно вмешиваться в личные темы и решать, какая тема нормальна, а какая — нет. Это должен решать пользователь.

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

Б: Почему до какого-то момента все соцсети работали с простыми лентами, а потом практически одновременно стали делать алгоритмические?

З: Если посмотреть динамику по годам, то видно, как быстро увеличивается количество контента. Когда я 11 лет назад начал пользоваться «ВКонтакте», количество контента в моей ленте было таким, что я мог его легко просмотреть за 20 минут. Оно росло, и лет 5 назад стало очевидно, что пользователи не успевают просматривать всё.

Сейчас в ленте у каждого пользователя в день в среднем появляется больше 500 записей, но просматривают они около 20 %. По статистике мы увидели, что люди начали пропускать записи своих друзей. Простой пример: вы гуляете ночью, делаете классную фотографию мостов — и сразу же выкладываете. Вы же не эсэмэмщик, чтобы ждать 11 утра. Но за ночь ваша фотография сползает на 200-е место в хронологической ленте — и ваши друзья утром ее уже не увидят. В итоге грустно и вам, и им.

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

Б: Почему тогда первое время новая лента многих так раздражала?

З: Мне кажется, что тот первый негатив объясняется простым опасением: как это кто-то за меня будет решать, что мне интересно, а что нет? Но на самом деле всё наоборот. Никто за вас не решает: алгоритм отслеживает, что понравилось именно вам. Наверное, людям просто стоит потратить немного времени, чтобы разобраться, как работает лента, и настроить ее под себя. Например, отписаться от того, что вам неинтересно и не нравится. Люди часто игнорируют этот совет.

Б: Почему тогда до сих пор появляются мемы о том, как ошибается и лента, и система рекомендаций? Например, человек слушает Rammstein, а ему предлагают Шуфутинского.

З: Лента, очевидно, становится лучше, это показывают все метрики. Увеличивается время, проведенное в ленте, [наблюдается] постоянный рост в разделе рекомендаций. Последний рекорд составляет около 1,5 млрд просмотренных записей в сутки. Этому, мне кажется, есть просто объяснение: когда вы пользуетесь рекомендациями, зачастую cами не знаете, чего именно хотите. И иногда то, что предлагает система, совпадает с вашим настроением, а иногда — совсем нет.

Записи, с которыми мы не угадали, — важная часть системы. Например, если изначально мы не знаем, любит человек спорт или нет, единственный надежный способ проверить — предложить пару записей этой тематики и посмотреть, что он будет делать. Если проигнорирует, дальше мы постараемся ему этого не показывать.

Я: Чтобы сказать точно, нужно видеть конкретного пользователя, которому рекомендуют Шуфутинского. Возможно, человек просто еще не осознал, что на самом деле он хочет слушать Шуфутинского. Но если серьезно, то есть известная история о том, как в США девушка покупала через сайт продукты, и в какой-то момент ей порекомендовали купить тест для беременности. А потом выяснилось, что она действительно беременна. Как система это узнала? Элементарно: статистические данные по большому количеству покупателей и зависимости, которые проявляются на больших масштабах. Так и тут, возможно, это какая-то зависимость, а возможно — просто ошибка с нашей стороны.

Б: Ваши наработки используются в рекламе внутри соцсети?

Я: Фактически нет. Так получилось, что им важны совершенно другие данные и наша система для них на практике не работает.

З: То, как мы ранжируем ленту, не используется. Но, например, мы сделали внутреннюю платформу для машинного обучения, и она активно используется всеми командами.

На фото: Андрей Якушев

Б: О рекламе и рекомендациях. Есть такой миф: вы держите в руках телефон и говорите с кем-нибудь, что собираетесь купить, допустим, обои. А уже через пару часов в соцсетях видите рекламу магазина обоев.

Я: Да, это популярный миф, но, мне кажется, это действительно миф. Скорее всего, просто кто-то из вашей семьи, кто сидит в интернете с того же устройства или IP-адреса, все-таки погуглил обои.

З: С точки зрения платформы всё просто: мы всегда запрашиваем разрешение на использование данных, которые нам нужны. Так что, мне кажется, здесь больше психологический эффект: возможно, мы каждый день видим рекламу обоев, но пока не говорим об этом, не замечаем этого.

Б: Один из ваших относительно новых проектов — «Прометей». Он, например, отчасти предсказал успех Гречки. Как он устроен изнутри?

З: «Прометей» — это часть алгоритма, лежащая в основе раздела рекомендаций. Если алгоритм видит постоянный интерес пользователей к какому-то автору по этой тематике или категории, он может попробовать показать автора в разделе рекомендаций. Если новая аудитория начинает активно подписываться и взаимодействовать, то сообщество получает отметку «огня». Но, возможно, этот автор делает что-то очень нишевое и всю аудиторию уже нашел сам.

Если вы получаете «огонь», то ваши записи будут показываться в разделе рекомендаций с большей вероятностью. Сейчас он действует неделю, за это время вполне реально получить прирост в 50 % от вашей аудитории. Но лучше всего это, конечно, работает на небольших сообществах. Если у вас уже 2 млн подписчиков, не нужно думать, что сейчас появятся еще 2 млн. Вполне возможно, вы уже нашли всю свою аудиторию.

Б: Другой проект — «Немезида». Он должен защищать авторов уникального контента и наказывать тех, кто ворует.

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

Б: После запуска вирусным стал мем с попыткой обойти «Немезиду» с помощью рукописного поста. Это возможно?

З: Вообще, пытаться соревноваться с алгоритмом — тупиковый путь. Проще научиться создавать авторский контент.

Б: Но во «ВКонтакте» довольно распространена ситуация, когда крупные развлекательные паблики перепощивают мемы из менее известных и зарабатывают аудиторию фактически за их счет. Как ваш сервис в этом поможет?

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

Б: Какие еще проекты сейчас в работе?

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

Есть еще несколько проектов: активно работаем над статистикой для авторов, будем запускать платформу для подкастов.

Б: В вашей работе главное — это алгоритмы. Какие области науки вы применяете в ежедневной работе?

Я: Если говорить об университетских курсах, то это теория вероятности, линейная алгебра, основы математического анализа, что-то из физики. Если говорить про современную науку, то в первую очередь новые математические и статистические модели, всё, что связано с нейронными сетями.

В индустрии действительно можно на хорошем уровне заниматься нашей областью исследований, анализом данных. Например, даже на научных конференциях по data science видно четкое разделение между научными статьями людей из индустрии и людей из университетов. И, на мой взгляд, люди из индустрии звучат интереснее. Индустрия двигает эту науку вперед; в университетах многие проблемы, которые решаются в индустрии, перед вами даже не возникнут. Да и в компаниях у вас больше людей, ресурсов, мощностей и данных, что может сильно упростить открытие нового метода.

Б: Ваш главный проект — это лента новостей. Вы знаете, сколько в среднем пользователь соцсети проводят в ней в день?

З: Всё очень индивидуально, плюс цифры постоянно растут. Например, по итогам 2017 года количество просмотров в ленте увеличилась на 30 %. В сумме в сутки люди просматривают больше 9 млрд записей во всех разделах.

Если вы нашли опечатку, пожалуйста, сообщите нам. Выделите текст с ошибкой и нажмите Ctrl + Enter.

НОВОСТИ

все новости

Спасибо!

Теперь редакторы в курсе.