Нострадамус 2.0 - Roll Over, Штокхаузен! - «Новости Музыки»
Продолжение новогодних прогнозов Нострадамуса 2.0.
- По существу, - говорил далее Директор, - бокановскизация состоит из серии процедур, угнетающих развитие. Мы глушим нормальный рост, и, как это ни парадоксально, в ответ яйцо почкуется.
О. Хаксли "О, дивный новый мир!"
Самообучающиеся системы и системы с искусственным интеллектом (ИИ), о которых , уже сегодня можно использовать как подспорье в творческой практике. Вряд ли они смогут полностью заменить человека, но наверняка будут способны дать первоначальный толчок авторскому замыслу, сдвинуть вас с мёртвой точки в момент творческого кризиса или взять на себя часть рутинной работы. В качестве примера можно привести простой генетический алгоритм с ИИ на основе механизма природных генных мутаций, который был разработан математиком Джоном Холландом (John Holland) и имитирует адаптацию живых существ к изменениям окружающей среды.
Предвижу вопросы: зачем усложнять сочинительство такими громоздкими методами? Какой смысл во всех этих процедурах? Разве нельзя сочинять просто из головы? Ответ прост как железный рубль. Никто не запрещает вам сочинять так, как вы привыкли. Но именно академический авангард является полигоном для испытания новых идей, чернозёмом для проращивания семян. Затем на стыке авангарда и традиционной поп-рок-музыки рождаются такие нестандартные для своего времени исполнители, как Velvet Underground, Kraftwerk, CAN или Captain Beefhart. Подобные команды – пусть часто и не признанные в своё время - придают музыкальной индустрии поступательное движение, затем их идеи используются в поп-мэйнстриме, в хип-хопе, в коммерческой электронной музыке, и каждым вторым аранжировщиком. Тот же изобретатель-авангардист Карлхайнц Штокхаузен (Karlheinz Stockhausen) был "крёстным отцом" электронщиков Tangerine Dream, которые, в свою очередь в середине 1970-х первыми стали записывать синтезаторные саундтреки для голливудских фильмов. На этой же почве авангарда прорастают целые стили – ambient или glitch.
Итак, допустим, у нас имеется набор "элементов-организмов", в каждом из которых есть две "хромосомы" - параметр X и параметр Y. Допустим, X – это длительность ноты, а Y её высота (представьте себе окно piano roll в любом звуковом редакторе). Чем больше исходных элементов и чем разнообразнее наборы их хромосом – тем лучше, но в нашем случае вполне достаточно 6-9 исходных элементов.
Зададим конечную точку – чего мы хотим добиться в итоге? Допустим, мы хотим, чтобы в конце работы программы все элементы выстроились с интервалом в октаву и имели длительность, равную целой ноте – это лёгкий вариант, программа отработает его быстро и без особых проблем.
Можно поступить более оригинально: для традиционной русской церковной музыки характерны окончания в аккорд, составленный из кварты и большой секунды. Попробуйте использовать эту духовную скрепу, звучит нестандартно.
Усложним задачу. Допустим, мы хотим, чтобы конечный результат удовлетворял уравнению z = sin x + cos y , а каждое конечное значение X и Y вписывалось в заштрихованную волнистую поверхность:
Как это могло бы звучать в процессе обработки данных и в конечном результате-аккорде?
Первый этап работы алгоритма – создание начальной популяции. Считаем, что она у нас есть. Это заданный нами набор элементов-хромосом (нот, звуков) с различными параметрами длительностей X и высот Y. Чем разнообразнее популяция – тем качественнее будет работать алгоритм и более неожиданным будет процесс. Пусть для упрощения примера наша популяция насчитывает пять элементов, а значение каждого элемента X и Y находится в пределах от 0.00001 до 10 условных единиц (либо от 1 до 127, если вам проще иметь дело с МИДИ-данными).
Второй этап – оценка элементов на соответствие конечному результату и вычисление "здоровья" каждого элемента. Элементы, которые в наибольшей степени удовлетворяют конечному решению, являются более здоровыми. Пусть наивысший возможный уровень "здоровья" (численное значение X или Y) равен 10 единицам - в этом случае элемент полностью удовлетворяет конечному результату. Допустим, в нашем примере элемент А1 имеет здоровье в 1 условную единицу (т.е. соответствует конечному результату в наименьшей степени, на 10%), А2 имеет 5 единиц, А3 имеет 4 единицы, А4 имеет 1 единицу, А5 имеет 2 единицы:
А1 = 1
А2 = 5
А3 = 4
А4 = 1
А5 = 2
Третий, самый важный этап – механизм отбора. Нельзя просто оставить самые здоровые хромосомы и исключить больные, потому что в этом случае сокращается численность популяции, а в нашем случае популяция выродится в одну ноту (звук). Поэтому необходимо каким-то образом провести отбор хромосом для участия в последующей рекомбинации. Существует множество способов отбора, один из них – метод рулетки или вероятностный отбор. Вероятность отбора прямо пропорциональна здоровью хромосомы. Чем выше здоровье хромосомы, тем больше её шанс пройти в следующий круг.
Допустим, в результате нашего отбора для дальнейшей работы элементы А2 и А3 выбраны каждый по два раза как наиболее здоровые, элемент А5 выбран один раз, а элементы А1 и А4 не выбраны ни разу и исключаются из дальнейшей работы. А2 и А3 выбраны дважды для того, чтобы не сокращать популяцию. В итоге имеем пять элементов, из которых две пары с одинаковыми хромосомами – два элемента А2 и два элемента А3. Далее проведём рекомбинацию хромосом.
Рекомбинацию можно проводить различными способами – математики называют их генетическими операторами. Например, методом перекрёстного скрещивания. Берутся две хромосомы, каждая из них разделяется в произвольной точке, затем получившиеся "хвосты"-гены меняются местами:
В простейшем случае (рисунок выше) в численном виде это будет выглядеть как пропорциональное (или произвольное) деление значений X и Y и затем сложение разделённых частей, в нашем случае:
X : 0.7 = x1
X – x1 = x2
Y : 0.3 = y1
Y – y1 = y2
X2 = x1 + y1
Y2 = x2 + y2
Так из первоначальных значений хромосом родителей X и Y мы получили вторую пару хромосом детей X2 и Y2. Можно делить хромосому не в одной, а в нескольких точках.
Можно использовать метод (оператор) мутаций. Метод "мутации" исходного материала (мелодии, мотива) далеко не нов – ещё двести лет назад им в совершенстве владел Людвиг Ван Бетховен, раскручивая целые части своих симфоний при помощи мелодического изменения исходной короткой музыкальной фразы. Вспомните известное начало его пятой симфонии с коротким мотивом из четырёх нот – трёх коротких и одной длинной. "Так судьба стучится в дверь", - говаривал по этому поводу Людвиг Ван. Виртуозно владели этим методом русские классики, в первую очередь П.И. Чайковский.
В нашем же случае метод мутаций заключается в том, что в однородную хромосому вносится произвольный инородный генный элемент:
Пусть в нашем случае первоначальное значение X умножается на любое произвольное либо заданное заранее число (или к X прибавляется некое число). Таким методом можно полностью "перетряхнуть" всю популяцию.
Оригинальные решения поэтапной мутации материала ещё в середине ХХ века предлагал в своей книге "Техника моего музыкального языка" француз Оливье Мессиан (Olivier Messiaen). Он увеличивал или уменьшал отдельные звуки мелодии (или паузы) на крошечные величины, добавляя лигой, например, к целой ноте одну шестнадцатую. Однако Мессиан не додумался до полноценного алгоритма, способного работать на ЭВМ. Именно в честь Мессиана благодарные почитатели назвали его именем салат.
Можно использовать "метод элиты", когда некоторые (например 5-10%) из наиболее "здоровых" хромосомы не подвергаются изменению, а переносятся в следующий этап автоматически.
Можно произвольно комбинировать или выполнять последовательно все методы – и отбор элиты, и мутацию, и скрещивание.
Затем после рекомбинации снова оценивается "здоровье" каждого элемента-хромосомы на соответствие конечному результату и процесс рекомбинаций повторяется до тех пор, пока конечный результат не удовлетворит поставленному условию z = sin x + cos y.
Если значения вносимых изменений слишком малы, то процесс может занять длительное время. Если изменения велики, то процесс пройдёт слишком быстро. Математики рекомендуют примерно 70% выбранных "родителей" подвергать скрещиванию, а к остальным 30% материала применять мутацию, но и эти коэффициенты можно варьировать в процессе.
Таким образом в процессе работы программа постоянно выдаёт изменяющийся массив данных – промежуточные ноты-звуки-"хромосомы" с изменёнными длительностями и высотами. Происходит процесс "схождения" популяции к заданному результату. Этот массив можно представить в виде миди-файла. Какой длины будет этот миди-файл? Каким образом будет происходить мутация хромосом? Заранее это неизвестно. При малейшем изменении хотя бы одного исходной хромосомы или гена процесс может идти совершенно иначе. Ещё интереснее, если хромосом не две, а три – например, третья хромосома Z отвечает за раскрытие/закрытие фильтра виртуального инструмента. В "организмы" можно добавить неограниченное количество хромосом и делить их не на два, а на любое произвольное количество генов. В этом случае процесс становится сложнее, интереснее, но требует гораздо больше компьютерных ресурсов.
Подобным образом можно спрограммировать мутационное развитие заранее сочинённой мелодии, когда каждая нота (звук) меняется по высоте и длительности непредсказуемым образом, но постепенно всё перерастает во вторую заранее заданную мелодию, затем в третью и четвёртую, в аккорд или во что-то иное. Но тогда для каждой ноты начальной и конечной мелодии ещё потребуется третий параметр, определяющий момент начала и окончания её звучания.
Интересно было бы сделать подобным образом крупную форму (концептуальный рок-альбом, симфонию), показывающую эволюцию русской музыки – от оперы М.И. Глинки "Жизнь за царя" до песни "Владимирский централ". Или концерт для бас-гитары с оркестром на все песни Газманова.
Вряд ли итоговый вариант (миди-файл) сразу прозвучит благозвучно: наверняка он потребует ручной корректировки. Тем не менее, подобные технологии с ИИ уже сегодня интересны как творческая лаборатория, их несложно реализовать в программах Max/MSP, Reaktor, Csound или иным способом в виде самостоятельного плагина, а если у вас много свободного времени, то расчёты можно выполнить даже вручную на калькуляторе.
В каком виде оформить конечный результат? Проще всего – в электронно-синтезаторном (торопитесь, пока этот материал не прочитал Брайан Ино). Альфред Шнитке для этих целей взял бы симфонический оркестр, а Фрэнк Заппа (Frank Zappa) - рок-группу. Джон Кейдж (John Cage) использовал бы подготовленный рояль, а Стив Райх (Steve Reich) – квартет кастаньет.
Генетические алгоритмы применяются в компьютерном дизайне, в теории игр и в решении экономических задач. Алгоритмы использования ИИ разнообразны: метод муравья и пчелиного роя, "искусственная жизнь", алгоритм отжига, нейронные сети, цепи Маркова, алгоритмы альтруизма и кукушки, нечёткая логика и другие - все они описаны различных источниках.
Однако имейте в виду, что подобные методы "вычисления" музыки всегда вызывают настороженность властей, ядовитые плевки завистливых коллег и непонимание со стороны массовой аудитории: в СССР даже более невинные эксперименты композиторов-авангардистов клеймили на уровне всесоюзных газет, а власти фашистской Германии ласково называли такое искусство "дегенеративным".
Разрабатывая и внедряя элементы ИИ мы сможем если не обогнать мировую музыкальную индустрию, то хотя бы приблизиться к лидерам гонки и задать новые неожиданные направления движения – к счастью, кроме мозгов, здорового любопытства и нестандартного мышления, здесь больше ничего не требуется. А этого у нас всегда с избытком.
Другие прогнозы Нострадамуса 2.0