Как нейросети рекомендуют музыку
Эволюция музыкального стриминга
В период расцвета формата mp3, в конце 90-х годов, появились первые онлайн-библиотеки песен. Конечно, тогда ещё не существовало никаких алгоритмов для рекомендации треков: пользователи заходили на эти ресурсы с конкретным запросом или просто перебирали файлы в поисках подходящего.
Первая система рекомендаций появилась на стриминговом сервисе Pandora Radio в 2005 году. Она была довольно простой: пользователи ставили лайки или дизлайки трекам и на основе этой информации формировался рейтинг песен, аналогичный радиочартам.
Но традиционный поиск музыки уже не удовлетворял пользователей. Он приводил к «инфляции интереса»: люди ограничивались прослушиванием уже известных треков, а не искали новое. Также было сложно следить за новинками. На музыкальных форумах в 2000-х годах даже была целая группа «переслушивателей», которые отслеживали новые релизы и выбирали интересные треки.
С появлением MySpace и развитием YouTube стали использоваться первые рекомендательные системы, основанные на алгоритмах машинного обучения. А в 2010-х в мире стриминга появились такие гиганты, как Spotify и Apple Music.
Эти стриминговые платформы отошли от поиска по ключевым словам и чартам. Они внедрили рекомендательные системы на основе искусственного интеллекта, чтобы бесконечно советовать новую музыку. Теперь нейросети учитывают интересы и пристрастия пользователей — и превратились в лучшее в мире радио.
Как работают рекомендации
Есть два класса рекомендательных алгоритмов:
-
Коллаборативные. Алгоритм находит пользователей со схожими предпочтениями, анализирует их контент и рекомендует вам то, что вы ещё не смотрели или не слушали. В этом случае рекомендательная система не вдаётся в подробности: не обращает внимания на жанр фильма или настроение трека. Она судит о единицах контента только по тому, как пользователи с ними взаимодействуют: важно количество прослушиваний, просмотров или лайков.
-
Контентные. Здесь алгоритм, наоборот, заглядывает внутрь и анализирует содержание. Даже если трек никто никогда не слушал, система по звуку может догадаться, что он подходит пользователю. Анализируя треки, которые вы слушаете чаще всего и охотнее дослушиваете, нейросеть понимает, что вам, например, нравится медленная и спокойная минорная музыка, и начинает рекомендовать похожую. При этом алгоритм может довольно точно попадать в ваши интересы, совсем не разбираясь в музыке и не имея возможности прослушать её как человек.
Интересно. То есть модель действительно слушает музыку и анализирует её?
Не совсем так. Звук представляется в виде спектрограммы — уникального графика трека с зависимостью амплитуды музыкального сигнала от времени. Композиции можно анализировать и сравнивать по спектрограммам: нейросеть работает с ними как с изображениями, накладывая друг на друга и находя сходство. Дополнительно учитываются темп, лад, громкость и вся информация об альбоме, жанре и исполнителе. На основе полученных знаний алгоритм рекомендует пользователю похожий по звучанию контент. Аудиомодели также умеют определять похожесть голоса вокалиста и его манеры исполнения.
Но контентный рекомендательный алгоритм нельзя использовать как основной. Дело в том, что вкусы человека в музыке непостоянны. Например, сегодня у пользователя было плохое настроение — и он слушал минорную музыку. А завтра у него всё здорово, на улице солнечно и он хочет прогуляться под бодрый хип-хоп в наушниках. Контентная модель не умеет учитывать такие параметры и продолжает подсовывать медленные композиции — пользователь удивляется и думает, что нейросети работают плохо.
Поэтому в рекомендательных системах Яндекса используются и контентные, и коллаборативные алгоритмы. Чем больше пользователь взаимодействует с контентом, тем точнее будут его персональные рекомендации. Чем больше лайков, тем больше у системы данных, которыми она может оперировать.
А при чём тут нейросети?
Нейросеть — это частный случай алгоритма. Чтобы рекомендации в Яндексе работали верно, нужны различные методы машинного обучения, в том числе нейронные сети с миллионами параметров и разные виды разметки. Например, разметка релевантности контента запросам пользователей. Это гибридная система, которая анализирует данные и рекомендует лучшее.
Вау! А как устроен процесс рекомендаций в «Моей волне»?
«Моя волна» — это алгоритм, который подбирает бесконечный персональный поток музыки под каждого слушателя. Он умеет быстро учитывать реакцию пользователя и корректировать свои рекомендации на ходу. Кроме того, он использует глубокие нейронные сети, чтобы понимать интересы пользователя и прогнозировать возможные варианты их развития.
«Моя волна» готова к разным сценариям и адаптируется под настроение пользователя. Это не плейлист, не статичная закрытая система, а действительно волна, подвижная и текучая. Она не стоит на месте, свободно меняется и подстраивается.
Для ранжирования музыки используется порядка 2 тысяч разных признаков: например, есть в композиции вокал или нет, быстрая она или медленная. Часто за каждый признак отвечает отдельная языковая модель, которая делает своё предсказание аналогично тому, как это происходит с текстами.
Представим, что «Моя волна» — это тоже некий текст, а каждый следующий трек — слово. К потоку рекомендаций можно относиться как к высказыванию, у которого есть логическое продолжение, и модель пытается его угадать.
Поверх множества алгоритмов работает CatBoost — главный инструмент машинного обучения. Он берёт все признаки, анализирует их и выдаёт конечное решение, какой именно трек поставить пользователю следующим.
А так было всегда?
Раньше алгоритмы могли держать относительно короткий контекст: только текущую сессию пользователя или сегодняшнее его поведение в приложении. Они перестраивали поток рекомендаций в зависимости от того, дослушал ли пользователь трек до конца, лайкнул ли его в короткий промежуток времени.
Сейчас из-за внедрения моделей горизонт того, чем могут оперировать рекомендации, расширяется. Система учитывает всю историю прослушиваний и исходя из этого рекомендует треки.
А ещё модели обучаются на экспертных пользователях: смотрят на залайканный трек, затем ищут пользователей, у которых много непопулярных треков этого же жанра в лайках. По мнению модели, эти пользователи обладают экспертностью. Модель воспользуется их знаниями и порекомендует треки из их коллекций. Сами экспертные пользователи могут и не знать, что на них опираются алгоритмы.