Хабрахабр

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

Представляю вашему вниманию перевод статьи «Создаем музыку: когда простые решения превосходят по эффективности глубокое обучение» о том, как искусственный интеллект применяется для создания музыки. Автор не использует нейронные сети для генерации музыки, а подходит к задаче, исходя из знания теории музыки, на основе мелодии и гармонии. Другой особенностью статьи является метод сравнения музыкальных произведений на основе матриц самоподобия. Такой подход, конечно, не является исчерпывающим, но он полезен как промежуточный шаг для генерации качественной музыки методами машинного обучения.

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

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

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

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

* * *

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

План

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

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

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

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

Задача

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

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

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

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

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

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

Вакансии ГК ЛАНИТ можно посмотреть здесь.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»