В наше время обучаемые нейросети творят удивительные вещи, но эксперименты в этой области продолжают открывать нечто новое. Например, программист Даниэль Джонсон (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.

Комментарии (45)


  1. Danov
    09.08.2015 21:50
    +16

    Через несколько лет заголовки:
    — Генерация седьмого сезона «Домохозяек» с помощью рекуррентной нейросети.
    — «Миссия невыполнима», режиссура и сценарий рекуррентной нейросети.
    — …


    1. Halt
      11.08.2015 15:13

      Для этого по моему уже сейчас достаточно рандома и универсального листика для творчества им. Остапа Бендера.


    1. SlimHouse
      27.08.2015 20:54

      Ага, а дальше Старший Брат смотрит на тебя, Министерство правды и т.д…


  1. stalinets
    09.08.2015 22:26
    +2

    Очень интересно получилось. Что скажут профессиональные музыканты и ценители классической музыки?


    1. forgotten
      10.08.2015 09:18
      +1

      Скажу, что никакого отношения к классической музыке сии опусы не имеют.
      В классической музыке главное — это мысль и движение, которых нейросеть сгенерировать в принципе не может.
      condor-wing.com/post/95910250109/fugue-mathematics

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


      1. leggiermente
        10.08.2015 17:08

        Интересно, можно ли доказать невозможность генерации музыкальной мысли и движения?

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


        1. forgotten
          10.08.2015 17:17
          +1

          Я пытался много раз, но скептиков здесь не любят.
          blogovodoved.livejournal.com/4127.html


  1. denis_g
    09.08.2015 22:38
    +4

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


    1. Danov
      09.08.2015 22:48
      +2

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

      Вспомнилось, что лет 25 назад я экспериментировал с генерацией музыки на Атари. Пробовал рандомно — это невозможно назвать музыкой. Затем пробовал фрактально с четырьмя повторами смещаясь по нотам. Уже похоже, но жутко негармонично. Далее надо было бы разобраться с аккордами, но уже не до того было. А тема интересная. Думаю, что генераторов музыки уже много разных есть. Кто бы обзор сделал.


      1. denis_g
        10.08.2015 00:24
        +1

        Рандомно — с точки зрения человека, который впервые сел за рояль ;) Т.е. не совсем равномерное/нормальное/экспоненциальное распределение, но все-таки этот человек не знает, что произойдет, если после нот до, ре, ми нажать, например, одновременно до и соль следующей октавы.


      1. forgotten
        10.08.2015 09:19
        +3

        Гармония наблюдается (невеликая сложность, кстати говоря), мысль и структура музыкального произведения — нет.


        1. Renius
          12.08.2015 00:22

          Да что за «мысль» то такая? Что за структура? Нет в теории музыки никаких структур и мыслей.


          1. versia
            12.08.2015 01:30

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


            1. Renius
              12.08.2015 11:39

              С формой понятно, но слово использовано все-же другое. С мыслью притянуто за уши: давайте говорить о мелодии, лейтмотиве и идее, но не о мысли.


              1. Fuzzyjammer
                12.08.2015 12:15

                «Мысль» — это что-то эфемерное, типа «что хотел сказать автор». Без предыстории произведения и/или говорящего названия слушатель вполне может найти в нем какую-то свою мысль, или же вообще не уловить никакой. В то же время, если выложить на оценку автосочиненную композицию не как «результат_работы_программы_номер_н.mp3», а как с осмысленным названием (типа «ледоход на Енисее») и подписать живым человеком, то кто-нибудь какую-нибудь мысль да найдет.


                1. Renius
                  16.08.2015 10:16

                  Не вижу ничего эфемерного в процессе мышления. А из всего сказанного вами, могу сделать только один вывод: не нужно искать смысл там, где его нет


  1. valemak
    10.08.2015 01:17

    Нравится классическая музыка, хотя не являюсь её знатоком.

    Из того что довелось услышать, лично мне больше всего напоминает творчество Ференца Листа.


    1. Muxto
      10.08.2015 10:24
      +4

      Тайна раскрыта.
      Лист был нейросетью.


      1. valemak
        10.08.2015 12:43

        Не, ну, правда, похоже.

        Вот например, возьмём фрагмент из «Годы странствий».

        И сравним теперь вот с нейросетевым творчеством.


      1. EugeneButrik
        10.08.2015 14:41
        +2

        Было бы удивительно если бы Лист не был нейронной сетью )


  1. versia
    10.08.2015 02:12
    +12

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


    1. youree
      10.08.2015 04:39
      +5

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

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

      Но в научном плане это, конечно, великолепно.


  1. amarao
    10.08.2015 03:33
    +6

    Четвёртый трек, в районе 50ой секунды — явно переклинило.

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


  1. Muxto
    10.08.2015 10:22

    странно, что никто не залил до меня


    1. AlexanderYastrebov
      11.08.2015 00:16
      -2

      или это
      image


  1. pfemidi
    10.08.2015 10:26

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

    Я всегда знал что сопли вида «Классическая музыка вечна! Это не то что [тут подставить по вкусу любое то, что не нравится апологету классической музыки]!» не более чем сопли. Даже самую примитивную, самую убогую попсу более-менее слушабельно сгенерировать не удастся, а вот классическую музыку, набор звуков очередного «ре диез минор» или «си бемоль мажор» — запросто.


    1. evocatus
      10.08.2015 11:10
      +5

      Простите своих родителей и не вините музыку вместо них.


      1. pfemidi
        10.08.2015 11:22

        Может быть в следующей жизни я смогу хоть как-то воспринимать классическую музыку, но не в этой. В этой у меня возникает только желание немедленно уничтожить источник этой музыки чтобы дать отдых ушам (это не относится к mp3 из этой статьи, вот они прям бальзам на душу, типа «Вот вам, бетховены! Вот вам, моцарты! Любой компьютер, даже любой дебил способен сочинить то, что насочиняли вы!»)


        1. stalinets
          10.08.2015 21:56

          Да ладно, Вы слишком категоричны. :) Меня вот тоже родители отправили на 7 лет в музыкалку по фортепиано. Я тоже страдал, проигрывая по 40 раз гаммы, когда из окна доносились голоса играющих друзей-подружек, с которыми я не мог пойти поиграть.
          Я тоже невзлюбил классическую музыку.
          Тем не менее сейчас могу послушать её как почти любую другую. Да, я не испытываю к ней какой-то любви, я не понимаю её глубоко и качественно, вряд ли смогу отличить по стилю разных композиторов, если играют 2 ранее не слышанных произведения. Но как музыка для релаксации и приятный фон мне кассика вполне подходит. Дело не в классике, а в ошибочном выборе родителей.


        1. nickolaym
          11.08.2015 01:46

          Не спит трёхглавый дракон.
          Рок, джаз и классика — он.
          Но мы пришли всех спасти от могилы
          Наша броня — три кита,
          Точней три богатыря
          Наши славные три аккорда


    1. evtomax
      10.08.2015 13:27
      +1

      Ну зато вы теперь точно знаете, что вы не годитесь в музыканты. А кто-то, возможно, не стал гениальным музыкантом только из-за того, что его насильственно не затолкали в музыкальную школу. И этот кто-то никогда об этом не узнает…


      1. pfemidi
        10.08.2015 14:29

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


    1. Fuzzyjammer
      10.08.2015 14:33

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


      1. pfemidi
        10.08.2015 15:18
        +1

        Нет, не потому что попса уже вся сгенерирована. Просто в попсе, даже самой убогой, кроме нот и различных доминантсептаккордов с трезвучиями присутствует ещё и мелодия, а в классической музыке мелодии никакой нет. IMHO. Из современного этим же характерен классический джаз, тоже бессмысленный набор бессмысленных звуков, абсолютно без даже намёков на какую бы то ни было мелодию. Опять IMHO. Для классической музыки достаточно периодического опроса /dev/random для получения очередной базовой ноты, после построение требуемого аккомпанимента для этой ноты, обыгрывания вокруг этой самой ноты и корректного с точки зрения обычных правил сольфеджио разрешения последнего, или предпоследнего с последним, пассажа/аккорда. С чем, как видно из данной статьи, прекрасно справляются обучаемые нейросети — обучить их правилам и можно выдавать на-гора кучу новых симфоний, сюит и кантат ничуть не хуже, чем написанные классиками. С попсой же так не получится, правилам сольфеджио нейросети обучить можно, а вот чтобы они ещё и мелодию создавали и чувствовали — с этим пока что (?) никак.


        1. pfemidi
          10.08.2015 15:28

          > в классической музыке мелодии никакой нет.

          Немного поправлюсь. Исключения конечно имеются, полонез Огинского, «Лунная соната», «Умирающий лебедь» Сен-Санса. Но, вот, к примеру, «Петрушка» Стравинского или «Петя и волк» Прокофьева… Это же ужас! Это полное издевательство над слушателем! Это как раз и есть пример нот, «сочинённых» /dev/random.


          1. Halt
            11.08.2015 15:31

            Интересно, а как вы относитесь к творчеству Шуберта? Многие как раз его считали лопухом, хотя мне его произведения нравятся больше чем бесконечные пассажи Моцарта и прочих классиков.

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

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

            P.S.: Стравинский мне тоже не нравится :)


          1. youree
            08.09.2015 06:17

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

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

            Вопрос в тему, если что. Хотя обсуждения тут уже, вероятно, все закончились. Но просто любопытно.


        1. Fuzzyjammer
          10.08.2015 15:42
          +1

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

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

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

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


          1. pfemidi
            10.08.2015 16:18

            > У вас странное понятие мелодии, не поделитесь определинием?

            На вкус и цвет все фломастеры разные. Не зря я заметил что это IMHO.

            >> «Петрушка» Стравинского
            > Вот тут уж без холивара не обойтись. Серьезно?

            Абсолютно серьёзно.

            > Вас насильно заставляли его слушать? Били пюпитром?

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

            > Что вы подразумеваете под классическим джазом

            Я неправильно сказал, слово «классика» и его производные совсем меня с толку сбили. Я имел в виду т.н. инструментальный джаз, когда на саксофоне одна не мелодия, на валторне другая не мелодия, никак не связанная с первой, на кларнете третья тоже абсолютно не мелодия. И всё вместе это создаёт такое же звучание, как будто симфонический оркестр настраивает инструменты перед первым актом, однако выдаётся знатоками и ценителями за «Ах! Как божественно!» На ютубе находится запросто по строчке «instrumental jazz». А классический джаз это как раз Синатра, Армстронг и подобные, против которых я лично ничего не имею, действительно приятная мелодия.


            1. Fuzzyjammer
              10.08.2015 16:43
              +1

              Тогда это не «нет мелодии» и не «генератор абсолютно случайных чисел», а «я не слышу в этом мелодии». Слово «ИМХО» не убавляет категоричности заявления :)

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

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


              1. pfemidi
                10.08.2015 17:03

                Хорошо, я действительно не слышу в этом мелодии. Как не вижу ничего в картинах авангардистов, кроме множества разноцветных геометрических фигур, напоминающих мне тесты на дальтонизм при получении водительского удостоверения. Но другие видят (и слышат). Хотя лично мне трудно поверить в то, что они не «гонят» утверждая что «в этом что-то есть» :-)


                1. pfemidi
                  10.08.2015 17:18

                  UPD: послушал этот «The birds near her house» — вот как раз пример полностью, абсолютно безмелодичного джаза, то есть мелодии тут абсолютно никакой [я не слышу], набор звуков, полный «head /dev/random».


                  1. stalinets
                    10.08.2015 22:09

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


  1. ttools
    10.08.2015 12:37

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

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


  1. leggiermente
    10.08.2015 16:56

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


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