Algoritme
Algoritme
Задача о секретаре
В любой задаче об оптимальной остановке критически важный
вопрос – не «какой вариант необходимо выбрать», а «как много вариантов
необходимо рассмотреть и учесть». Эти задачи имеют значение не только
для влюбленных или арендаторов, но и для водителей, домовладельцев,
грабителей и т. д.
Правило 37 %[2] произошло от самой известной головоломки об
оптимальной остановке, которая со временем стала известна как «задача о
секретаре». Исходные данные задачи очень напоминают дилемму о поиске
квартиры, которую мы рассматривали ранее. Представьте, что вы
проводите собеседование с рядом кандидатов на позицию секретаря и ваша
цель – выбрать и принять на работу единственного кандидата, лучшего из
всех. Пока у вас нет представления, как распределить баллы между
каждым из претендентов, вы можете легко определить, кому вы отдаете
предпочтение. (В этом случае математик сказал бы, что вы оперируете
только порядковыми числами – вы сравниваете только соответствующие
качества, которыми обладают все кандидаты. Но вам недоступны
количественные числа – вы не можете ранжировать эти качества в общей
шкале.) Вы интервьюируете претендентов в произвольном порядке, по
одному за раз. Вы можете принять решение нанять кандидата в любой
момент собеседования, а он, в свою очередь, примет ваше предложение и
завершит свои поиски работы. Но при этом, если вы упустите кандидата,
решив не нанимать его, вы потеряете его навсегда.
Считается, что задача о секретаре впервые была опубликована (без
непосредственного упоминания секретарей) в февральском номере
журнала Scientific American в 1960 году Мартином Гарднером в качестве
одной из головоломок в его популярной колонке о занимательной
математике. Однако само происхождение задачи остается загадкой. Наше
собственное расследование с нуля привело нас к некоторой гипотезе еще
до того, как оно неожиданно превратилось для нас в детективную работу в
прямом смысле слова. Мы отправились в Стэнфорд, чтобы в архивах работ
Гарднера найти его переписку середины прошлого века. Чтение писем
немного напоминает подслушивание чужого телефонного разговора: вы
слышите только одну сторону диалога, а ответ можете лишь
предположить. В нашем случае у нас были только ответы на вопросы,
которыми, очевидно, задавался сам Гарднер более 50 лет назад, исследуя
историю происхождения задач. Чем больше мы читали, тем более
запутанной и неясной казалась нам эта история. Гарвардский математик
Фредерик Мостеллер вспомнил, что слышал об этой задаче в 1955 году от
своего коллеги Эндрю Глизона, который, в свою очередь, слышал о ней от
кого-то еще. Лео Мозер из Альбертского университета рассказывал в своем
письме, что читал о головоломке в «неких записях» Р. И. Гаскелла из
компании Boeing, который приписывал авторство задачи своему коллеге.
Роджер Пинкхам из Ратгерского университета писал, что впервые услышал
о головоломке в 1955 году от математика по фамилии Шонфильд из
Университета Дьюка, а тот, по его убеждению, сам впервые услышал о
задаче от кого-то из Мичигана. Этот «кто-то из Мичигана», с большой
вероятностью, носил имя Меррил Флад. И хотя за пределами мира
математики его имя мало кому известно, влияние Флада на развитие
компьютерной науки нельзя не отметить. Именно он обратил внимание на
задачу о коммивояжере (которую мы обсудим более подробно в главе 8),
изобрел математическую игру «Два бандита» (которая будет описана в
главе 11) и даже, весьма вероятно, ввел термин «программное
обеспечение». По его же собственным словам, Флад приступил к изучению
вопроса в 1949-м и в 1958 году стал автором своего первого известного
открытия – правила 37 %. Хотя он и отдает пальму первенства в этом
вопросе другим математикам.
Достаточно будет отметить, что вне зависимости от своего
происхождения задача о секретаре оказалась едва ли не идеальной
математической загадкой: ее легко объяснить, очень сложно решить,
решение ее чрезвычайно лаконично, а выводы крайне занимательны. В
результате она передавалась из уст в уста в математических кругах в 50-е
годы, распространяясь со скоростью лесного пожара, и только благодаря
Гарднеру и его колонке в 1960 году захватила воображение широкой
общественности. К 80-м задача и различные ее вариации столько раз
подвергались анализу, что ее стали обсуждать в газетах как подраздел
самой себя.
А что до секретарей, довольно умилительно наблюдать, как каждая
культура накладывает свой особый антропологический отпечаток на
формальные системы. К примеру, при мысли о шахматах нам
представляется средневековая Европа, хотя на самом деле появились
шахматы в VIII веке в Индии. Они были достаточно грубо
«европеизированы» в XV веке, когда «шахи» были переименованы в
«королей», «визири» – в «королев», а «слоны» стали «офицерами».
Аналогичным образом менялись и задачи об оптимальной остановке,
отражая насущные проблемы и переживания каждого поколения. В XIX
веке типичными ситуациями для таких задач были барочные лотереи или
выбор подходящего поклонника для дамы; в начале XX века – поиск
лучшего отеля для автопутешественника и выбор подходящей спутницы
для мужчины; в середине XX века, во время расцвета офисной рутины и
доминирования мужчин, – подбор лучшей секретарши для руководителя-
мужчины. Впервые название задачи о секретаре именно в такой
формулировке было упомянуто в газете в 1964 году, позднее оно
закрепилось окончательно.
Почему 37 %?
Подбирая секретаря, вы можете совершить две ошибки: остановиться
либо слишком рано, либо слишком поздно. Если вы прекращаете поиски
рано, существует большой риск, что лучшего кандидата вы еще не успели
встретить. Если останавливаетесь слишком поздно, вы продолжаете ждать
идеального кандидата, которого не существует. Оптимальная стратегия
требует от вас баланса между чрезмерным и недостаточным поиском.
Если ваша цель – найти лучшего претендента и вы не согласны на
меньшее, то очевидно, что, пока вы проводите собеседования с
кандидатами, вы не должны даже позволять себе мысли нанять кого-то,
если он не лучший из всех, кого вы видели. Тем не менее просто быть
лучшим недостаточно для того, чтобы получить предложение о работе.
Ведь самый первый кандидат будет лучшим просто по определению.
Проще говоря, совершенно очевидно, что показатели «лучшего на данный
момент» претендента будут снижаться от собеседования к собеседованию.
Например, второй кандидат имеет шансы 50 на 50 стать лучшим из тех, что
вам довелось встретить. Но у пятого кандидата есть уже только один шанс
из пяти, а у шестого – один из шести. В итоге «лучшие на данный момент»
претенденты неизменно будут все больше впечатлять вас по мере
продолжения поиска (ведь они по определению уже лучше всех тех, кто
приходил до них), однако и попадаться они будут все реже и реже.
Хорошо, теперь мы знаем, что принимать на работу первого «лучшего
на данный момент» кандидата (иначе говоря, самого первого кандидата) –
опрометчивое решение. Если у вас есть сто претендентов, поспешным
будет предложить работу и второму «лучшему на данный момент» только
потому, что он лучше первого. Так как же действовать?
Существует несколько потенциальных стратегий. Например, нанять
кандидата, который в третий раз превосходит всех, кого вы уже видели.
Или даже четвертый. Или, возможно, стоит принять следующего «лучшего
на данный момент» кандидата после долгой «засухи» – вереницы слабых
игроков. Но на поверку ни одна из этих относительно разумных стратегий
не оказывается на высоте. Наоборот, оптимальное решение приобретает
формы того, что мы называем правилом «семь раз отмерь, один раз
отрежь». Вы изначально определяете количество таких «замеров», в нашем
случае это рассмотрение вариантов и сбор информации, в течение которого
вы не останавливаете свой выбор ни на ком, как бы он или она вас ни
впечатлили. После этого вы переходите на этап «отрежь», когда вы готовы
принять на работу любого, кто затмит лучшего кандидата, увиденного
вами на первом этапе.
Мы можем наблюдать, как вырисовывается правило «отмерь и отрежь»
даже при совсем маленьком количестве кандидатов на позицию секретаря в
нашей задаче. У вас есть всего один кандидат? Решение простое – наймите
его! Если у вас два претендента, ваши шансы на успех 50 на 50, что бы вы
ни предприняли. Вы можете нанять первого претендента (который проявил
себя лучше всех из первой половины прошедших собеседование) или же
можете отказаться от первого и по умолчанию выбрать второго (который
впечатлил вас больше всего из второй половины претендентов). Добавим
третьего кандидата, и здесь уже становится интересней. Наш шанс на успех
в этом случае равняется 33 %. При наличии двух кандидатов мы могли
полагаться только на удачу. Но если их трое, возможно, мы можем сами
принять правильное решение?
Получается, что можем. И все зависит от того, как мы поступим со
вторым проинтервьюированным претендентом.
Когда мы встречаем первого кандидата, у нас нет никакой информации,
и, разумеется, он или она окажутся по умолчанию лучшим вариантом.
Когда мы беседуем с третьим кандидатом, у нас нет свободы выбора,
поскольку мы, в конце концов, должны кого-то нанять, а остальные
кандидатуры мы уже отклонили. Но, когда мы встречаемся со вторым
претендентом, мы оказываемся посередине: мы можем оценить, лучше или
хуже второй кандидат, чем первый, и одновременно у нас есть выбор –
принять этого кандидата или отказать.
Что же произойдет в том или ином случае?
Мы рассмотрим лучшую из возможных стратегий на примере с тремя
кандидатами. Этот подход работает на удивление удачно как с тремя
претендентами, так и с двумя (в этом случае вам необходимо выбирать
лучшего половину всего времени, предусмотренного на поиски[3]).
Любовный алгоритм
Притяжение между мужским и женским
полом присутствовало на протяжении всего
существования человечества, поэтому, говоря
языком алгебры, этот факт можно назвать
заданной величиной.
Томас Альтус
Когда парковаться
Я пришел к выводу, что три главные
административные проблемы в кампусе – это
секс у студентов, спорт у выпускников и
парковка у всего преподавательского состава.
Кларк Керр, президент Калифорнийского
университета в Беркли (1958–1967)
Всегда останавливайтесь
Я проживу свою жизнь только единожды.
Поэтому все то хорошее и доброе, что я могу
сделать для ближних, я хочу сделать сейчас!
Я не хочу откладывать это или пренебрегать
этим, потому что у меня не будет возможности
пройти этот путь заново.
Стефан Греллет
Исследовать/эксплуатировать
В английском языке коннотации этих слов полностью
противоположны. Но для ученого-компьютерщика эти слова имеют более
специфическое, нейтральное значение. Проще говоря, исследование – это
сбор информации, а эксплуатация – это использование уже имеющейся у
вас информации для получения гарантированно хорошего результата.
Очевидно, что без исследований жить невозможно. Но стоит помнить,
что отсутствие эксплуатации столь же плохо. Согласно определению в
информатике, эксплуатация нужна нам для того, чтобы охарактеризовать
многое из того, что мы называем лучшими моментами своей жизни. Семья,
собирающаяся по праздникам вместе, – это эксплуатация. Так же как и
любитель чтения, устраивающийся поудобнее в кресле с чашечкой кофе и
любимой книгой, как и группа, исполняющая свой самый знаменитый хит
перед толпой поклонников, как и пара, танцующая под «свою песню».
Но более того – исследование может быть проклятием.
Что, например, хорошо в музыке: всегда есть что-то новенькое, чтобы
послушать. А что ужасно в музыке, если ты, к примеру, музыкальный
обозреватель, так это то, что всегда есть что-то новенькое, чтобы
послушать. Быть музыкальным обозревателем означает, что ты можешь
исследовать материал сутками и все равно останется пара новых
непрослушанных композиций. Любители музыки сочтут работу в
музыкальной журналистике раем, но, когда тебе приходится постоянно
исследовать новое, у тебя не остается возможности насладиться плодами
своего профессионализма. А это своего рода ад. Мало кто разбирается в
этом столь же глубоко, как Скотт Плагенхоф, бывший главный редактор
журнала Pitchfork. «Во время работы ты пытаешься найти время послушать
то, что тебе хочется, а не то, что нужно», – говорит он о жизни
музыкального критика. Его отчаянное желание прекратить продираться
сквозь дебри непрослушанных мелодий сомнительного качества и просто
слушать любимую музыку было столь сильным, что он нарочно скачивал в
свой iPod только новую музыку, чтобы было физически невозможно
отказаться от выполнения своих обязанностей в те моменты, когда ему
больше всего на свете хотелось послушать The Smiths. Журналист, таким
образом, является мучеником, исследующим, чтобы другие могли
эксплуатировать.
В информатике связь между исследованием и эксплуатацией наиболее
ярко отражается в сценарии под названием «проблема многорукого
бандита». Это странное название произошло от разговорного термина,
обозначающего вид игровых автоматов, – «однорукий бандит».
Представьте, что вы входите в зал казино, полный разных игровых
автоматов, каждый из которых дает шанс на выигрыш. Закавыка в том, что
вы не знаете ничего об этих шансах заранее: пока вы не начнете играть, вы
не поймете, какие автоматы наиболее прибыльные («многоиграющие», как
говорят игроманы), а какие только вытянут из вас все денежки.
Естественно, вы заинтересованы в максимальном выигрыше. И
понятно, что это подразумевает некую комбинацию нажатий на рычаги
различных автоматов с целью их проверки (исследование) и выбор среди
этих автоматов наиболее перспективных (эксплуатация).
Для понимания всех тонкостей данной задачи представьте, что у вас
есть только два игровых автомата. На одном из них вы сыграли 15 раз;
9 раз он выдал вам выигрыш, а 6 раз – нет. На другом вы сыграли всего
дважды; один раз выиграли и один раз проиграли. Какой из автоматов
перспективнее?
Просто разделите количество выигрышей на общее количество раз, что
вы дернули ручку, и вы получите «ожидаемую выгоду». Согласно этому
способу, первый автомат явно лидирует. Его соотношение 9: 6 дает нам
60 % ожидаемой выгоды, в то время как у второго соотношение 1: 1 дает
всего 50 %. Но это еще не все. В конце концов, всего две игры – это не
слишком показательно, и можно предположить, что мы просто пока не
знаем, насколько хорош второй автомат.
Выбор ресторана или музыкального альбома по сути своей – это тот же
выбор, за какую ручку дернуть в жизненном казино. Но поиск
компромисса между «исследовать» и «эксплуатировать» – это не просто
более легкий способ принять решение, где поужинать или какой диск
послушать. Он дает нам базовое представление о том, как наши цели
должны меняться с годами и почему наиболее рациональный принцип
действий не всегда подразумевает выбор самого лучшего. И это, как
выясняется, составляет самую суть процессов веб-дизайна и клинических
исследований – двух понятий, которые обычно не встречаются в одном
предложении.
Люди склонны раздумывать над решениями в одиночестве, чтобы
сосредоточиться и понять, какое из них принесет в результате наибольшую
ожидаемую выгоду. Но так редко получается на практике, да и ожидаемая
выгода – еще не конец истории. Если вы размышляете не только над вашим
следующим шагом, но и над всеми теми шагами, которые вы предпримете
в аналогичных обстоятельствах в будущем, то соблюдение баланса
«исследовать/эксплуатировать» имеет решающее значение. В этом случае,
как пишет математик Питер Уиттл, проблема многорукого бандита
«воплощает в себе самую суть конфликта, проявляющегося в любой
деятельности человека».
Так какой же из двух рычагов дернуть? Вот тут и кроется подвох. Это
целиком и полностью зависит от того, что мы еще не обсудили: как долго
мы вообще собираемся оставаться в казино.
Поймай интервал
«Лови мгновение», – призывает Робин Уильямс в одной из самых
памятных сцен в фильме «Общество мертвых поэтов» (1989). «Ловите
мгновение, мальчики! Пусть ваша жизнь будет необыкновенной!»
Это невероятно важный совет, хоть он немного и противоречит сам
себе. Ловить момент и охватить всю жизнь – два совершенно разных
стремления. Есть такое выражение: «Ешь, пей, веселись, ибо завтра мы
умрем», но неплохо было бы продолжить его в ином ключе: «Начни
изучать новый язык, получи новые знания и навыки, заговори с
незнакомцем, ведь жизнь так длинна, и кто знает, что ожидает тебя спустя
много лет». Когда мы пытаемся найти равновесие между старыми
любимыми впечатлениями и новыми, ничто так не важно для нас, как
продолжительность времени, в течение которого мы собираемся ими
наслаждаться.
«Я скорее пойду в новый ресторан, когда я только приехал в город,
нежели когда я уже покидаю его», – рассказывает специалист по обработке
и анализу данных и блогер Крис Стуккио, ветеран боев за компромисс
«исследовать/эксплуатировать» как в работе, так и в жизни. «Сейчас я в
основном посещаю рестораны, которые давно знаю и люблю, потому что
собираюсь вскоре покинуть Нью-Йорк. При этом, когда я пару лет назад
переехал в Индию, в город Пуна, я был готов поесть в любой чертовой
забегаловке, лишь бы она не выглядела так, словно меня там собираются
отравить! И когда я собрался уезжать, я ходил по старым проверенным
местам вместо того, чтобы исследовать новые… Даже если бы я нашел
местечко получше, я бы смог побывать там всего раз или два. Так зачем
рисковать?»
Отрезвляющий момент в пробовании чего-то нового заключается в том,
что ценность исследования, поисков нового фаворита, исчезает с течением
времени, в то время как возможность наслаждаться найденным остается.
Даже если вы обнаружите очаровательное кафе в свой последний вечер в
городе, у вас уже не будет шанса еще раз туда вернуться.
Обратная же сторона медали в том, что ценность эксплуатации со
временем только возрастает. Чудеснейшее кафе, о котором вы знаете
сегодня, по меньшей мере настолько же чудесно, как и те чудеснейшие
кафе, о которых вы знали в прошлом месяце. (А если с тех пор вы открыли
для себя новое любимое место, то, может быть, и еще чудеснее!) Так что
исследуйте, если у вас будет возможность насладиться впоследствии
полученными результатами, и эксплуатируйте, когда будете готовы
покинуть игру. Этот промежуток и определяет стратегию.
Интересно отметить, что раз стратегия определяется интервалом, то,
наблюдая за стратегией, мы можем определить этот интервал. Возьмем, к
примеру, Голливуд: среди десяти самых кассовых фильмов 1981 года
только два были сиквелами. В 1991-м – три. В 2001-м – уже пять. А в 2011-
м восемь из десяти самых кассовых фильмов оказались сиквелами! На
самом деле 2011 год показал рекордный процент сиквелов от всех
основных релизов киностудии. А следом 2012-й побил этот рекорд;
и следующий год точно так же побьет рекорд предыдущего. В декабре
2012-го журналист Ник Аллен с заметным усталым равнодушием
предсказывал наступление нового года:
Публике покажут шестую часть «Людей Икс», а заодно и
«Форсаж-6», «Крепкий орешек – 5», «Очень страшное кино – 5» и
«Паранормальное явление – 5». Также выйдет «Железный человек – 3»,
«Мальчишник в Вегасе – 3» и вторые части «Маппетов», «Смурфиков»,
«Броска кобры» и «Плохого Санты».
С точки зрения киностудии, сиквел – это фильм с гарантированной
аудиторией поклонников: дойная корова, беспроигрышное дело. Но
перегрузка этими «верняками» – недальновидный подход, как и у Стуккио
с его отъездом из города. Сиквелы скорее, чем абсолютно новые фильмы,
станут хитами этого года, но откуда брать следующие желанные серии в
будущем? Это наводнение сиквелами не только прискорбно (как полагают
критики), но и несколько мучительно. Входя в фазу чистейшей воды
эксплуатации, киноиндустрия, кажется, подходит к концу своего
интервала.
И беглый анализ экономики Голливуда подтверждает эту догадку.
Прибыль крупнейших киностудий к 2011 году упала на 40 % по сравнению
с 2007-м, а продажи билетов снизились в 7 раз за последние 10 лет. Как
выразились в журнале The Economist, «зажатые между ростом расходов и
падением доходов, крупные киностудии ответили на вызов выпуском
новых фильмов, которые, по их мнению, должны стать хитами: обычно
сиквелов, приквелов или чего-то с участием узнаваемых персонажей».
Другими словами, они дергают за рычаги лучших игровых автоматов, пока
их не вышвырнули из казино.
Закрепи победу
Поиск оптимальных алгоритмов, которые подсказали бы нам, как
укротить «многорукого бандита», оказался весьма сложной задачей. Как
рассказывает Питер Уиттл, в ходе Второй мировой войны попытки решить
данную задачу «настолько подорвали силы и умы союзников… что было
выдвинуто предложение подкинуть Германии эту проблему как самый
действенный способ интеллектуальной диверсии».
Первые шаги к решению были предприняты годы спустя после войны,
когда колумбийский математик Герберт Роббинс продемонстрировал, что
существует простая стратегия, которая хоть и не идеальна, но дает
некоторые гарантии. Роббинс предметно рассмотрел тот случай, когда у
нас ровно два игровых автомата, и предложил способ под названием
«победил – закрепи результат, проиграл – переключись»: выберите
наугад любой рычаг и дергайте его до тех пор, пока автомат выдает деньги.
Если после определенного рывка автомат не выдал выигрыш, стоит
перейти к другому автомату. И хотя эта простая стратегия далека от
оптимального решения, Роббинс в 1952 году доказал, что работает она куда
лучше случайности.
Вслед за Роббинсом некоторые исследователи дальше занялись
изучением принципа «оставайся победителем». Ясно, что если вы и так
собирались дернуть за рычаг именно этого автомата, а он вдруг еще и
выдал вам выигрыш, это немедленно увеличит его ценность в ваших глазах
и вам будет хотеться и дальше дергать рычаг. И действительно, данный
принцип оказывается элементом оптимальной стратегии балансирования
между исследованием и использованием в широком диапазоне условий.
А вот «проиграл – переключись» – это уже совсем другая история.
Менять рычаг каждый раз, как проиграешь, – довольно опрометчивый шаг.
Допустим, вы посетили некий ресторан сто раз и всегда оставались
довольны вкусной едой. Неужели одного-единственного разочарования
будет достаточно, чтобы вы перестали туда ходить? Хорошие варианты не
должны слишком строго караться за возможные несовершенства.
Что важно, принцип «победил – закрепи результат, проиграл –
переключись» не имеет никакого отношения к промежутку времени,
который вы пытаетесь оптимизировать. Если ваш любимый ресторан
разочаровал вас в последнее посещение, данный алгоритм гласит, что вы
должны отправиться на ужин в другое место – даже если это ваша
последняя ночь в городе.
Таким образом, работа Роббинса о проблеме многорукого бандита дала
старт появлению значительного количества прочей литературы на эту
тему, и за последние годы исследователи добились существенного
прогресса. Ричард Беллман, математик из корпорации РЭНД (RAND),
нашел верное решение для случаев, когда мы заранее точно знаем, сколько
всего шансов и возможностей у нас будет. Как и в ситуации с полной
информацией в проблеме секретаря, трюк Беллмана заключался в том,
чтобы на самом деле действовать от обратного, представив вначале
последний рывок и предположив, какой из автоматов выбрать, учитывая
все возможные результаты предыдущих решений. Выяснив это, уже можно
переходить к предпоследнему варианту, потом к третьему с конца и т. д. до
исходной точки старта.
Выводы, проистекающие из метода Беллмана, неоспоримы, но при
большом количестве вариантов и длительном визите в казино он потребует
головокружительного – или попросту невозможного – объема работы.
Более того, даже если нам удастся просчитать все возможные расклады, мы
все равно не будем знать точно, сколько возможностей (или хотя бы
сколько способов) нам будет дано. По этим причинам проблема
многорукого бандита так и остается нерешенной. По словам Уиттла, «она
быстро стала классикой и синонимом неуступчивости».
Индекс Гиттинса
Как обычно бывает в математике, частное – это путь к общему. В 1970-
х годах корпорация Unilever попросила молодого математика Джона
Гиттинса помочь им оптимизировать некоторые клинические испытания их
препаратов. И неожиданно получилось, что вместе с этим Гиттинс нашел
ключ к математической загадке, которая оставалась нерешенной целым
поколением.
Гиттинс, сегодня – профессор статистики в Оксфорде, размышлял над
задачей, поставленной Unilever. При наличии нескольких химических
соединений как быстрее всего определить, какое из них будет наиболее
эффективным в борьбе с болезнью? Гиттинс попытался решить эту задачу
наиболее общим способом: множественные варианты следования, разная
вероятность вознаграждения за каждый из них и определенное количество
усилий (или денег, или времени), которые будут между этими вариантами
распределены. Это было, по сути, иное воплощение проблемы многорукого
бандита.
И некоммерческие фармацевтические компании, и медицинские
работники постоянно сталкиваются с противоречивыми требованиями
соотношения «исследовать/эксплуатировать». Компании хотят вкладывать
средства, выделяемые на научно-исследовательскую работу, в открытие
новых лекарств, но в то же время желают быть уверены, что их уже
существующие прибыльные производственные линии процветают.
Доктора же хотят выписывать лучшие из существующих лекарств, чтобы
их пациенты получали соответствующее лечение, но также хотят
стимулировать экспериментальные разработки с тем, чтобы были созданы
препараты, которые будут еще лучше.
В обоих случаях, кстати, не совсем ясно, каким должен быть
релевантный промежуток. В некотором смысле и фармацевтические
компании, и врачи заинтересованы в неопределенном будущем. Компании
теоретически хотят присутствовать на рынке всегда, и прорыв в медицине
может в будущем помочь людям, которые еще даже не родились! Но при
этом у настоящего приоритет выше: вылеченный сегодня пациент гораздо
более ценен, чем вылеченный через неделю или через год, и то же самое
можно сказать и о прибылях. Экономисты называют «дисконтированием»
эту идею ценить настоящее выше, чем будущее.
В отличие от своих предшественников, Гиттинс подошел к проблеме
многорукого бандита с этой точки зрения. Он поставил своей целью
максимизацию прибылей не в течение ограниченного временного
интервала, а в бесконечном необозримом будущем, хотя и
дисконтированном.
С этим дисконтированием мы не раз сталкивались в жизни. В конце
концов, если вы приезжаете в город на 10 дней, вы будете принимать
решение о выборе ресторана, держа в уме именно этот временной
промежуток; но если вы живете здесь постоянно, то это теряет смысл.
Вместо этого вы можете представить себе ценность выгод,
уменьшающихся в будущем: вас больше заботит, что съесть на ужин
сегодня, а не что будет на ужин завтра, а завтрашний ужин – больше, чем
тот, что состоится через год, особенно в зависимости от лично вашей
«дисконтной функции». Гиттинс в свою очередь предположил, что
ценность, приписываемая выгодам, уменьшается в геометрической
прогрессии: каждый ваш визит в ресторан стоит некой относительной доли
вашего предыдущего визита. Если, к примеру, вы допускаете, что ваш
шанс в любой день быть сбитым автобусом равен 1 %, то вам нужно
оценить ваш завтрашний ужин на 99 % от ценности сегодняшнего, потому
что есть вероятность его не съесть.
В работе над этим предположением о дисконтировании в
геометрической прогрессии Гиттинс изучал стратегию, которая, как он
думал, «была бы по меньшей мере хорошим приближением»: думать о
каждой «руке» многорукого бандита по отдельности и попытаться
вычислить ее самостоятельную ценность. Объяснял он это на весьма
забавном примере – на взятках.
В популярной телеигре «Сделка?!» участник выбирает один из 26
портфелей, в которых находятся призы от одного цента до миллиона
долларов. По ходу игры таинственный персонаж по имени Банкир
периодически звонит и предлагает участнику различные суммы, чтобы тот
не открывал выбранный портфель. Задача участника – решить, какую
названную Банкиром сумму предпочесть неизвестному призу в чемодане.
Гиттинс (пусть и за много лет до выхода в эфир первого выпуска игры)
понял, что проблема многорукого бандита ничем не отличается. О каждом
игровом автомате мы знаем крайне мало, а то и вовсе ничего, но есть некая
гарантированная сумма выигрыша, которая, если нам предложат ее взамен
игры на автомате, заставит нас больше никогда не дергать этот рычаг. Эта
цифра, которую Гиттинс назвал «динамический индекс распределения»
и которую весь мир знает сегодня как индекс Гиттинса, предлагает
очевидную стратегию поведения в казино: всегда играйте на автомате с
наивысшим индексом[6].
По факту стратегия индексирования оказалась удачной. Она полностью
решает проблему многорукого бандита с геометрически
дисконтированными выигрышами. Напряженные взаимоотношения между
исследованием и эксплуатацией превращаются в более простую задачу по
максимизации единственной величины, которая составляет долю и того и
другого. Гиттинс скромно оценивает свои достижения: «Это, конечно, не
великая теорема Ферма, – говорит он со смешком, – но это теорема,
позволяющая решить ряд вопросов дилеммы "исследование/
эксплуатация"».
Расчет индекса Гиттинса для конкретного агрегата, учитывая
показатели его работы и нашу ставку дисконтирования, используется и
сегодня. Но как только индекс Гиттинса для определенного набора
предпосылок становится известен, он может в дальнейшем использоваться
для решения всех задач такого плана. Примечательно, что количество
рычагов не имеет значения, поскольку индекс для каждого рассчитывается
отдельно.
В таблице ниже приведены значения индекса Гиттинса для девяти
успехов и неудач с тем расчетом, что выигрыш в следующей игре будет
стоить 90 % от выигрыша нынешнего. Эти значения могут использоваться
для решения задач многорукого бандита в повседневных делах. Например,
руководствуясь данными предположениями, вы должны выбрать тот
игровой автомат, у которого результат прошлых игр 1: 1 (и ожидаемая
ценность 50 %), а не тот, у которого результат 9: 6 (и ожидаемая ценность
60 %). Сравнение соответствующих значений в таблице показывает, что у
менее известного автомата индекс 0,6346, а у другого индекс всего 0,6300.
Проблема решена: испытай удачу в этот раз и исследуй.
Глядя на таблицу значений индекса Гиттинса, можно отметить
несколько интересных моментов. Во-первых, наглядно показано, как
работает принцип «оставайся победителем»: в любой строке слева направо
значение индекса возрастает. То есть если вы выбрали автомат, дернули за
рычаг и получили выигрыш, то (согласно таблице) имеет смысл снова
дергать именно его. Во-вторых, можно увидеть, в каких случаях принцип
«проиграл – переключись» может вас подвести. Девять выигрышей подряд
и следующий за ними проигрыш дадут индекс 0,8695, который выше
других значений в таблице, и, таким образом, вам нужно оставаться у этого
автомата по меньшей мере еще на одну игру.
Но самое интересное в таблице можно увидеть в верхнем левом углу.
Результат 0: 0 – у автомата, который совершенно неизвестен, – обладает
ожидаемой ценностью в 0,5000, а индекс Гиттинса – 0,7029. Иными
словами, нечто неизведанное не является более привлекательным, чем
автомат, который, как вы уже знаете, выдает деньги в семи играх из
десяти! Если посмотреть по диагонали вниз, можно заметить, что
соотношение 1: 1 дает в итоге индекс 0,6346, соотношение 2: 2 дает индекс
0,6010 и т. д. Если тенденция к 50 %-ным выигрышам сохраняется, то мы в
итоге приходим к индексу 0,5000, тогда как практика доказывает, что в
автомате нет ровным счетом ничего особенного и он в итоге забирает тот
«бонус», который подталкивает нас к дальнейшему исследованию. Но
конвергенция происходит довольно медленно; азарт исследователя – это
все же мощная сила. И действительно, смотрите: даже неудача с самой
первой игры (соотношение 0: 1) имеет индекс по-прежнему выше 50 %.
Мы также можем заметить, насколько меняется баланс «исследовать/
эксплуатировать» по мере того, как мы «обесцениваем» будущее. В
следующей таблице представлена точно такая же информация, как в
предыдущей, но предполагается, что последующий выигрыш стоит 99 % от
нынешнего, а не 90 %. В будущем, продуманном столь же четко, как
настоящее, ценность случайного открытия, относящегося к принятию
беспроигрышных решений, возрастает еще больше. Здесь игра на
абсолютно непроверенном автомате с результатом 0: 0 имеет 86,99 %
гарантированного успеха!
Индекс Гиттинса, таким образом, дает нам формальное строгое
обоснование, почему мы всегда предпочитаем узнавать нечто новое при
условии, что у нас есть некоторая возможность воспользоваться
результатами исследования. Старая пословица утверждает, что «по ту
сторону забора трава всегда зеленее», а математика объясняет, почему это
так: у неизведанного всегда есть шанс оказаться лучше, даже если мы не
ожидаем особой разницы и даже если оно может оказаться хуже.
Непроверенный новичок ценится больше (на ранних этапах, во всяком
случае), чем ветеран с такими же, казалось бы, способностями именно
потому, что о новичке мы меньше знаем. Исследование ценно само по себе,
поскольку поиски нового увеличивают наши шансы найти лучшее. Таким
образом, именно расчет на будущее, а не концентрация на сегодняшнем
дне и побуждает нас к новшествам.
Из этого следует, что индекс Гиттинса предлагает удивительно простое
решение проблемы многорукого бандита. Но это вовсе не обязательно
ставит точку в данном вопросе или помогает нам ориентироваться во всех
соотношениях исследования/эксплуатации в повседневной жизни. С одной
стороны, индекс Гиттинса оптимален только при определенных строгих
условиях. Он основан на обесценивании будущих выигрышей в
геометрической прогрессии, оценивая каждый на долю меньше
предыдущего, то есть делая ровно то, чего, согласно многочисленным
исследованиям в области бихевиористской экономики и психологии, люди
обычно не делают. Но если появляются затраты на переключение между
разными вариантами, индекс Гиттинса перестает быть оптимальным.
(Трава по ту сторону забора, может быть, и зеленее, но это не обязательно
служит основанием для того, чтобы лезть через забор – не говоря уж о том,
чтобы взять второй ипотечный кредит.) И, вероятно, еще более важно то,
что индекс Гиттинса невозможно вычислить походя, на лету. Если вы
постоянно таскаете с собой таблицу значений индекса, то вы, конечно,
можете оптимизировать свой выбор кафе и ресторанов, но затраченные
время и усилия могут не стоить того. («Погодите, сейчас я разрешу наш
спор. Так, этот ресторан получил 29 хороших оценок из 35, а этот – 13 из
15, и, таким образом, индекс Гиттинса… Эй, а куда все ушли?!»)
C тех пор как был разработан индекс Гиттинса, этот подход заставил
ученых-компьютерщиков и статистиков искать более простые и гибкие
стратегии обращения с многорукими бандитами. Эти стратегии более
удобны людям (и автоматам) для применения в различных ситуациях, чем
напряженные подсчеты индекса Гиттинса, и при этом они обеспечивают
сравнительно хорошие показатели работы. Кроме того, они борются с
одним из главных человеческих страхов относительно принятия решений о
том, какой шанс нельзя упустить.
Сожаление и оптимизм
Сожаления? Их было несколько. Настолько
мало, что и вспоминать не стоит.
Фрэнк Синатра
Интернет-казино
В 2007 году руководитель производственного направления компании
Google Дэн Сирокер взял отпуск, чтобы присоединиться к президентской
кампании тогдашнего сенатора Барака Обамы в Чикаго. Возглавив команду
«Новых медиааналитиков», Сирокер использовал одну из интернет-
практик Google для поддержки так называемой кнопки пожертвований
кампании. Результат оказался ошеломляющим: $57 млн дополнительных
пожертвований стали прямым итогом его работы.
Что именно он сделал с этой кнопкой?
Он провел сплит-тестирование.
Сплит-тестирование (или А/В-тестирование) работает следующим
образом: компания разрабатывает несколько версий определенной
интернет-странички. Для этого используются, например, различные цвета
или изображения, разные заголовки для новостных статей или по-разному
располагают элементы на экране. Затем входящие пользователи случайным
образом направляются на эти страницы (как правило, в равных
количествах). Один пользователь может увидеть красную кнопку, в то
время как другой видит синюю; один видит «Передать в дар», а другой –
«Пожертвовать». Затем соответствующие количественные показатели –
например, число кликов или средняя выручка от каждого посетителя –
отслеживаются. Если по истечении определенного периода времени
отмечаются статистически значимые результаты, то «победившая» версия,
как правило, становится окончательной – или контрольной для
следующего цикла экспериментов.
В случае со страничкой пожертвований Обамы результаты А/В-тестов
Сирокера были впечатляющими. В случае с теми, кто впервые посетил
сайт кампании, самой действенной оказалась кнопка «Пожертвуйте и
получите подарок», несмотря на то что стоимость отправки подарка
учитывалась. В случае с давними подписчиками на новости сайта, которые
никогда не давали ни копейки, лучше всего сработала кнопка
«Пожалуйста, пожертвуйте», вероятно взывавшая к их чувству вины.
Посетителей, делавших пожертвования раньше, лучше всего сподвигла на
следующие пожертвования кнопка «Внести вклад» (логика в том, что
человек уже пожертвовал, но всегда может внести еще немного). И во всех
случаях, к огромному удивлению команды кампании, простая черно-белая
фотография семьи Обамы превзошла все фото и видео, которые команда
могла придумать. Чистый эффект всех этих не зависящих друг от друга
оптимизаций был поистине гигантским.
Если вы пользовались интернетом за последнее десятилетие, то вы,
вероятно, стали частью решения чьей-либо задачи «исследовать/
эксплуатировать». Компании хотят понять, что приносит им наибольший
доход, стараясь в это же время заработать как можно больше. Исследуют,
эксплуатируют. Крупные технологические компании, такие как Amazon и
Google, начали проводить А/В-тесты на своих пользователях примерно с
2000 года, и в последующие годы интернет превратился в крупнейший
управляемый эксперимент в мире. Что эти компании исследуют и
эксплуатируют? Ну, например, вас: выясняют, что может заставит вас
двинуть мышкой и раскошелиться.
Компании проводят А/В-тесты навигации по их сайтам, адресных строк
и времени рассылки их рекламных имейлов, а иногда даже своих текущих
характеристик и ценообразования. Вместо обычного алгоритма поиска
Google и простого оформления заказов на Amazon теперь существует
бессчетное множество едва уловимых изменений и перестановок. (К
примеру, Google самым глупым образом протестировал 41 оттенок синего
для одной из своих панелей инструментов в 2009 году.) Но в некоторых
случаях маловероятно, что произвольная пара пользователей будет иметь
абсолютно одинаковый опыт.
Специалист по обработке данных Джефф Хаммербахер, бывший
сотрудник Facebook, однажды сказал в интервью Bloomberg Businessweek,
что «лучшие умы моего поколения размышляют над тем, как заставить
людей кликать по объявлениям». Вспомните «Вопль» Аллена Гинзбурга –
«Я видел лучшие умы своего поколения, разрушенные безумием» – самое
известное произведение бит-поколения. Хаммербахер оценивает такое
положение дел как «отстой». Но, несмотря ни на что, интернет все же дает
возможности для развития экспериментальной науки о кликах мышкой, о
чем маркетологи прошлого не могли и мечтать.
Мы все, разумеется, знаем, что произошло с Обамой на выборах 2008
года. Но что же случилось с его аналитическим директором Дэном
Сирокером? После инаугурации Сирокер вернулся на запад, в
Калифорнию, и вместе с коллегой из Google Питом Куменом организовал
фирму по оптимизации веб-сайтов Optimizely. К президентскому
избирательному циклу 2012 года среди проектов их компании
фигурировала как кампания по перевыборам Обамы, так и кампания
кандидата от республиканцев Митта Ромни.
В течение примерно 10 лет после первого использования А/В-
тестирование перестало быть секретным оружием. Оно так глубоко
укоренилось в принципах ведения бизнеса и политики в интернете, что
стало считаться чем-то само собой разумеющимся. Каждый раз, открывая
браузер, вы можете быть уверены, что все цвета, изображения, тексты,
возможно, даже и цены, которые вы видите, – и, конечно же, объявления –
пришли из алгоритма исследования/эксплуатации, подстраиваясь под ваши
клики. В этой конкретной задаче многорукого бандита вы не азартный
игрок; вы – джекпот.
Сам процесс сплит-тестирования с течением времени становится все
более изящным. Наиболее традиционная схема А/В-тестирования –
разделение потока пользователей поровну между двумя вариантами в
течение заданного периода времени, а затем передача всего трафика
целиком победителю – необязательно может быть лучшим алгоритмом для
решения данной проблемы, так как она означает, что половина
пользователей получает худший по качеству вариант на время проведения
тестирования. Награда за нахождение лучшего подхода потенциально
весьма высока. Более 90 % от годового дохода компании Google (а это
$50 млн) сегодня составляет доход от платной рекламы, а онлайн-торговля
насчитывает сотни миллиардов долларов в год. Это означает, что
алгоритмы исследования/эксплуатации эффективно властвуют –
экономически и технологически – над значительной долей интернета в
целом. Лучшие алгоритмы до сих пор горячо обсуждаются,
конкурирующие статистики, инженеры и блогеры ведут бесконечные
споры об оптимальном способе сбалансировать исследование и
эксплуатацию в каждом возможном сценарии ведения бизнеса.
Обсуждения малейших отличий между разными взглядами на проблему
исследования/эксплуатации могут показаться безнадежно туманными. На
деле оказывается, что эти различия имеют огромное значение – и на кону
не только президентские выборы или интернет-экономика.
На кону человеческие жизни.
Испытательный срок клинических
исследований
Между 1932 и 1972 годами несколько сотен больных сифилисом
афроамериканских мужчин в округе Мейкон, штат Алабама, были
намеренно оставлены без медицинской помощи в рамках сорокалетнего
эксперимента Службы общественного здравоохранения США, известного
как Таскиджийское исследование сифилиса. В 1966 году сотрудник
службы здравоохранения Питер Бакстун заявил протест. Второй протест
был заявлен в 1968 году. Но ситуация не менялась, пока он не донес
информацию до СМИ. Статья об этом вышла в The Washington Star 25
июля 1972 года, а на следующий день появилась на первой полосе The New
York Times. И правительство США наконец прекратило исследование.
Общественный резонанс и последующие слушания в Конгрессе
привели к инициативе по формальному закреплению принципов и
стандартов медицинской этики. В результате заседания комиссии в 1979
году в Бельмонтском конференц-центре в Мэриленде был принят
документ, известный также как Бельмонтский отчет. В нем изложены
этические основы медицинских экспериментов. Таскиджийский
эксперимент – вопиющее, однозначно неприемлемое нарушение долга
работников системы здравоохранения по отношению к пациентам –
благодаря этому не должен повториться. Но документ также отмечает, что
в некоторых случаях сложно определить, где же должна проходить граница
возможного.
«Завет Гиппократа "не навреди" давно уже стал основополагающим
принципом медицинской этики, – отмечается в докладе. – [Физиолог] Клод
Бернар распространил его действие и на сферу медицинских исследований,
сказав, что никто не имеет права нанести человеку вред, независимо от тех
выгод, которые это может принести остальным. Тем не менее, чтобы
понять, как избежать вреда, потребуется изучение, которое может этот
самый вред нанести; и в процессе получения этой информации некоторые
субъекты могут быть подвержены риску». Таким образом, Бельмонтский
отчет признает, но не отменяет той напряженности, которая неизбежно
возникает между действием на основе неких имеющихся знаний и
желанием получить еще больше знаний. Кроме того, становится ясно, что в
отдельных случаях получение дополнительной информации может быть
настолько ценным, что приходится опустить некоторые аспекты
медицинской этики. Клинические испытания новых препаратов и методов
лечения, отмечается в отчете, часто требуют риска причинения ущерба
некоторым пациентам, даже если принимаются все меры по минимизации
этого риска.
Но принцип милосердия не всегда столь однозначен. Остается
сложная этическая проблема, касающаяся, например, исследований [по
детским заболеваниям], имеющих степень риска выше минимального
уровня при отсутствии в ближайшей перспективе непосредственной
пользы для детей, включенных в эксперимент. Некоторые утверждают,
что подобные исследования неприемлемы, но другие считают, что некий
минимальный лимит исключит необходимость проведения многих
исследований в будущем, обещая принести огромную пользу здоровью
детей в перспективе. И здесь снова, как и во всех сложных ситуациях,
различные требования, предусматриваемые принципом благодеяния,
могут вступить в конфликт и поставить перед сложным выбором.
Один из основных вопросов, поднятых за время существования
Бельмонтского отчета, звучит так: действительно ли стандартный подход к
проведению клинических исследований предполагает свести к минимуму
риски для пациентов? В традиционном клиническом испытании пациенты
разделены на группы, и каждой группе назначается различное лечение на
время проведения исследования. (Только в исключительных случаях
испытания прекращают досрочно.) Цель данного способа – выяснить,
какое лечение эффективнее, а не обеспечить каждому пациенту в
отдельности наилучшую терапию. В этом случае он работает точно так же,
как А/В-тестирование веб-сайта, когда определенные группы людей
получают некий опыт в ходе эксперимента, который зарекомендует себя
позднее. Но врачи, как и технологические компании, получают
информацию о том, какой метод лучше, непосредственно в процессе
исследования – информацию, которая может использоваться для
улучшения результатов не только у будущих пациентов, но и у тех, кто уже
вовлечен в испытание.
Миллионы долларов тратятся на исследования оптимальной
конфигурации веб-сайта, но в клинических испытаниях последствия
экспериментов с оптимальными методами лечения – это в буквальном
смысле вопрос жизни и смерти. И все больше врачей и аналитиков
полагают, что мы действуем неправильно: мы должны отнестись к
проблеме выбора методов лечения как к задаче многорукого бандита и
попытаться найти лучшие варианты терапии для пациентов еще в процессе
исследования.
В 1969 году Марвин Зелен, гарвардский специалист по медико-
санитарной статистике, предложил проводить «адаптивные» исследования.
Одна из предложенных им идей заключалась в алгоритме случайной
выборки по последнему успеху – этакий вариант принципа «победил –
закрепи успех, проиграл – переключись», в котором возможность
использования определенного лечения повышается с каждой победой и
уменьшается с каждым поражением. Согласно методу Зелена, перед вами
шляпа, в которой находится два шара, каждый из которых символизирует
один из двух вариантов лечения, предполагаемых к изучению. Принцип
лечения первого пациента определяется случайным образом, путем
вытаскивания наугад любого шара из шляпы (после этого шар кладут
обратно в шляпу). Если выбранное лечение оказывается успешным, то вы
кладете в шляпу еще один шар, символизирующий данный способ
лечения, – и теперь у вас есть три шара, два из которых – это успешное
лечение. Если же выбранное лечение не приносит результатов, то в шляпу
кладется еще один шар, обозначающий другой метод лечения, что
повышает вероятность выбора альтернативы.
Алгоритм Зелена был впервые применен 16 лет спустя для изучения
экстракорпоральной мембранной оксигенации, или ЭКМО, –
революционного подхода к лечению дыхательной недостаточности у
младенцев. Согласно разработанному в 1970-х годах Робертом Бартлеттом
из Мичиганского университета методу ЭКМО, кровь, поступающая к
легким, забирается, насыщается кислородом с помощью специального
аппарата и возвращается к сердцу. Это радикальная мера, весьма
рискованная (возможно даже осложнение в виде эмболии), но она
предлагает реальный выход в ситуациях, когда других вариантов уже не
остается. В 1975 году метод ЭКМО сохранил жизнь новорожденной
девочке, которой даже искусственная вентиляция легких не обеспечивала
достаточное количество кислорода. Сегодня эта девочка – счастливая
сорокалетняя жена и мать. Но на первых порах процедура ЭКМО считалась
более чем экспериментальной и первые ее испытания на взрослых не
выявили особых преимуществ метода по сравнению с традиционными
формами лечения.
С 1982 по 1984 год Бартлетт и его коллеги из Мичиганского
университета провели исследование на новорожденных с дыхательной
недостаточностью. Исследователи подняли вопрос, как они сами
обозначили его, «этического аспекта проведения неапробированного, но
потенциально спасающего жизни метода лечения» и не хотели «скрывать
спасительное лечение от будущих пациентов ради случайного выбора
традиционных назначений». По этой причине они прибегли к методу
Зелена. Стратегия привела к тому, что один ребенок получил традиционное
лечение и умер, а одиннадцати новорожденным подряд был назначен
экспериментальный метод ЭКМО и все они выжили. В период с апреля по
ноябрь 1984 года, после окончания официального исследования, еще
десять новорожденных подпали под критерии лечения методом ЭКМО. К
восьмерым из них этот метод был применен, и все восемь выжили. Двоих
оставшихся пытались лечить традиционными способами, и они
скончались. Эти цифры говорят о многом, но тем не менее вскоре после
того, как Мичиганский университет завершил исследование ЭКМО, оно
стало предметом многочисленных споров. Столь малое количество
пациентов, получивших в рамках исследования традиционное лечение,
значительно отличается от традиционной методики проведения испытаний,
а сама процедура была высокоинвазивной и крайне рискованной. После
публикации статьи профессор биологической статистики Гарвардского
института общественного здравоохранения Джим Уор и его коллеги-
медики тщательно изучили данные и пришли к выводу, что они «не
оправдывают применение метода ЭКМО без дальнейшего углубленного
изучения». Так Уор с коллегами организовали второе клиническое
испытание в попытках сбалансировать обретение новых знаний с
эффективным лечением пациентов, но используя менее радикальные
методики. Они собирались случайным образом назначать пациентам либо
ЭКМО, либо традиционное лечение, пока количество смертей в одной из
групп не достигнет предварительно заданного показателя. Тогда
назначение лечения всем пациентам в группах будет изменено на то,
которое окажется более эффективным из двух.
На первом этапе исследования Уора четверо из десяти детей,
получивших традиционное лечение, умерли, а все девять из девяти, к кому
было применено ЭКМО, выжили. Четырех смертей было достаточно,
чтобы запустить вторую фазу исследования, в которой двадцати пациентам
было сделано ЭКМО, и девятнадцать выжили. Уор и его коллеги были
убеждены полученными результатами, заключив, что «сложно будет
оправдать дальнейшую рандомизацию с этической точки зрения».
Но некоторые врачи на тот момент уже пришли к этому выводу
самостоятельно и подняли шум. В число критиков входил и Дон Берри,
один из ведущих мировых экспертов по проблеме многорукого бандита. В
комментарии, который был опубликован параллельно с результатами
исследования Уора в журнале Statistical Science, Берри писал, что
«случайный выбор пациентов для получения не-ЭКМО-лечения в
исследовании Уора был неэтичным. …С моей точки зрения, исследование
Уора не должно было проводиться».
И все-таки исследование Уора убедило не все медицинское сообщество.
В 1990-х в Великобритании было проведено еще одно исследование
ЭКМО, в котором участвовали около двухсот младенцев. Вместо
адаптивных алгоритмов в этом исследовании использовались
традиционные методы, то есть младенцы были случайным образом
разделены на две равные группы. Исследователи объяснили свой
эксперимент тем, что польза ЭКМО «является спорной только из-за
различной интерпретации имеющихся данных». Как выяснилось, разница
между двумя способами лечения не была столь ярко выражена в
Великобритании, в отличие от США, но результаты тем не менее были
заявлены «в соответствии с ранее сделанными заключениями о том, что
применение метода ЭКМО снижает риск смертности». Какова была цена
этого знания? В группе с применением традиционных методов лечения
умерло на 24 младенца больше, чем в группе, где проводилось ЭКМО.
Трудность в признании результатов адаптивных клинических
исследований может на первый взгляд показаться непонятной. Но учтите,
что вклад статистики в медицину в начале XX века заключался в том,
чтобы превратить ее из той сферы, где доктора в отдельно взятых
ситуациях должны были убеждать друг друга в пользе новых методов
лечения, в такую, где у них были бы четкие указания, какого рода данные
убедительны, а какого – нет. Изменения в общепринятой статистической
практике имеют все шансы нарушить это хрупкое равновесие, по крайней
мере временно.
После спора, возникшего по поводу ЭКМО, Дон Берри перешел из
отдела статистики Университета Миннесоты в Онкологический центр М.
Д. Андерсона в Хьюстоне, где он применил методы, полученные в ходе
изучения проблемы многорукого бандита, в разработке клинических
испытаний для различных способов лечения рака. И хотя он остается
самым громогласным критиком рандомизированных клинических
испытаний, он ни в коем случае не одинок. В последние годы идеи, за
которые он боролся, наконец-то стали массовыми. В феврале 2010 года
Управление по санитарному надзору за качеством пищевых продуктов и
медикаментов США выпустило «руководство» – документ под названием
«Адаптивный дизайн клинических исследований лекарственных средств и
биопрепаратов», свидетельствующий о том, что они наконец-то готовы
изучить альтернативы (несмотря на то что медики всю жизнь цеплялись за
вариант, которому доверяют).
Беспокойный мир
Стоит только познакомиться с многорукими бандитами, как вы начнете
видеть их повсеместно. Редко когда мы принимаем «изолированное»
решение, результаты которого не будем использовать позже. Поэтому
логично будет поинтересоваться, насколько в целом люди настроены
решать подобные задачи, – вопрос, который широко изучался психологами
и поведенческими экономистами.
Представляется, что люди склонны к избыточным исследованиям:
новому уделяется несоизмеримо больше внимания, чем лучшему.
Наиболее ярко данный феномен был продемонстрирован в 1966 году в
эксперименте Амоса Тверски и Варда Эдвардса, когда испытуемым
показали ящик с двумя лампочками на нем и сказали, что каждая лампочка
будет загораться на какой-то определенный (но неизвестно какой) отрезок
времени. Затем им дали 1000 шансов либо наблюдать, какая из лампочек
загорится, либо сделать ставку на тот или иной результат, не видя самих
лампочек. (В отличие от более традиционной схемы с многоруким
бандитом, здесь невозможно было выбрать вариант, который был бы
одновременно и заключением пари, и наблюдением; участники только в
самом конце могли узнать, победила их ставка или нет.) Это чистой воды
поединок между исследованием и эксплуатацией, сбором информации и ее
использованием. В основном люди выбирали разумную стратегию,
наблюдая за лампочками некоторое время, а затем делая ставки на
кажущийся им наиболее вероятным исход. Но они неизменно тратили на
наблюдение больше времени, чем требовалось. Насколько же больше? В
первом эксперименте одна лампочка горела 60 % времени, а другая 40 %;
разница не слишком заметна. В этом случае люди предпочли 505 раз в
среднем наблюдать, а в остальных 495 попытках делать ставки. Но
математика говорит, что им следовало бы начинать спорить после 38
наблюдений, оставляя себе 962 шанса выиграть пари.
Другие исследования привели к аналогичным выводам. В 1990-х
исследователи из Уортонской школы бизнеса Роберт Мейер и Янг Ши
провели эксперимент, в котором людям предлагалось на выбор два
варианта: один с верным шансом на успех, а другой с неизвестным, а
именно две авиакомпании: перевозчик с именем, всегда прилетающий по
расписанию, и совершенно новая авиакомпания, не имеющая пока
репутации. С учетом цели максимизации количества прибывших вовремя
рейсов за установленный период времени математически оптимальной
стратегией было бы летать новой авиакомпанией при условии, что
преимущества перевозчика с именем не столь очевидны. Если в какой-то
момент станет ясно, что известная авиакомпания лучше (то есть если
индекс Гиттинса у новичка падает ниже показателей «ветерана»), тогда вы
немедленно переключаетесь на авиакомпанию с именем и больше никогда
не изменяете своему выбору. (Если в этой ситуации вы не сможете
получить больше информации о компании-новичке, как только перестанете
с ней летать, у нее не будет шансов реабилитироваться.) Но в процессе
эксперимента люди предпочитали летать неизвестной авиакомпанией
слишком редко, когда все было хорошо, и слишком часто, когда все было
плохо. Они также не ставили на ней крест, продолжая периодически
выбирать ее, особенно в ситуациях, когда ни один перевозчик не прибывал
вовремя по расписанию. Все это лишний раз подтверждает тенденцию к
чрезмерному исследованию.
И наконец, психологи Марк Стейверс, Майкл Ли и Э.-Я. Вагенмакерс
провели эксперимент с четырехруким бандитом, предложив группе людей
выбрать, за какой рычаг дергать, предоставив для этого 15 попыток. Затем
они классифицировали стратегии, которые, как им показалось,
использовали участники. Итоги показали, что 30 % участников были
наиболее близки к оптимальной стратегии, 47 % предпочитали принцип
«победи – закрепи успех, проиграл – переключись» и 22 % хаотично
выбирали между выбором нового рычага и рычагом лучшего до сих пор
автомата. Это опять-таки согласуется со склонностью к чрезмерным
исследованиям, так как и принцип «закрепи победу», и случайный выбор
рычага заставляют людей пробовать нечто отличное от того, что привело к
успеху в последней игре, хотя вместо этого они могли бы, наоборот,
наслаждаться результатами. Таким образом, в то время как мы склонны
нанять нового секретаря слишком быстро, мы, как правило, прекращаем
летать новой авиакомпанией слишком поздно. Но так же как работа без
секретаря имеет свои издержки, так же есть свои издержки у слишком
быстрого привыкания к новой авиакомпании: мир может измениться.
Обычная проблема многорукого бандита предполагает, что вероятность
выиграть у автомата остается неизменной на протяжении долгого времени.
Но это не всегда верно относительно авиакомпаний, ресторанов или
прочих ситуаций, где люди должны делать повторный выбор. Если
вероятность выигрыша на различных автоматах меняется со временем (так
называемый беспокойный бандит), то задача становится значительно
сложнее. (Настолько сложнее, что простого алгоритма решения, по сути, не
существует, и считается, что его и не будет никогда.) Один из аспектов
этой сложности заключается в том, что речь больше не идет об
исследовании в течение какого-то отрезка времени, а затем – эксплуатации:
когда мир меняется, продолжать исследовать может быть наилучшим
выходом. Возможно, через несколько лет стоит вновь посетить
разочаровавший вас ресторан. А вдруг там поменялось руководство?
В своей знаменитой книге «Прогулки» Генри Дэвид Торо размышлял о
том, что предпочитает, путешествуя, не уезжать далеко от дома, что
никогда не уставал от окрестностей и всегда находил нечто новое или
удивительное в пейзажах Массачусетса. «Существует своего рода
гармония между картинами пейзажа в радиусе десяти миль, в маршруте
послеобеденной прогулки, в веке человеческой жизни, – писал он. – Они
никогда не будут достаточно хорошо вам знакомы».
Жизнь в беспокойном мире требует от каждого из нас доли
неугомонности. До тех пор пока мир продолжает меняться, вы не должны
прекращать исследовать его.
Тем не менее алгоритмы, заточенные под стандартную проблему
многорукого бандита, пригождаются и в беспокойном мире. Такие методы,
как индекс Гиттинса или верхний доверительный предел, предлагают
довольно верные решения, особенно если выигрыш не слишком меняется с
течением времени. А большинство выгод в этом мире сегодня гораздо
более статичны, чем когда-либо были. Горсть ягод будет спелой неделю, а
потом сгниет, но, как сказал Энди Уорхол, «кола – это кола». Инстинкты,
заложенные эволюцией для жизни в постоянном течении, не всегда
окажутся нужными в эпоху промышленной стандартизации.
Производные понятия от классической формы проблемы – баланс
между исследованием и эксплуатацией, важность интервала, высокая
стоимость варианта 0: 0, минимизация сожалений – вкладывают новый
смысл не только в задачи, с которыми нам приходится сталкиваться, но и
во всю нашу жизнь.
Исследуй…
Хотя лабораторные исследования могут быть поучительными и
красноречивыми, большинство важнейших задач, которые нам приходится
решать, весьма далеки от них. И изучение структуры окружающего нас
мира, и формирование прочных социальных связей – пожизненные
проекты. Так что весьма поучительно будет понаблюдать, как общая
картина раннего исследования и поздней эксплуатации выглядит на
протяжении всей жизни.
Один любопытный факт человеческого существования, который
стремится понять и объяснить любой психолог, заключается в том, что нам
требуются многие годы, чтобы стать опытными и независимыми. Карибу и
газели должны быть готовы убегать от хищников с первого дня жизни, в то
время как человеку требуется почти год, чтобы сделать первый шаг.
Элисон Гопник, профессор психологии Калифорнийского университета в
Беркли и автор книги «Ученый в колыбели», объясняет, почему у людей
такой длительный период зависимости: «…это дает нам пройти полный
путь развития в решении конфликта между исследованием и
эксплуатацией». Как мы могли убедиться, хорошие алгоритмы игры с
многорукими бандитами, как правило, склоняют нас на раннем этапе
больше к исследованию, а на позднем – к эксплуатации полученных
знаний. Но, как пишет Гопник, «существенный недостаток в том, что вы не
получите хороший барыш, находясь на стадии разведки». Поэтому детство
«дает нам период просто исследовать возможности и не беспокоиться о
выгоде, потому что об этом побеспокоятся мамы и папы, бабушки и няни».
Думать о детях как о находящихся на переходном этапе разведки
жизненного алгоритма может быть утешительно для родителей
дошкольников. (У Тома две дочери дошкольного возраста, и он надеется,
что они следуют алгоритму минимизации сожалений.) Но это также дает
возможность взглянуть по-новому на рациональность детей. Гопник
пишет: «Если вы понаблюдаете за тем, как люди воспринимают детей,
станет ясно, что дети совершенно не приспособлены к жизни: если
посмотреть на их практические навыки, то вы ужаснетесь. Они не могут
завязать шнурки, не имеют понятия о долгосрочном планировании, не
умеют долго фокусировать внимание. Это все у детей действительно
выходит ужасно». Но беспорядочно жать на кнопки, живо интересоваться
новыми игрушками, мгновенно переключаться с одного на другое детям
удается отлично. И это именно то, чем они и должны заниматься, если их
цель – исследование. Если вы младенец, то засовывать в рот каждый
предмет в доме – это все равно что дергать в целях изучения за все рычаги
в казино.
В общем и целом наше восприятие рациональности чаще продиктовано
эксплуатацией, а не исследованием. Когда мы говорим о принятии
решений, мы обычно фокусируемся на немедленной выгоде, которую это
единственное решение должно принести. А если относиться к каждому
решению как к последнему в жизни, тогда, конечно, только эксплуатация
имеет смысл. Но на протяжении всей жизни вам придется принимать
множество решений. И будет разумным сделать акцент на исследовании
(новое, а не лучшее, захватывающее, а не безопасное, спонтанное, а не
запланированное), по крайней мере в начале жизни. То, что мы принимаем
за детские капризы, может быть проявлением мудрости большей, чем
наша.
…и пользуйся
На своем читательском пути я дошла до той
точки, которая наверняка знакома многим:
в отведенный мне отрезок земной жизни должна
ли я читать все больше и больше новых книг или
лучше прекратить это бесполезное
потребление – бесполезное, потому что оно не
имеет конца, – и начать перечитывать те книги,
которые принесли мне наибольшее удовольствие в
прошлом.
Лидия Дэвис
Радости сортировки
Сортировка лежит в основе работы компьютеров. По сути, именно
необходимость сортировки послужила причиной создания компьютера.
В конце XIX века прирост населения Соединенных Штатов составлял
30 % за десятилетие, и количество «объектов исследования» Бюро
переписи населения за 10 лет с 1870 по 1880 год возросло с пяти до более
чем двухсот. Подведение итогов переписи 1880 года заняло восемь лет, и
почти сразу после окончания работ стартовала перепись 1890 года.
Как выразился один писатель того времени, было удивительно, как
«канцелярские работники, заваленные бессчетным количеством бумаг… не
ослепли и не сошли с ума».
Само ведомство едва не рухнуло под собственным весом. Нужно было
срочно что-то делать.
Вдохновленный существовавшей в то время системой компостирования
железнодорожных билетов изобретатель Герман Холлерит решил
использовать технологию компостирования карточек из манильской
бумаги для хранения информации. Для учета и сортировки карточек им
была изобретена первая табулирующая машина, которая позднее была
названа его именем. Он получил патент на устройство в 1889 году, а уже в
1890-м машина Холлерита была одобрена правительством для
использования при переписи населения. До этого никто не видел ничего
подобного.
Восхищенный обозреватель писал: «Этот аппарат работает с
божественной точностью, но по скорости превосходит даже высшие силы».
Другой обозреватель тем не менее отметил, что область применения
машины ограничена и «изобретатель вряд ли разбогатеет на этом
устройстве, поскольку никто кроме правительства не станет его
использовать». Этому прогнозу, который Холлерит взял на заметку, не
было суждено сбыться в точности. Фирма Холлерита объединилась с
рядом других компаний в 1911 году и вошла в промышленный
конгломерат CTR (Computing-Tabulating-Recording Company). Спустя
несколько лет компания была переименована в IBM (International Business
Machines).
Техника сортировки продолжала подстегивать развитие компьютерной
науки на протяжении следующего столетия. Первым в мире кодом,
написанным для ЭВМ с запоминаемой программой, стала программа для
эффективной сортировки. В сущности, именно способность компьютера
заменить аппараты IBM, заточенные исключительно под сортировку
перфокарт, убедила американское правительство в том, что колоссальные
инвестиции в создание универсальной машины оправданны.
Согласно проведенному исследованию, к 60-м годам ХХ века более
четверти мировых компьютерных ресурсов были задействованы в
процессах сортировки. Что неудивительно, ведь сортировка –
неотъемлемая часть работы практически с любым видом информации.
Будь то определение наибольшей или наименьшей величины, общего или
частного, суммирование, индексирование, выявление дублирующей
информации или просто поиск того, что вам нужно, – все это, в сущности,
начинается с процесса сортировки.
На самом деле применение сортировки выходит далеко за рамки этих
процессов, поскольку одна из ее основных целей – продемонстрировать
человеку возможную пользу вещей. Из этого мы делаем вывод, что
сортировка – это также ключ к человеческому восприятию информации.
Отсортированные списки в наше время применяются повсеместно и так
естественно внедрились в нашу среду обитания, что нужно быть
внимательными и сосредоточенными, чтобы обнаружить их (как рыбе,
которая захотела бы узнать, что такое вода). Но, заметив их однажды, вы
будете замечать их всегда.
В нашей входящей корреспонденции обычно отображаются последние
пятьдесят из тысяч писем, отсортированных по времени получения. Когда
мы ищем нужный ресторан с помощью сервиса Yelp, поиск выдает топ-10
мест из сотен, отсортированных по степени удаленности от нас или
рейтингу. В блоге обычно показан список записей, отсортированных по
дате. Лента новостей в Facebook, поток твитов в Twitter и домашняя
страница Reddit представляют собой списки, составленные по тому или
иному определенному критерию. Мы считаем сайты вроде Google или Bing
поисковыми системами, на самом деле это не совсем корректно: по сути,
это системы сортировки. Вся сила Google как средства доступа к мировой
информации заключается не в его способности найти наш текст среди
сотен миллионов веб-страниц (это было под силу еще его конкурентам в
90-х), но в умении эффективно сортировать эти веб-страницы, показывая
нам только те десять, которые максимально соответствуют нашему
запросу.
Срез бесконечного множества – упорядоченный список в определенном
смысле представляет собой универсальный пользовательский интерфейс.
Информатика помогает нам понять, что стоит за всеми этими
ситуациями, а это знание в свою очередь позволяет проанализировать те
моменты, когда мы сами сталкиваемся с необходимостью навести порядок
в наших счетах, бумагах, книгах, носках и т. д. А происходит это гораздо
чаще, чем мы думаем.
Если подсчитать все недостатки (и преимущества) беспорядка, мы
можем увидеть случаи, в которых нам не следовало бы наводить порядок.
Более того, если вдуматься, мы используем принципы сортировки не
только при работе с информацией, но и в отношениях с людьми.
Использование принципов компьютерных технологий оказалось
неожиданно полезным, к примеру, на боксерском ринге. Все потому, что
даже минимальное знание основ сортировки может объяснить, как люди
способны мирно сосуществовать, периодически вступая в драку. Другими
словами, техника сортировки может поведать нам удивительные вещи о
природе нашего общества – того большого и важного порядка, авторами
которого мы являемся.
Муки сортировки
«Чтобы снизить себестоимость одной единицы продукции, люди
обычно увеличивают объемы производства», – писал Дж. Хоскен в 1955
году в первой научной статье, посвященной технике сортировки. Эта
теория экономии на масштабе знакома любому студенту, изучающему
бизнес.
Однако с сортировкой ситуация абсолютно противоположная: при
росте количества разновидностей «себестоимость единицы сортировки
возрастает». Сортировка предполагает существенный рост внешних
издержек при увеличении масштаба, ломая наши стандартные
представления о преимуществах работы с большими объемами.
Приготовить ужин для двоих обычно не сложнее, чем для одного, и это
однозначно проще, чем готовить ужин на одну персону дважды. Но
сортировка, скажем, ста книг на одной книжной полке займет у вас гораздо
больше времени, чем сортировка двух полок, на каждой из которых стоит
по пятьдесят книг. У вас в два раза больше объектов для сортировки и в
два раза больше места, на которое можно поставить тот или иной объект.
Чем глобальней ваша задача, тем хуже. Это самое первое и наиболее
фундаментальное наблюдение о теории сортировки. Масштаб убивает.
Из этого следует: чтобы уменьшить боль и страдания, нам необходимо
сократить количество вещей для сортировки.
Это факт: одна из лучших превентивных мер во избежание трудностей
с подсчетами при сортировке носков – просто стирать их почаще. Если
заниматься стиркой в три раза чаще, можно сократить затраты на
вычисления в девять раз.
Действительно, если бы сосед Хиллиса следовал своей излюбленной
процедуре, но сократил бы перерыв между стирками с 14 дней до 13, одно
это могло бы сэкономить ему 28 «вытягиваний» носков из корзины. (А
если бы он увеличил интервал между стирками на день, ему пришлось бы
«вылавливать» пару лишние 30 раз.)
Даже на примере такой несложной работы, регулярно проделываемой
раз в две недели, мы видим, что масштабы сортировки понемногу
становятся в тягость.
В то же время компьютерам приходится регулярно сортировать
миллионы различных единиц информации за раз. Для этого, как сказал
герой фильма «Челюсти», нам понадобится лодка побольше – и алгоритм
получше. Но, чтобы ответить на вопросы, как мы должны осуществлять
сортировку и какие ее методы наиболее эффективны, нам необходимо
прежде всего решить, как мы будем производить учет.
Иерархия памяти
У одной женщины было обостренное чувство
ответственности и почти не было памяти.
Она помнила достаточно, чтобы работать.
И работала она упорно.
Лидия Дэвис
Вытеснение и предсказания
И рано или поздно наступает такой момент,
когда для того, чтобы запомнить что-то новое,
приходится забыть кое-что из того, что вы
знали раньше. Поэтому чрезвычайно важно не
забивать память ненужными знаниями, которые
мешают сохранить необходимые.
Шерлок Холмс
Кеширование в тылу
И хотя кеширование начинало свой путь как схема организации
цифровой информации внутри компьютеров, очевидно, что оно также
применимо для организации материальных объектов в человеческом
обществе. Джон Хеннесси, президент Стэнфордского университета, пионер
в разработке компьютерной архитектуры и один из разработчиков
современных систем кеширования, сразу же заметил связь:
Кеширование – это очевидная вещь, поскольку мы занимаемся этим
все время. Я имею в виду то количество информации, которое я
получаю… За определенными вопросами мне приходится следить
постоянно, некоторые я решаю в рабочем порядке, другие я сдал в архив.
И, по моим наблюдениям, если какой-то материал был сдан в архив
университета, потребуется целый день, чтобы его оттуда заполучить. Ту
же технику мы используем ежедневно, пытаясь организовать свою
жизнь.
Параллель между этими задачами означает, что существует
потенциальная возможность сознательно применять решения из
информатики в повседневной жизни.
Во-первых, когда вы принимаете решение, что оставить, а от чего
избавиться, учтите, что метод замещения по давности использования –
потенциально хорош и даже более эффективен, чем «первым вошел,
первым вышел». Вам необязательно выбрасывать футболку из колледжа,
если вы иногда ее надеваете. Но клетчатые брюки, которые вы не носили
уже целую вечность? Они могли бы стать для кого-то находкой в магазине
секонд-хенд.
Во-вторых, используйте географию. Удостоверьтесь, что кеш, в
котором хранятся ваши вещи, расположен максимально близко от того
места, где эти вещи обычно используются. Это не типовая рекомендация из
книг по организации быта. Этот принцип неизменно обнаруживается в
схемах, которые реальные люди считают эффективными. «Я храню одежду
и обувь для бега и тренировок в нижнем ящике шкафа для верхней
одежды, – цитирует слова одного из опрошенных Джули Моргенстерн в
книге "Самоорганизация по принципу «изнутри наружу»", – мне нравится,
когда эти вещи лежат у входной двери».
Более яркий пример появляется в книге Уильяма Джонса «Не терять из
виду найденные вещи»:
Доктор рассказала мне, как она хранит вещи. «Мои дети считают, что
я эксцентрична, но я кладу вещи туда, где, мне кажется, они пригодятся
мне в следующий раз, даже если это кажется бессмысленным». В
качестве примера она поведала, что хранит дополнительные мешки для
пылесоса за диваном в гостиной. За диваном в гостиной? Какая в этом
логика?.. Оказывается, что пылесос обычно используется для чистки
ковра в гостиной… Когда мешок в нем переполняется, это обычно
происходит в гостиной. Тут как раз и находятся новые мешки.
Последнее наблюдение, которое нашло применение в руководствах по
организации пространства платяного шкафа, – это теория многоуровневой
иерархии памяти. Иметь кеш эффективно, но иметь несколько уровней
кеша – от самого маленького и быстрого до самого объемного и
медленного – в разы эффективнее. Если речь идет о ваших личных вещах,
то ваш шкаф – это один уровень кеша, подвал – другой уровень, а
арендованная ячейка на складе – третий. (Уровни расположены в порядке
уменьшения скорости доступа к вещам. Таким образом, вам следует
использовать принцип замещения по давности использования для
определения тех вещей, которые должны переместиться с одного уровня на
другой.) Но вы также можете ускорить процесс, добавив еще один уровень
кеширования – еще меньшего объема и большей скорости доступа,
расположенный ближе, чем шкаф.
Жена Тома, крайне терпимая в других вопросах, протестует против
горы одежды рядом с кроватью, несмотря на утверждение мужа, что по
сути это высокоэффективная схема кеширования. К счастью, в результате
наших разговоров с программистами появилось решение и для этой
проблемы. Рик Билью из Калифорнийского университета в Сан-Диего,
изучающий поисковые системы с когнитивной точки зрения, рекомендует
использовать вешалку для костюмов и брюк. Хотя в последнее время они
не слишком популярны, в сущности, такая вешалка – это шкаф для одного
комплекта одежды. Единая вешалка для пиджака, галстука и брюк –
идеальное техническое обеспечение для кеширования в домашних
условиях. Как видите, программисты могут не только сэкономить ваше
время, но и спасти ваш брак.
Тирания опыта
Большая книга – это огромное неудобство.
Каллимах (305–410 до н. э.), библиотекарь
в Александрийской библиотеке
Наука о времяпрепровождении
Хотя проблема тайм-менеджмента и стара, как само время, наука о
планировании родилась в механических цехах индустриальной революции.
В 1874 году Фредерик Тейлор, сын зажиточного юриста, отказался от
учебы в Гарварде, чтобы стать помощником инженера на заводе
гидрооборудования в Филадельфии. Четыре года спустя он закончил
обучение и начал работать на Мидвэльском сталелитейном заводе –
сначала токарем, затем бригадиром механического цеха и в конце концов
стал главным инженером. За это время он пришел к выводу, что время
работы техники (и людей) использовалось не очень-то эффективно. Этот
вывод и лег в основу разработанной им дисциплины, которую он назвал
«научный менеджмент».
Тейлор создал производственно-диспетчерский отдел, ключевым
элементом которого стал информационный стенд, на который
вывешивалось расписание работы в цехе. В расписании было указано,
какую задачу в данный момент выполняет каждая из машин и какие задачи
стоят на очереди. Такая практика также ляжет в основу работ коллеги
Тейлора Генри Ганта. Во втором десятилетии ХХ века он создаст свою
знаменитую диаграмму, которая впоследствии поможет реализовать
несколько наиболее амбициозных проектов столетия в сфере
строительства – от дамбы Гувера до системы межштатных магистралей
США. Век спустя диаграммы Ганта все еще украшают стены кабинетов и
экраны ноутбуков руководителей проектов в таких компаниях, как
Amazon, Ikea и SpaceX.
Тейлор и Гант сделали планирование объектом своих исследований и
дали ему визуальную и концептуальную форму. Однако они не разрешили
фундаментальный вопрос: какая же система планирования лучше? Первый
намек на то, что на этот вопрос в принципе можно ответить, появился
только спустя несколько десятилетий – в 1954 году в научной работе,
опубликованной математиком-исследователем Селмером Джонсоном из
корпорации RAND.
Джонсон исследовал сценарий переплетного дела: сначала книгу нужно
напечатать на одном станке, а потом переплести, используя другой. Но
наиболее распространенным примером спаренной работы двух устройств
из нашей жизни служит прачечная. Когда вы стираете вещи, в первую
очередь они проходят через стиральную машину, а потом отправляются в
сушилку. Количество времени, которое займет каждый процесс, напрямую
зависит от того, что вы загружаете. Если одежда сильно запачкана, то
времени на стирку потребуется больше, при этом время на сушку не будет
отличаться от обычного. Большее количество вещей будет дольше
сушиться, но стирка займет то же время, что и в случае меньшей загрузки.
И здесь Джонсон задал вопрос: «Если за один подход вам необходимо
постирать и посушить несколько условных комплектов вещей, как это
лучше организовать?»
Его ответ был таков: вам необходимо определить, какой процесс займет
у вас меньше всего времени, то есть выбрать тот комплект, стирка или
сушка которого займет минимальное время. Если комплект быстро
постирается, начните именно с него. Если же минимальное количество
времени требуется для сушки, займитесь этим комплектом в последнюю
очередь. Повторите те же действия в отношении остальных комплектов
вещей, двигаясь от начала и конца расписания к середине.
Интуитивно понятно: алгоритм Джонсона работает потому, что вне
зависимости от выбранной последовательности загрузки белья в самом
начале будет работать только стиральная машина, при этом сушилка будет
простаивать (а в самом конце, когда останется только посушить
выстиранные вещи, – наоборот). Если в самом начале стирать вещи на
коротких программах, а в конце сушить наименьшее количество вещей, то
мы увеличим период, когда и стиральная машина, и сушильная работают
одновременно. Таким образом, у нас получится свести к минимуму время,
проведенное в прачечной. Анализ Джонсона лег в основу первого
оптимального алгоритма планирования: начните с недолгой стирки и
закончите полупустой сушилкой.
Помимо непосредственных сфер применения алгоритма работа
Джонсона выявила два более глубоких факта: во-первых, планирование
можно выразить с помощью алгоритма, во-вторых, решения для
оптимального планирования существуют. Это позволило убрать из
рассмотрения ставшие популярными книги, которые описывали стратегии
для целых паноптикумов гипотетических заводов со всевозможными
видами и количествами станков.
Далее мы рассмотрим только один крошечный класс такой литературы,
где в отличие от переплетного дела или прачечной необходимо
планировать работу одного устройства. Существенная для нас проблема
планирования действительно касается только одного устройства – нас
самих.
Справляемся с дедлайнами
Планируя работу одного устройства, вы сразу же сталкиваетесь с
проблемой. Исследования Джонсона на примере переплетного дела
основывались на максимальном сокращении временных затрат,
необходимых для выполнения работы двумя машинами. В случае
управления одним устройством, если мы будем выполнять все
поставленные задачи, любое расписание потребует одинаковое количество
времени и определение порядка задач будет лишено смысла.
Это фундаментальный и парадоксальный факт, и он стоит того, чтобы
еще раз повторить его и закрепить в нашем сознании. Если у вас только
одно устройство и вы планируете выполнить все поставленные задачи,
то любой порядок выполнения задач займет у вас одинаковый отрезок
времени.
Таким образом, мы получаем первый урок в планировании работы
одного устройства еще до того, как мы приступили к обсуждению, а
именно: точно определите ваши цели. Мы не сможем объявить победителя
среди способов планирования, пока не поймем, как вести счет. Этот вопрос
также относится к компьютерной науке: прежде чем у вас появится план,
вы должны определить набор критериев. Оказывается, от выбора
критериев напрямую зависит, какой же подход в планировании станет
лучшим.
Первые научные работы о планировании задач для одного устройства
последовали сразу же за исследованием Джонсона и предложили ряд
веских критериев. Под каждый критерий была разработана простая
оптимальная стратегия.
Мы привыкли к тому, что, например, для каждой задачи существует
срок исполнения и допустимая величина просрочки. Таким образом, мы
можем ввести термин «максимальное опоздание выполнения набора
задач» – наибольший среди этих задач срыв установленного срока
исполнения (именно это будет учтено вашим работодателем при оценке
вашей деятельности). Для розничных покупателей или заказчиков услуг,
например, максимальная задержка выполнения задачи соответствует
самому долгому времени ожидания для клиента.
Если вам хотелось бы минимизировать время такой максимальной
задержки, следует начать с выполнения задачи, срок исполнения которой
наступит в первую очередь, и двигаться по направлению к задаче, которую
можно выполнить максимально нескоро. Стратегия, известная как «скорая
дата исполнения», на самом деле во многом интуитивна. (Например, в
сфере оказания услуг, когда срок исполнения задачи для каждого клиента
начинается с момента, когда тот вошел в дверь, такая стратегия
предполагает обслуживание клиентов в порядке их появления.) Но
некоторые выводы удивительны. Например, абсолютно не важно, сколько
потребуется времени на выполнение каждой конкретной задачи: на план
это никак не влияет, поэтому, по сути, вам это и не нужно знать. Все, что
важно, – это знать, когда задание должно быть исполнено.
Возможно, вы уже используете стратегию скорой даты исполнения,
чтобы справляться с рабочей нагрузкой, тогда вам не нужно
прислушиваться к советам программистов при выборе стратегии. Но,
скорее всего, вы не в курсе, что это оптимальная стратегия. Более точным
будет сказать, что для вас важен только один конкретный показатель –
сокращение времени вашего максимального опоздания. Если вы не
преследуете такую цель, то вам может больше подойти другая стратегия.
Например, возьмем холодильник. Если вы подписаны на приобретение
сельскохозяйственной продукции, то каждую неделю или две к порогу
вашего дома доставляют много свежих продуктов. У каждого продукта
разный срок хранения, поэтому употребление их по принципу очередности
истечения срока хранения кажется самой разумной идеей. Однако это еще
не конец истории. Алгоритм скорой даты исполнения, или в нашем случае
даты порчи продукта, оптимален для сокращения времени максимального
опоздания, что означает минимизацию степени испорченности одного
наиболее испорченного продукта, который вам предстоит съесть. Наверное,
это не самый аппетитный критерий.
Возможно, вместо этого мы хотели бы минимизировать количество
продуктов, которые испортятся. И тогда нам лучше прибегнуть к помощи
алгоритма Мура. В соответствии с ним мы начинаем процесс отбора
продуктов по принципу самого раннего истечения срока хранения,
планируя употребление в первую очередь самого скоропортящегося
продукта, по одному продукту за раз. Но как только мы понимаем, что не
сможем съесть следующий продукт вовремя, мы берем паузу,
возвращаемся ко всем тем продуктам, которые уже распланировали, и
выбрасываем самую крупную единицу (ту, на употребление которой нам
понадобится больше всего дней).
Например, возможно, нам придется отказаться от дыни, которую можно
съесть только за несколько подходов. Таким образом, мы каждый раз
следуем этой схеме, выкладывая продукты по сроку их хранения и
отправляя в мусорное ведро самый объемный продукт из
распланированных, который мы не успеваем съесть. В тот момент, когда
мы можем употребить в пищу все оставшиеся продукты и не допустить
порчи какого-либо из них, мы достигаем цели.
Алгоритм Мура по максимуму сокращает количество продуктов,
которые вам пришлось бы выбросить. Разумеется, вы можете пустить еду
на компост или просто отдать соседу. Но если речь идет о
производственных или бумажных делах, когда вы не можете просто
отказаться от проекта, при этом именно количество не исполненных в срок
проектов (а не степень задержки их исполнения) имеет для вас большое
значение, то алгоритм Мура не подскажет вам, как поступить с
просроченными задачами. Все, что вы выкинули из основной части плана,
можно сделать в самом конце в любом порядке, поскольку эти вопросы
уже не были решены в срок.
Отбираем задачи
Вернемся к тому, с чего мы начали наши рассуждения о планировании
работы одного устройства. Как говорится, «человек с одними часами знает,
сколько времени; человек с двумя часами никогда не уверен, который час».
Информатика может предложить нам оптимальные алгоритмы под любые
критерии, которые существуют для работы одного устройства, но выбрать
критерий можем только мы. Во многих случаях мы сами принимаем
решение, какую задачу хотим решать сейчас.
Это позволяет нам радикально переосмыслить проблему
прокрастинации – классической патологии тайм-менеджмента. Мы
привыкли думать, что это ошибочный алгоритм. А что, если все совсем
наоборот? Что если это и есть оптимальное решение неправильной задачи?
В одном из эпизодов «Секретных материалов» главный герой Малдер,
прикованный к постели (в буквальном смысле), вот-вот должен был пасть
жертвой вампира-невротика. Чтобы спастись, он опрокинул на пол пакет с
семечками. Вампир, бессильный перед своей психической болезнью, стал
нагибаться, чтобы подобрать их, семечко за семечком. Тем временем
наступил рассвет – раньше, чем Малдер стал добычей монстра.
Программисты назвали бы такой метод атакой пингования или сетевой
атакой типа «отказ в обслуживании»: если заставить систему выполнять
бесконечное количество банальных задач, самые важные вещи будут
утеряны в хаосе.
Обычно мы ассоциируем прокрастинацию с ленью и так называемым
поведением избегания, но симптомы прокрастинации могут так же легко
появиться и у людей (или компьютеров, или даже вампиров), которые
искренне и с энтузиазмом стремятся сделать все дела как можно быстрее.
В ходе исследования, проведенного в 2014 году Дэвидом Розенбаумом
из Пенсильванского университета, участников попросили отнести одно или
два тяжелых ведра на противоположный конец коридора. Одно из ведер
находилось рядом с участником исследования, второе – дальше по
коридору. К удивлению экспериментаторов, люди сразу же хватали ведро,
стоящее рядом с ними, и тащили его по коридору, при этом проходя мимо
второго ведра, которое могли бы тащить всего часть дистанции. Как было
отмечено исследователями, «этот на первый взгляд иррациональный выбор
отражает предрасположенность к прокрастинации. Этот термин мы
вводим, чтобы дать определение явлению, когда мы спешим выполнить
какую-либо промежуточную задачу даже ценой дополнительных
физических усилий». Откладывание решения большой задачи в пользу
решения множества простых вопросов может быть аналогичным образом
расценено как приближение осуществления промежуточной цели, что,
другими словами, означает, что прокрастинаторы действуют (оптимально!)
так, чтобы максимально быстро сократить количество нерешенных задач в
их мыслях. Это не значит, что их стратегия неэффективна для выполнения
задач. У них отличная стратегия, но для неверного критерия.
Работа с компьютером представляет определенную опасность, когда
нам нужно осознанно и четко выбрать критерий планирования:
пользовательский интерфейс может ненавязчиво (или навязчиво) заставить
нас использовать его критерии. Современный пользователь смартфона, в
частности, привыкает видеть на иконках приложений значки,
сигнализирующие о том количестве задач, которое мы должны выполнить
в каждом из них. Если почтовый ящик извещает нас об определенном
количестве непрочитанных писем, то получается, что все сообщения по
умолчанию имеют одинаковую значимость. В таком случае можно ли
порицать нас за то, что мы выбираем невесовую модель алгоритма
наименьшего времени обслуживания в решении этой задачи (в первую
очередь разбирайся с самыми простыми письмами и оттягивай работу с
самыми сложными до последнего), чтобы быстро уменьшить количество
непрочтенных писем?
Жить по критерию, умереть по критерию. Если все задачи на самом
деле имеют одинаковую значимость, именно так нам и придется поступить.
Но, если мы не хотим стать заложниками мелочей, нужно принять меры,
чтобы продвинуться к концу списка дел. И здесь все начинается с
осознания, что задача об одном устройстве, которую мы решаем, – та
самая, которую мы хотим в данный момент решать. (В случае со значками
приложений, если мы не можем заставить их отражать наши реальные
приоритеты или не в силах побороть порыв оптимально сократить это
количество нерешенных задач, брошенное нам как вызов, то, возможно,
лучше всего будет попросту их отключить.)
Концентрация на том, чтобы не просто решать вопросы, но решать
весовые вопросы, выполняя самую важную работу в каждый момент
времени, выглядит как панацея от прокрастинации. Но, как показывает
практика, даже этого недостаточно. И группа экспертов в области
компьютерного планирования убедится в этом при крайне драматичных
обстоятельствах: на поверхности Марса, на глазах у всего мира.
Ограничитель скорости
Лоулер потратил много лет своей жизни, размышляя над тем, как
эффективно выполнять последовательность задач, а вот его карьерный путь
любопытным образом петлял. Он изучал математику в Университете
Флориды, затем приступил к написанию дипломной работы в Гарварде в
1954 году, хотя и покинул его до получения степени. После учебы в
юридической школе, прохождения военной службы и работы на заводе он
в 1958 году вернулся в Гарвард, защитил диплом и получил работу в
Мичиганском университете. Приехав в Беркли в 1969 году во время своего
академического отпуска[18], он был арестован во время акции протеста
против войны во Вьетнаме. Лоулер стал преподавателем одного из
факультетов Университета Беркли на следующий год и завоевал
репутацию «общественного сознания» отделения компьютерной науки.
После его смерти в 1994 году Ассоциация вычислительной техники США
учредила премию имени Лоулера для тех, кто в своих работах
демонстрирует гуманитарный потенциал компьютерной науки.
В своем первом исследовании в области управления очередностью
Лоулер предположил, что с этим явлением можно легко справиться.
Например, возьмем алгоритм скорейшей даты исполнения, который
минимизирует максимальную задержку при выполнении набора задач.
Если ваши задачи связаны между собой отношениями предшествования, то
все усложняется: вы не можете просто пробираться через список дел,
исходя только из их дедлайнов, если к некоторым делам нельзя приступить
до выполнения других. Однако в 1968 году Лоулер доказал, что это не
такая уж и беда, если вы можете построить список дел «задом наперед»:
просто выберите те задачи, от выполнения которых не зависят другие дела,
и поместите одну из них с наиболее «отдаленным» дедлайном в самый
конец списка. Затем просто повторяйте этот процесс, каждый раз учитывая
только те задачи, которые не являются необходимым условием для
выполнения других (пока еще не запланированных) задач.
Но проницательный взгляд Лоулера позволил выявить кое-что
любопытное. Алгоритм наименьшего времени обслуживания, как мы
видели, представляет собой оптимальное решение, если наша цель –
вычеркнуть как можно больше задач из списка дел как можно быстрее. Но
если некоторые из ваших задач связаны между собой отношениями
предшествования, не существует простого или очевидного способа
адаптировать алгоритм наименьшего времени обслуживания для этой
ситуации. Несмотря на то что задача кажется элементарной, ни Лоулеру,
ни другим исследователям оказалось не под силу найти для нее
эффективное решение.
Более того, сам Лоулер скоро обнаружил, что эта ситуация
принадлежит к той категории задач, которые, по мнению большинства
программистов, не имеют эффективного решения. Специалисты называют
их труднорешаемыми[19].
Как мы имели возможность наблюдать в рамках сценария «утроить
выигрыш или потерять все», на который не распространяется мудрость
оптимальной остановки, не каждая четко сформулированная задача имеет
решение. В планировании очевидно, что каждый набор задач и
ограничений предполагает наличие какого-либо наилучшего порядка
выполнения, поэтому задачи планирования, в сущности, имеют решение,
но возможны случаи, для которых просто не существует однозначного
алгоритма, могущего подобрать оптимальное расписание выполнения
работ в разумные сроки.
Это обстоятельство привело исследователей вроде Лоулера и Ленстра к
неизбежному вопросу. Так все же какова доля труднорешаемых задач
планирования? Через 20 лет после того, как Селмер Джонсон с помощью
своей работы о переплетном деле дал толчок развитию теории
планирования, поиск отдельных решений стал самой грандиозной и
амбициозной задачей – своеобразным квестом по нанесению на карту всего
рельефа теории планирования.
Исследователи пришли к выводу, что даже самое малозаметное
изменение условий задачи планирования зачастую способно перенести ее в
категорию труднорешаемых. Например, алгоритм Мура минимизирует
количество не сделанных вовремя дел (или испорченных продуктов) в
случае, когда все дела имеют одинаковую важность, но, если одно из дел
более значимо, задача переходит в разряд труднорешаемых и ни один
алгоритм не в силах предложить оптимальное расписание. Аналогично,
если вам приходится ждать наступления определенного момента, чтобы
приступить к делам, то почти все задачи по планированию, которые мы
можем легко и эффективно решить без такого условия, становятся
труднорешаемыми. Запрет на вынос мусорного ведра на улицу до того
момента, когда приедет мусоровоз, мог бы стать разумной мерой
организации порядка в городе, но при этом вы полностью потеряете
контроль над вашим графиком.
Обозначение границ теории планирования продолжается по сей день.
Недавнее исследование показало, что около 7 % всех задач все еще
неизвестны. Это неизведанная сторона планирования. Из 93 % известных
нам задач только 9 % имеют эффективное решение, а остальные 84 %
считаются труднорешаемыми[20]. Другими словами, для большинства задач
по планированию типовые решения не подходят.
Если эффективная организация вашего графика кажется вам
непосильным делом, возможно, это так и есть. Тем не менее алгоритмы,
которые мы обсудили, могут стать отправной точкой для решения таких
непростых задач: если решение и не будет идеальным, по крайней мере,
оно будет грамотным.
Объединение прерываний
Планирование в условиях реального времени – сложный и любопытный
процесс отчасти благодаря взаимодействию двух не вполне совместимых
показателей. Это способность к реагированию (как быстро вы можете
откликаться на запросы) и производительность (как много вы можете
сделать в общей сложности). Любой работавший в офисной среде способен
быстро оценить напряженность между этими двумя критериями. Отчасти
по этой причине существуют сотрудники, чья работа заключается в том,
чтобы отвечать на звонки: они быстро реагируют, чтобы у других была
возможность проявить свою производительность. Но все усложняется,
когда вам, как компьютеру, приходится постоянно разрываться между
быстрым реагированием и высокой производительностью. И лучший
способ разобраться с делами, как бы парадоксально это ни звучало, –
притормозить.
Диспетчеры операционных систем обычно определяют период, в
течение которого каждая программа гарантированно работает, хотя бы
немного. При этом система отдает сегмент такого периода каждой из
программ. Чем больше программ запущено, тем меньше становятся
сегменты и тем чаще в течение каждого периода происходят контекстные
переключения. Таким образом, способность быстро реагировать
поддерживается за счет продуктивности. Если оставить без присмотра этот
порядок, гарантирующий каждому процессу хоть немного внимания в
каждом периоде, случится катастрофа. При избыточном количестве
запущенных программ сегмент для задачи сократится до такого размера,
что системе придется его полностью потратить на контекстное
переключение прежде, чем опять немедленно переключиться на новое
задание.
Препятствие заключается в том, что гарантировать быстрое
реагирование сложно. Современные операционные системы устанавливают
минимальный размер для своих сегментов, который не подлежит
дальнейшему делению. (В Linux, например, такой минимальный рабочий
сегмент составляет около трех четвертых миллисекунды, но у людей он,
скорее всего, будет составлять не менее нескольких минут.) Если после
этого процессы продолжают добавляться, то период просто будет продлен.
Это значит, что процессам придется ждать своей очереди дольше, чем
настанет их очередь, но зато, когда она подойдет, у них будет достаточно
времени, чтобы сделать что-то полезное. Установка минимального
времени, которое можно потратить на одно любое задание, помогает
полностью предотвратить стремление к быстрому реагированию за счет
продуктивности: если минимальный сегмент больше времени, которое
требуется на контекстное переключение, система никогда не сможет впасть
в состояние, когда переключение будет ее единственной работой. Этот
принцип также можно с легкостью перевести и в плоскость умственной
деятельности человека. Метод тайм-боксинга или техника помидора, где
вы устанавливаете кухонный таймер и выполняете только одно задание,
пока не прозвучит сигнал, – прямое воплощение этой идеи.
Но какой величины должен быть ваш кусочек? Ответ на вопрос,
сколько времени можно выделить на интервал между выполнением
повторяющегося задания (например, между проверками почты), с точки
зрения продуктивности крайне прост: столько, сколько возможно. Но это
еще не конец; бóльшая производительность также означает более
медленное реагирование.
Для вашего компьютера такая раздражающая помеха, на которую ему
приходится постоянно отвлекаться, – вовсе не проверка почты. Это вы. Вы
можете не шевелить мышкой несколько минут или часов, но,
дотронувшись до нее, вы ожидаете немедленно увидеть движение курсора
на экране, и это означает, что машина тратит огромные усилия на то, чтобы
следить за вами. Чем чаще она проверяет мышку и клавиатуру, тем
быстрее сможет отреагировать на запрос, но тем больше контекстных
переключений ей придется совершить. Поэтому правило, которому
следуют операционные системы, чтобы определить время, которое они
могут выделить на решение какой-либо задачи, элементарно: столько,
сколько возможно без паники или отставания от пользователя.
Когда люди ненадолго выбегают из дома по срочному делу, они обычно
говорят что-то вроде «ты даже не успеешь заметить, что меня нет». Когда
наши машины переключаются на вычислительные операции, им тоже
приходится торопиться, чтобы мы этого не заметили. Чтобы найти этот
баланс, программисты операционных систем обратились к психологии.
Они штудировали работы по психофизике, чтобы найти точное количество
миллисекунд простоя, нужное человеческому мозгу, чтобы зафиксировать
вспышку на экране или отставание курсора. Обращать внимание на
пользователя чаще нет смысла.
Благодаря этому, когда операционная система работает верно, вы даже
не замечаете, как ваш компьютер напрягается. Вы по-прежнему можете
легко перемещать курсор по экрану, даже если при этом ваш процессор
работает на полную катушку. Эта легкость все же стоит вам некоторой
степени производительности, но это преднамеренный компромисс,
придуманный инженерами системы: ваша система не взаимодействует с
вами столько, сколько это возможно, а затем возвращается, чтобы
отобразить движение мышки ровно в тот момент, когда вы к ней
прикоснулись. И снова этот принцип можно переложить на жизнь
человека.
Мораль такова: вы должны постараться сосредоточиться на одной
задаче столько, сколько представляется возможным, не снижая уровень
вашей продуктивности ниже определенной минимальной отметки. Решите,
как быстро вы должны реагировать, и затем, если вы хотите закончить
дело, не повышайте скорость реагирования.
Если вы делаете много контекстных переключений, поскольку решаете
ряд разнородных коротких задач, вы с тем же успехом можете применить и
другую мудрость из компьютерной науки – «объединение прерываний».
Если у вас пять счетов по кредитным картам, к примеру, не бегите
оплачивать их по одному. Дождитесь получения пятого счета и оплатите
все. Поскольку платеж не требуется внести раньше тридцать первого дня с
момента получения счета, то вы можете назначить, к примеру, первый день
месяца днем оплаты кредитов и именно тогда засесть за работу со счетами.
При этом не важно, когда они пришли – три недели или три часа назад.
Аналогично, если от вас не требуется отвечать на письма чаще, чем раз в
24 часа, вы можете проверять почтовый ящик один раз в день. Сами же
компьютеры поступают примерно так: они ждут начала установленного
интервала и проверяют все вместо того, чтобы переключаться для решения
отдельных, неорганизованных помех от их многочисленных
подкомпонентов.
В отдельных случаях программисты отмечают отсутствие объединения
прерываний в их собственной жизни. Директор по исследованиям Google
Питер Норвиг говорит: «Мне пришлось трижды за сегодняшний день ехать
в город по делам, и я сказал себе: "Это же ошибка в твоем алгоритме. Ты
должен был подождать или отправить эти дела в очередь, нежели
выполнять их последовательно по мере поступления"».
Отличный пример объединения прерываний – организация работы
почтовой службы. Поскольку почту доставляют лишь раз в день, то
посылка или письмо, отправленное минутой позже крайнего срока, будет
ожидать дополнительные 24 часа, чтобы попасть к вам. Учитывая
издержки на контекстное переключение, положительная сторона этого
явления тоже должна быть для вас очевидной: счета или письма могут
отвлечь вас только раз в день. Более того, 24-часовой почтовый ритм
требует от вас минимального реагирования: ведь не важно, пишете вы ваш
ответ отправителю в течение пяти минут или пяти часов после получения
письма.
В учебных заведениях заседание кафедры – это способ объединения
прерываний от студентов. В коммерческих структурах объединение
прерываний несколько оправдывает проведение самых критикуемых
офисных ритуалов – еженедельных собраний. При всех их недостатках
регулярно проводимые собрания – одно из лучших средств защиты от
спонтанного прерывания и незапланированного контекстного
переключения.
Покровителем образа жизни, основанного на минимизации количества
контекстных переключений, можно назвать легендарного программиста
Дональда Кнута. «Я делаю только одно дело за раз, – говорит он. – Это то,
что компьютерные ученые называют пакетной обработкой данных –
альтернативой перекидывания информации». И Кнут не шутит.
1 января 2014 года он приступил к настройке языка TeX, в рамках
которой он устранил все ошибки, которые зафиксировали его программы
для набора текста за шесть лет. Его отчет заканчивается бодрым «Не
пропустите настройку ТеХ в 2021 году!». Кроме того, до сих пор (с 1990
года) у Кнута нет электронной почты. «Электронный ящик незаменим для
тех, чья задача в жизни – быть на гребне волны. Но не для меня. Моя
задача – быть на глубине. То, чем я занимаюсь, требует долгих часов
изучения и непрерывной концентрации». Он просматривает свою почту
каждые три месяца, а факсы – каждые шесть.
Но у нас нет необходимости впадать в такие крайности, мечтая, чтобы в
основе жизненного уклада лежал принцип объединения прерываний. По
счастливой случайности, почтовые отделения разделяют пользу этого
принципа. В остальных аспектах жизни нам нужно самим выстроить его
или требовать его применения. У наших постоянно трезвонящих устройств
есть режим «не беспокоить», который мы можем вручную включать и
выключать в течение дня, но это примитивно и неудобно. Вместо этого мы
можем обратиться к настройкам, которые создадут нам необходимые
условия для объединения прерываний. Обращайся ко мне каждые 10
минут, например. И рассказывай мне сразу все, что произошло за этот
период.
6. Правило Байеса
Предсказываем будущее
Все человеческое знание нечетко, неточно и
неполно.
Бертран Рассел
Закон Лапласа
Лаплас родился в Нормандии в 1749 году. Отец отправил его учиться в
католическую школу с тем расчетом, что он изберет священническую
стезю. Лаплас продолжал изучать богословие в Канском университете, но в
отличие от Байеса, который всю жизнь балансировал на грани духовных и
научных изысканий, он в результате отказался от духовного сана в пользу
математики.
В 1774 году, не будучи знакомым с работой Байеса, Лаплас публикует
многообещающий документ под названием «Трактат о вероятности причин
по событиям». В нем Лаплас наконец решает вопрос, как делать выводы в
обратном направлении – от наблюдаемых последствий до их вероятных
причин.
Байес, как мы увидели, нашел способ сравнить вероятность одной
гипотезы относительно другой. Но в случае с лотереей обнаруживается в
буквальном смысле бесконечное число гипотез – по одной для каждой
возможной доли выигрышных билетов. С помощью вычислений и
«противоречивой» математики, ярым защитником которой был Байес,
Лапласу удалось доказать, что весь этот огромный спектр вероятностей
может быть сведен к единственному возможному значению, да еще и
удивительно лаконичному. По его теории, если мы действительно ничего
не знаем о розыгрыше наперед, то после вытаскивания счастливого билета
с первой же попытки мы будем ожидать, что доля выигрышных билетов во
всем выпуске составляет
(по закону Лапласа) будет более разумной, чем предположение, что теперь
вы каждый раз будете выигрывать, и более практичной, чем метод Прайса
(согласно которому выходит 75 %-ная метавероятность 50 %, или бóльшие
шансы на успех).
или что вероятность того, что друг достал двухстороннюю монету, вдвое
выше.
Однако тут нужно сделать одно важное замечание. В тех случаях, когда
у нас нет хорошей априорной вероятности, мы не можем делать хорошие
прогнозы. В исследовании Тома и Джоша, к примеру, была одна тема, по
которой прогнозы людей систематически расходились с правилом Байеса:
прогнозы о продолжительности правления египетских фараонов. (Как это
часто бывает, правление фараонов подчиняется распределению Эрланга.)
Людям просто не хватало косвенной информации, чтобы интуитивно
чувствовать диапазон этих значений, поэтому их прогнозы, разумеется, не
оправдались. Хорошие прогнозы требуют хорошей информационной базы.
Это влечет за собой ряд важных последствий. Наши суждения не
оправдывают наших ожиданий, а наши ожидания не оправдывают наш
опыт. То, как мы видим наше будущее, во многом говорит и о мире, в
котором мы живем, и о нашем собственном прошлом.
Поклонение данным
Если бы мы имели огромный объем данных, полученных на основании
одной идеально подготовленной репрезентативной выборки (безошибочно
точной и отражающей конкретно то, что мы пытаемся оценить), лучшим
подходом было бы использование наиболее сложной модели. Но если мы
попытаемся максимально подстроить нашу модель под те данные при
условии, что какой-либо один фактор будет варьироваться, то мы рискуем
получить эффект переподгонки.
Другими словами, угроза переподгонки возникает каждый раз, когда
мы имеем дело с изменяющимися данными или ошибками в измерениях, а
это означает – постоянно. Ошибки могут быть допущены при сборе
информации или при передаче данных. Иногда изучаемым феноменам
вроде человеческого счастья трудно даже дать определение, не то что
измерить их. Благодаря своей гибкости наиболее сложные из моделей
могут подстроиться под любую структуру данных, но этот факт также
означает, что эти модели смогут подстроиться и под те структуры, которые
представляют собой лишь образ данных, состоящий из «помех» и ошибок.
На протяжении всей истории религиозные тексты предостерегали своих
последователей против идолопоклонничества – поклонения статуям,
изображениям, мощам и другим материальным артефактам вместо тех
божественных сущностей, которых олицетворяют те артефакты. Например,
первая заповедь предупреждает против поклонения «любому изображению
или подобию того, что на небе вверху». А в Книге Царств бронзовая змея,
сделанная по велению Бога, становится объектом молитв и курения
фимиама вместо самого Бога. (И Бог не был доволен.) В глобальном
смысле переподгонка – это своего рода поклонение данным, последствие
концентрации на том, что мы можем измерить, а не на том, что
действительно имеет значение.
Разница между имеющимися у нас данными и прогнозами, которые мы
хотим получить, имеет место практически всегда. Когда мы принимаем
важное решение, мы можем лишь гадать, что придется нам по нраву позже,
рассматривая те факторы, которые важны для нас сейчас. (Как писал
Дэниэл Гилберт из Гарварда, мы в будущем часто «платим большие
деньги, чтобы свести татуировки, сделанные за не меньшие деньги».)
Подготавливая финансовый прогноз, мы можем рассматривать только те
факторы, которые оказывали влияние на цену акций в прошлом, но не на
то, что может повлиять на нее в будущем. Даже в наших будничных делах
прослеживается та же тенденция: отправляя электронное письмо, мы
пробегаем глазами по тексту, пытаясь предугадать реакцию получателя.
Так же как и в опросах общественного мнения, данные в реальной жизни
всегда содержат определенные помехи и колебания.
Впоследствии рассмотрение большего количества факторов и трата
больших усилий на то, чтобы переложить их в модель, может привести к
тому, что мы сделаем выбор в пользу неверного фактора, предлагая
молиться бронзовой змее данных, а не той великой силе, которая стоит за
ними.
Переподгонка повсюду
Узнав о существовании переподгонки, вы видите ее проявления
повсюду.
Переподгонка, например, объясняет иронию наших рецепторов. Как так
получается, что та еда, которая нравится нам на вкус больше всего, нередко
вредна для нашего здоровья, в то время как основная и единственная
функция наших вкусовых рецепторов состоит в том, чтобы предотвратить
потребление вредной пищи?
Ответ прост: вкус – это показатель здоровья нашего организма. Жиры,
сахар и соль – важные питательные вещества, и пару сотен тысяч лет назад
содержащая их пища составляла почти весь дневной рацион.
Однако возможность модифицировать пищу уничтожила эту
взаимосвязь. Сейчас мы можем добавлять жиры и сахар сверх полезного
для нас количества и употреблять исключительно эти продукты, а не
растения, зерна и мясо, исторически составлявшие рацион человека.
Другими словами, мы можем переподогнать вкус. Чем более искусно мы
видоизменяем свою пищу (и чем больше наш образ жизни отличается от
того, как жили наши предки), тем более несовершенной становится
система показателей нашего вкуса. Свобода выбора, таким образом,
превращается в настоящее проклятие, благодаря которому мы можем
получить в точности все, что пожелаем, даже когда это идет нам во вред.
Будьте осторожны: когда вы идете в спортзал, чтобы сбросить лишние
килограммы, полученные от употребления того же сахара, вы тоже
рискуете испытать эффект переподгонки. Определенные видимые
признаки стройности – скудная жировая ткань и большая мышечная масса,
например, – нетрудно измерить, и их соотносят, скажем, с уменьшением
риска сердечных и других заболеваний. Но при этом такие признаки –
отнюдь не идеальный показатель. Переподгонка в этом случае – например,
если вы сидите на экстремальной диете для снижения веса или принимаете
стероиды для наращивания мышечной массы – может создать картину
хорошего здоровья, однако это будет лишь картина.
Переподгонка проявляется и в спорте. Например, Том со школьных лет
время от времени занимался фехтованием. Изначальная цель фехтования
состояла в том, чтобы научить человека обороняться на дуэли. И оружие,
которое применяется в современном фехтовании, похоже на то, что
использовалось раньше для подобных тренировок. (В частности, это
касается шпаги, применявшейся во время формальных дуэлей меньше
полувека назад.) Однако с изобретением электронного устройства для
подсчета очков – кнопки на кончике шпаги, которая фиксирует укол, –
изменился и сам спорт. Техники, которые вряд ли были бы вам полезны на
серьезной дуэли, превратились в важнейшие навыки на соревнованиях.
Сегодня фехтовальщики используют гибкие шпаги, которые позволяют им
«зажечь» кнопку, едва касаясь противника. В результате кажется, будто
они просто тыкают друг в друга тонким металлическим прутом, а не
наносят удары. В качестве спортивной дисциплины это однозначно
увлекательное занятие и яркое зрелище, но по мере того, как спортсмены
переподгоняют свою тактику с учетом особенностей ведения счета,
фехтование становится все менее полезным с точки зрения реальных
навыков владения холодным оружием.
Однако, наверное, нет другой области, где влияние переподгонки
настолько же ощутимо и проблематично, как в мире бизнеса. Как писал
Стив Джобс, «системы стимулирования работают. Поэтому надо быть
очень осторожным, решая, к чему стимулировать людей, поскольку
различные системы стимулирования приводят к различным последствиям,
которые вы не всегда можете предвидеть». Сэм Альтман, президент
стартап-инкубатора Y Combinator, по-своему повторяет слова Джобса:
«Это действительно так: компания построит все, что ее генеральный
директор решит измерить».
В сущности, невероятно трудно придумать какое-либо мотивирующее
средство или измерение, которое не приводило бы к появлению ошибок и
неточностей. В 1950-е годы профессор Корнеллского университета В. Ф.
Риджвей перечислил массу таких «дисфункциональных последствий
измерения характеристик». В рекрутинговой компании сотрудников
оценивали по количеству проведенных ими собеседований, что
мотивировало их как можно быстрее проводить встречи, не тратя время на
то, чтобы действительно помочь клиентам найти работу. В федеральных
правоохранительных органах, где была установлена месячная квота по
количеству дел, в конце месяца следователи выбирали наиболее простые
дела вместо тех, что требовали оперативного решения. На заводе при
введении мер по стимулированию выработки мастера стали пренебрегать
выполнением работ по обслуживанию и ремонту техники, что приводило к
катастрофическим последствиям на производстве.
Такие проблемы нельзя игнорировать и расценивать лишь как
неудачную попытку реализации управленческих задач. Скорее, наоборот:
они доказывают факт грубой оптимизации неверного фактора.
Переход на аналитику в режиме реального времени, который
произошел в ХХI веке, еще больше усугубил опасности, кроющиеся в
системах измерений. Авинаш Каушик, евангелист в области цифрового
маркетинга в Google, предупреждает, что попытка заставить пользователей
увидеть как можно больше рекламы логично приводит к загромождению
сайта рекламными объявлениями: «Когда вам платят за количество
контактов с рекламным объявлением, ваша мотивация заключается в том,
чтобы попытаться показать как можно больше объявлений на каждой
странице и удостовериться, что посетитель видит наибольшее возможное
количество страниц на сайте… Такое стимулирование смещает фокус с
фигуры первостепенной важности – вашего клиента – на второстепенную
фигуру – вашего рекламщика». Интернет-сайт может принести несколько
бóльшую прибыль в краткосрочной перспективе, однако переполненные
объявлениями статьи, медленно загружающиеся слайд-шоу с огромным
количеством страниц и всплывающие заголовки сенсационных новостей в
долгосрочной перспективе лишь отпугнут от вас читателей. Вывод
Каушика таков: «Друзья не позволят своим друзьям измерять количество
просмотров страницы. Никогда».
В некоторых случаях разница между моделью и реальным миром
становится действительно вопросом жизни и смерти. В военных и
правоохранительных органах, например, тренировка памяти с помощью
повторения информации считается ключевым методом для развития
навыков действий на линии огня.
Цель – отработать определенные передвижения и тактики до
автоматизма. Но, когда на сцену выходит переподгонка, последствия могут
быть катастрофическими. Были случаи, когда полицейские офицеры, попав
в перестрелку, тратили время на то, чтобы положить отработанные гильзы
в карман (таковы правила поведения на стрельбище). Как пишет бывший
десантник, а ныне профессор психологии в Военной академии США Дейв
Гроссман, «как только дым после стрельбы рассеивался, офицеры в
недоумении обнаруживали в карманах пустые гильзы, не помня, как они
там оказались. В нескольких случаях убитые полицейские были
обнаружены с гильзами в руках, они явно пытались перед смертью
выполнить заученную административную формальность». Аналогично
ФБР пришлось изменить регламент тренировок, после которых агенты
рефлекторно делали два выстрела и затем убирали пистолет в кобуру вне
зависимости от того, была ли повержена мишень или угроза все еще
существовала. Такие ошибки в военной среде называют шрамами
тренировок, и они, по сути, отражают возможность существования
переподгонки в подготовке и обучении. В одной особенно драматичной
ситуации офицер инстинктивно выхватил оружие из рук своего противника
и затем автоматически передал его обратно – точно так же, как он делал на
многочисленных занятиях с инструктором.
Преимущества эвристики
В 1990 году экономист Гарри Марковиц получил Нобелевскую премию
за вклад в развитие экономики в рамках развития современной
портфельной теории: его прогрессивная «оптимизация портфеля со
средним отклонением» продемонстрировала, как инвестор может
оптимально распределить свои средства и активы для получения
максимальной прибыли при заданном уровне риска. Таким образом,
похоже, Марковиц был единственным человеком, идеально
подготовленным к решению задачи по инвестированию своих пенсионных
накоплений. Что же он решил предпринять, когда настало время?
Я должен был рассчитать исторические ковариации классов активов
и провести эффективное разделение. Вместо этого я представил свое
горе, если бы рынок ценных бумаг вырос, а я не участвовал бы в этом,
или если бы акции упали и вместе с ними исчезли бы все мои
сбережения. Я был намерен минимизировать свои будущие сожаления.
Поэтому я разделил сбережения и вложил их в равных долях в
облигации и акции.
Но почему же он так поступил? История лауреата Нобелевской премии
и его инвестиционной стратегии могла стать показательным примером
человеческой иррациональности: при столкновении со сложностями
реальной жизни он отверг рациональную модель и последовал простой
эвристике. Но именно из-за сложностей реальной жизни простая
эвристика, по сути, может оказаться рациональным решением.
Когда речь идет об управлении портфелем, оказывается, что за
исключением тех случаев, когда вы абсолютно уверены в имеющейся у вас
информации о рынках, вам лучше вовсе игнорировать любые сведения по
этому вопросу. Применение схемы оптимальной структуры портфеля
требует тщательной оценки статистических свойств различных
капиталовложений. Каждая ошибка в оценке очень сильно меняет
итоговый вариант размещения активов, что потенциально повышает
уровень риска. Напротив, распределение денежных средств в равных долях
между акциями и облигациями вовсе не зависит от тех данных, которые вы
изучили. Эта стратегия даже не пытается подстроиться под исторические
показатели этих категорий капиталовложений. Соответственно,
переподгонка здесь невозможна.
Разумеется, использование метода распределения 50/50 необязательно
является золотой серединой в сложной ситуации, но нам есть что сказать в
его пользу. Если вам довелось узнать ожидаемое среднее отклонение и
ожидаемое отклонение ряда видов капиталовложений, тогда вам лучше
использовать оптимизацию портфеля со средним отклонением (этот
оптимальный алгоритм является таковым неспроста). Но когда шансы
оценить их все максимально четко невысоки, а вес, который модель
переносит на эти ненадежные качества, велик, тогда в процессе принятия
решения должен прозвучать сигнал – «пришло время регуляризации».
Вдохновленные примером управления пенсионными сбережениями
Марковица и другими подобными, психологи Герд Гигеренцер и Генри
Брайтон утверждали, что способы упрощения принятия решений, которые
люди используют в реальной жизни, во многих случаях хороши. «Вопреки
широко распространенному мнению, что сокращение времени на
обработку или подготовку негативно сказывается на точности, – пишут
они, – изучение эвристики показывает, что чем меньше информации,
вычислений и времени, тем, в сущности, выше уровень точности».
Эвристика, которая выступает за простые ответы – с меньшим количеством
факторов или вычислений, – предлагает нам попробовать эффект принципа
«чем меньше, тем больше».
Тем не менее введение санкций за итоговую сложность модели – не
единственный способ смягчить действие переподгонки. Вы также можете
подвести модель к большей упрощенности, контролируя скорость ее
адаптации к поступающей информации. Это превращает изучение
переподгонки в удивительное руководство к нашей истории – как общества
и как вида.
Вес истории
Все, что съела живая крыса, несомненно, ее не
убило.
Сэмюэл Ревуски и Эрвин Бедарф
Определяем сложность
В середине 1960-х годов Эдмондс, сотрудник Национального института
стандартов и технологии, и Алан Кобхэм из IBM сформулировали рабочее
определение того, что делает задачу решаемой или наоборот. Они
доказывали утверждение, ныне известное как гипотеза Кобхэма и
Эдмондса: алгоритм считается эффективным, если его действие
происходит в так называемом полиномиальном времени, а именно O(n2),
O(n3) или, в сущности, n в любой степени. Задача, в свою очередь,
считается решаемой, если мы знаем, как решить ее, используя
эффективный алгоритм. Задача, которую мы не можем решить в
полиномиальном времени, напротив, считается нерешаемой. И везде,
кроме мельчайших масштабов, нерешаемые задачи не поддаются решению
с помощью компьютеров, какими бы мощными они ни были[27].
Таким образом, измерить сложность задачи возможно. Но какие-то
задачи просто… сложные.
И чем же заканчивается тогда история с задачей о коммивояжере?
Довольно любопытно, что мы до сих пор в этом не уверены. В 1972 году
профессор Университета Беркли Ричард Карп продемонстрировал, что
задача о коммивояжере связана со спорно пограничным классом задач,
которые еще не были определены как решаемые или нерешаемые. Но пока
что эффективных решений этих задач найдено не было (что делает их, по
сути, нерешаемыми), и большинство программистов считают, что решений
не найти. Таким образом, результат, свидетельствующий о невозможности
решения задачи о коммивояжере, о котором говорил Флад в 1950-е годы,
оказался фатальным. Более того, многие другие задачи по оптимизации,
касающиеся всевозможных вопросов от политической стратегии до
здравоохранения и пожарной безопасности, аналогичным образом
попадают в класс нерешаемых.
Но для программистов, которые продолжают искать ответ, такой
вердикт – вовсе не конец истории. Наоборот, для многих это призыв к
действию. Вы же не можете просто опустить руки, определив, что
проблема не имеет решения. Как говорил эксперт в области планирования
Ян Карел Ленстра, «если задача трудная, это не значит, что вы можете
забыть о ней. Это означает, что она просто находится в другом статусе. Это
серьезный враг, но вы все равно должны бороться». И здесь мы приходим к
бесценному выводу относительно того, как лучше всего подходить к
задачам, где оптимальные решения недоступны. Как расслабиться.
Просто расслабьтесь
Лучшее – враг хорошего.
Вольтер
Учимся релаксации
Проблемы оптимизации (с одной стороны – цели, с другой стороны –
правила), возможно, самый распространенный вид вычислительных задач,
с которыми мы имеем дело. И задачи дискретной оптимизации, где наши
варианты сводятся к строгому выбору «или/или» без каких-либо средних
значений, – наиболее типичные из них. Здесь информатика выносит
обескураживающий вердикт. Многие проблемы дискретной оптимизации
действительно сложны. Самые светлые головы этой области пасовали в
попытках найти короткий путь к идеальным решениям, посвящая гораздо
больше времени доказательствам того, что таких путей не существует, чем
поиску оных.
Во всяком случае, это должно нас немного утешить. Если мы
сталкиваемся лицом к лицу с задачей, которая кажется нескладной,
тернистой, нерешаемой, то мы, вероятно, правы. И наличие компьютера
далеко не всегда может помочь.
По крайней мере до тех пор, пока мы не научимся релаксировать.
Существует много способов ослабить проблему, и мы рассмотрели три
наиболее важных. Первый из них – вынужденная релаксация – просто
убирает некоторые ограничения в целом и достигает прогресса за счет
уменьшения строгости задачи, прежде чем возвращается к реальности.
Второй – непрерывная релаксация – превращает дискретный или бинарный
выбор в бесконечное множество: прежде чем выбрать между холодным
чаем и лимонадом, представьте себе напиток Арнольда Палмера[28], в
котором поровну того и другого, и мысленно увеличивайте или
уменьшайте эти доли. Третий – Лагранжева релаксация – превращает
невозможности в обычные штрафы, обучая нас искусству обходить
правила (или вовсе нарушать их и отвечать за последствия). Рок-группа,
решающая, какие песни должны войти в альбом, сталкивается с тем, что
ученые называют задачей о рюкзаке – головоломкой, в которой требуется
решить, какие из множества предметов различной величины и важности
можно разместить в заданном объеме. В своей строгой постановке задача о
рюкзаке практически неразрешима, но это не должно разочаровывать
наших расслабленных рок-звезд. Как показал ряд известных примеров,
иногда лучше просто поиграть чуть дольше городского комендантского
часа и заплатить связанный с этим штраф, чем подгонять концерт под
разрешенный временной интервал. На самом деле, даже если вы не
совершили правонарушение, а просто представили себе нарушение, это
может оказаться поучительным.
Консервативный британский журналист Кристофер Букер говорит:
«Когда мы предпринимаем действия, которые бессознательно обусловлены
принятием желаемого за действительное, на какое-то время может
показаться, что все идет хорошо», но только потому, что «эта фантазия
никогда не может быть соотнесена с реальностью». Это неизбежно
приведет к тому, что он называет многоступенчатой аварией: мечта,
разочарование, кошмар, взрыв. Информатика рисует слишком радужную
картину. С другой стороны, в качестве метода оптимизации релаксация
предлагает нам сознательно принять желаемое за действительное.
Возможно, в этом вся разница.
Релаксации дают нам ряд преимуществ. С одной стороны, они
предлагают нормы качества правильного решения. Если мы заполняем
ежедневник планами, представляя себе, что можем каким-то магическим
образом за мгновение перенестись через весь город, то немедленно
становится ясно, что восемь часовых встреч – это максимум, который мы
можем втиснуть в свое расписание на день. Подобное ограничение может
оказаться полезным, чтобы скорректировать наши ожидания, прежде чем
мы столкнемся с проблемой в полный рост. Во-вторых, релаксации
устроены таким образом, что они действительно могут быть соотнесены с
реальностью. И это дает нам возможность прийти к решению, двигаясь с
другой стороны. Когда метод непрерывной релаксации предлагает нам
частичную вакцинацию, мы можем просто вакцинировать каждого, кому
досталась половина вакцины или больше, и в конечном итоге прийти к
легко вычисляемому решению, которое в худшем случае потребует в два
раза больше вакцин, чем в идеале. Вероятно, мы можем жить с этим.
Если только мы не готовы тратить миллиарды лет на борьбу за
совершенство каждый раз, как зайдем в тупик, то, встретив сложную
задачу, вместо пробуксовки на месте мы должны найти ее более легкую
версию и решить сначала ее. При правильном применении метода это
будет вовсе не выдавание желаемого за действительное, не фантазии и не
ленивые сны наяву. Это один из лучших способов добиться успеха.
9. Случайность
Когда стоит положиться на волю случая
После стольких лет работы в этой сфере я
вынужден признать, что роль случайности в
решении многих алгоритмических задач поистине
загадочна.
Это работает, это эффективно; но как и
почему – загадка.
Майкл Рабин
Метод выборки
В 1777 году Жорж-Луи Леклерк, граф де Бюффон, представил
общественности результаты интересного вероятностного анализа. Если мы
бросим иголку на разлинованный лист бумаги, спрашивал он, какова
вероятность, что она пересечет одну из линий? В своей работе Бюффон
доказал, что если длина иголки короче, чем расстояние между линиями, то
ответ будет
Рандомизированные алгоритмы
Первым человеком, продемонстрировавшим удивительно широкое
применение метода рандомизации в информатике, стал Майкл Рабин.
Родившийся в 1931 году в Бреслау в Германии (который впоследствии стал
польским Вроцлавом в конце Второй мировой войны), Рабин был
потомком целой династии раввинов. Его семья переехала из Германии в
Палестину в 1935 году, и там он отказался от протоптанной для него отцом
раввинской тропы в пользу красоты математики, открыв для себя
исследования Алана Тьюринга на заре студенчества в Еврейском
университете и эмигрировав в США, где впоследствии он окончил
Принстон. Рабин должен был получить премию Тьюринга – аналог
Нобелевской премии в сфере информатики – за включение в
теоретическую информатику недетерминированных случаев, когда автомат
не обязан следовать одному параметру, но имеет несколько возможных
путей следования. В 1975 году, находясь в творческом отпуске, Рабин
пришел в MIT в поисках нового направления для работы.
Нашел он его в одной из старейших задач: как найти простые числа.
Алгоритмами поиска простых чисел интересовались еще в Древней
Греции, где математики использовали простой и точный метод,
получивший название «решето Эратосфена». Оно работает следующим
образом: чтобы найти все простые числа меньше n, начните записывать
последовательность чисел от 1 до n по порядку. Затем вычеркните все
числа, кратные 2, кроме самого числа 2 (4, 6, 8, 10, 12 и т. д.). Найдите
следующее самое маленькое число, которое еще не было вычеркнуто (в
данном случае – 3), и вычеркивайте все числа, кратные ему (6, 9, 12, 15).
Продолжайте в том же духе, и те числа, что останутся в результате, и будут
простыми числами.
На протяжении тысячелетий изучение простых чисел считалось, как
выразился Г. Х. Харди, «одним из самых очевидно бесполезных разделов
математики». Но оно неожиданно приобрело большую практическую
значимость в XX веке, став ключевым моментом в области шифрования и
сетевой безопасности. Гораздо проще перемножать простые числа между
собой, чем выносить их за скобки. С достаточно большими простыми
числами – например, состоящими из тысячи знаков – умножение может
быть произведено в долю секунды, в то время как разложение на
множители могло бы занять буквально миллионы лет. Это и есть то, что
зовется односторонней (необратимой) функцией, обратное значение
которой очень трудно вычислить. В современном шифровании данных, к
примеру, секретные простые числа, известные только отправителю и
получателю, перемножаются между собой, чтобы создать огромные
составные числа. Последние могут быть переданы публично без опасений,
поскольку обратное разложение зашифрованного послания на множители
займет у любого перехватчика слишком много времени, чтобы стоило хотя
бы попытаться. Таким образом, любая безопасная онлайн-коммуникация –
будь то торговля, банкинг или электронные сообщения – начинается с
охоты на простые числа.
Такое применение простых чисел в шифровании данных внезапно
сделало алгоритмы их поиска и проверки невероятно важными. Решето
Эратосфена хоть и эффективно, но не обладает высоким коэффициентом
полезного действия. Если вы хотите проверить, является ли некое
определенное число простым, то согласно стратегии решета вам следует
попытаться разделить его на все простые числа вплоть до его квадратного
корня[30]. Проверка, является ли шестизначное число простым, потребует
деления на все 168 простых чисел меньше 1000 – не так уж и плохо. Но
проверка двенадцатизначного числа потребует деления на 78 498 простых
чисел меньше миллиона, и это деление быстро выходит из-под контроля.
Простые числа, используемые в современном шифровании, состоят из
сотен знаков. Забудьте об этом.
В MIT Рабин встретился с Гари Миллером, недавним выпускником
кафедры информатики в Беркли. В своей докторской диссертации Миллер
разработал интригующе перспективный, гораздо более быстрый алгоритм
проверки простых чисел. Но существовала небольшая проблемка: он не
всегда срабатывал.
Миллер вывел множество уравнений (выраженных в виде двух чисел –
n и x), которые всегда верны, если число n является простым, независимо
от того, какие значения будет иметь x. Если они выйдут неверными хотя бы
для одного значения x, то число n никак не может быть простым (в этих
случаях x называют «свидетелем» против простоты). Проблема
заключается в ложных положительных результатах: даже если n не
является простым числом, в отдельных случаях уравнение все равно может
получиться верным. Это поначалу поставило подход Миллера под
сомнение.
Рабин понял, что в данной ситуации шаг за пределы обычного
«детерминированного» мира информатики может стать весьма значимым.
Если число n не является простым, сколько возможных значений x дадут
ложноположительный ответ, объявив n простым числом? Ответ, как
показал Рабин, – одна четвертая. Так что для случайного значения x, если
уравнение Миллера выходит верным, шанс, что число n не является
простым, равен одному из четырех. И самое главное, каждый раз, когда мы
берем случайное значение x и проверяем уравнение Миллера, вероятность,
что число n только кажется простым, но не является таковым, снижается
еще на одно число, кратное четырем. Повторите процедуру 10 раз, и
вероятность ложноположительного результата будет равна одной четверти
в десятой степени – меньше, чем один шанс из миллиона. Все еще не
хватает достоверности? Проверьте еще пять раз, и вероятность снизится до
одной миллиардной.
Воган Пратт, еще один информатик из MIT, применил алгоритм Рабина
на практике. Однажды зимним вечером, когда Рабин отмечал с друзьями
Хануку, ему позвонил Пратт. Рабин вспоминает тот полуночный звонок:
«Майкл, это Воган. Я получил результат этих экспериментов. Бери
ручку с бумагой и записывай». И у него вышло, что 2400 – 593 – простое
число. Обозначим как k произведение всех простых чисел p, меньших
300. Числа k × 338 + 821 и k × 338 + 823 – числа-близнецы[31]. Это были
самые большие из известных на тот момент чисел-близнецов. У меня
волосы встали дыбом! Это было невероятно! Это было просто
невероятно.
Тест Миллера – Рабина на простоту чисел, как теперь известно, дает
возможность быстро определить, являются ли простыми даже огромные
числа, с произвольно заданной степенью точности.
Здесь мы могли бы задаться философским вопросом о значении слова
«являться». Мы так привыкли к тому, что математика – царство точности,
что не можем допустить мысли о том, что число может быть «вероятно
простым» или «почти определенно простым». Какая достоверность
достаточно достоверна? На практике современные шифровальные
системы – те, что шифруют интернет-подключения и цифровые
транзакции, – настроены на ложноположительные результаты в одном
случае на миллион миллиардов миллиардов. Другими словами, это
десятичная дробь, начинающаяся с двадцати четырех нулей после
запятой, – и это меньше одного ложного простого числа на все количество
песчинок на земле. Это значение получается после всего лишь сорока
применений теста Миллера – Рабина. Вы действительно никогда не можете
быть абсолютно уверены, но вы можете подойти очень близко к этому
состоянию. И очень быстро.
Даже если вы никогда не слышали о тесте Миллера – Рабина, о нем
хорошо осведомлены ваш ноутбук, планшет или телефон. Спустя
несколько десятилетий с момента открытия он все еще остается основным
методом, используемым для поиска и проверки простых чисел во многих
областях. Он незримо работает, когда вы расплачиваетесь кредитной
картой онлайн, и задействован практически каждый раз, когда
защищенные коммуникации передаются по воздуху или по проводам.
В течение многих лет после открытия Миллера и Рабина оставалось
неясным, будет ли когда-нибудь изобретен эффективный алгоритм для
проверки простоты чисел по детерминированным стандартам с абсолютной
точностью. В 2002 году такой метод был открыт Маниндрой Агравалом,
Нираджем Каялом и Нитином Саксеной в Индийском институте
технологий, но рандомизированные алгоритмы, подобные тесту Миллера –
Рабина, работают гораздо быстрее и сегодня используются чаще всего.
Что же касается некоторых других задач, случайность по-прежнему
остается единственным ключом к эффективным решениям. Вот один
любопытный математический пример, известный как проверка
полиномиального тождества. Если есть два многочлена: 2x3 + 13x2 + 22x +
8 и (2x + 1) × (x + 2) × (x + 4) – и вычисление обоих будет произведено
фактически одним и тем же способом: произвести все умножения, затем
сравнить результаты, – то это займет слишком много времени, тем более
что число переменных растет.
И снова случайность приходит на помощь: просто возьмите случайные
значения числа x и подставьте в выражение. Если два выражения не
тождественны, то будет большим совпадением, если вы получите один и
тот же ответ при подстановке случайно выбранных значений. И будет еще
бóльшим совпадением, если вы снова получите одинаковый ответ,
подставив случайные значения во второй раз. И куда бóльшим
совпадением, если это произойдет трижды подряд. Так как не существует
ни одного известного детерминированного алгоритма для эффективной
проверки полиномиального тождества, то этот рандомизированный метод
(с многочисленными повторениями, позволяющими максимально
приблизиться к «почти точности») – единственный практический из
имеющихся.
Трехчастный компромисс
Меня всегда поражало, какое качество
нужно, чтобы быть Человеком Действия,
особенно в литературе, и которым Шекспир
обладал в огромной степени. Я имею в виду
Отрицательный Потенциал, то есть
способность человека пребывать в состоянии
неопределенности, терзаться загадками и
сомнениями, но без какого-либо раздражения
стремиться к истине и интеллекту.
Джон Китс
Просто подключайся.
Э. М. Форстер
Пакетная коммутация
То, что мы привыкли называть интернетом, на самом деле – набор
протоколов, но главным среди них (настолько, что он уже стал плюс-минус
синонимом слова «интернет») является управляющий протокол передачи,
или TCP (Transmission Control Protocol). Его «родителями» в 1973–1974
годах стали Винтон (Винт) Серф и Роберт (Боб) Кан, которые предложили
ввести язык – как им хотелось назвать его – межсетевого общения.
Для TCP изначально использовались телефонные линии, но
целесообразнее было бы воспринимать это как эволюцию почты, а не
телефона. В телефонной связи используется так называемая коммутация
каналов: система открывает канал между отправителем и получателем,
который поддерживает постоянную ширину полосы частот между
сторонами в обоих направлениях все время, пока длится разговор.
Коммутация каналов играет большую роль в человеческих
взаимоотношениях, но уже в 1960-х годах стало ясно, что для
межкомпьютерных коммуникаций она работать не будет.
Как вспоминает Леонард Клейнрок из Калифорнийского университета в
Лос-Анджелесе:
Я знал, что компьютеры «говорят» не так, как я сейчас, –
непрерывно. Происходит выброс, и затем на какой-то период наступает
затишье. Спустя некоторое время – вдруг снова выброс. И вы не можете
позволить себе обеспечить коммуникационное соединение с чем-то, что
почти никогда не разговаривает, но если вдруг хочет поговорить, то
требует немедленного доступа. Поэтому нам пришлось использовать не
телефонную сеть, созданную для непрерывных продолжительных
разговоров, – сеть с коммутацией каналов, а нечто иное.
Телефонные компании, в свою очередь, не горят желанием что-то
кардинально менять в своих протоколах. Отойти от коммутации каналов
казалось безумием, «полнейшей ересью», как выразился сетевой
исследователь Ван Якобсон. Клейнрок вспоминает собственное
столкновение с телекоммуникационной отраслью:
Я обратился в AT&T, крупнейшую сеть того времени, и попытался
объяснить им: мол, парни, вам бы следовало обеспечить нам хорошую
передачу данных! И они такие: «Ты вообще о чем?! Штаты – это медный
рудник, у нас полно телефонных проводов, вот и пользуйтесь ими!» Я
им: «Нет-нет, вы не понимаете! Чтобы установить вызов, требуется 35
секунд, вы даете мне минимум 3 минуты, а мне нужно отправить 100
миллисекунд данных!» Ответ был: «Мальчик, иди отсюда». Ну, мальчик
ушел и вместе с другими мальчиками разработал эту технологию, пока
они жевали свой обед.
Технология, пришедшая на смену коммутации каналов, получила
название пакетной коммутации. В сети с коммутацией пакетов, в отличие
от выделенного канала для каждого соединения, отправители и получатели
дробят свои сообщения на мелкие частицы, называемые пакетами, и
сливают их в общий поток данных. Получаются своего рода открытки,
движущиеся со скоростью света.
В такой сети «то, что вы называете соединением, является
согласованной иллюзией между двумя конечными точками», объясняет
сетевой эксперт Apple Стюарт Чешир. «В интернете не существует
соединений. Говорить о соединениях в интернете – все равно что говорить
о соединениях в американской почтовой системе. Вы посылаете людям
письма, и каждое письмо идет независимо друг от друга. Вы можете иметь
многолетнюю непрерывную переписку с кем-то, но почте США нет до
этого никакого дела… Они просто доставляют письма».
Эффективное использование полосы пропускания было не
единственным фактором продвижения исследований пакетной коммутации
в 1960-х годах; другим стала ядерная война. Пол Баран из корпорации
RAND пытался решить проблему устойчивой работы сети, чтобы военные
коммуникации могли пережить ядерный удар, который разрушил бы
бóльшую часть сетей. Вдохновленный алгоритмами, разработанными в
1950-х годах для навигационных комплексов, Баран придумал модель, в
которой каждая частица информации могла бы независимо двигаться к
пункту своего назначения, даже когда сеть динамично меняется – или
вовсе рвется в клочья.
Это был еще один дефект коммутации каналов и их
узкоспециализированных устойчивых соединений: столь высокая
устойчивость означала, что сброшенный вызов так и останется
сброшенным. Коммутация каналов просто не была гибкой или достаточно
адаптируемой, чтобы быть надежной. И в этом случае пакетная
коммутация снова могла предложить то, что было востребовано временем.
В сетях с коммутацией каналов вызов прекращается, если разрушается
одно из звеньев цепи, и это значит, что надежность падает в
геометрической прогрессии по мере того, как расширяется сеть. С другой
стороны, в пакетной коммутации увеличение числа путей в растущей сети
становится положительной чертой: появляется так много путей передачи
данных, что надежность сети растет в геометрической прогрессии по мере
ее расширения.
Тем не менее, даже когда пакетная коммутация была разработана, это
не впечатлило телефонные компании. «Все специалисты из отрасли
телекоммуникаций громко говорили, что это не сеть! Это убогая попытка
использовать нашу сеть! Вы берете наши провода, вы посылаете данные по
каналам, которые мы создали! Вы нагромождаете столько всякой дряни,
что даже не можете эффективно их использовать!» Но с точки зрения
пакетной коммутации телефонные провода являются лишь средством
достижения цели; отправителю и получателю, в сущности, все равно,
каким образом доставляются пакеты. Способность агностически
оперировать любым количеством различных носителей – вот огромное
достоинство пакетной коммутации. После того как в конце 60-х – начале
70-х годов первые сети, такие как ARPANET, доказали свою
жизнеспособность, сети всех мастей накрыли страну, осуществляя
пакетную коммутацию не только по медным телефонным проводам, но и с
помощью спутников, и даже радио. В 2001 году компьютерщики из
норвежского города Бергена на короткое время даже внедрили сеть
пакетных коммутаций «птичья почта», когда пакеты писались на бумаге и
привязывались к лапкам голубей.
Разумеется, в сфере пакетных коммутаций есть свои проблемы. В
первую очередь один из основных вопросов любого протокола –
человеческого или компьютерного – довольно очевиден: как узнать, что
ваше сообщение дошло до адресата и было понято?
Признание
Ни одна передача не может быть на 100 %
надежной.
Винт Серф и Боб Кан
Летом 2010 года Джим Геттис, как и многие родители, часто слышал от
детей жалобы, что домашний Wi-Fi работает слишком медленно. В
отличие от большинства родителей, Геттис к этому времени успел
поработать в HP, Alcatel-Lucent, Консорциуме Всемирной паутины и
Инженерном совете интернета. В буквальном смысле слова он был
редактором технических условий HTTP, которые используются и по сей
день. Поэтому там, где большинство отцов компьютерных фанатов стали
бы искать проблему, Геттис ее решил.
Как объяснял Геттис целому отделу инженеров Google:
Мне пришлось однажды копировать или ресинхронизировать старые
архивы Консорциума из дома в Массачусетский технологический
университет за 10 миллисекунд… SmokePing сообщил о запаздывании в
среднем на 1 секунду наряду с масштабной потерей пакетов, пока я
просто копировал файл… Я открыл Wireshark и увидел вспышки
действительно очень странного поведения. Это вовсе не было похоже на
TCP, как я ожидал. Такого не должно было происходить.
Говоря простым языком, он заметил что-то… очень странное. Как в
популярной шутке: самая интригующая фраза, которую можно услышать
от первооткрывателя в науке, не «эврика!», а «это странно».
Вначале Геттис подумал, что что-то не так с его модемом. То, о чем
говорила его семья, называя проблемой с интернетом, казалось просто
«затором» в их домашней розетке. Пакеты, которые должны были
отправиться в Бостон, не застревали на полпути туда; они застревали в
доме.
Но чем больше Геттис вникал в происходящее, тем больше он начинал
беспокоиться. Проблема негативно сказывалась не только на роутере и
модеме в его доме, но в каждом доме. И проблема заключалась вовсе не в
сетевых устройствах – она была в компьютерах, в десктопах, лэптопах,
планшетах, смартфонах, работающих на Linux, Windows и OS X. И дело
было не в аппаратном оборудовании конечного пользователя: проблема
затрагивала всю инфраструктуру интернета в целом. Геттис начал
обсуждать это с ключевыми сотрудниками из Comcast, Verizon, Cisco и
Google, включая Ван Джейкобсона и Винта Серфа, и постепенно
головоломка начала складываться.
Проблема была повсюду. И заключалась она в раздувании буфера
обмена.
Буфер – это, по сути, очередь, роль которой состоит в том, чтобы
сглаживать вспышки информационной передачи. Если бы вы зашли в
магазин за пончиками примерно в то же время, когда и другой посетитель,
это не привело бы к тому, что кассир не смог бы справиться с работой и вас
попросили бы покинуть магазин и зайти в другое время. Посетители,
разумеется, не пошли бы на это. Не пошел бы на это и менеджмент: такая
политика гарантирует крайне неэффективное выполнение кассиром своей
работы. А организация покупателей в очередь гарантирует, что средняя
пропускная способность магазина приближается к максимуму. И это
хорошо.
Такое превосходное средство по утилизации ресурсов имеет вполне
реальные издержки – задержку в обслуживании. Когда Том взял свою дочь
на фестиваль Синко де Майо в Беркли, она решила попробовать блинчик с
шоколадом и бананом. Они встали в очередь и стали ждать. Через 20 минут
Том сделал заказ. Но после оплаты ему пришлось ждать еще 40 минут,
чтобы получить наконец блинчик. (Как и Джиму Геттису, Тому пришлось
выслушать многочисленные жалобы дочери.) Прием заказов, как
оказалось, занимал гораздо меньше времени, чем приготовление
блинчиков, поэтому очередь для того, чтобы сделать заказ, была лишь
частью задачи. По крайней мере, процесс был визуально понятным:
покупатели знали, зачем они стоят в очереди. Вторая, более длинная
очередь была неочевидной. В этом случае было бы гораздо правильней
ограничить длину первой очереди и временно приостанавливать прием
заказов, если она достигла критической отметки, оповещая об этом с
помощью соответствующей таблички. Отказ части покупателей стал бы
выгодней для всех (не важно, дождались бы они укорачивания очереди или
ушли совсем). Для лавки с блинами это не означало бы каких-либо
упущенных финансовых возможностей, поскольку в любом случае они
могут продать лишь столько блинов, сколько могут приготовить в день,
вне зависимости от того, как долго ждут их покупатели.
Это как раз тот феномен, который обнаружил Джим Геттис, пытаясь
разобраться с домашним модемом. Поскольку он закачивал файл, его
компьютер посылал модему так много пакетов, что тот едва ли мог с ними
справиться. В то же время модем «делал вид», что может справиться и с
еще бóльшим количеством сверх своих реальных возможностей, не
отклоняя ни один из них и ставя их в огромную очередь. Таким образом,
когда Геттис пытался одновременно скачать что-то (зайти на интернет-сайт
или проверить почту), его ACK-пакеты застревали в очереди после
процессов загрузки, ожидая, пока загружаемые файлы наконец покинут
дом.
Это было похоже на попытку вести диалог, который прерывался бы на
10 или 20 секунд после каждого сказанного «ух» и «м-м-м». Говорящему
пришлось бы замедлять темп рассказа, полагая, что вы его не понимаете и
ничего не можете с этим поделать.
Когда буфер сети наполняется, происходит так называемое
отбрасывание последнего элемента – бесцеремонный способ сообщить о
том, что каждый пакет, поступающий после этой точки, будет просто
отклонен и, по сути, удален. (Просьба посетителям больше не вставать в
очередь после того, как она станет слишком длинной, является вариантом
отбрасывания последнего элемента в человеческом контексте.)
При использовании метафоры с почтовой службой для объяснения
принципа действия коммутации пакетов странно представить, что
почтальон просто избавляется от каждой посылки, которая не вмещается в
его грузовик утром. Хотя на самом деле это то самое «отбрасывание
пакетов», которое заставляет компьютер заметить, что один из пакетов не
был принят, что приведет к урезанию алгоритмом АУМУ трафика
передачи информации. «Отбрасывание пакетов» – изначальный механизм
обратной связи в интернете. Слишком большой буфер (как, например,
ресторан, который принимает каждый заказ вне зависимости от
возможностей кухни, или модем, принимающий каждый поступающий
пакет вне зависимости от того, сколько потребуется ему времени на
последующую отправку) предупреждает любые промедления, которые на
самом деле должны происходить.
Глобально буферы используют задержку (явление, известное как
запаздывание в сетевых технологиях), чтобы максимизировать пропускную
способность. То есть они заставляют пакеты (или посетителей) ждать,
чтобы воспользоваться более поздним периодом, когда у них будет больше
ресурсов или времени. Но буфер, который перманентно работает в полном
объеме, не дает вам выбора между двух зол: полное запаздывание и
никакой отдачи. Сглаживание вспышек – это хорошо, если вы, как
правило, разбираете информацию по мере ее поступления. Но если ваша
средняя нагрузка превышает вашу среднюю скорость работы, то никакой
буфер чуда не сотворит. И чем больше буфер, тем больше вы отстанете,
прежде чем начнете звать на помощь. Один из фундаментальных
принципов работы буферов, будь они для пакетов или управляющих
рестораном, заключается в том, чтобы они работали корректно, даже когда
работы нет.
Десятилетиями компьютерная память была слишком дорогой, поэтому
попросту не было смысла разрабатывать модемы с уймой ненужного
объема памяти. Таким образом, у модема даже не было возможности
выстраивать очередь длиннее, чем он мог обработать. Но в каком-то
смысле, по мере того как экономия на масштабе радикально снизила
стоимость памяти, производители модемов стали встраивать в них
гигабайты ОЗУ, поскольку это, по сути, был наименьший возможный
объем памяти. В результате буферы в широко распространенных
устройствах – в модемах, роутерах, лэптопах, смартфонах (и в основе
работы самого интернета) – стали в тысячи раз больше, чем нужно, прежде
чем некоторые, как Джим Геттис, выразили свои опасения по этому
поводу.
Рекурсия
Сейчас умный человек положил бы яд уже в
собственный бокал, потому что он знает, что
только полный глупец станет тянуться к тому
бокалу, что стоит перед ним. Но ведь я не так
глупа, чтобы выбирать вино, стоящее перед
вами. Но вы также знаете (и явно на это
рассчитываете), что я не так глупа, чтобы
выбрать вино, стоящее передо мной.
Фильм «Принцесса-невеста»
Достижение равновесия
Вы знаете правила, и я их тоже знаю…
Мы знаем игру, и мы собираемся в нее
сыграть.
Рик Эстли
Трагедия общин
В 1968 году эколог Гаррет Хардин обратился к дилемме заключенного,
мысленно масштабировав ситуацию от двух игроков до всех жителей
фермерской деревни. Хардин предложил своим читателям представить
общину, пользующуюся для выпаса скота одним общим газоном, который
имеет конечный размер. В теории предполагалось, что каждый житель
будет пасти только такое количество животных, которое позволяло бы
оставлять немного травы и для других. При этом на практике выгода от
небольшого превышения допустимого предела доставалась лично вам, а
ущерб казался настолько незначительным, что не стоил упоминания. Тем
не менее, если бы каждый, следуя этой логике, чуть превысил бы
допустимый размер своего стада, это привело бы к ужасному нарушению
равновесия: газон был бы полностью истощен, и на следующий год
никакой травы ни для кого не осталось бы.
Хардин назвал это «трагедией общин», и она стала одной из главных
призм, сквозь которую экономисты, политологи и экологи рассматривают
такие крупномасштабные экологические события и кризисы, как
загрязнение окружающей среды и изменения климата. «Когда я был
маленьким, была такая штука – этилированный бензин, – говорит Аврим
Блюм, ученый и теоретик игр из Карнеги – Меллон. – Он был на десять или
что-то около этого центов дешевле, но загрязнял окружающую среду…
Если предположить, что и все остальные делают то же самое, то насколько
плохо поступаете лично вы [рассуждая здраво], когда заправляете ваш
собственный автомобиль этилированным бензином? Кажется, что не
слишком уж плохо. Это и есть дилемма заключенных». То же самое верно
и для корпоративного и национального уровней. Недавно один из газетных
заголовков кратко обозначил эту проблему: «Устойчивость климата
требует, чтобы большинство ископаемого топлива оставалось бы в земле.
Но в чьей?» Каждая корпорация (и до некоторой степени каждая страна)
считает, что ради достижения конкурентного преимущества лучше быть
немного более безрассудным, чем их соперники. Тем не менее, если все
начинают действовать безрассудно, это ведет к опустошению планеты, и
усилия оказываются напрасными: никто не получит никакого
экономического преимущества по сравнению с первоначальной точкой
отсчета.
Логика игр такого типа настолько распространена, что нам даже нет
нужды обсуждать отдельные преступления, чтобы увидеть, как все это
выходит из-под контроля. Но мы легко можем с чистой совестью
покончить с этим ужасным равновесием. Но как? Далеко ходить не надо:
рассмотрим политику отпусков вашей компании. В Америке количество
рабочих часов одно из самых больших в мире. Как замечает журнал The
Economist, «нигде не ценится так высоко работа и так не низка значимость
отдыха». В стране существует ряд законов, обязывающих работодателя
предоставлять работникам отгулы и свободное время, но даже тогда, когда
американские сотрудники действительно получают отпуск, они его не
используют. Недавние исследования показали, что среднестатистический
работник использует лишь половину предоставляемых ему отпускных
дней, а ошеломляющие 15 % вообще не берут отпуск.
Сегодня Область залива Сан-Франциско, где мы оба живем, пытается
исправить это плачевное положение в отпускной политике, пройдя через
радикальный сдвиг парадигмы – шаг, который очень хорошо осмыслен и
апокалиптически обречен. Предпосылка выглядит вполне невинно: вместо
того чтобы контролировать произвольные количества отпускных дней
каждого сотрудника, а затем тратить человеко-часы кадровиков, чтобы
убедиться, что никто не выходит за положенный лимит, почему бы просто
не позволить своим сотрудникам отдыхать бесплатно? Почему бы просто
не позволить им иметь неограниченный отпуск? Далее начинается
казуистика: с теоретико-игровой точки зрения такой подход выглядит
кошмаром. С одной стороны, можно предположить, что все сотрудники
захотят взять столько дней отпуска, сколько это вообще возможно. С
другой стороны, каждый из них захочет взять чуть меньше дней, чем его
коллеги, чтобы руководство восприняло его как более лояльного, более
преданного компании, более увлеченного работой (следовательно,
заслуживающего более весомого поощрения). Каждый будет смотреть на
других и претендовать на чуть меньшее количество дней по сравнению с
другими. Равновесие Нэша для этой игры – это нуль. Как пишет
генеральный директор компании Travis CI Матиас Майер, «никто не
решится отдыхать вовсе, поскольку не захочет казаться сотрудником,
который берет наибольшее количество дней отпуска. Это гонка ко дну».
Этот пример наглядно и в полной мере демонстрирует трагедию общин.
И это характерно не только для отношений внутри компании, но и между
компаниями. Представим себе, что в маленьком городишке имеются два
магазина. Владелец каждого из них волен выбирать: либо оставаться
открытым семь дней в неделю, либо работать шесть дней в неделю и в
воскресенье отдохнуть с семьей и с друзьями. Если оба воспользуются
выходным днем, то каждый из них сохранит свою существующую долю
рынка и не так сильно устанет. Однако если владелец одного магазина
решит работать все семь дней, то он получит дополнительных клиентов,
забрав их у своего конкурента, что будет угрожать существованию
последнего. Равновесие Нэша, опять же, достигается в случае, если каждый
будет работать без выходных.
Именно такой случай произошел в Соединенных Штатах в курортный
сезон 2014 года. Тогда торговые центры один за другим, не желая терять
рынок и делить его с конкурентами, которые вырвались вперед после
обычного покупательского ажиотажа на День благодарения, обвалили
равновесие. «Магазины открываются раньше, чем когда-либо прежде», –
сообщала International Business Times. Macy's решили открыться на два
часа раньше, чем в прошлом году, как это сделал Target. Kmart, со своей
стороны, в День благодарения открылись в 6 утра и не закрывались в
течение 42 часов.
Так что же мы как игроки можем выбрать, когда окажемся в такой
ситуации: воспользоваться дилеммой заключенного для двух игроков или
же ориентироваться на трагедию общин для множества игроков? В
некотором смысле – лучше не выбирать ничего. Потому что сама
стабильность, которую эти плохие равновесия имеют, которая и делает их
равновесными, становится их проклятием. По большому счету, мы не
можем изменить доминирующие стратегии изнутри. Но это вовсе не
значит, что плохое равновесие не может быть исправлено. Это просто
означает, что решение должно прийти со стороны.
2
Жирным шрифтом выделены названия алгоритмов, которые будут
описаны в книге.
3
В рамках этой стратегии существует 33 %-ная вероятность того, что мы
откажем лучшему кандидату, и 16 %-ная вероятность – что мы никогда не
встретим лучшего кандидата. Конкретно, есть шесть точных возможных
последовательностей для трех кандидатов: 1–2–3, 1–3–2, 2–1–3, 2–3–1, 3–
1–2, и 3–2–1. Если мы начнем отбор со второго претендента, то успех
вероятен только в трех комбинациях из шести (2–1–3, 2–3–1, 3–1–2),
соответственно в трех остальных случаях нас постигнет неудача – дважды
из-за нашей излишней взыскательности (1–2–3, 1–3–2) и один раз по
причине неразборчивости (3–2–1).
4
Необязательно строго 37 %. Точнее, математически оптимальная доля
кандидатов, которых необходимо отсмотреть, рассчитывается по формуле
1/е (е – та же математическая константа, 2,71828…, которая появляется при
расчете сложных процентов). Однако вам нет необходимости знать
наизусть все 12 десятичных знаков числа е. На самом деле любое значение
от 35 до 40 % максимально приближает вас к успеху.
5
Более подробно вычислительные риски теории игр рассматриваются в
главе 11.
6
Краткое содержание данного фрагмента: делай ноги, пока Гиттинс
хорош.
7
Это далеко не единственный рекорд Брадака. Он также может
освободиться из трех пар наручников, находясь под водой, примерно за то
же время.
8
На самом деле процесс пузырьковой сортировки занимает ничуть не
меньше времени, поскольку в среднем книги будут находиться на n/2
позиций на полке дальше от тех, где должны оказаться в итоге.
Программист все равно округлит n/2 осмотра n-ного количества книг на
полке до O(n2).
9
Иногда, например в боксе, применяется другой подход. Чтобы боксеру
не приходилось снова выходить на ринг после недавнего нокаута (что
небезопасно с медицинской точки зрения), на соревнованиях вручаются
сразу две бронзовые медали.
10
Стоит отметить, что расписание игр в турнире March Madness
сознательно строится так, чтобы смягчить этот недостаток алгоритма.
Казалось бы, самой большой проблемой в турнире на выбывание, как мы
уже отмечали, должен быть сценарий, при котором какая-нибудь команда,
будучи побежденной и располагаясь в нижней (несортированной) части
таблицы, становится затем серебряным призером. Ассоциация принимает
это во внимание и организовывает посев команд с высоким рейтингом так,
чтобы топовые команды не могли встретиться друг с другом на ранних
стадиях турнира. Такой подход к посеву команд оказывается оправданным
и более надежным в большинстве случаев. В истории турнира еще не было
случая, когда посеянная под шестнадцатым номером команда вдруг
побеждала бы команду, посеянную под первым номером.
11
Однако по неизвестным причинам фильм «Мой личный штат Айдахо»
является фаворитом в штате Мэн.
12
Вы можете заставить свой компьютер показывать электронные
документы такой же «стопкой». По умолчанию, система просмотра файлов
выводит папки и файлы в алфавитном порядке, но принцип замещения по
давности использования советует вам отказаться от этого и просматривать
файлы по критерию «последний открытый», а не по имени файла. Тогда то,
что вы ищете, будет почти всегда наверху списка.
13
Аллен Д. Как привести дела в порядок. Искусство продуктивности без
стресса. – М.: Манн, Иванов и Фербер, 2014.
14
15
Фьоре Н. Легкий способ перестать откладывать дела на потом. – М.:
Манн, Иванов и Фербер, 2013.
16
Партной Ф. Подожди! Как отложить решение до последнего момента
и… победить. – М.: АСТ: Neoclassic, 2015.
17
Что примечательно, руководитель группы по управлению
программным обеспечением «Марсопроходца» считал, что проблема
заключается в «давлении дедлайнов» и в том, что во время разработки
программного обеспечения устранение именно этой проблемы сочли
низкоприоритетной задачей. Таким образом, коренная причина, по сути,
стала отражением самой задачи.
18
Такой отпуск предоставляется на год преподавателям ряда
университетов и колледжей в США с сохранением заработной платы.
19
Более подробно мы рассмотрим труднорешаемые задачи в главе 8.
20
На самом деле все не так плохо, как может показаться при беглом
взгляде на статистику, поскольку некоторые задачи предполагают
разработку расписания работы для множества устройств, а это больше
напоминает управление группой подчиненных, а не просто вашим
календарем.
21
Перевод М. Лозинского.
22
Здесь есть определенная ирония: когда речь идет о времени, даже
осознание того, что наше появление ничего особенно не меняет, не мешает
нам представлять себя в самом центре явления.
23
Это и есть самое простое проявление закона Лапласа: он предполагает,
что наличие 1 или 10 % выигрышных билетов так же вероятно, как и
наличие 50 или 100 %. Формула
шанса на то, что следующий ваш билет выиграет. Но этот результат как
нельзя лучше отражает ваши шансы в лотерее, в которую вы играете, не
обладая вообще никакой информацией.
24
LASSO – least absolute shrinkable and selection operator.
25
Для тех, кто обладает уверенными знаниями в математике: это сумма
абсолютных значений (модулей) коэффициентов переменных.
26
Авторы вышедших в издательстве «Манн, Иванов и Фербер» книг
«Rework» и «Remote».
27
Может показаться странным при условии, что O(n2) казалось таким
ужасающим в контексте сортировки, называть эту формулу эффективной в
данном случае. Но правда в том, что даже экспоненциальное время с
маленьким числом основания, как, например, O(2n), стремительно
становится катастрофически огромным при сравнении с полиномиальным
временем с большим основанием, как, например, n10. Экспоненциал всегда
будет превосходить полиномиал в некоторых задачах. В этом случае, если
вы сортируете более нескольких десятков элементов, n10 выглядит как
прогулка в парке по сравнению с 2n. После работы Кобхэма и Эдмондса
эта пропасть между полиномиалами и экспоненциалами всегда служила
маркером выхода за рамки области.
28
Американский игрок в гольф, предпочитавший смешивать чай со льдом
и лимонад. В 1960 году он заказал такой напиток в баре, сидевшая рядом
женщина тоже попросила «напиток Палмера», так название и
закрепилось. – Прим. ред.
29
Интересно отметить, что некоторые из этих экспериментов дали
гораздо более точный расчет величины числа π, чем можно было бы
ожидать от случайного стечения обстоятельств. И это наводит на мысль,
что они либо преднамеренно выбрали хорошую точку остановки, либо
подделали все результаты. Например, в 1901 году итальянский математик
Марио Лаццарини предположительно произвел 3408 бросков и получил
π≈3,1415929 (фактическое отношение числа π к семи знакам после
запятой – 3,1415927). Но, если бы количество раз, когда иголка пересекла
линию, было бы достигнуто одним броском, получившееся значение было
бы не столь симпатичным (3,1398 или 3,1433), что делает результаты
Лаццарини подозрительными. Лаплас счел бы уместным использование
правила Байеса, чтобы подтвердить, что данные результаты вряд ли были
получены в ходе реального эксперимента.
30
Нет смысла проверять простые числа, которые больше квадратного
корня исходного числа, потому что если множитель числа больше его
квадратного корня, то по определению у него также должен быть
соответствующий множитель меньше его квадратного корня (то есть вы бы
его уже вычислили). Если вы ищете множители числа 100, например, то
любой множитель больше 10 будет спарен с множителем меньше 10: 20
соотносится с 5, 25 с 4 и т. д.
31
Числа-близнецы – пара простых чисел, отличающихся на 2, например 5
и 7.
32
Обратите внимание, что мы намеренно взяли с сайта одну из первых
историй, а не прочитали их все перед тем, как выбрать одну, что
противоречило бы цели.
33
Американская компания, поставщик фильмов и сериалов на основе
потокового мультимедиа. – Прим. ред.
34
На самом деле это краеугольный камень всех современных
компьютеров; это была задача об остановке, которая вдохновила Тьюринга
формально установить границы вычислений с помощью того, что мы
теперь называем машиной Тьюринга.
35
Бинмор выдвигает еще одну идею: такие игры, как дилемма
заключенного, казалось бы, должны уничтожить довод Иммануила Канта,
что нравственность заключается в том, что всегда следует поступать так,
как вы хотели бы, чтобы поступали другие (Кант назвал это
«категорический императив»). Категорический императив дал бы нам
лучший результат в дилемме заключенного, чем стратегия равновесия, но
нельзя обойти тот факт, что этот результат не был бы стабильным.
36
В своей книге «Things a Computer Scientist Rarely Talks About» «отец
информатики» Дональд Кнут рассказывает, как его понимание Бога
соотносится с его работой в области компьютерных наук. – Прим. ред.