Нейросети за кулисами VK: как соцсеть применяет алгоритмы — от расшифровки голосовых сообщений до модерации

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

Нейросети за кулисами VK: как соцсеть применяет алгоритмы — от расшифровки голосовых сообщений до модерации

В 2020 году «ВКонтакте» стала единственной из крупных соцсетей в России, кто запустил расшифровку голосовых сообщений. Теперь пользователи могут читать то, что собеседники записали голосом, без необходимости это прослушивать. Для этого в соцсети используют целый комплекс алгоритмов, которые распознают речь, переводят её в текст и расставляют знаки препинания.

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

Когда в VK начали использовать нейросети и машинное обучение и как их применяют

Где-то в 2013 году нейросети стали лучше других решений. «ВКонтакте» использует их с 2015-2016 годов. В 2015, когда я пришёл во «ВКонтакте», алгоритмическая лента была самым большим проектом с машинным обучением. В работе над «умной» лентой ты должен понимать, что человеку интересно, что находится в посте, например, кликбейтный ли он. Так расползаются щупальца машинного обучения, которые в большой компании могут быть отдельными командами.

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

Любая компания, которая делает ленту новостей, хочет, чтобы выше было что-то интересное, а неинтересное, кликбейт — пониже. От каждой подобной задачи начинается маленький проект: «Давайте научимся определять, что это развод, конкурсы, кликбейт. Давайте поймём, что мотивирует ставить лайки».

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

Ребята придумывают, как с помощью машинного обучения оптимизировать рекламные кампании. Например, кто-то приходит и говорит: «Найдите мне аудиторию по 10 рублей за клик». Или такой пример: «У меня есть аудитория интернет-магазина, я хочу, чтобы вы нашли мне похожую аудиторию во „ВКонтакте“». Как это сделать без машинного обучения? Никак.

В некоторых компаниях, среди которых и «ВКонтакте» [устроено так] — когда пользователи хотят «фичу», мы её делаем. Но два года назад мы поняли, что нужно развивать технологии в отрыве от новых функций. При этом плюс машинного обучения в том, что при разработке мы всегда представляем, как это использовать. Мы не делаем что-то, что применим только через 20 лет.

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

Как устроена расшифровка голосовых сообщений «ВКонтакте»

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

Языковая модель — это штука, подбирающая максимально подходящие слова. Кстати, большинство ошибок связаны с тем, что она пока работает только с русским языком: если сказать ей «вай нот», она, скорее всего, распознаёт это как «война». Пока не решили, будем ли добавлять другие языки или нет.

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

[Знаки препинания расставляются] на основе готового текста, но мы думаем над распознаванием с помощью звука. Например, если человек сделал паузу, то туда уместно вставить точку. Но пока такого нет.

Если я скажу «привет как дела», фраза распознается как «привет, как дела». Мы уже думаем над распознаванием знаков препинания из речи, можем ещё добавить звуки, например, всхлипывания. Меня очень радует эта функция. Один из отзывов был о том, что нейросеть «расставляет пунктуацию лучше меня». Хотя она всё же часто ошибается, это нормально.

Почему использовали собственное решение, а не взяли чужое

Сначала для совсем небольших экспериментов мы использовали стороннее решение, чтобы «откалиброваться». Тогда мы и поняли, что наше решение по качеству лучше. Ребята со стороны «Мессенджера» дали «зелёный свет» о том, что их устраивает [результат] и нужно раскатывать на всех.

Глобально никакое чужое решение никогда не применялось. На наших нагрузках это было бы невозможно: оно стоило бы бесконечных денег, если бы это было платное API. А так как мы большие, мы хотим контролировать процесс и иметь возможность что-то оптимизировать, чтобы тратить меньше ресурсов.

Запуск и создание моделей, которые распознают речь — это уже технологически сложная работа. Но сделать так, чтобы это работало на 100 миллионов пользователей — это ещё 50% работы. Полгода где-то.

Из-за наших объёмов нам нужно делать всё максимально эффективно, поэтому есть специфика: например, мы прогоняем не каждое сообщение, а целые пачки голосовых, чтобы справляться с потоком и не тратить лишние ресурсы. Этим занималась отдельная команда — они придумали, как всё это масштабировать, чтобы работало даже на больших цифрах.

Зачем понадобились расшифровки и насколько они популярны

По использованию функции мы видим, что она востребована. Расшифровки растут, много людей пользуется и для нас это тоже мотивация улучшать качество. (Конкретные показатели «ВКонтакте» не раскрывает — прим. TJ).

В VK уже были боты для расшифровки речи, но они используют не свои технологии, а перенаправляют сообщения в API сторонних компаний. Обычно это «Яндекс», Google и все, кто предоставляет такие услуги. Это всегда деньги: они могут существовать за счёт рекламы или как-то обходить бесплатные лимиты. Но у нас такого варианта не было — у нас сотни миллионов голосовых сообщений в день проходят.

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

Работать [над расшифровкой голосовых] начали примерно год назад. Мы участвовали в «Сириусе» (образовательный центр для школьников, открытый в Сочи по инициативе президента РФ): «ВКонтакте» предоставлял задачки, а школьники в течение месяца их решали. Мы делали с ними фильтры для аудио — ты записываешь историю и можешь менять тембр и другие вещи. Мы начали развивать идею и нашли в МФТИ куратора Надю Зуеву, которая там вместе с ребятами жила, помогала им. Мы сами несколько раз приезжали. Можно сказать, что тогда мы по крайней мере задумались над распознаванием.

У школьников даже начало что-то получаться. Куратор из МФТИ училась на четвёртом курсе, и мы предложили ей поработать с нами. Она пришла в конце 2019 года и какое-то время копала: там ведь нужно не только распознать текст, а ещё, например, убрать шум. Пытались также придумать разные кейсы для «Музыки».

В научных статьях уже есть интересные решения, которые можно попробовать — и мы достаточно быстро сделали MVP (минимально работающий продукт — прим. TJ) внутри VK. А конце 2019 года мы поняли, что есть возможность запустить это на всех.

Почему расшифровки сделали только сейчас

Крупные игроки работали над распознаванием речи на русском языке с 2013 года. Но у нас голосовые были не в фокусе. Масштабировать это было непросто: нужно было «потратить» много железа, которое мы направляли на другие вещи, например, на алгоритмическую ленту и условный обсчёт картинок.

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

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

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

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

Любопытно, как мы влияем на то, что люди говорят. Представь, если они не слушают, а только читают, и мы заставляем как-то иначе разговаривать. Получается забавная и неожиданная проблема. Это не наша цель, но, надеюсь, что мы неявно дисциплинируем тех, кто часто пользуется [голосовыми]. «Умные» колонки тоже так делают. Вероятно, через 10 лет все будут говорить по-другому, потому что привыкнут общаться с роботами и ИИ.

Хотя голосовые сообщения отличаются от того, как мы общаемся с ассистентами. Многие разговаривают с колонками, и там тоже используется распознавание речи, но очень специфичное. Когда я «пишу» голосовое, я предполагаю, что друзья могут его прослушать — и тогда ничего распознавать не нужно. Если же меня не понимает колонка, я скажу её более чётко.

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

(«ВКонтакте» не уточнила точность расшифровки голосовых сообщений, но отмечает, что пока тестирует функцию на пользователях, прося их оценить результат. «Условные 95% нам не нужны — прим. TJ). Если там выше 75% — это хорошее решение, нас уже устраивает. 100% не будет никогда, но мы и не целимся в этот результат.

Что ещё VK может делать с собственной системой распознавания речи

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

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

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

Как VK решает проблему точности распознавания без передачи данных людям

У нас есть VK Testers — это сообщество из около 80 тысяч человек, которых мы просили записывать голосовые сообщения, чтобы обучить алгоритмы.

Для нас вообще не вариант брать голосовое сообщение из лички пользователя и отдавать его кому-то распознавать — это странно. Хотелось бы, конечно, потому что с точки зрения разработки это было бы сильно проще: мы бы размечали то, что хотим.

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

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

На каких данных обучили языковую модель для расшифровки голосовых сообщений

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

Так же и с голосовыми: мы знаем, например, что у нас плохо распознаются имена и улицы. Мы взяли топ-1000 популярных имён и топ-1000 названий улиц, и попросили ребят [тестеров] записывать это.

Зачем нужны люди, если алгоритмы так хорошо справляются

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

Все в это метят, включая самых крупных игроков вроде Google. Но конкретно зачем здесь нужны люди? Ну, во-первых, это валидация — мы проверяем сами себя, понимаем, что мы не ошиблись, например.

У нас в VK есть своё решение вроде «Толоки» (сервис для быстрой разметки данных, в наполнении которого может поучаствовать любой желающий за деньги — прим. TJ). Мы часто используем его не для разметки данных, а когда что-то сделали и хотим выкатить новую модель, например, для поддержки.

Есть автоматическая оптимизация агентов с ответами на основные вопросы. Мы выкатываем эту модельку, генерируем случайные ответы и говорим: «Посмотрите тысячу рандомных вопросов, стало ли лучше?». Потом мониторим и узнаём, что мы стали отвечать на 20% релевантнее. «Отлично, давайте запускать».

Как бы могли работать нейросети без разметки данных в будущем

У нейросетей, скорее всего, будет ядро с информацией, которую им дали, и корпус с множеством надстроек. Мы не то чтобы избавимся от разметки, а научимся использовать информацию, которая уже есть. GPT-3, которая везде в новостях — это один из таких способов. Там ведь никакой разметки, просто люди пытаются сделать языковую модель и предсказать следующее слово по префиксу. И выясняется, что когда они пишут TL;DR, у них возникает суммаризация (извлечение сути — прим. TJ).

Когда они пишут «translate to french», у них получается французский язык. Они не учили нейросеть отвечать на такие вопросы — просто оно само. Мы двигаемся туда.

Что не так c GPT-3 и как она будет развиваться

Проблема в том, что только для обучения GPT-3 нужно потратить миллионы долларов. Это очень дорого, сейчас такие штуки могут позволить себе только ну очень большие игроки.

Да, доступ к API. Это, кстати, тоже интересный момент, раньше же все люди могли хостить и управлять. А теперь нам предстоит придумать, как её контролировать, а то вдруг выяснится, что она окажется слишком токсичной или будет нам хамить.

Она очень большая и сейчас куча людей думает, как сделать более вычислительно-эффективными версии таких вот моделей. Одно из направлений у нас в физтеховской лаборатории — «давайте возьмём эти большие тяжёлые модельки и сделаем их маленькими», и уже есть кое-какие результаты.

Когда нейросети заменят людей в поддержке «ВКонтакте»

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

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

В какой-то момент часть пользователей выяснила, что если писать «шантаж», то мы получим триггер на ключевое слово и быстро ответим. Поэтому появились те, кто пишет «Шантаж! Как записать истории?». Как раз помогли нейросети: модель говорила, что есть слово «шантаж», но помечала тематику «истории». Мы тоже отвечали на это, но позже.

Мы достаточно давно уже, наверное, второй год работаем над автоматической поддержкой — то есть когда прямо генерируем ответы на вопросы. Сейчас она работает в состоянии отдельной ленты.

Мы бы конечно хотели, чтобы агенты не отвечали на «вечнозелёные» вопросы, а занимались трудными проблемами: за что человека забанили и так далее, когда нужно пообщаться с человеком. А на вопросы «как создать истории», мы можем ответить автоматически.

Есть ребята, которые не пишут ответы и работают с отдельной лентой, которая их генерирует — они просто сидят, выбирают из нескольких вариантов самые подходящие и отправляют. Если после этого пользователь требует «живого» агента поддержки, то его перенаправляют. Это работает достаточно эффективно: мы подрезали «хвост» долго висевших вопросов. Фич, а, соответственно, и нагрузки на поддержку становится больше.

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

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

Как работает лаборатория «ВКонтакте» в МФТИ

Это не просто «мы даём ребятам задачки — они делают», это лаборатория искусственного интеллекта «ВКонтакте», которая работает внутри Физтеха. Там мы решаем непродуктовые задачи — делаем исследовательские работы.

Первый сезон закончился, в сентябре начался второй. Например, мы обсуждали GPT-3. Её предыдущая версия немножко заикается: когда получаешь ответы, она начинает повторяться. Или уникальность слов оказывается меньше, чем у людей. Есть способы сделать её более похожей на человека. Вот этим в том числе и занимаемся, что нам нужно для поддержки.

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

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

Как работает система по выявлению экстремистского контента во «ВКонтакте»

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

Один из кейсов — пытаемся разбирать жалобы автоматически, чтобы ребятам не попадалось то, что заведомо не жалоба вообще. Например, пользователи пишут, что контент «не очень», и нам это прилетает: если мы видим просто условных котиков, то отклоняем, а если там реально [что-то, возможно, незаконное], то ребята посмотрят и удалят пользователя, который распространяет что-то запрещённое.

Что происходит, когда кто-то нажимает «пожаловаться»

По-разному бывает. В зависимости от категории, но обычно всегда когда жалоба сваливается, человек не может ответить сразу — есть какая-то задержка (по данным «ВКонтакте» от нескольких секунд до трёх минут, — прим. TJ). И пока заявка висит в очереди, мы можем пройтись автоматикой и там порезать какие-то вещи, которые «точно нет» [не жалобы].

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

Как применяют нейросети в рекламе в VK

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

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

Чего ждать от применения ИИ в соцсетях в ближайшее время

У нас в том году был заметный инфоповод, когда мы заголовками занимались. Мы тогда договорились с ребятами из РИА «Новости», они дали нам миллион новостей и мы пытались делать автоматические заголовки для их новостей.

Почему популярен твиттер, короткие сообщения или даже Telegram-каналы? Потому что я хочу понимать, что происходит сейчас. Поэтому будут набирать популярность темы вроде «сжать большой текст в интересную вещь» или «подсветить только то, что мне нужно». Даже в новостях разные люди выставляют разные акценты. Мне, например, интересно, как международное сообщество отреагирует на событие, а кому-то — кто во время этого пострадал. Эти вещи можно настроить под каждого человека.

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

Почему нужно бороться с информационными пузырями в соцсетях

Два года назад я был на конференции в Америке по машинному обучению. Там был маленький воркшоп по распространению новостей. И он собрал практически всех игроков на рынке новостей: в частности, были ребята из «Дзена», я, Facebook, Flipboard и не только. Была большая дискуссия, нужно с этим бороться или нет. Потому что нам нравится жить в пузырях: я подписан на всех друзей, а когда ко мне прилетают люди со стороны, я обычно негодую и что-то скрываю.

По моему мнению, человек хочет, чтобы это [информационный пузырь] было вокруг него. С точки зрения площадки, это нужно разруливать. Мы можем забить и сказать — пускай всё идёт как идёт. А можем сказать: да, человеку интересно это, но давайте подбрасывать ему 5% альтернативных мнений. Но чтобы что-то регулировать, нужно понимать, что там происходит.

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

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

Как VK обходится без оценок пользователей в рекомендациях музыки

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

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

Я общался с Spotify и вёл небольшую лекцию, как устроено машинное обучение в VK. Потому что большой Spotify удивляло, как у нас устроены некоторые вещи, учитывая, что у нас в 10 раз меньше сотрудников. Помню, они ещё удивлялись по деньгам. Они хотели сделать так, чтобы люди платили столько, сколько им комфортно. Я общался с девушкой, которая отвечает за монетизацию — она спрашивала, сколько вообще в России стоит подписка. Я говорю: «Два доллара, тут нечего оптимизировать».

 

Источник

Читайте также