нета упадет орлом или решкой, приближается к 50 % по мере увеличения числа бросков. Если подбросить монету четыре раза, вероятность того, что все четыре раза выпадет орел, равна 1/16. Однако по мере увеличения числа бросков вероятность отклонения от равного соотношения уменьшается.
Некрасов считал, что верно и обратное: если статистика подчиняется закону больших чисел, то и действия должны быть независимы от предыдущих результатов. Исходя из этого, он пытался доказать, что, поскольку статистика преступности в России подчиняется закону больших чисел, из этого следует, что преступники принимают решение о совершении преступления независимо.
Порочная логика Некрасова возмутила Маркова. Он назвал эту работу «злоупотреблением математикой» и решил доказать ее неправоту. Ему нужно было придумать модель, в которой вероятность определенного исхода зависит от предыдущих событий, но в то же время подчиняется закону больших чисел в долгосрочной перспективе. Результат подбрасывания монеты не зависит от предыдущих бросков, так что эта модель Маркова не интересовала. Но можно было попробовать ввести небольшую зависимость, чтобы каждое следующее событие зависело от непосредственно предшествующего, но не от того, как система пришла к этому событию. Название «цепь Маркова» получила последовательность событий, в которой вероятность каждого события зависит только от события предыдущего. Один из возможных примеров такой последовательности – прогнозирование погоды. Завтрашняя погода, несомненно, зависит от сегодняшней, но не особенно зависит от того, что происходило на прошлой неделе.
Рассмотрим следующую модель. Пусть погода может быть солнечной, облачной или дождливой. Если сегодня солнечно, то существует 60 %-я вероятность того, что завтра тоже будет солнечно, 30 %-я – того, что будет облачно, и 10 %-я – того, что будет идти дождь. Но если сегодня облачно, вероятности будут другими. В этом случае завтра с 50 %-й вероятностью будет дождь, с 30 %-й сохранится облачность и с 20 %-й будет солнечно. В этой модели завтрашняя погода зависит только от сегодняшней. Не важно, что у нас в течение двух недель стояла солнечная погода: если сегодня облачно, модель все равно предсказывает на завтра 50 %-ю вероятность дождя. Последняя часть модели дает нам прогноз погоды на завтра после дождливого дня: с 40 %-й вероятностью будет солнечно, с 10 %-й – облачно и с 50 %-й – дождливо. Запишем все эти вероятности в матрицу.
Эта модель позволяет рассчитать вероятность того, что через два дня после солнечного дня пойдет дождь. Разумеется, это может произойти несколькими разными способами, так что мы должны просуммировать все возможные вероятности.
Возможны следующие варианты: ССД (солнце-солнце-дождь), СОД (солнце-облачность-дождь) и СДД (солнце-дождь-дождь).
вероятность ССД = вероятность СС × вероятность СД =
= 0,6 ×0,1 = 0,06
вероятность СОД = вероятность СО × вероятность ОД =
= 0,3 ×0,5 = 0,15
вероятность СДД = вероятность СД × вероятность ДД =
= 0,1 ×0,5 = 0,05
Значит, вероятность дождливого дня через два дня после солнечного, которую мы обозначим СxД, равна 0,06 + 0,15 + + 0,05 = 0,26, то есть 26 %.
Есть удобный способ вычисления вероятности того, что на второй день будет дождь. Для этого нужно умножить матрицу вероятностей саму на себя.
Несмотря на такую зависимость погоды каждого дня от погоды дня предыдущего, в конечном итоге оказывается, что вероятность дождливой погоды стремится к одному и тому же уровню (около 32,35 %), с какого бы дня – солнечного, дождливого или облачного – мы ни начали. Чтобы убедиться в этом, можно возводить матрицу вероятностей во все более высокие степени: мы увидим, что элементы каждой строки стремятся к одним и тем же числам. Таким образом, долгосрочный метеорологический прогноз не зависит от сегодняшней погоды, хотя завтрашняя погода от нее и зависит.
Каждая из строк этой матрицы дает вероятность солнечной, облачной или дождливой погоды через десять дней. Как мы видим, при этом не важно, какая погода стоит сегодня (то есть какую строку мы выбираем): вероятность для десятого дня остается той же. Так Марков разработал доказательство, неоспоримо продемонстрировавшее, что убеждение Некрасова, будто из долгосрочной криминальной статистики следует существование свободы воли, ошибочно.
Марков решил проиллюстрировать свою модель при помощи одного из самых любимых в России поэтических произведений, пушкинского «Евгения Онегина». Он не рассчитывал сделать какие-либо новые литературные открытия: он просто хотел использовать этот роман в стихах в качестве набора данных для анализа употребления гласных и согласных. Он взял первые 20 000 букв, то есть около одной восьмой романа, и подсчитал число гласных и согласных. Компьютер смог бы выполнить эту операцию в одно мгновение, но Марков честно сидел и подсчитывал буквы вручную. В конце концов он заключил, что гласные составляют 43 % всех букв, а согласные – 57 %. Следовательно, если взять случайную букву, можно предположить, что она с большей вероятностью окажется согласной. Маркова интересовал следующий вопрос: изменит ли эту вероятность знание предыдущей буквы? Другими словами, зависит ли вероятность того, что следующая буква окажется согласной, от того, была ли согласной предыдущая?
Проанализировав текст, Марков обнаружил, что в 34 % случаев за согласной следует еще одна согласная, а в 66 % – гласная. Знание предыдущей буквы изменило вероятности одного и другого исхода. В этом нет ничего неожиданного: как правило, в большинстве слов гласные и согласные встречаются поочередно. Вероятность того, что после гласной появится еще одна гласная, подсчитал он, составляет всего 13 %. Таким образом, «Евгений Онегин» оказался прекрасным примером цепи Маркова, которым он мог проиллюстрировать свои идеи.
Модели такого рода иногда называют моделями с амнезией: они забывают, что случилось в прошлом, и предсказывают будущее, исходя из настоящего. Иногда такую модель можно усовершенствовать, рассмотрев, как могут повлиять на следующее состояние два предыдущих. Знание двух предыдущих букв в поэзии Пушкина может помочь в угадывании следующей буквы. Но в какой-то момент такая зависимость исчезает.
Паше решил заменить Пушкина на Паркера. Он решил взять риффы джазового музыканта и, исходя из очередной ноты, проанализировать вероятность того, какой будет следующая. Представим себе рифф, состоящий из восходящей и нисходящей гамм. Если сыграна определенная нота, следующая нота с равной вероятностью будет либо на ступень ниже, либо на ступень выше. Исходя из этого правила, алгоритм будет случайным образом перемещаться по гамме вверх и вниз. Чем больше риффов ему дать, тем больше у него будет данных для анализа и тем явственнее будет определенный стиль. Паше понял, что рассматривать одну предыдущую ноту недостаточно: чтобы определить, куда двигаться дальше, может понадобиться знание нескольких нот. Но, если мы не хотим, чтобы алгоритм просто воспроизводил тренировочные данные, не следует заходить назад слишком далеко.
Преимущество методики Паше состоит в том, что данные можно вводить в реальном времени. Можно просто играть риффы на рояле. Алгоритм будет анализировать игру и, как только музыкант прекратит играть, продолжит играть в том же стиле. Такое взаимодействие в форме вопросов и ответов часто встречается в джазе, так что алгоритм сможет играть вместе с живым музыкантом, с которым они будут передавать мелодию друг другу. Этот алгоритм получил название Continuator («Продолжатель»), так как он продолжает в том же стиле, в котором играет человек, вводящий в него тренировочные данные.
После каждой ноты Continuator вычисляет свое следующее действие, исходя из того, что он только что сыграл, и из вероятностей появления определенных нот, рассчитанных по тренировочным данным. Затем он бросает кости и принимает решение. В одной из версий этого алгоритма, которую Паше назвал «режимом сотрудничества» (в отличие от режима «вопросов и ответов»), человек играет мелодию, а Continuator определяет при помощи своего аппарата вычисления вероятностей, какой аккорд следует сыграть – что очень похоже на то, что делает человек-аккомпаниатор.
Каково было мнение джазменов, игравших с этим алгоритмом? Музыкант Бернар Люба, играющий в стиле современного джаза, испытав Continuator, признал, что тот произвел на него сильное впечатление: «Эта система показывает мне идеи, которые мог бы разработать и я сам, но на их разработку у меня ушли бы годы. Она опережает меня на годы, но все, что она играет, несомненно, в моем стиле». Continuator освоил присущий Люба мир звуков, но не ограничился воспроизведением того, что музыкант играл раньше, а взялся за исследование новых территорий. То есть алгоритм демонстрировал способность к исследовательскому творчеству. Кроме того, он побуждал художника, на работе которого он обучался, к дальнейшему творческому развитию, показывая ему те аспекты его занятия, которых тот ранее не использовал.
На мой взгляд, это свидетельствует о прохождении теста Лавлейс. Это музыкальный аналог 37-го хода во второй партии матча AlphaGo против Ли Седоля. Алгоритм производит нечто неожиданное как для программиста этого алгоритма, так и для музыканта, на работах которого он обучался. И речь идет не только о новизне и неожиданности. Алгоритм помог Люба мыслить более творчески. Результат его работы оказался необычайно ценным, так как он изменил подход Люба к музыке.
Все мы склонны закостеневать в своих привычках. Continuator порождал новые последовательности звуков, по сути дела говоря: «Эй, а ты знаешь, что можно еще и так?» «Поскольку система играет музыку на пределе человеческих возможностей, – объясняет Люба, – особенно когда дело доходит до длинных, но захватывающих мелодических фраз, сыгранных в невероятном темпе, она бросает вызов самому понятию виртуозности».