Материалы взяты из нашей статьи под названием «Представление, исследование и рекомендация музыкальных плейлистов».

Краткое резюме

Цель

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

Вклад

  • Создал механизм рекомендаций для плейлистов с использованием обучения "последовательность-2-последовательность".
  • Оценил работу с помощью оценочного задания на основе рекомендаций.
  • Собрал набор данных из 1 миллиона плейлистов Spotify и 13 миллионов треков для этой работы.

Приложения

Система обнаружения / рекомендаций для плейлистов

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

Схема, удобная для разработчиков

Вот краткое описание предлагаемого нами подхода:

  1. Загружайте данные плейлистов с помощью Spotify Developer API и everynoise.com.
  2. Отфильтруйте данные, удалив шум (редкие песни, повторяющиеся песни, плейлисты нестандартного размера и т. Д.)
  3. Обучите модель «последовательность-2-последовательность» над данными, чтобы изучить встраивание списков воспроизведения.
  4. Аннотируйте данные (песни и плейлисты) для получения информации о жанрах.
  5. Оцените вложения, используя предлагаемые нами оценочные задачи.
  6. Создайте механизм рекомендаций, заполнив KD-дерево встроенными встраиваемыми списками воспроизведения и получая результаты поиска, используя подход ближайшего соседа.

Вступление

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

1. Немедленное достижение их музыкальных потребностей.
2. Длительный опыт.

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

Что такое плейлист и почему мне это нужно?

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

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

«С точки зрения исследователя важно понимать, что музыка потребляется во время прослушивания, а плейлисты формализуют этот опыт прослушивания» ³

Так в чем проблема?

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

Открытие - это название игры

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

Интуиция в основе подхода

Почему обучение от последовательности к последовательности?

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

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

Последовательное обучение

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

Для этой работы мы используем фреймворк seq2seq в качестве автоэнкодера, где задача сети состоит в том, чтобы восстановить входной список воспроизведения и при этом изучить компактное представление входного списка воспроизведения, которое фиксирует свойства списка воспроизведения.

Модели Seq2seq

Мы используем технику внимания для моделей seq2seq, используемых в этой работе, чтобы изучить вложения плейлистов, которые фиксируют долгосрочные зависимости между песнями в плейлисте из-за относительно большей длины плейлистов (50–1000 песен). Мы экспериментируем с 2 вариантами моделей seq2seq:

1. Однонаправленные сети seq2seq
2. Двунаправленные сети seq2seq

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

Данные: курирование, фильтрация и аннотации

Необходимость

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

Создание набора данных

Мы загружаем данные с помощью Spotify Web API. Чтобы собрать достаточно большой набор терминов для запроса системы Spotify, мы используем everynoise.com. Этот интерактивный веб-сайт содержит список из более чем 2600 жанров, составленный в соответствии с их взаимоотношениями друг с другом, а также примеры аудио для каждого жанра. Мы анализируем данные с домашней страницы этого сайта и получаем список всех жанров. Затем для каждого жанра мы загружаем плейлисты (вместе с соответствующей информацией о песнях) с помощью Spotify Web API. Весь поток показан на рис.1.

Вот подробности загруженных данных:

  • 1 миллион плейлистов
  • 1,3 миллиона художников.
  • 13 миллионов треков
  • 3 миллиона уникальных треков
  • 3 миллиона альбомов
  • 2680 жанров

Фильтрация данных

Мы следуем [1] при очистке данных, удаляя редкие треки и плейлисты нестандартного размера (в которых количество песен меньше 10 или больше 5000). Остается 755 тысяч уникальных плейлистов и 2,4 миллиона уникальных треков.

Аннотации

Проблема: жанры, жанры везде

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

1. Spotify предоставляет информацию о жанре для исполнителя, но не о песне. Обозначение жанра песни таким же, как жанр исполнителя, было бы не совсем правильным, поскольку у исполнителя могут быть песни разных жанров.

2. Назначить песням тот же жанр, что и в плейлисте, который, в свою очередь, является производным от условия запроса, для которого он был выбран, было бы проблематично. Проблема в том, чтобы идти по этому пути, - это связанная с ним субъективность. При условии такой детальной аннотации, в чем будет разница между софт-роком, роком 80-х, классическим роком и роком с точки зрения классификации?

Следовательно, нам нужно снизить количество жанров (меток вывода) с 2680 до более приемлемого числа.

Предложенное решение

1. Чтобы решить эту проблему, мы обучаем модель word2vec¹¹ в нашем корпусе, чтобы получить вложения песен, которые фиксируют семантические характеристики (например, жанр) песен по их совместному появлению в корпусе.

2. Полученные в результате вложения песен затем группируются в 200 кластеров (произвольно выбранное количество в попытке сохранить баланс между осуществимостью процесса аннотации и размером сформированных кластеров. Желательны меньший размер кластера и меньшее время аннотации).

3. Для каждого кластера:

• Жанр исполнителя применяется к каждой соответствующей песне, и создается частотно-жанровый (счетный) словарь. Примерный словарь жанров для группы из 17 песен будет выглядеть так: {рок: 5, инди-рок: 3, блюз: 2, софт-рок: 7}

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

• Все песни в кластере без четкого жанрового большинства отбрасываются для аннотации.

Основываясь на наблюдаемом распределении жанров в данных и в результате кластеризации поджанров (таких как софт-рок) по родительским жанрам (например, рок), окончательно выбираются жанры для аннотирования кластеров:

Рок, металл, блюз, кантри, регги, латиноамериканская музыка, электроника, хип-хоп классика.

Чтобы проверить наш подход, мы обучаем классификатор на нашем наборе данных, состоящем из аннотированных вложений песен. Поскольку набор для обучения и тестирования хранится отдельно во время обучения, мы достигаем точности теста 94%.

Для аннотации жанра плейлиста только плейлисты, в которых аннотированы все песни, рассматриваются для аннотации. Кроме того, только те плейлисты назначаются по жанрам, для которых более 70% песен совпадают по жанру.

Оценка

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

Рекомендация Задача

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

Мы используем алгоритм приблизительного ближайшего соседа с использованием библиотеки Spotify ANNOY¹³, чтобы заполнить древовидную структуру вложениями списков воспроизведения. Список воспроизведения запроса выбирается случайным образом, и результаты поиска сравниваются с запрашиваемым списком воспроизведения с точки зрения информации о жанре и длине. Есть девять возможных жанровых ярлыков. Для сравнения длины создаются десять выходных классов (охватывающих диапазон {30… 250}, соответствующих ячейкам размера 20. Учитывается в среднем 100 значений точности для каждого запроса.

Базовое сравнение

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

Полученные результаты

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

Приложения

Одно из непосредственных применений этой работы - механизм рекомендаций для списков воспроизведения. По запросу система будет рекомендовать / извлекать аналогичные плейлисты из корпуса. Для этой цели можно напрямую использовать древовидную структуру данных, обсуждаемую в разделе «Рекомендуемая задача». Учитывая список воспроизведения запроса, его k-ближайшие соседи будут наиболее похожими на него элементами и будут рекомендациями системы. Демонстрацию нашей работы можно увидеть на видео.

Вот и все. Мы представили подход на основе seq2seq для обучения встраиванию списков воспроизведения, который можно использовать для таких задач, как обнаружение и рекомендация списков воспроизведения. Наш подход также может быть расширен для изучения еще более качественных представлений списков воспроизведения путем интеграции моделей встраивания песен на основе контента (тексты, аудио и т. Д.), А также для создания новых списков воспроизведения с использованием моделей вариационной последовательности.

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

До скорого!

P.S - Вот ссылка на бумагу.

использованная литература

[1] https://newsroom.spotify.com/2018-10-10/celebrating-a-decade-of-discovery-on-spotify/

[2] Кыну Чой, Джордж Фазекас и Марк Сэндлер. К алгоритмам генерации списков воспроизведения с использованием РНН, обученных на переходах между дорожками. Препринт arXiv arXiv: 1606.02096, 2016

[3] Филдс, Бен и Пол Ламере. «Поиск пути через музыкальный автомат - Учебное пособие по плейлисту, ISMIR». ИСМИР, Утрехт (2010).

[4] De Mooij, A.M., и W.F.J. Verhaegh. «Изучение предпочтений для музыкальных плейлистов». Искусственный интеллект 97.1–2 (1997): 245–271.

[5] Чинг-Вей Чен, Поль Ламере, Маркус Шедл и Хамед Замани. Recsys Challenge 2018: автоматическое продолжение музыкального плейлиста. Материалы 12-й конференции ACM по рекомендательным системам, страницы 527–528. ACM, 2018

[6] Максимс Волков, Химаншу Рай, Чжаоюй Ченг, Га Ву, Ичао Лу и Скотт Саннер. Двухэтапная модель для автоматического продолжения плейлиста в масштабе. В материалах конкурса ACM Recommender Systems Challenge 2018, стр. 9. ACM, 2018

[7] Андрея Андрич и Гоффредо Хаус. Автоматическое создание списков воспроизведения на основе отслеживания привычек слушателя. Мультимедийные инструменты и приложения, 29 (2): 127–151, 2006.

[8] Бет Логан. Создание плейлистов на основе контента: исследовательские эксперименты. ИНИСМИР, 2002.

[9] Лия Суцкевер, Ориол Виньялс и Куок В. Ле. Последовательность для последовательного обучения с помощью нейронных сетей. Достижения в системах обработки нейронной информации, страницы 3104–3112, 2014 г.

[10] Дмитрий Богданау, Кёнхён Чо и Йошуа Бенжио. Нейронный машинный перевод путем совместного обучения выравниванию и переводу. Препринт arXiv arXiv: 1409.0473, 2014.

[11] Миколов, Томас и др. «Эффективная оценка представлений слов в векторном пространстве». Препринт arXiv arXiv: 1301.3781 (2013).

[12] Анита Шен Лилли.MusicBox: Навигация по пространству вашей музыки. Кандидатская диссертация, Массачусетский технологический институт, 2008 г.

[13] Бернхардссон, Э. НЕДОСТАТОЧНЫЙ: приблизительные ближайшие соседи в C ++ / Python, оптимизированные для использования памяти и загрузки / сохранения на диск. GitHub https: // github. com / spotify / annoy (2017 г.).

[14] Арора, Санджив, Инъю Лян и Тенгю Ма. «Простой, но непростой базовый план для встраивания предложений». (2016).