• Регистрация
Zhvakina
Zhvakina +2.06
н/д

Нейросетевое распознание жанра музыкальных произведений. Music genre recognition with neural networks.

20.11.2019

В.И. Дектярёв, А.В. Жвакина

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

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

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

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

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

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

В настоящее время большую популярность и распространение получили сверточные нейронные сети в контексте решения задач классификации. Они работают по принципу выделения особенностей различных уровней абстракции в зависимости от слоя сети  и формирования на их основе предположения о принадлежности какому-либо классу (если данное требуется для решения задачи)[1].

При этом в данных сетях используется несколько наборов весов, изначально выбираемых случайным образом и формируемых в дальнейшем в результате обучения сети [5].

В контексте решаемой задачи, кроме выделения признаков композиций на различных временных промежутках, также желательно проанализировать данные признаки в совокупности, чтобы определить жанр композиции, основываясь на её структуре и последовательной характеристики признаков, а не только по факту наличия этих признаков. Для решения подобного рода задач используются сети, способные к обучению долговременным зависимостям, один из наиболее популярных представителей которых – рекуррентные LSTM-сети [4].

Долгая краткосрочная память (англ. Long short-term memory; LSTM) − разновидность архитектуры рекуррентных нейронных сетей, предложенная в 1997 году Сеппом Хохрайтером и Юргеном Шмидхубером. Характерной особенностью LSTM-сети является возможность выполнения вычислений, характерных для компьютера, при наличии матрицы весов, рассматриваемой как программа. В отличие от традиционных рекуррентных нейронных сетей, LSTM-сеть хорошо приспособлена к обучению на задачах классификации, обработки и прогнозирования временных рядов в случаях, когда важные события разделены временными лагами с неопределённой продолжительностью и границами. В контексте поставленной задачи данное свойство особенно эффективно, так как жанр музыкальных композиций может быть опознан не только по всей композиции целиком, но также и по её ключевым фрагментам.

https://www.youtube.com/watch?v=15ptjks6Z_M

 

Рис. 1. Схема нейронной сети LSTM

 

LSTM состоит из следующих частей [2] (рис.1):

-      вход (input) нейронной сети;

-      выход (output) нейронной сети;

-      внутреннее состояние нейронной сети или запоминающая ячейка (memory cell);

-      фильтр очистки памяти или фильтр забывания (forget gate);

-      входной фильтр или фильтр обновления памяти (input gate);

-      выходной фильтр или фильтр выдачи результата (output gate).

На представленной выше схеме LSTM-сети каждая линия обозначает передачу вектора с выхода одного узла на входы других. Розовые круги обозначают поточечные операции, например, сложение векторов, а желтые прямоугольники – обученные слои. Слияние линий предполагает объединение, а разветвление линии говорит о том, что информация копируется, и копии направляются в разные точки назначения. LSTM-сеть имеет возможность удалять и добавлять информацию в состояние ячейки. Этот процесс регулируется специальными структурами, называемыми гейтами. Гейт – это механизм, позволяющий пропускать информацию избирательно. Он состоит из sigmoid-слоя и операции поточечного умножения. Выходом sigmoid-слоя является число от 0 до 1, которое определяет уровень пропускания. Одна ячейка имеет три гейта, управляющих ее состоянием. На первом этапе необходимо решить, какую информацию следует удалить из состояния ячейки. Это решение принимает sigmoid-слой, называемый «гейтом забывания», принимающий на вход данные из предыдущей ячейки и часть исходных данных. На выходе получается 0 или 1, что означает «забыть» или «не забыть». На следующем этапе необходимо решить, какую новую информацию следует записать в состояние ячейки. Этот этап делится на две части. На первом этапе sigmoid-слой, называемый «входным гейтом» (input gate), решает, какие значения необходимо обновить. Затем tanh-слой создает вектор новых значений-кандидатов, которые могут быть добавлены в состояние ячейки. Затем обновляется предыдущее состояние ячейки до текущего состояния. Состояние ячейки умножается на выход гейта забывания, «забывая» таким образом то, что ранее было решено «забыть». Затем прибавляется новые значения-кандидаты, отмасштабированные соответствующим образом. Наконец, необходимо решить, что следует отправить на выход. Выход будет представлять собой отфильтрованное состояние ячейки. Сначала sigmoid-слой решает, какие элементы состояния ячейки необходимо передать на выход. Затем состояние ячейки преобразуется с помощью tanh-слоя к интервалу от -1 до 1 и умножается на выход sigmoid-слоя, чтобы вывести только то, что было решено вывести [3].

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

В качестве обучающей выборки была использована база аудиозаписей GTZAN, представляющая собой 1000 30-секундных аудиофайлов, по 100 на каждый жанр из 10. Перед подачей записи на входной слой нейронной сети, каждая из них предварительно преобразовывалась в значения коэффициентов на мел-спектрограмме согласно методу, описанному выше.

Для решения задачи распознавания жанра музыкального аудиофайла рассматривались следующие нейронные сети:

− сеть прямого распространения, обученная для классификации входных данных в соответствии с целевыми классами (patternnet);

− самоорганизующаяся карта (selforgmap), распределяющая  набор данных на количество классов, опираясь на сходство шаблонов;

− составная модель нейронной сети из комбинации сверточных и MaxPooling-слоев.

Сеть прямого распространения имеет следующую топологию (рис. 2).

 

Рисунок 2

С помощью Simulink (Matlab) исследована структура сети (рис. 3).

Рисунок 3

В первом слое использована функция активации  tansig(рис. 4).

Рисунок 4

Во втором слое – функция активации softmax (рис. 5).

Рисунок 5

При обучении сети исследовались показатели кросс-энтропии и процент ошибок классификации. Результаты обучения, валидации и тестирования сети представлены на рис. 6.

  

 

Рисунок 6

В Confusion-матрице, представленной на рис. 7, строки соответствуют прогнозируемому классу, а столбцы – истинному классу. Диагональные ячейки представляют правильно классифицированные наблюдения, остальные ячейки соответствуют неправильно классифицированным наблюдениям.

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

Рисунок 7

Самоорганизующаяся карта (selforgmap) имеет следующую топологию (рис. 8):

Рисунок 8

С помощью Simulink (Matlab) исследована структура сети (рис. 9).

Рисунок 9

Используется функция активации compet (рис. 10).

Рисунок 10

Сеть обучена с использованием пакетного алгоритма SOM (trainbu, learnsomb). Результаты работы сети представлены на рис.11.

        

  

Рисунок 11

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

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



Рис. 12. Схема модели полученной нейронной сети

1.    Input (входной слой): размерность – 128

2.    Сверточный (1): размерность: 1, количество фильтров: 256, функция активации: ReLU, размер ядра: 5.

3.    MaxPooling слой (1): размер пула: 2.

4.    Сверточный (2): размерность: 1, количество фильтров: 256, функция активации: ReLU, размер ядра: 5.

5.    MaxPooling слой (2): размер пула: 2.

6.    Сверточный (3): размерность: 1, количество фильтров: 256, функция активации: ReLU, размер ядра: 5.

7.    MaxPooling слой (3): размер пула: 2.

8.    LSTM-слой: выходная размерность: 256, функция активации: гиперболический тангенс.

9.    Dense-слой: выходная размерность: 10, функция активации: softmax.

Эмпирическим путём были также добавлены Dropout-слои с вероятностным коэффициентом 0.5 после каждого сверточного слоя нейронной сети, однако с ними точность сети ухудшилась на ~20% на обучающей выборке.

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

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

Точность модели на тренировочной выборке составила 95%, на тестовой – 60%.

Ниже представлены результаты обучения нейронной сети (рис. 13 − 16).

 

Рисунок 13. График зависимости точности нейронной сети от эпохи обучения

на тренировочной выборке

 

Рисунок 14. График зависимости значения функции потери от эпохи обучения

на тренировочной выборке

Рисунок 15. График зависимости точности нейронной сети от эпохи обучения на тестовой выборке

Рисунок 16. График зависимости значения функции потери от эпохи обучения на тестовой выборке

Результатом работы программы, распознающей жанр композиции с помощью нейронной сети, является следующая диаграмма:

 

Рисунок 17. Диаграмма распределения предположения о жанре музыки программой для тестового примера

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

 

Литература

[1]. И. Заенцев. Нейронные сети: основные модели – Воронеж, 1999. – 74 с.

[2]. Долгая краткосрочная память [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/wiki/Долгая_краткосрочная_памятью - Дата доступа: 25.02.2018

[3]. LSTM – сети долгой краткосрочной памяти [Электронный ресурс]. – Режим доступа: https://habr.com/ru/company/wunderfund/blog/331310/ - Дата доступа: 16.01.2019

[4]. Рекуррентная нейронная сеть. [Электронный ресурс] – Режим доступа: http://mechanoid.kiev.ua/neural-net-lstm.html. – Дата доступа: 14.03.2018.

 [5]. Что такое свёрточная нейронная сеть [Электронный ресурс]. – Режим доступа: https://habr.com/ru/post/309508/ - Дата доступа: 16.01.2019

 

 

Теги

    20.11.2019

    Комментарии