Pull to refresh
357.46
ГК ЛАНИТ
Ведущая многопрофильная группа ИТ-компаний в РФ

Создаем музыку: когда простые решения превосходят по эффективности глубокое обучение

Reading time 9 min
Views 26K
Original author: Haebichan Jung
Представляю вашему вниманию перевод статьи «Создаем музыку: когда простые решения превосходят по эффективности глубокое обучение» о том, как искусственный интеллект применяется для создания музыки. Автор не использует нейронные сети для генерации музыки, а подходит к задаче, исходя из знания теории музыки, на основе мелодии и гармонии. Другой особенностью статьи является метод сравнения музыкальных произведений на основе матриц самоподобия. Такой подход, конечно, не является исчерпывающим, но он полезен как промежуточный шаг для генерации качественной музыки методами машинного обучения.


Использование искусственного интеллекта в творчестве сегодня стало встречаться все чаще и в развлекательных целях, и в коммерческих и уже перестало удивлять публику. С одной стороны — это  инструменты смены стиля изображения типа Prizma. С другой — нейронная сеть, продукт работы которой был продан в виде картины на аукционе Christieʼs за 432,5 тысячи долларов. Нельзя не вспомнить нашего отечественного специалиста по генерации музыки с помощью машинного обучения Ивана Ямщикова, несколько лет назад представившего проект «Нейронная оборона» (подробнее можно прочитать здесь, а это интервью Ивана на Хабре). Другим хорошим примером использования нейронных сетей для генерации музыки может быть статья «Мечтают ли андроиды об электропанке? Как я учил нейронную сеть писать музыку» эксперта Artezio.

Помимо понимания теории машинного обучения, использование искусственного интеллекта для решения творческих задач предполагает также наличие экспертизы в доменной области искусства. Это делает проект на стыке двух областей особенно многогранным и интересным, но и уязвимым для критики с двух сторон, т. к. проект может попасть под перекрестный огонь замечаний и от искусствоведов, и от data scientist-ов.

Расширяя свой кругозор в рамках темы использования искусственного интеллекта в музыке, я встретил статью «Создаем музыку: когда простые решения превосходят по эффективности глубокое обучение», перевод которой хотел бы представить сообществу Хабра. Одним  из достоинств этой статьи для меня стало то, что автор не использует нейронные сети как черный ящик, а подходит к задаче генерации музыки, исходя из знания теории музыки, на основе мелодии и гармонии. В представленной статье не используются ни рекуррентные нейронные сети (RNN, LSTM), ни генеративные состязательные сети (GAN), — все эти методы дают поразительные результаты (например, в статье «Мечтают ли андроиды об электропанке? Как я учил нейронную сеть писать музыку»), и мы активно их используем в решении наших задач в компании CleverData. Автор сделал упор на модели на основе марковских цепей, дающих возможность работать с  вероятностями перехода от текущего состояния музыкального произведения в последующее. В используемых автором методах есть дополнительное достоинство: автору не пришлось жертвовать интерпретируемостью  результата в угоду использования модного и популярного алгоритма.

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


* * *


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

План


Задача: как я столкнулся с проблемами при использовании техник глубокого обучения для создания поп-музыки.
Решение: как я создал собственную машину для создания музыки, которая могла бы конкурировать с глубоким обучением, но на основе более простых решений.
Оценка: как я создал оценочную метрику, которая могла бы математически доказать, что моя музыка «больше похожа на поп», чем та, что создана при помощи глубокого обучения.
Обобщение: как я нашёл способ применять своё решение к проблемам, не связанным с созданием музыки.


Вишенка на торте


Я создал простую вероятностную модель, генерирующую поп-музыку. Также, используя объективную метрику, я могу с уверенностью сказать, что музыка, созданная моей моделью, больше похожа на поп-музыку, чем та, что была создана с применением техник глубокого обучения. Как я это сделал? Частично, я достиг этого, сфокусировавшись на том, что для меня – суть поп-музыки: на статистической взаимосвязи между гармонией и мелодией.

Мелодия — это вокал, мотив. Гармония — это аккорды, последовательность аккордов. На рояле мелодия играется правой рукой, а гармония — левой.

Задача


Прежде чем углубиться в их отношения, позвольте мне сначала очертить проблему. Проект начался с моего желания попробовать создать музыку при помощи глубокого обучения – ИИ, как называют это непрофессионалы. Довольно быстро я пришёл к LSTM (долгая краткосрочная память, long short-term memory), одной из версий рекуррентной нейронной сети (RNN), очень популярной при генерировании текстов и создании музыки.

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

Одно конкретное предположение — это независимая связь между гармонией и мелодией (определение этих двух см. выше).

Например, рассмотрим публикацию Университета Торонто от 2017 года «Song from Pi: A Musically Plausible Network for Pop Music Generation» (Хан Чу и др.). В этой статье авторы явно «предполагают… аккорды не зависимы от мелодии» (курсив мой). Основываясь на этом предположении, авторы построили сложную многослойную RNN-модель. Для мелодии выделен отдельный слой, где создаются ноты (слой key, слой press), не зависимый от слоя аккордов (Chord Layer). Помимо независимости, эта конкретная модель предполагает, что гармония опирается на мелодию. Другими словами, гармония зависит от мелодии при генерации нот.

RNN-модель, предложенная Хан Чу. Каждый слой отвечает за отдельный аспект музыки.

Такой способ моделирования кажется мне очень странным, поскольку это совсем не похоже на то, как люди подходят к написанию поп-музыки. Будучи пианистом классической школы, я никогда не рассматривал сочинение мелодии без того, чтобы сначала обозначить гармонию. Гармония определяет и ограняет мелодию. Axis of Awesome в своём когда-то вирусном видео давно уже продемонстрировали правдивость этой идеи.


Это видео демонстрирует главное свойство западной поп-музыки: эта гармония, эти четыре аккорда сильно влияют на то, какой в итоге будет мелодия. Говоря языком Data Science, условная вероятность регулирует и определяет статистическую связь между гармонией и мелодией. Так происходит, потому что ноты мелодии, естественно, зависят от нот гармонии. Таким образом, можно утверждать, что ноты гармонии по своей сути указывают, какие мелодические ноты могут быть выбраны в конкретной песне.

Решение


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

(Обработка) данных


В качестве данных я использовал 20 разнообразных западных поп-песен в midi формате (полный список песен можно найти здесь).

Используя библиотеку music21 python, я проанализировал midi-файлы при помощи цепи Маркова. Это позволило мне выделить статистические взаимоотношения между разными типами нот в моих входящих данных. В частности, я рассчитал вероятности перехода моих музыкальных нот. По сути, это означает, что наблюдая переход нот от одной к другой, мы можем вычислить вероятность того, что этот переход произойдет. (Более подробное объяснение ниже)

Midi: диджитал-версия песни

Сначала я извлек «вертикальные» вероятности перехода между нотами гармонии и нотами мелодии. Я также рассчитал все «горизонтальные» вероятности перехода между нотами мелодии в соответствии с набором данных. Я провел эту процедуру и для нот гармонии. Таблица ниже демонстрирует пример трех разных переходных матриц между различными типами нот в музыкальных данных.

Варианты перехода, варианты. Верхняя – между нотами гармонии и мелодии. Средняя – между нотами мелодии. Нижняя – между нотами гармонии.

Модель


Опираясь на эти три модели вероятностей, моя модель будет действовать следующим образом:

  1. Выбирает произвольную доступную ноту гармонии;
  2. Выбирает ноту мелодии, основываясь на ноте гармонии, используя первую вероятностную матрицу;
  3. Выбирает ноту мелодии, опираясь на предыдущую ноту мелодии, согласно второй матрице вероятности;
  4. Повторяет шаг 3, пока не достигнет определённого завершения;
  5. Выбирает новую ноту гармонии, опираясь на предыдущую ноту гармонии, используя третью матрицу вероятности;
  6. Повторяет шаги 1-4, пока не достигнет завершения.



Конкретный пример применения алгоритма:

  1. Программа выбрала гармоническую ноту ( F ).
  2. У этой ноты есть 4 варианта нот мелодии. Используя первую матрицу переходов, система выбирает ноту ( C ), учитывая высокую вероятность её использования (24,5%).
  3. Эта нота ( C ) переходит ко второй матрице перехода, останавливая выбор на ноте мелодии (A), основываясь на её частотности (88%).
  4. Шаг 3 будет повторяться, пока процесс не достигнет предустановленной точки завершения;
  5. Нота гармонии (F), обратившись к третьей вероятностной матрице, выберёт следующую гармоническую ноту. Это будет либо ( F ), либо ( C ), учитывая их схожесть.
  6. Шаги 1-4 будут повторяться, пока процесс не завершится.

Здесь можно послушать пример поп-музыки, созданной подобным образом:



Оценка


Здесь начинается сложная часть – как оценить разные модели. В конце концов моя статья предполагает, что простые вероятности могут быть полезнее нейронных сетей. Но как нам оценить отличие моей модели от модели, построенной нейронной сетью? Как мы можем объективно заявить, что моя музыка больше похожа на поп, чем музыка, написанная ИИ?

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

Например, строчка «Let it go, let it go, can’t hold it back anymore…» скорее встретится в серединной части, чем в конце или начале. И трижды повторится в течение песни.

Держа это в уме, мы можем прибегнуть к так называемой матрице самоподобия. Говоря проще, матрица самоподобия математически выражает начало, середину, конец песни. Ниже представлена матрица для песни Falling Slowly из фильма «Однажды».


Каждый маленький сегмент представляет ноту. Каждый большой блок на 45 градусов представляет какую-то часть песни.

Первый темный кластер представляет начало песни, следующий жёлтый – следующий сегмент песни. Первый и третий кластеры похожи по цвету, так как они схожи друг с другом, равно как и второй и четвёртый.

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

Результаты


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

До и после применения матрицы самоподобия

Сравните с матрицей самоподобия музыки, созданной нейронной сетью в Университете Торонто:


Именно таким образом можно сравнивать и оценивать разные модели – основываясь на их матрицах самоподобия!


Обобщение


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

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

Например, вот отрывок из I’ll Be Эдварда МакКейна:

I’ll be your cryin’ shoulder
I’ll be love suicide
I’ll be better when I’m older
I’ll be the greatest fan of your life


Разберём по косточкам текст, используя те же самые приёмы машинного обучения. Мы можем засчитать ‘I’ll be’ как первое исходное слово в языковой модели. Оно будет использовано для генерации ‘your’, из которого выходит ‘crying’, откуда уже появляется ‘shoulder’.


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

Я считаю, что ответ – нет. Предложение заканчивается на ‘shoulder’, следующее начинается с повторения первого — ‘I’ll be’. Это связано с тем, что первые слова каждого предложения намеренно повторяются, что означает, что между первыми словами каждого предложения существует аналогичная условная связь. Эти первые слова становятся триггерной точкой для последовательности следующих слов.



Мне кажется, это потрясающее открытие. Похоже, что и поп-музыка, и тексты поп-песен имеют внутреннюю структуру, зависящую от содержания. Правда, здорово?

Смотреть проект на github

* * *


Безусловно, предлагаемый в статье подход нельзя считать исчерпывающим. Отдельно стоит заметить, что методы работы с текстами сейчас претерпевают подъем и активно развиваются, поэтому взгляд автора на тексты песен не удивит специалистов NLP (Natural Language Processing). Тем не менее, оригинальная статья автора выглядит как полезный промежуточный шаг для генерации качественной музыки методами машинного обучения.

За последнее время широкой публике был предложен ряд приложений на основе нейронных сетей, генерирующих музыку. Например, есть возможность генерировать техно музыку на сайте: eternal-flow.ru. Автор решения предлагает и мобильное приложение для генерации музыки. Известно и другое приложение для генерации музыки на мобильных устройствах: mubert.com. Любопытное решение посвящено более динамичному жанру death metal. Его создатели DadaBots стримят на youtube непрерывный поток музыки, генерируемой нейронной сетью. При том DadaBots на этом не останавливаются и открывают публике искусственные музыкальные произведения в стиле панк и прогрессив рок. И конечно нельзя обойти вниманием результаты от OpenAI, предлагающей всем желающим эксперименты с музыкой в широких жанровых рамках от Моцарта до The Beatles. На сайте openai.com можно послушать, как выглядело бы развитие темы Гарри Поттера в стиле Фрэнка Синатры или Петра Ильича Чайковского.

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

Вакансии ГК ЛАНИТ можно посмотреть здесь.
Tags:
Hubs:
+68
Comments 37
Comments Comments 37

Articles

Information

Website
lanit.ru
Registered
Founded
Employees
over 10,000 employees
Location
Россия
Representative
katjevl