Что делает K-Pop, K-Pop? Я построил нейронную сеть K-Pop

Как американец корейского происхождения, я выросла на корейской музыке всю свою жизнь. Однако за последние пару лет в корейской музыке произошел невероятный подъем. K-Pop группы, такие как BTS и Twice, с момента своего дебюта завоевали международную известность и побили различные музыкальные рекорды. В настоящее время ко мне подходят даже мои друзья не из Кореи, желая поговорить со мной о последней хитовой песне или о новой группе, которая вот-вот дебютирует. Откуда взялась эта шумиха вокруг K-Pop и что отличает K-Pop группы от других? Что еще более важно, что лучшие исполнители K-Pop, такие как BTS, Twice и Blackpink, делают иначе, чем другие исполнители K-Pop?

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

Я собрал все треки от 50 лучших K-Pop артистов 2019 года по версии Tumblr и скомпилировал их в один файл данных. Это включало название трека, группу, которая исполняла этот трек, пол группы, все звуковые функции и значение популярности (от 0 до 100) трека, предоставленное Spotify.

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

Изначально я хотел создать нейронную сеть, в которой, учитывая тринадцать функций, она могла бы классифицировать, от какого исполнителя пришел трек. Однако после создания мультиклассового перцептрона я быстро понял, что данных на каждого исполнителя просто не хватает. Такие группы, как BTS, EXO и Twice, имеют более сотни треков, но более мелкие исполнители, такие как Weki Meki и Baby V.O.X. меньше сотни. Моя нейронная сеть едва достигла точности 2%, что означает, что она может в значительной степени классифицировать каждую дорожку в моем наборе данных как одного и того же исполнителя.

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

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

В моем классификаторе у меня было 13 нейронов на входном слое, каждый из которых представлял звуковые функции, и у меня был один скрытый слой, состоящий из 60 нейронов. Поскольку это двоичная классификация, мой выходной слой имел один нейрон. Скрытый слой использовал выпрямленную линейную единицу (ReLU) в качестве моей функции активации, а мой выходной слой использовал сигмовидную функцию в качестве функции активации. Я использовал двоичную кросс-энтропию для своей функции потерь и алгоритм Adaptive Moment Optimization (Adam) для своего оптимизатора.

В моем регрессоре у меня снова было 13 нейронов во входном слое и один скрытый слой. Однако скрытый слой теперь имеет 13 нейронов вместо 60. Мой выходной слой имеет один нейрон, представляющий окончательное значение популярности, которое он оценивает. Я снова использовал ReLU для своей функции активации в скрытом слое и не использовал функцию активации в выходном слое. Я также использовал Адама для своего оптимизатора, но я использовал среднеквадратичную ошибку (MSE) в качестве функции потерь.

Когда я впервые взглянул на свой двоичный классификатор, я получил точность ~ 70%, что, честно говоря, довольно хорошо.

Однако, когда нейронная сеть пытается предсказать, используя одни и те же данные обучения, я обнаружил, что она просто предсказывает «Мужской» для каждой отдельной дорожки. Когда я взглянул на процент мужских треков в наборе данных, я получил поразительное значение 0,70378… Итак, в основном, нейронная сеть предсказывает правильность 70% исходных обучающих данных, просто классифицируя каждый трек как мужской. Чтобы устранить эту проблему, я добавил в набор данных еще более двадцати женских групп / артистов. Это выравнивает соотношение, получая процент мужских следов около 0,54. Чтобы немного очистить данные, я стандартизировал набор данных и избавился от всех песен длиной более 300 000 мс (5 минут). Благодаря этим действиям моя нейронная сеть достигает твердой точности 71,62%, но на этот раз она фактически пытается классифицировать на основе заданных характеристик.

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

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

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

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

Первое, что я заметил, играя с этими ползунками, это то, что ни один из ползунков сам по себе не влиял на пол, кроме энергии (низкий женский, высокий мужской), инструментальности (низкий женский, высокий мужской) и живучести (низкий мужской, высокий женский). ). Я попытался создать более мягкую песню типа баллады, оставив тональность на 9 и режим на 0 (который является ля минор, наиболее распространенная минорная тональность), уменьшив танцевальность, энергию, живость, валентность, темп и речевость, и увеличение акустики и громкости (что делает его более мягким). При этом моя нейронная сеть предсказывает, что эта песня принадлежит женщине, а ее популярность составляет ~ 35. Самая близкая песня, на которую похожи эти особенности, - это Flower by IU (сольная исполнительница женского пола), популярность которой составляет 37. Вы не могли поверить, как я была счастлива, когда моя нейронная сеть правильно предсказала это!

Я использовал те же настройки, за исключением того, что изменил продолжительность на максимальное значение. Нейросеть прогнозирует женский пол и популярность ~ 42. И угадай что! Песня, которая больше всего похожа на эти особенности, - Farewell by TAEYEON (еще одна сольная исполнительница женского пола), популярность которой составляет 44 года.

Для моего следующего теста я перевернул все значения, которые находятся на одном конце ползунка. Теоретически это должно сделать трек более оптимистичным и электронным. Моя нейронная сеть предсказывает, что эти функции принадлежат женщине и имеют популярность ~ 7. Эта песня больше всего напоминает 이상한 일 (So Strange) группы Brown Eyed Girls (женская группа), популярность которой равна 9. Еще один успех!

Еще немного поиграв с ползунками, я заметил, что нейронная сеть имеет тенденцию предсказывать женский пол, когда ползунки находятся на одном конце, и мужской, когда большинство ползунков ближе к середине. Когда все ползунки находятся точно посередине (кроме режима, поскольку режим может быть только 0 или 1), нейронная сеть предсказывает, что песня принадлежит мужчине со значением популярности ~ 9. Наиболее похожая песня - Streets by A.C.E (мужская группа), популярность которой равна 0. Итак, наша нейронная сеть не идеальна, но, честно говоря, мне больше не нравится A.C.E, имея трек с нулевым значением популярности.

Чтобы получить самую популярную песню с помощью ползунков, мне пришлось увеличить продолжительность, акустичность, громкость, речь и темп, уменьшив танцевальность, режим, энергию, инструментальность, живость и валентность. Тональность и размер не особо повлияли на популярность. Нейронная сеть классифицирует это как женское и оценивает значение популярности в ~ 73. Песня, на которую больше всего похожи эти функции, - это The Visitor от IU, популярность которой составляет 56. Помните, что эти функции и The Visitor не являются действительно самой популярной песней в моем наборе данных (который передается BTS в ON). Это просто кое-что, что я получил, играя, и очень сложно получить конкретные значения с помощью ползунков.

С другой стороны, наименее популярная песня, которую я мог получить, была в значительной степени перелистывать все крайности на ползунках. Это предсказало женщину со значением популярности около -9. Моя нейронная сеть была совершенно неправильной, поскольку эти функции больше всего напоминали Tropical от INFINITE, которая представляет собой группу парней и имеет значение популярности, которое на 26 больше, чем предсказывала моя нейронная сеть.

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

  1. Песни женских групп / сольных исполнителей имеют тенденцию быть крайними, в то время как песни мужских групп / сольных исполнителей, как правило, находятся в середине. Я считаю, что это означает, что когда песня артистки является балладой, она, скорее всего, будет очень акустической, меланхоличной и в минорной тональности. С другой стороны, когда песня артистки имеет более высокий уровень энергии, она, вероятно, также будет оптимистичной, веселой, более электронной и в мажорной тональности. Песни мужчин-исполнителей, как правило, менее одномерны, например, песни с высокой энергией, высокой танцевальной способностью и более электронными, но в то же время мрачны и содержат минорную тональность (песни BTS, как правило, имеют эти особенности).
  2. В общем, песни, которые исполнялись на живом мероприятии, не так популярны. Это имеет смысл, потому что лично наличие большого количества треков Spotify очень раздражает.
  3. На значение популярности больше всего влияют длительность, акустичность и инструментальность. Это может означать, что люди, как правило, предпочитают более длинные песни, песни, которые более акустичны (меньше электроники), и песни, которые не являются инструментальными.

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

Ресурсы