Гармонизация хорала имеет два измерения. Гармония должна быть осмысленной в вертикальном направлении, но в самих партиях, взятых по отдельности, в горизонтальном направлении, также должны быть логика и созвучность. Написать хорал так, чтобы эти два измерения сливались в единое целое, – трудная задача для композитора-человека.
Тогда, может быть, этим смогут заняться новые алгоритмы, основанные на машинном обучении? Можно ли извлечь из опубликованных хоралов Баха секрет его мастерства? В качестве одного из способов проверки этого предположения можно было бы провести статистический анализ, чтобы попытаться угадать наиболее вероятное направление, в котором будет идти развитие каждого голоса, исходя из того, как он развивался до данного момента. Например, можно обнаружить, что в одном из сопровождающих голосов в разных хоралах несколько раз встречается последовательность нот «ля— си – до – си – ля». Затем можно провести статистический анализ нот, следующих после ля. В BWV 396 следующая нота ниже – соль-диез. Но если взять данные BWV 228 (аббревиатура BWV означает номер в Bach-Werke-Verzeichnis – полном каталоге сочинений Баха), в соответствующем месте происходит скачок вверх – до фа. Такой статистический анализ позволяет создать игру в музыкальные кости, в которой разным нотам, которые могут продолжать музыкальную фразу, присваивается разный вес. Предположим, мы обнаружили восемь случаев, в которых Бах переходит к соль-диез, и четыре, в которых он выбирает фа. Значит, в двух случаях из трех алгоритм должен переходить к соль-диез. Это похоже на тот способ, которым алгоритм DeepMind учился играть в Breakout: в какую сторону и на какое расстояние нужно сдвинуть ракетку, чтобы выиграть? Здесь перемещению ракетки соответствует переход голоса к более высоким или более низким нотам.
Трудность такого подхода, как обнаружил Коуп, когда пытался выявить характерные музыкальные фразы композиторов, состоит в установлении количества нот, определяющих каждое следующее решение. Если взять слишком мало, мелодия может пойти в любом произвольном направлении. Если взять слишком много, последовательность станет переопределенной и будет просто воспроизводить то, что уже создал Бах. А кроме того, нужно учесть не только высоту тона, но и ритмические рисунки.
Продвижение слева направо с постепенным построением голосов на основе того, что происходило раньше, кажется наиболее очевидным методом, поскольку именно таким образом мы слушаем музыку. Но это не единственный возможный способ статистического анализа произведения. Алгоритм DeepBach, который разработал в качестве диссертационного проекта музыковед Гаэтан Аджер, работавший под руководством Франсуа Паше и Франка Нильсена, пытается анализировать хоралы Баха, выводя их за пределы времени и рассматривая хоралы как двумерные геометрические конструкции. Если из геометрической конструкции удалить какую-то часть и проанализировать окружающую ее картину, можно предположить, как заполнил бы этот пробел Бах. Поэтому алгоритм не сочиняет в прямом хронологическом порядке, а рассматривает части произведения, продвигаясь назад. Это стандартный прием решения головоломки: нужно начать с конечного состояния и попытаться понять, как к нему можно прийти. Но можно брать и отрывки из середины произведения и выяснять, чем Бах заполнял эти участки.
Такой многомерный анализ приводит к более структурно связанным хоралам, чем те, которые получаются у алгоритмов, пробирающихся от начала к концу, не зная, куда именно ведет их извилистый путь, и ориентируясь только по тому, что произошло в прошлом. Тем не менее и этот анализ на самом деле производится лишь на локальном уровне. Алгоритм рассматривает сферу, окружающую каждую ноту, и пытается определить ноту, исходя из содержимого сферы, но размер сферы ограничен. В случае DeepBach он рассматривает по четыре такта в обе стороны от данной ноты. Насколько же успешно работает этот алгоритм?
Гаэтан Аджер и его научные руководители разбили хоралы Баха на две группы: 80 % использовались для тренировки алгоритма, а оставшиеся 20 – в качестве проверочных данных. После этого добровольцам предложили прослушать хоралы, созданные DeepBach, вместе с настоящими хоралами Баха из проверочных данных. Они должны были сказать, кто, по их мнению, был автором каждого хорала – Бах или алгоритм. Слушателей просили рассказать об истории их знакомства с музыкой, которая, очевидно, влияла на достоверность их оценки. Например, студенты композиторского отделения услышат то, чего не заметит человек с нетренированным слухом.
Результаты оказались поразительными: в 50 % случаев пьесы алгоритма DeepBach принимали за произведения Баха. Студенты-композиторы показали чуть лучшие результаты, но и им пришлось нелегко: они не смогли распознать подделку в 45 % произведений DeepBach. Внушительное достижение. Сочинить хорал – дело довольно непростое. Одной неверной ноты будет достаточно, чтобы распознать фальшивку. Бах не допускал в своих сочинениях никаких ошибок, и тем не менее слушатели приняли 25 % его хоралов за продукцию машины! И все они были вполне впечатляющими произведениями. Не хочу показаться снобом, но хоралы – это, возможно, самое скучное из того, что создал Бах. Ему приходилось заниматься массовым производством мелодий для гимнов, но меня лично в творчестве Баха трогают не они.
Одним из главных препятствий в любом проекте обучения по работам мастеров бывает недостаток качественных данных. Может показаться, что 389 хоралов – это очень много, но на самом деле этого количества едва хватает для обучения. В областях успешного машинного обучения – например, в сфере компьютерного зрения – алгоритм тренируется на миллионах образов. Здесь же имелось всего 389 точек, а другие композиторы в большинстве своем были гораздо менее плодовиты. Хоралы Баха полезны тем, что они дают очень похожие друг на друга примеры одного и того же явления. Но, если посмотреть на творчество композитора более широким взглядом, в его произведениях может быть столько разнообразия, что машина просто не сможет на этих данных ничему научиться. Возможно, именно это в конечном счете и защищает искусство человека от наступления машин. Хороших произведений просто настолько мало, что машинам не на чем научиться их имитировать. Они, конечно, могут штамповать музыкальную жвачку, но не качественную музыку.
12Формула-песенник
Музыка выражает то, чего нельзя сказать словами,
и то, что не может оставаться безмолвным.
Я играю на трубе, но мне так и не удалось освоить джазовую импровизацию. Я вполне уверенно играю по нотам в оркестре, но, чтобы играть джаз, нужно стать композитором. Более того, нужно стать композитором, сочиняющим на лету, реагирующим на то, что играют окружающие, в реальном времени. Я всегда искренне восхищался теми, кто на это способен.
В результате многочисленных попыток научиться играть джаз я понял, что в хорошей импровизации есть элемент головоломки. В джазовом стандарте обычно есть набор аккордов, который изменяется по ходу пьесы. Трубач должен проводить линию, соответствующую этим изменяющимся аккордам. Но при этом его решения должны обеспечивать и внутренне логичное развитие от ноты к ноте, так что джазовое исполнение подобно прокладке курса в двумерном лабиринте. Аккорды определяют допустимые ходы в вертикальном направлении, а сыгранные в предыдущий момент ноты – в горизонтальном. По мере того как джаз становится более свободным, последовательность аккордов все более растекается, и нужно чувствовать, что в следующий момент может сыграть пианист, а это опять же зависит от аккордов, сыгранных ранее.
Хороший импровизатор внимательно слушает и знает, куда пианист вероятнее всего может повести свою тему.
Создание машины, способной на это, не кажется невозможным, но в этой области есть трудности, с которыми не сталкиваются алгоритмические композиторы вроде Emmy. Алгоритм джазовой импровизации должен играть, реагируя на поступление новых данных в режиме взаимодействия в реальном времени.
Многие молодые музыканты начинали свою карьеру с классической книги «Теория джаза» Марка Левайна[83], который играл с Диззи Гиллеспи и Фредди Хаббардом, двумя из величайших джазовых импровизаторов прошлого века. Как отмечает Левайн, «великое джазовое соло на 1 % состоит из волшебства и на 99 % – из вещей Объяснимых, Анализируемых, Классифицируемых, Осуществимых». Все эти вещи можно предусмотреть в алгоритме.
Мой самый любимый джазовый альбом всех времен – Kind of Blue Майлза Дэвиса. Насколько мы близки к возможности создания Kind of DeepBlue?
В молодости Франсуа Паше мечтал стать музыкантом, сочинять хиты и играть на гитаре, как его кумиры. Однако, несмотря на несколько вполне серьезных попыток сочинения музыки, в конце концов его привлекла карьера в области искусственного интеллекта. Работая руководителем парижской Лаборатории информатики компании Sony (Sony Computer Science Laboratory), Паше обнаружил, что те методы, которые он осваивал в работе с искусственным интеллектом, могут помочь ему сочинять музыку. Он создал первый искусственный интеллект, способный к джазовой импровизации, с использованием математической формулы из теории вероятностей, известной под названием «цепь Маркова».
Цепи Маркова лежат в основе многих алгоритмов, о которых мы говорили выше. Они являются важным инструментом и используются в различных областях – от моделирования химических процессов и экономических тенденций до навигации в интернете и оценки популяционной динамики. Интересно отметить, что русский математик Андрей Марков испытывал свою теорию не на точных науках, а на поэзии.
Открытие Маркова появилось в результате дискуссии с другим русским математиком, Павлом Некрасовым. Одной из основ теории вероятностей является закон больших чисел, который утверждает, что, если подбрасывать монету так, чтобы каждый следующий бросок был абсолютно независимым от предыдущего, вероятность того, что мо