Генерация классической музыки с помощью рекуррентной нейросети

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

    К сожалению, на GT нельзя встроить аудиофайл, поэтому приходится давать прямую ссылку, чтобы послушать один из результатов: http://hexahedria.com/files/nnet_music_2.mp3.

    Как у него это получилось?

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

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



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



    Но в такой сети нет механизма получения гармоничных аккордов: на выходе каждая нота совершенно независима от других.

    Чтобы добиться сочетания нот, Джонсон использовал модель типа RNN-RBM, где одна часть нейросети отвечает за время, а другая часть — за созвучные аккорды. Чтобы обойти ограничения RBM, он придумал внедрить две оси: для времени и для нот (и псевдоось для направления вычислений).



    С помощью библиотеки Theano автор сгенерировал нейросеть по своей модели. Первый слой с осью по времени принимал на входе следующие параметры: позиция, высота звука, значение окружающих нот, предыдущий контекст, ритм. Затем срабатывали самогенерирующие блоки на основе кратко-долговременной памяти (LSTM): в одном рекуррентные соединения направлены по оси времени, в другом — по оси нот. После завершающего блока LSTM находится простой нерекуррентный слой для выдачи конечного результата, у него два значения на выходе: вероятность воспроизведения для конкретной ноты и вероятность артикуляции (то есть вероятность того, что нота будет сочетаться с другой).

    Во время тренировки использовался случайным образом выбранный набор коротких музыкальных фрагментов из MIDI-коллекции Classical Piano Midi Page. Затем слегка поиграли с логарифмами, чтобы параметр кросс-энтропии на выдаче был хотя бы не слишком низким. Для гарантированной специализации слоев применили такой прием как dropout, когда на каждом шаге тренировке случайно исключали половину скрытых узлов.

    Практическая модель состояла из двух скрытых слоев по времени, каждый из 300 узлов, и двух слоев по оси нот, на 100 и 50 узлов, соответственно. Тренировка проводилась в виртуальной машине g2.2xlarge в облаке Amazon Web Services.

    Результаты



    Исходный код программы опубликован на Github.
    Поддержать автора
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 46

      +16
      Через несколько лет заголовки:
      — Генерация седьмого сезона «Домохозяек» с помощью рекуррентной нейросети.
      — «Миссия невыполнима», режиссура и сценарий рекуррентной нейросети.
      — …
        0
        Для этого по моему уже сейчас достаточно рандома и универсального листика для творчества им. Остапа Бендера.
          0
          Ага, а дальше Старший Брат смотрит на тебя, Министерство правды и т.д…
          +2
          Очень интересно получилось. Что скажут профессиональные музыканты и ценители классической музыки?
            +1
            Скажу, что никакого отношения к классической музыке сии опусы не имеют.
            В классической музыке главное — это мысль и движение, которых нейросеть сгенерировать в принципе не может.
            condor-wing.com/post/95910250109/fugue-mathematics

            Добавлю, что про программы, генерирующие «неплохие струнные квартеты в стиле позднего Моцарта» рассказывал ещё Воннегут во «Времятрясении». 15 лет прошло, неплохих квартетов как-то не появилось. Я больше скажу, люди-то не в состоянии написать классическую музыку, какие там роботы.
              0
              Интересно, можно ли доказать невозможность генерации музыкальной мысли и движения?

              Мне кажется, если данную нейросеть вложить в нейросеть более высокого уровня, отвечающую за музыкальную форму (пусть фиксированную), то результат будет интереснее. Мне кажется, форма посредством тренировки нейросети может повлиять на структуру мотивов, хотя это надо проверять.
          +4
          Похоже на игру на рояле человека, который очень аккуратно и вовремя нажимает клавиши, но делает это совершенно рандомным образом.
            +2
            Не совсем так. Если бы случайно, была бы не музыка. В предложенных примерах гармония наблюдается.

            Вспомнилось, что лет 25 назад я экспериментировал с генерацией музыки на Атари. Пробовал рандомно — это невозможно назвать музыкой. Затем пробовал фрактально с четырьмя повторами смещаясь по нотам. Уже похоже, но жутко негармонично. Далее надо было бы разобраться с аккордами, но уже не до того было. А тема интересная. Думаю, что генераторов музыки уже много разных есть. Кто бы обзор сделал.
              +1
              Рандомно — с точки зрения человека, который впервые сел за рояль ;) Т.е. не совсем равномерное/нормальное/экспоненциальное распределение, но все-таки этот человек не знает, что произойдет, если после нот до, ре, ми нажать, например, одновременно до и соль следующей октавы.
                +3
                Гармония наблюдается (невеликая сложность, кстати говоря), мысль и структура музыкального произведения — нет.
                  0
                  Да что за «мысль» то такая? Что за структура? Нет в теории музыки никаких структур и мыслей.
                    0
                    Структура — музыкальная форма произведения, совокупность частей (вступление, экспозиция, разработка, реприза, кода и т.п). Музыкальная мысль — в общем смысле это какая-то идея, например мелодия или лейтмотив, который развивается и изменяется (или наоборот, остаётся неизменным) в процессе эволюции самого произведения, и несёт какую-то художественную функцию.
                      0
                      С формой понятно, но слово использовано все-же другое. С мыслью притянуто за уши: давайте говорить о мелодии, лейтмотиве и идее, но не о мысли.
                        0
                        «Мысль» — это что-то эфемерное, типа «что хотел сказать автор». Без предыстории произведения и/или говорящего названия слушатель вполне может найти в нем какую-то свою мысль, или же вообще не уловить никакой. В то же время, если выложить на оценку автосочиненную композицию не как «результат_работы_программы_номер_н.mp3», а как с осмысленным названием (типа «ледоход на Енисее») и подписать живым человеком, то кто-нибудь какую-нибудь мысль да найдет.
                          0
                          Не вижу ничего эфемерного в процессе мышления. А из всего сказанного вами, могу сделать только один вывод: не нужно искать смысл там, где его нет
                          0
                          Если воспроизвести, например, «Реквием» Моцарта человеку, который до этого его не слышал, человек абсолютно точно определит о чём произведение, его «мысль».
                0
                Нравится классическая музыка, хотя не являюсь её знатоком.

                Из того что довелось услышать, лично мне больше всего напоминает творчество Ференца Листа.
                +12
                Это не музыка. И даже не ар брют) Это довольно примитивные звуковые текстуры, полученные в результате чередования кластеров (в виде аккордов и арпеджио) в родственных тональностях — видимо так автор реализовал понятия гармонии, мелодии и модуляции в музыке. В этих текстурах вариативность присутствует только в высоте тона и длительности нот, при этом никакого разнообразия в динамике, артикуляции, темпе, настроении и т.п. Но главное, что у этих текстур нет целостной музыкальной идеи. Эта «музыка» не вызывает никаких эмоций и ничего не выражает, кроме способности избегать явных диссонансов.
                  +5
                  Да, музыка жутко неприятная. Постоянно хочется какого-нибудь осмысленного окончания фразы, а она как-то бесконечно тянется, а потом начинается следующая. Ни замысла, ни настроения не уловить. Это напрягает.

                  У взрослых людей в лобных долях мозга рождаются так называемые «волны ожидания», которые обычно прекращаются по сигналу «Дождались!». Это как раз та фишка, из-за которой приятно заканчивать статьи, рисунки, стихи, любую работу и т.д. В человеческой музыке таким сигналом, наверное, служит именно финал фразы. Для определённого эффекта, финала может и не быть, что делается умышленно для более приятного ощущения где-то позже. Если же «волны ожидания» бесконечно наслаиваются друг на друга (есть у них свойство не затухать без ожидаемого результата) — это путь к нервному срыву. Это уже из серии бюрократии: когда для одной подписи нужно собрать ещё десять бумажек, для тех — ещё сто, затем… ты уже жалеешь, что связался, плюёшь на всё это, а волны в лобных долях никуда сами не уходят. Так что музыкой нейронных сетей не стоит чересчур увлекаться.

                  Но в научном плане это, конечно, великолепно.
                  +6
                  Четвёртый трек, в районе 50ой секунды — явно переклинило.

                  В остальном, для неподготовленного уха — сумбурная музыка в стиле лиспа. То есть Листа.
                    0
                    странно, что никто не залил до меня


                  • НЛО прилетело и опубликовало эту надпись здесь
                      +5
                      Простите своих родителей и не вините музыку вместо них.
                      • НЛО прилетело и опубликовало эту надпись здесь
                          0
                          Да ладно, Вы слишком категоричны. :) Меня вот тоже родители отправили на 7 лет в музыкалку по фортепиано. Я тоже страдал, проигрывая по 40 раз гаммы, когда из окна доносились голоса играющих друзей-подружек, с которыми я не мог пойти поиграть.
                          Я тоже невзлюбил классическую музыку.
                          Тем не менее сейчас могу послушать её как почти любую другую. Да, я не испытываю к ней какой-то любви, я не понимаю её глубоко и качественно, вряд ли смогу отличить по стилю разных композиторов, если играют 2 ранее не слышанных произведения. Но как музыка для релаксации и приятный фон мне кассика вполне подходит. Дело не в классике, а в ошибочном выборе родителей.
                            0
                            Не спит трёхглавый дракон.
                            Рок, джаз и классика — он.
                            Но мы пришли всех спасти от могилы
                            Наша броня — три кита,
                            Точней три богатыря
                            Наши славные три аккорда
                          +1
                          Ну зато вы теперь точно знаете, что вы не годитесь в музыканты. А кто-то, возможно, не стал гениальным музыкантом только из-за того, что его насильственно не затолкали в музыкальную школу. И этот кто-то никогда об этом не узнает…
                          • НЛО прилетело и опубликовало эту надпись здесь
                            0
                            > Даже самую примитивную, самую убогую попсу более-менее слушабельно сгенерировать не удастся
                            Потому что она уже вся сгенерирована? :) Если академическая музыка предполагает какое-то количество вариаций по законам гармонии, то подавляющее большинство попсы последние десятилетия держится на одних и тех же последовательностях, транспонируемых под диапазон данного певца. С годами меняются только тембры в соответствии с техническими возможностями и модой.
                            • НЛО прилетело и опубликовало эту надпись здесь
                              • НЛО прилетело и опубликовало эту надпись здесь
                                  0
                                  Интересно, а как вы относитесь к творчеству Шуберта? Многие как раз его считали лопухом, хотя мне его произведения нравятся больше чем бесконечные пассажи Моцарта и прочих классиков.

                                  Я думаю не стоит забывать, что классическая музыка тоже разная. Многие произведения которые вроде как относят к оной писались под заказ тупо чтобы было что сыграть на коктейле. В то же время, концерты Рахманинова (2) и Чайковского (для скрипки), ноктюрны Шопена (48!) сюда точно не отнести.

                                  Я подозреваю, что вас просто изнасиловали ортодоксами, вот вы и навесили клеймо на всю тему. Точно так же как в литературе, мне кажется, стоит смотреть только на конкретные произведения. Обожествлять «все классическое» без разбора и собственного анализа, — имхо, удел махровых гуманитариев.

                                  P.S.: Стравинский мне тоже не нравится :)
                                    0
                                    Спасибо Вам :) Залип на Стравинском. Потом на Прокофьеве. Сейчас слушаю какую-то двухчасовую подборку инструментального джаза с ютюба.

                                    А вино Вы какое предпочитаете: красное или белое?
                                    А сыр: сорта с плесенью или «косичку»?

                                    Вопрос в тему, если что. Хотя обсуждения тут уже, вероятно, все закончились. Но просто любопытно.
                                    +1
                                    У вас странное понятие мелодии, не поделитесь определинием? Не спора ради, просто интересно.
                                    В популярной музыке, действительно, очень легко уловить мелодию, на то она и популярная, вот только она, как правило, не сильно оригинальна. Цепляющая мелодия (типа знаменитого хода вверх-вниз в Gimme Gimme Gimme Аббы или, из недавнего, Move Like Jagger в слове Move) в популярной песне встречается крайне редко и практически гарантирует ей долгую жизнь в хитпарадах (обратное, впрочем, неверно — в хитпарад легко может затесаться реп-трек, не содержащий вообще никакой мелодии).

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

                                    > «Петрушка» Стравинского
                                    Вот тут уж без холивара не обойтись. Серьезно? Там очень красивая и ясная мелодия во многих частях (в «гуляниях», или знаменитейшем «русском танце»). Вас насильно заставляли его слушать? Били пюпитром?

                                    > классический джаз, тоже бессмысленный набор бессмысленных звуков, абсолютно без даже намёков на какую бы то ни было мелодию
                                    Что вы подразумеваете под классическим джазом? Если взять джазовые стандарты (т.е. поп-музыка прошлых лет, типа Fly Me to the Moon, Girl from Ipanema, Autumn Leaves, итд, даже не залезая на территорию Мингуса и Колтрейна), то в них мелодия проще и доступнее некуда, они очень цепкие и певучие. Современный джаз — другое дело, но и там мелодическая составляющая никуда не делась, просто она стала сложнее.
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                        +1
                                        Тогда это не «нет мелодии» и не «генератор абсолютно случайных чисел», а «я не слышу в этом мелодии». Слово «ИМХО» не убавляет категоричности заявления :)

                                        Я не музыкант, и не знаю, что там происходит с точки зрения законов композиции, но я сижу и невольно про себя напеваю «Русский Танец» из Петрушки, «Hail, Mortal» из Midsummer Night Dream Бриттона или саксофон из «The birds near her house» Лури (http://www.youtube.com/watch?v=B4qr28LU9VQ), и это дает мне основания полагать, что там есть ясная, закономерная и очень цепляющая (продюсеры поп-музыки называют это «hook») мелодия, которую еще фиг выкинешь из головы. На хаотический набор не тянет.

                                        Аналогия с текстом: конечно, донести идею (как факт) до читателя короче и проще языком википедии или Донцовой, но язык Джойса или Д. Ф. Уоллиса позволит получать удовольствие от самого процесса поглощения информации, раз за разом открывая для себя текст с другой стороны при новом прочтении. Это не годится для технической статьи, которая ценна лишь идеей, но, напротив, важно для художественного произведения.
                                        • НЛО прилетело и опубликовало эту надпись здесь
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                              0
                                              Музыка — понятие многогранное и сложное. Послушал упомянутый трек и могу сказать — чёткой аккуратной мелодии и правда нет, но тем не менее то, что есть, подчиняется определённым законам, заложенным композитором, и создают свою атмосферу. Это как в литературе: есть стихотворения, на первый взгляд, совершенно бессмысленные, состоящие из набора слов, но тем не менее те слова и обороты, которые там используются, задают свою особую атмосферу. Просто воспринимать это нужно на ином уровне абстракции. Ну и да, подобное творчество на любителя и под настроение.
                                0
                                Мне кажется в алгоритме не хватает учета положения ноты внутри фразы для вычисления вероятности её тона и длительности, так музыка была бы более приятной. Ну хотя бы для последних нот в тактах конца предложения и всей фразы. Даже наверное можно начинать генерировать музыку с расстановки этих нот, а дальше заполнять пространство остальными нотами.

                                Мне нравится в этом плане «Каприс №24» Паганини. Во всех вариациях самые «главные» во фразе ноты сидят на одних и тех же своих местах, остальные заменяются. Музыка получается по ощущениям как-будто разная. Это произведение просто хрестоматия по алгоритму генерации мелодий
                                  0
                                  Первый слой с осью по времени принимал на входе следующие параметры: позиция, высота звука, значение окружающих нот, предыдущий контекст, ритм.


                                  Жирным выделил, наверное, самое интересное в данном исследовании. Интересно, как этот контекст определялся?

                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                  Самое читаемое