Вы здесь

Алгоритмы для жизни: Простые способы принимать верные решения. Введение. Алгоритмы для жизни (Том Гриффитс, 2016)


Переводчик М. Волохова

Редактор Д. Сальникова

Руководитель проекта М. Шалунова

Корректоры О. Гриднева, Н. Витько

Компьютерная верстка А. Абрамов

Дизайн обложки Ю. Буга


© Brian Christian, Tom Griffiths, 2016

All rights reserved

© Издание на русском языке, перевод, оформление. ООО «Альпина Паблишер», 2017


Все права защищены. Произведение предназначено исключительно для частного использования. Никакая часть электронного экземпляра данной книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами, включая размещение в сети Интернет и в корпоративных сетях, для публичного или коллективного использования без письменного разрешения владельца авторских прав. За нарушение авторских прав законодательством предусмотрена выплата компенсации правообладателя в размере до 5 млн. рублей (ст. 49 ЗОАП), а также уголовная ответственность в виде лишения свободы на срок до 6 лет (ст. 146 УК РФ).

* * *

Нашим семьям


Введение

Алгоритмы для жизни

Представьте, что вы ищете квартиру в Сан-Франциско – в городе с самой катастрофической ситуацией в этом плане. Стремительно растущий технологический сектор и жесткое законодательство по зонированию городской территории, ограничивающее строительство новой недвижимости, привели к тому, что по стоимости жилья город встал на один уровень с Нью-Йорком, при том что уровень конкуренции здесь в разы выше. Объявления о выставленных на продажу квартирах исчезают за считаные минуты, на осмотр свободного дома собираются толпы, и зачастую ключи от квартиры оказываются в руках у того, кто первым успел всучить чек арендодателю.

Жестокие законы рынка не оставляют возможности для принятия взвешенного решения (а именно такие решения должны бы принимать рациональные потребители). В отличие от, скажем, покупателя в торговом центре или интернет-магазине, потенциальный житель Сан-Франциско должен решать мгновенно: либо соглашаться на апартаменты еще при осмотре, отметая при этом другие варианты, либо уходить и не возвращаться.

Чтобы было понятнее, предположим, что вы беспокоитесь исключительно о максимальном повышении ваших шансов на получение самой лучшей квартиры. И сразу же вы оказываетесь перед дилеммой: как понять, что эта квартира – тот самый лучший вариант, если вы изначально не определили основные параметры и условия? И каким образом вы должны определить исходные параметры, если не посмотрите (и не упустите) ряд вариантов? Чем больше информации вы соберете, тем быстрее вы поймете, что перед вами та самая квартира, которую вы искали, – хотя, скорее всего, вы уже ее упустили.

Так что же делать? Каким образом вы примете взвешенное решение, если сам факт обдумывания ставит под угрозу результат? Запутанная ситуация, граничащая с абсурдом.

Обычно большинство людей интуитивно считают, что в подобной ситуации необходим баланс между «отмерить» и «отрезать». То есть вы должны просмотреть достаточное количество квартир, чтобы определить свои стандарты, и далее выбрать подходящий вариант. Понятие баланса в этой ситуации, по сути, абсолютно верно. Однако, что именно вкладывается в понятие баланса, большинство людей четко объяснить не могут.

Но, к счастью, есть ответ.

Тридцать семь процентов.

Если вы хотите максимально увеличить свои шансы на получение лучшей квартиры, потратьте 37 % вашего времени и усилий (11 дней, если вы задались целью найти квартиру за месяц) на изучение вариантов без каких бы то ни было обязательств. Оставьте вашу чековую книжку дома, вы просто примеряетесь. Но после этого будьте готовы действовать незамедлительно – внести депозит и уладить прочие формальности – ради того варианта, который превзойдет по всем параметрам остальные.

Это не просто компромисс между тем, чтобы отмерить и отрезать. Это обоснованно оптимальное решение.

Мы знаем это, потому что поиск квартиры принадлежит к разряду математических задач – «задач об оптимальной остановке». Правило 37 % определяет простую последовательность шагов, которая призвана решать подобные проблемы. На языке программистов она называется алгоритмом.

Поиски квартиры – всего лишь один из примеров ситуации, где работает принцип оптимальной остановки. Решение придерживаться или не придерживаться определенной последовательности действий становится своего рода неотъемлемым элементом нашей повседневной жизни, возникая снова и снова в той или иной ипостаси.

Сколько раз следует объехать квартал, чтобы найти подходящее место для парковки?

Как долго стоит испытывать удачу в рискованном предприятии, прежде чем забрать свою долю?

Сколько ждать лучшего предложения на этот дом или автомобиль?

Тот же вопрос часто возникает и в других, еще более драматичных ситуациях, например в любовных отношениях. Правило оптимальной остановки – это та же теория серийной или последовательной моногамии. С помощью простых алгоритмов можно решить не только задачу по аренде жилья, алгоритмы можно применить ко всем жизненным ситуациям, в которых мы сталкиваемся с вопросом оптимальной остановки.

Люди пытаются разрешить такие спорные вопросы каждый день (хотя поэты наверняка потратили больше чернил на описания своих сердечных мук, а не проблем с парковочными местами), и в некоторых случаях это даже мучительно. Однако эти мучения необязательны. По крайней мере, с математической точки зрения все эти вопросы вполне решаемы. Каждый озабоченный своими проблемами арендатор, водитель или поклонник – люди, которые окружают вас ежедневно, – по сути, пытаются заново изобрести колесо. Им не нужен психоаналитик, им просто необходим алгоритм. В таких ситуациях психоаналитики обычно советуют найти оптимальный баланс между импульсивностью и зацикливанием на проблеме.

Алгоритм же подсказывает, что этот баланс и есть 37 %.




Существует определенный набор проблем, с которыми сталкиваются все, – проблем, которые обусловлены непосредственно тем фактом, что наша жизнь ограничена определенным пространством и временным отрезком. Что мы должны сделать, а за что лучше не браться сегодня или через 10 лет? До какой степени стоит пустить все на самотек и как понять, что упорядоченность становится чрезмерной? Где находится баланс между привнесением в жизнь нового опыта и следованием излюбленным привычкам, который поможет взять от жизни все?

Каждому из нас может казаться, что его проблемы особенные, однако это не так. Более полувека назад программисты бились над решением задач, эквивалентных этим повседневным проблемам (и в большинстве случаев успешно их решали).

Как должен процессор распределить свое «внимание» таким образом, чтобы выполнить все запросы пользователя с минимальными затратами своих ресурсов и при этом максимально быстро? В какой момент процессор должен переключаться с одной задачи на другую и как много задач должны быть приоритетными? Как максимально эффективно использовать ограниченные ресурсы памяти? Стоит ли продолжить собирать данные или необходимо действовать, используя уже имеющуюся информацию? Не каждому человеку под силу использовать по максимуму те возможности, которые он имеет в течение дня, тогда как компьютеры вокруг нас с легкостью решают многочисленные задачи за долю секунды. И здесь нам есть чему у них поучиться.

У многих слово «алгоритм» вызывает ассоциации с непостижимыми для ума операциями с большими данными, мировой политикой и большим бизнесом. Понятие «алгоритм» все чаще воспринимается как часть инфраструктуры современного мира и едва ли – в качестве источника практической мудрости в повседневной жизни.

Тем не менее алгоритм – это всего лишь ограниченная последовательность шагов, которая используется для решения какой-либо задачи. Задолго до того, как алгоритмы стали задействоваться в программировании, их начали применять люди.

Само слово «алгоритм» произошло от имени математика персидского происхождения аль-Хорезми – автора пособия по решению математических задач, написанного им в IX веке. Его книга называлась «Китаб аль-джебр ва-ль-мукабала». Известно, что современное слово «алгебра» произошло как раз от части названия книги – «аль-джебр».

Однако появление самых первых математических алгоритмов предшествует даже трудам аль-Хорезми. На глиняной табличке, найденной недалеко от Багдада, шумеры четыре тысячи лет назад описали схему деления столбиком.

Но область действия алгоритмов не сводится исключительно к математике. Когда вы печете хлеб, вы используете рецепт и, значит, следуете алгоритму. Когда вы вяжете свитер по рисунку, вы следуете алгоритму. Алгоритмы были неотъемлемой частью жизни человека со времен каменного века.




В этой книге мы рассмотрим идею разработки алгоритмов для нашей жизни и найдем лучшие решения для задач, с которыми все мы сталкиваемся ежедневно.

Взгляд на нашу повседневную жизнь через призму компьютерной науки может повлиять на вашу жизнь на различных уровнях. В первую очередь, это дает нам четкие практические рекомендации для решения определенных задач. Правило оптимальной остановки подсказывает нам, сколько раз стоит отмерить, прежде чем наконец отрезать.

Принцип соотношения между поиском новой информации и применением имеющейся помогает нам обрести баланс между стремлением к новым впечатлениям и умением наслаждаться привычными вещами. Теория сортировки подскажет, как организовать рабочее место. Основные принципы технологии кеширования помогут, если необходимо правильно разложить вещи в шкафу или ящиках. Планирование поможет нам правильно распределить время.

На следующем уровне мы сможем воспользоваться терминологией программирования для понимания глубинных принципов работы каждой из этих областей науки. Как сказал Карл Саган, «наука – это скорее определенный образ мышления, нежели просто совокупность знаний».

Даже в тех случаях, когда жизнь слишком хаотична и в ней нет места для четкого численного анализа или готового ответа, использование определенных примеров и моделей, отработанных на более упрощенных вариантах тех же задач, позволит нам постичь суть вещей и двигаться дальше.

Проще говоря, взгляд через призму компьютерной науки может раскрыть нам природу человеческого разума, значение понятия рациональности и ответить на извечный вопрос – «как жить?». Изучение мыслительных процессов человека как средства решения фундаментальных вычислительных задач, которые ставит перед нами жизнь, может в корне изменить наше представление о человеческой рациональности.

Сам факт того, что изучение основ работы компьютера может открыть нам глаза на то, как следует жить и принимать решения, во что верить и как поступать, может показаться многим не просто крайне примитивным, но и, по сути, бессмысленным. Даже если в этом есть рациональное зерно, захотим ли мы получить ответы на все эти вопросы?

Образ жизни роботов из научной фантастики – явно не тот, которому хочется следовать. Отчасти это так, поскольку компьютеры в первую очередь ассоциируются у нас с бездушными механическими запрограммированными системами, которые строго придерживаются дедуктивной логики и принимают решения, всегда выбирая единственно верный вариант из ряда ранее заложенных опций. И при этом не важно, как долго и тяжело они размышляют.

По сути, человек, который впервые задумался о компьютерных технологиях, представлял себе это именно так. Алан Тьюринг описал понятие вычислительного процесса, проведя аналогию с ученым-математиком, который сосредоточенно шаг за шагом выполняет длинный расчет и в итоге приходит к верному ответу.

Потому может показаться неожиданным тот факт, что современные компьютеры, решая сложную задачу, действуют совсем иначе. Сама по себе арифметика, разумеется, не представляет большой сложности для современного компьютера. Вот, например, взаимодействие с человеком, восстановление поврежденного файла или победа в игре го (задачи, в которых нет четких правил, частично отсутствует необходимая информация или же поиск единственно верного ответа требует рассмотрения астрономического числа вариантов) действительно бросают вызов компьютерному интеллекту. И алгоритмы, разработанные учеными для решения задач самых сложных категорий, избавили компьютеры от необходимости всецело полагаться на всевозможные расчеты. На самом деле для разрешения реальных жизненных ситуаций необходимо смириться с тем, что в жизни есть место случаю или вероятности, что нам приходится максимально аккуратно использовать время и зачастую работать только с приближенными значениями величин. По мере того как компьютеры приближаются к решению повседневных проблем, они могут предложить не только алгоритмы, которые человек может использовать в жизни, но и более совершенный стандарт, по которому можно оценить когнитивные способности человека.

За последние 10–20 лет поведенческая экономика поведала нам очень много о сути человеческого мышления, а именно – что мы иррациональны по своей природе и склонны делать ошибки в основном из-за несовершенного и крайне специфического устройства нашего головного мозга. Эти нелестные факты давно уже не новость, но все же определенные вопросы до сих пор вызывают раздражение.

Почему, к примеру, четырехлетний ребенок все равно покажет лучший результат по сравнению с суперкомпьютером ценой в миллион долларов в решении познавательных задач, в том числе в части зрительного и языкового восприятия и установления причинных связей?

Решения повседневных задач, позаимствованные из компьютерной науки, расскажут совсем другую историю о человеческом разуме. Жизнь полна задач – и достаточно сложных. И ошибки, допускаемые людьми, зачастую говорят скорее об объективной сложности той или иной задачи, нежели о несовершенстве человеческого мозга. Алгоритмическое осмысление мира, изучение фундаментальных структур задач, с которыми мы сталкиваемся, и способов их решения поможет нам заново оценить свои сильные стороны и понять допускаемые ошибки.

В сущности, люди регулярно сталкиваются с рядом особо сложных задач, изучаемых программистами. Зачастую нам приходится принимать решения в условиях неопределенности, временных ограничений, неполной информации и быстро меняющейся реальности. В некоторых подобных случаях даже новейшие компьютерные технологии пока не могут предложить нам эффективные и всегда верные алгоритмы. Для определенных ситуаций, как оказывается, таких алгоритмов еще не существует. Но даже в тех случаях, для которых тот самый идеальный алгоритм еще не найден, битва нескольких поколений ученых с наиболее труднорешаемыми жизненными задачами тоже принесла свои плоды. Эти выводы и правила, полученные ценой огромных усилий, идут вразрез с нашими привычными понятиями о рациональности и напоминают исключительно строгие предписания математика, который пытается изобразить мир четкими ровными линиями. Нам говорят: «Не надо рассматривать все имеющиеся варианты», «Не ведись на выгоду каждый раз», «Иногда можно и дров наломать», «Путешествуй налегке», «Пусть все подождет», «Доверься своей интуиции и не раздумывай слишком долго», «Расслабься», «Подкинь монетку», «Прощай, но не забывай», «Будь честен с самим собой».

И все же жить по заветам компьютерной науки не так уж и плохо. Ведь, в отличие от большинства советов, ее мудрость имеет обоснования.




Разработка алгоритмов для компьютеров изначально была предметом исследования на стыке двух дисциплин – математики и инженерии. Составление алгоритмов для людей тоже не лежит в плоскости какой-либо одной науки. Сегодня разработка алгоритмов опирается не только на достижения информатики, математики и инженерии, но и на такие смежные научные области, как статистика и операционные исследования.

Проводя параллель между алгоритмами для техники и алгоритмами для людей, нам также следует обратиться к научным ресурсам когнитивистики, математики, экономики и других наук. Авторы этой книги хорошо знакомы с междисциплинарными исследованиями в этих отраслях. Прежде чем защитить дипломную работу в области исследования английского языка, Брайан изучал компьютерные технологии и философию, а карьеру построил на стыке всех трех специальностей. Том посвятил годы изучению психологии и статистики, прежде чем стал профессором Калифорнийского университета в Беркли, где теперь уделяет почти все свое время исследованию взаимосвязей между мыслительной деятельностью человека и вычислительными операциями.

Однако никто не может быть экспертом сразу во всех научных отраслях, задействованных в разработке алгоритмов для людей. Поэтому в поисках алгоритмов для жизни мы беседовали с людьми, которые придумали самые известные алгоритмы за последние 50 лет. И мы спрашивали, как их исследование повлияло на их же подход к решению жизненных задач – от поиска второй половины до сортировки носков после стирки.

На следующих страницах начинается наше увлекательное путешествие сквозь самые сложные задачи и вызовы, брошенные компьютерам и человеческому разуму: как существовать в условиях конечного пространственного и временнóго промежутка, ограниченного внимания, неустановленных параметров, неполной информации и непредсказуемого будущего; как жить уверенно и с достоинством; и, наконец, как делать это в рамках социума, где другие стремятся к тем же целям одновременно с нами.

Мы исследуем фундаментальную математическую основу таких задач и изучим устройство компьютерного интеллекта (который в ряде случаев работает совсем не так, как мы представляем), чтобы извлечь максимум пользы для своей жизни. Мы узнаем, как работает человеческий разум, рассмотрим его различные, но тесно взаимосвязанные методы решения одного и того же набора вопросов в условиях наличия тех же ограничений. В конечном итоге то, что мы можем приобрести в рамках нашего путешествия, – это не просто набор конкретных уроков для нашей повседневной жизни, не новый способ увидеть утонченные схемы за самыми сложными дилеммами человечества и не только признание глубинной взаимосвязи компьютеров с тяжелым человеческим трудом. Это кое-что более основательное, а именно новый словарь для изучения мира вокруг нас и шанс узнать что-то поистине новое о нас самих.