Гласс вспоминает, как на одном из занятий его наставница, Надя Буланже, вдруг начала беспокоиться о его здоровье: «Вы не больны, голова не болит? Не хотите сходить к терапевту или к психиатру? Это можно устроить так, что никто не узнает». Когда он заверил ее, что совершенно здоров, она развернулась в своем кресле и, указывая на упражнение по хоралам, которое он выполнил на той неделе, завопила: «Тогда как вы объясняете это?!» И действительно, Гласс увидел, что в альтовой и басовой партиях, которые он написал, притаились скрытые квинты.
Творческий мыслитель отличается склонностью к разрыву с традиционными правилами. В случае программы AlphaGo мы видели такой разрыв в 37-м ходе второй партии. Точно так же Бах иногда нарушает в своих хоралах правило о недопустимости параллельных квинт. Но значит ли это, что у него получается плохой хорал? Как объясняла мне моя наставница Эмили, удовольствие от сочинения музыки отчасти и состоит в нарушении таких правил. Это открывает лучший путь к преобразовательному творчеству по Боден.
Гармонизация хорала имеет два измерения. Гармония должна быть осмысленной в вертикальном направлении, но в самих партиях, взятых по отдельности, в горизонтальном направлении, также должны быть логика и созвучность. Написать хорал так, чтобы эти два измерения сливались в единое целое, – трудная задача для композитора-человека.
Тогда, может быть, этим смогут заняться новые алгоритмы, основанные на машинном обучении? Можно ли извлечь из опубликованных хоралов Баха секрет его мастерства? В качестве одного из способов проверки этого предположения можно было бы провести статистический анализ, чтобы попытаться угадать наиболее вероятное направление, в котором будет идти развитие каждого голоса, исходя из того, как он развивался до данного момента. Например, можно обнаружить, что в одном из сопровождающих голосов в разных хоралах несколько раз встречается последовательность нот «ля— си – до – си – ля». Затем можно провести статистический анализ нот, следующих после ля. В BWV 396 следующая нота ниже – соль-диез. Но если взять данные BWV 228 (аббревиатура BWV означает номер в Bach-Werke-Verzeichnis – полном каталоге сочинений Баха), в соответствующем месте происходит скачок вверх – до фа. Такой статистический анализ позволяет создать игру в музыкальные кости, в которой разным нотам, которые могут продолжать музыкальную фразу, присваивается разный вес. Предположим, мы обнаружили восемь случаев, в которых Бах переходит к соль-диез, и четыре, в которых он выбирает фа. Значит, в двух случаях из трех алгоритм должен переходить к соль-диез. Это похоже на тот способ, которым алгоритм DeepMind учился играть в Breakout: в какую сторону и на какое расстояние нужно сдвинуть ракетку, чтобы выиграть? Здесь перемещению ракетки соответствует переход голоса к более высоким или более низким нотам.
Трудность такого подхода, как обнаружил Коуп, когда пытался выявить характерные музыкальные фразы композиторов, состоит в установлении количества нот, определяющих каждое следующее решение. Если взять слишком мало, мелодия может пойти в любом произвольном направлении. Если взять слишком много, последовательность станет переопределенной и будет просто воспроизводить то, что уже создал Бах. А кроме того, нужно учесть не только высоту тона, но и ритмические рисунки.
Продвижение слева направо с постепенным построением голосов на основе того, что происходило раньше, кажется наиболее очевидным методом, поскольку именно таким образом мы слушаем музыку. Но это не единственный возможный способ статистического анализа произведения. Алгоритм DeepBach, который разработал в качестве диссертационного проекта музыковед Гаэтан Аджер, работавший под руководством Франсуа Паше и Франка Нильсена, пытается анализировать хоралы Баха, выводя их за пределы времени и рассматривая хоралы как двумерные геометрические конструкции. Если из геометрической конструкции удалить какую-то часть и проанализировать окружающую ее картину, можно предположить, как заполнил бы этот пробел Бах. Поэтому алгоритм не сочиняет в прямом хронологическом порядке, а рассматривает части произведения, продвигаясь назад. Это стандартный прием решения головоломки: нужно начать с конечного состояния и попытаться понять, как к нему можно прийти. Но можно брать и отрывки из середины произведения и выяснять, чем Бах заполнял эти участки.
Такой многомерный анализ приводит к более структурно связанным хоралам, чем те, которые получаются у алгоритмов, пробирающихся от начала к концу, не зная, куда именно ведет их извилистый путь, и ориентируясь только по тому, что произошло в прошлом. Тем не менее и этот анализ на самом деле производится лишь на локальном уровне. Алгоритм рассматривает сферу, окружающую каждую ноту, и пытается определить ноту, исходя из содержимого сферы, но размер сферы ограничен. В случае DeepBach он рассматривает по четыре такта в обе стороны от данной ноты. Насколько же успешно работает этот алгоритм?
Гаэтан Аджер и его научные руководители разбили хоралы Баха на две группы: 80 % использовались для тренировки алгоритма, а оставшиеся 20 – в качестве проверочных данных. После этого добровольцам предложили прослушать хоралы, созданные DeepBach, вместе с настоящими хоралами Баха из проверочных данных. Они должны были сказать, кто, по их мнению, был автором каждого хорала – Бах или алгоритм. Слушателей просили рассказать об истории их знакомства с музыкой, которая, очевидно, влияла на достоверность их оценки. Например, студенты композиторского отделения услышат то, чего не заметит человек с нетренированным слухом.
Результаты оказались поразительными: в 50 % случаев пьесы алгоритма DeepBach принимали за произведения Баха. Студенты-композиторы показали чуть лучшие результаты, но и им пришлось нелегко: они не смогли распознать подделку в 45 % произведений DeepBach. Внушительное достижение. Сочинить хорал – дело довольно непростое. Одной неверной ноты будет достаточно, чтобы распознать фальшивку. Бах не допускал в своих сочинениях никаких ошибок, и тем не менее слушатели приняли 25 % его хоралов за продукцию машины! И все они были вполне впечатляющими произведениями. Не хочу показаться снобом, но хоралы – это, возможно, самое скучное из того, что создал Бах. Ему приходилось заниматься массовым производством мелодий для гимнов, но меня лично в творчестве Баха трогают не они.
Одним из главных препятствий в любом проекте обучения по работам мастеров бывает недостаток качественных данных. Может показаться, что 389 хоралов – это очень много, но на самом деле этого количества едва хватает для обучения. В областях успешного машинного обучения – например, в сфере компьютерного зрения – алгоритм тренируется на миллионах образов. Здесь же имелось всего 389 точек, а другие композиторы в большинстве своем были гораздо менее плодовиты. Хоралы Баха полезны тем, что они дают очень похожие друг на друга примеры одного и того же явления. Но, если посмотреть на творчество композитора более широким взглядом, в его произведениях может быть столько разнообразия, что машина просто не сможет на этих данных ничему научиться. Возможно, именно это в конечном счете и защищает искусство человека от наступления машин. Хороших произведений просто настолько мало, что машинам не на чем научиться их имитировать. Они, конечно, могут штамповать музыкальную жвачку, но не качественную музыку.