Заключение
Простота выбора
Я твердо верю в то, что самые важные вещи, имеющие отношение к людям, носят социальный характер, и в то, что перекладывание на компьютеры многих наших сегодняшних интеллектуальных функций наконец даст человечеству время и стимул, чтобы понять, как же хорошо жить вместе.
Меррил Флад
Любая динамическая система, будучи объектом, ограниченным пространством и временем, имеет свой основной набор фундаментальных и неизбежных проблем. Эти проблемы вполне вычисляемы по своей сути, что не только превращает компьютеры в инструменты, но и делает их нашими друзьями. Здесь и возникают три простых мудрых соображения.
Во-первых, существуют случаи, для которых ученые-компьютерщики и математики уже сейчас выявили хорошие алгоритмические подходы, пригодные для решения человеческих проблем. Правило 37 %, алгоритм LRU-вытеснения давно неиспользуемых критериев для обработки переполнения кеша (сверхоперативной памяти), правило верхнего доверительного предела в качестве руководства для исследований как раз и служат примерами этих случаев.
Во-вторых, одно только осознание того, что вы используете оптимальный алгоритм, должно утешить вас даже в том случае, если вы не получили результаты, на которые надеялись. Ведь то же правило 37 % терпит неудачу в течение 63 % времени. А использование алгоритма LRU для обслуживания кеша не гарантирует, что вы всегда получите то, что хотите. Да и ни один алгоритм не даст вам такой гарантии. Применение правила верхнего доверительного предела при анализе ситуации с целью выбора компромиссного решения вовсе не означает, что у вас не будет сожалений по этому поводу; просто разочарования и сожаления на вашем жизненном пути будут накапливаться чуть медленнее. Поскольку даже самая лучшая стратегия иногда дает плохие результаты, ученые-компьютерщики заботятся о том, чтобы различать процесс и результат. Если вы придерживаетесь наилучшего из возможных процессов, то вы уже сделали все возможное и не должны винить себя, если дела идут не так, как вы задумали.
Понятно, что именно результаты определяют заголовки новостей, формируя мир, в котором мы живем; поэтому так легко начать зацикливаться на них. Но процессы – то, что мы можем контролировать. Как выразился Бертран Рассел, «казалось, что мы должны принимать во внимание и вероятность, пытаясь оценить объективную справедливость… Объективно правильным поступком является тот, который, вероятно, будет наиболее удачным. Я бы дал этому такое определение: наимудрейший поступок». Мы, конечно, можем слепо надеяться на то, что нам повезет, но обязательно и сами должны стремиться быть мудрыми. Считайте, что это своего рода расчетливый стоицизм.
И, наконец, последнее. Мы можем провести четкую границу между задачами, которые допускают простые решения, и задачами, не имеющими таковых. Если вы взвинчены, потому что увязли в неразрешимом сценарии, помните, что даже беспорядочные поиски, попытки и метания могут помочь вам найти действенные решения. Тема, которая вновь и вновь всплывала в наших интервью с учеными-компьютерщиками, может быть охарактеризована так: иногда понятие «достаточно хорошо» на самом деле означает «достаточно хорошо». И еще… Понимание сложности ситуации может помочь нам сделать выбор между нашими проблемами: если у нас есть контроль над тем, с какими ситуациями мы столкнемся, мы должны выбирать те, что разрешимы.
Но нам приходится выбирать не только проблемы, встающие перед нами. Мы также выбираем проблемы, которые противопоставляем друг другу, будь то выбор метода проектирования города или способ формулировки вопроса. Это создает удивительный мостик между информатикой и этикой – в виде принципа, который мы называем «простота выбора».
Мы оба заметили интересный парадокс, когда дело доходило до планирования встречи и интервью, которые потом вошли в эту книгу. В общем и целом наши собеседники оказывались более доступными, когда мы просили о встрече, говоря «в следующий вторник между 13 и 14 часами», нежели в том случае, если просьба звучала как «в удобное вам время на следующей неделе». На первый взгляд это кажется абсурдным и напоминает те знаменитые исследования, когда люди в среднем жертвовали больше денег, чтобы спасти жизнь одного пингвина, чем 8000 пингвинов; или известный отчет о том, что люди в большей степени боятся умереть во время террористического акта, чем от любой другой причины, которую также можно отнести к терроризму. Представляется, что в случае с интервью люди просто предпочитали иметь дело с проблемой, связанной с ограничениями, даже если эти ограничения не стоили и выеденного яйца. Для них казалось менее трудным соединить наши предпочтения и ограничения, чем высчитывать лучший вариант, основываясь на собственных преференциях. В этом месте ученые-компьютерщики наверняка многозначительно кивнули бы, ссылаясь на сложность в понимании разницы между терминами «верификация» и «исследование», которая столь же велика, как и разница между «послушать хорошую песню» и «написать свою».
Один из неявных принципов информатики, как бы эксцентрично это ни звучало, утверждает, что вычисление – это плохо, ведь базовой директивой любого хорошего алгоритма является попытка свести к минимуму мыслительный труд. Когда мы взаимодействуем с другими людьми, мы представляем их как набор вычислительных задач, пытаясь не только оценить их скрытые запросы и требования, но и решить такие сложные задачи, как интерпретирование ими наших собственных намерений, убеждений и предпочтений. Следовательно, можно утверждать, что вычисленное понимание этих проблем проливает свет на природу человеческого взаимодействия. Мы можем стать «вычислительно добрыми» по отношению к другим, ограничивая рамки общения условиями, которые облегчат оппоненту основную вычислительную задачу. Этот факт имеет большое значение, потому что многие проблемы – особенно социальные, как мы это уже видели, – по своей сути весьма запутанны и трудноразрешимы.
Рассмотрим этот (слишком общий) сценарий. Группа друзей дискутирует, пытаясь решить, куда идти пообедать. Каждый из них, несомненно, имеет некоторые свои предпочтения, хотя и не жесткие. Но поскольку никто из них не хочет излагать эти предпочтения в явном виде, им приходится вместо этого вести светскую беседу, стараясь не накалять обстановку, а полунамеками подталкивать ее в нужное русло.
Они вполне могут прийти к решению, которое удовлетворило бы их всех. Но этот процесс может столь же легко пойти наперекосяк. Летом после окончания колледжа, например, Брайан с двумя друзьями ездили в Испанию. Поскольку это путешествие они планировали спонтанно, то в какой-то момент поездки вдруг стало ясно, что у них не будет времени, чтобы пойти посмотреть корриду, которой они интересовались и которую запланировали. А когда каждый из друзей пытался утешить других, они вдруг выяснили, что на самом деле никто из них и не хотел так уж обязательно посетить корриду. Просто в свое время, глядя на других, каждый из них с таким большим энтузиазмом поддерживал их желание увидеть бой быков, что это поднимало уровень общего энтузиазма, на который другие столь же безоглядно ориентировались.
Более того, даже такие кажущиеся безобидными слова «да, я гибкий» или «что вы собираетесь делать сегодня вечером?» скрывают темную вычислительную изнанку и должны заставить вас дважды подумать. Это хоть и выглядит по-доброму, но содержит два глубоко тревожных сигнала. Во-первых, они посылают опознавательный знак: «здесь проблема, но вы справитесь с этим». Во-вторых, не указывая свои предпочтения, они приглашают других смоделировать или представить их. И, как мы уже видели, моделирование мыслей других – одна из крупнейших вычислительных задач, с которой разум (или машина) могут когда-либо столкнуться.
В таких ситуациях простота выбора и привычный этикет несколько расходятся. Вежливое умалчивание ваших предпочтений ставит перед остальной частью группы вычислительную задачу по их выявлению. Напротив, вежливое обозначение ваших предпочтений («лично я склонен к Х, а вы что думаете?») помогает уменьшить мыслительную нагрузку при формировании группой коллегиального решения.
В качестве альтернативы вы можете попытаться хотя бы уменьшить, а не увеличивать количество вариантов, которые вы предлагаете обсудить товарищам, предложив им ограничить выбор, скажем, двумя-тремя ресторанами, а не десятью. Если каждый человек в группе исключит из обсуждения свой наименее предпочтительный вариант, это сильно упростит вычислительную задачу остальным. Если вы, приглашая кого-то на обед или планируя встречу, предложите один-два конкретных варианта, которые могут быть приняты или отклонены, это будет хорошей отправной точкой.
И не важно, что ни один из этих вариантов может не подойти; все вместе они могут существенно снизить вычислительные затраты при общении.
Простота выбора – это не просто принцип поведения; это также и дизайнерский подход.
В 2003 году ученый Джеффри Шаллит из Университета Уотерлу исследовал вопрос о том, монету какого достоинства следовало бы ввести в обращение в Соединенных Штатах, чтобы минимизировать количество монет, в среднем выдаваемых в качестве сдачи. Ответ его восхитил: это должна быть 18-центовая монета; и потому Шаллит воздержался от того, чтобы следовать рекомендациям, полученным с помощью этих вычислительных упражнений.
В настоящее время проблема выдачи сдачи решается убийственно просто: выдавая любое заданное количество денег, вначале нужно просто использовать как можно больше четвертаков, но, разумеется, так, чтобы не дать лишнего, затем выдать как можно больше 10-центовых монет и т. д. по убывающему номиналу. Например, 54 цента – это два четвертака и еще четыре цента. Но с 18-центовой монетой такой простой алгоритм уже не был бы оптимальным, ведь 54 цента лучше всего набирается с помощью трех 18-центовых монет, то есть мы обходимся вообще без четвертаков. На самом деле Шаллит заметил, что неудачный подбор достоинства монет превращает обычный процесс выдачи сдачи в нечто «по крайней мере, столь же трудное, как… задача коммивояжера». Это так сложно, что лучше обратиться к кассиру. Шаллит также обнаружил, что наибольшим спросом из всех монет пользовались бы либо двухцентовые, либо трехцентовые монеты. Это хоть и не так волнующе, как в случае с 18-центовой монетой, но почти столь же полезно; и удачно – с точки зрения дальней перспективы.
Более важный вывод заключается в том, что даже небольшие изменения в проекте могут радикально изменить вид когнитивной проблемы, которая встает перед пользователями. Например, архитекторы и градостроители могут выбирать, как они будут формировать окружающую среду; а это значит, что они могут выбирать, как они будут структурировать вычислительные проблемы, которые стоят перед нами.
Представим себе большую парковку со множеством полос для движения (такие парковки часто встречаются при стадионах и торговых центрах). Вы въезжаете на парковку, по одной из ее полос движетесь в направлении торгового центра, находите свободное место, но решаете ехать дальше, надеясь найти место поближе к торговому центру; но вам не везет, приходится разворачиваться и по соседней полосе ехать обратно. И даже после некоторого количества таких попыток вам все равно придется решать, является ли следующее найденное место подходящим, чтобы остановить выбор на нем, или оно расположено так далеко от входа, что вы все-таки будете пытаться найти следующее свободное место даже на третьей полосе.
Алгоритмическая перспектива данного примера может быть полезной не только для водителя, но и для архитектора-проектировщика. Она контрастирует с ужасным, хаотичным решением проблемы, когда среди множества вариантов предлагается единственная прямая дорога, но ведущая прочь от искомого места назначения. Ведь в том случае, когда любой въезжающий просто занимает первое свободное пространство, уже не требуется использовать ни теорию игр, ни анализ, ни правило «семь раз отмерь». Некоторые гаражи построены именно таким образом – с одной полосой, спиралью поднимающейся наверх. Вычислительная нагрузка для таких сооружений равна нулю: любой из заезжающих просто движется вперед и занимает первое же свободное место. И какими бы ни были возможные аргументы «за» и «против» строительства такого рода сооружений, одно можно сказать наверняка: подобные сооружения намного гуманнее относятся к своим пользователям.
Одной из главных целей проектировщиков должна быть защита людей от ненужного напряжения, сомнений, умственного труда. (И это не просто абстрактное утверждение; ведь если парковка торгового центра, например, становится источником стресса, то покупатели будут намного реже его посещать и потратят там меньше денег.) Городские планировщики и архитекторы каждый раз взвешивают, какие ресурсы будут задействованы различными вариантами дизайна: ограниченное пространство, материалы, деньги. Но они редко обращают внимание на то, насколько их решения будут напрягать вычислительные ресурсы людей, которые их соберутся использовать. Признание алгоритмических основ нашей повседневной жизни (в данном случае речь об оптимальной остановке) не только позволит водителям принимать наилучшие решения в той или иной ситуации, но в первую очередь будет подталкивать проектировщиков больше задумываться о проблемах, решать которые они вынуждают водителей.
Существует множество других случаев, когда такие подходы напрашиваются сами. Рассмотрим для примера политику ресторана по рассадке своих посетителей. Некоторые рестораны проводят политику открытого размещения, при которой посетители ждут поблизости, пока не освободится стол, и тогда его занимает первый из очереди. Другие рестораны спросят ваше имя, пригласят выпить в баре и уведомят вас, когда стол освободится. Эти подходы к управлению общедоступными, но дефицитными ресурсами прекрасно отображают различие между прокруткой и блокировкой в работе компьютера.
Если обрабатываемый поток запрашивает ресурс и не может получить его, то компьютер может либо разрешить этому потоку крутиться дальше, то есть продолжать проверку доступности, бегая по кругу и непрерывно спрашивая, доступен ли ресурс, либо блокировать доступ, то есть приостановить этот поток, выполнить другую задачу и потом вновь вернуться к первому потоку, делая это всякий раз, когда ресурс становится свободным. Для ученого-компьютерщика это реальный компромисс; выбор подхода определяется сравнением времени, затрачиваемого на постоянные запросы, и времени, теряемого на контекстные переключения. Но в ресторане не все ресурсы, к которым обращаются посетители, являются собственностью ресторана. Для ресторана подход «крутиться» помогает быстрее заполнить пустые столы, но для процессора, который, между прочим, больше изнашивается в таком режиме, это означает попадание в утомительную ловушку, в которой надо все время держать ухо востро и не терять бдительности.
В качестве параллельного примера рассмотрим вычислительную задачу, имеющую отношение к автобусной остановке. Если на остановке висит информационное табло, показывающее, что следующий автобус прибывает через 10 минут, то вы, скорее всего, примете решение, что его стоит подождать, чем – при отсутствии табло – захотите вновь и вновь принимать решение о том, стоит ли его ждать, рассматривая процесс неприбытия автобуса как поток косвенных данных о текущей ситуации. При этом все эти 10 минут вы можете время от времени бросать взгляд на дорогу («кручение»). (В случае городов, которые не оборудованы устройствами для информирования о предстоящем приезде автобуса, мы видели, что байесовский вывод может быть полезной альтернативой, если знать время отправления предыдущего автобуса.) Такие хитрые действия для упрощения расчетов могут значительно облегчить жизнь пассажиров.
Если мы можем быть добрее к другим, мы также можем быть более великодушными и к себе. И речь не только о простоте вычислений; все алгоритмы и идеи, которые мы обсуждали, смогут нам в этом помочь.
Интуитивный подход к процессу рационального принятия решений тщательно оценивает все возможные варианты и выбирает лучший. На первый взгляд компьютеры выглядят как идеальный образец такого подхода, поскольку тоже прокладывают свой путь через сложные вычисления до тех пор, пока не будет получен идеальный ответ. Но, как мы уже знаем, это устаревшая картина того, что делают компьютеры: такую роскошь можно объяснить лишь простотой проблемы. А в тяжелых случаях лучшие алгоритмы используются тогда, когда это имеет наибольший смысл с точки зрения снижения затрат времени; но это никоим образом не предполагает отказ от внимательного учета каждого фактора и проведения всех вычислений до самого конца. Жизнь слишком сложна для этого.
Почти в каждой области, которую мы рассматривали, мы видели, что чем больше факторов реального мира мы принимаем во внимание (касается ли это получения неполной информации при проведении собеседования с претендентами на работу; имеет ли это отношение к изменчивому миру при попытке решить дилемму; решаются ли конкретные, зависящие от других игроков задачи, когда мы пытаемся добиться цели), тем с большей вероятностью в конечном итоге мы оказываемся в ситуации, когда поиск идеального решения требует неоправданно много времени. И в самом деле, люди почти всегда сталкиваются лицом к лицу с тем, что информатика характеризует как трудный случай. В противовес такого рода тяжелым случаям эффективные алгоритмы допускают смещение в пользу более простых решений, разменивая стоимость возможной ошибки на стоимость задержки, и используют свой шанс.
Это не уступки, на которые мы идем, когда не можем быть рациональными. Это как раз и означает быть рациональным.