1. Введение

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

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

Для этого проекта я преобразовал аудиосэмплы в спектрограммы и сохранил их как изображения. Образец спектрограммы можно увидеть ниже.

2. Архитектура

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

Автоэнкодер состоит из кодера и декодера. Кодер и декодер основаны на блоках, т.е. я разбиваю исходное изображение (спектрограмму) на блоки одинакового размера (144, 144, 3) и ввожу их в кодировщик. Кодер сжимает исходный блок до размера (9, 9, 1), что соответствует коэффициенту сжатия 0,0013. Поскольку выборки было 671, мой набор данных состоял из 4026 блоков.

Затем я обучил модель автоэнкодера сжимать и реконструировать спектрограммы. Я использовал энкодер для предсказания исходных спектрограмм. Результатом является сжатая версия семплов, в которой извлекаются важные функции. Я использовал эти функции для кластеризации аудиосэмплов с использованием алгоритма K-Means в 20 возможных кластеров.

3.1 Набор данных, детали реализации и спектрограммы

Набор данных состоял из 671 аудиосэмпла продолжительностью 5 секунд. Не было никаких меток, так как аудио нужно было сгруппировать в 20 возможных кластеров. Обучение проводилось, как показано в записной книжке, с использованием графического процессора, что в среднем занимало около двадцати минут для одного эксперимента, в котором модель обучалась в течение 180–200 эпох и останавливалась на основе ранней остановки, которая изучала функцию потери среднеквадратичной ошибки с дельта 0,009 и терпение 15.

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

Я использовал кодировщик для предсказания исходных спектрограмм, чтобы вывести сжатую версию сэмплов, тем самым извлекая важные функции. Я использовал эти функции для кластеризации аудиосэмплов с использованием алгоритма K-Means. Я попробовал спектрограмму; логарифмическую спектрограмму и спектрограмму Mel, как показано на рисунке 2.

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

3.2 Настройка гиперпараметров и результаты

Я пробовал различные структуры моделей как для кодировщика, так и для декодера. Было три основных случая, которые я пробовал для каждого. На рисунках 4 и 5 показана оценка NMI (для 50% набора) для каждого выбора уровня для кодера и декодера соответственно. Каждый случай описан под соответствующими рисунками. Поскольку вариант 3 работал лучше всего, я выбрал слой MaxPooling и Upsampling для сжатия и реконструкции, а также слои свертки и деконволюции для увеличения и уменьшения карт объектов.

Я также пробовал различные размеры пакетов, и размер пакета 4 работал лучше всего, как показано на рисунке 6. На рисунке 7 показаны потери при обучении для используемой модели автоэнкодера. На рис. 8 показано постепенное улучшение по мере того, как я проводил больше экспериментов, настраивал параметры и изменял структуру на основе производительности предыдущих экспериментов.

4. Заключение

Существует множество возможных сетей, которые можно использовать для кодирования и декодирования изображений, то есть для сжатия и восстановления входного изображения. Для этого задания я выбрал 18-слойную структуру нейронной сети автоэнкодера, которая извлекала функции, сгруппированные с помощью K-средних, и достигла оценки NMI 0,3943 для 50% аудиосэмплов.

Ссылки

[1] Учебное пособие по Matplotlib: https://matplotlib.org/
[2] Автоэнкодеры Keras: https://blog.keras.io/building-autoencoders-in-keras.html
> [3] Анализ аудиоданных с использованием глубокого обучения с помощью Python (часть 1). https://www.kdnuggets.com/2020/02/audio-data-analysis-deep-learning-python-part-1.html