Скачать книгу

rel="nofollow" href="#n_18" type="note">[18].

      4. Фильтрация – выделение важной информации

      Алгоритмы нередко помогают изъять часть информации, чтобы обратить внимание на главное, поймать сигнал среди шумов. Иногда они делают это в буквальном смысле слова – так, в голосовых помощниках, например Siri, Alexa и Cortana, чтобы расшифровать вашу речь, алгоритмы распознавания, предварительно должны выделить из шумового фона ваш голос. Иногда это не шум как таковой, а метафора: Facebook и Twitter заполняют вашу ленту, уже зная, что вас обычно интересует, и подбирая соответствующую информацию.

      Можно придумать огромное множество алгоритмов, совмещающих эти функции. Так устроен, например, сервис UberPool, который подбирает потенциальных попутчиков для совместных поездок на такси. Зная начальную и конечную точки маршрута, программа должна перебрать все возможные пути к вашему дому, найти других пользователей, которым надо ехать в ту же сторону, и определить вас в одну машину – и при этом в первую очередь предложить такие маршруты, чтобы водителю пришлось как можно меньше крутиться по улицам[19].

      Алгоритмы все это умеют. Другой вопрос: как они это делают? Опять-таки мы можем выделить суть, хотя вариантов не счесть. В общем и целом все алгоритмы делятся на два основных типа в зависимости от принципа их работы, и далее в этой книге мы познакомимся с обоими.

      1. Алгоритмы, основанные на системе правил

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

      2. Алгоритмы машинного обучения

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

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

      Алгоритмы

Скачать книгу


<p>19</p>

Sarah Perez, Uber debuts a “smarter” UberPool in Manhattan, TechCrunch, 22 May 2017, https://techcrunch.com/2017/05/22/uber-debuts-a-smarter-uberpool-in-manhattan/.

<p>20</p>

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

В 2013 году компания Toyota должна была выплатить три миллиона долларов компенсации после автокатастрофы с участием одного из ее автомобилей. Машина неконтролируемо разогналась, хотя сидевшая за рулем женщина жала на педаль тормоза, а вовсе не газа. На суде выступавший свидетелем специалист сказал, что виновата случайная команда, скрытая где-то в путаной схеме программного обеспечения. См. Phil Koopman, A case study of Toyota unintended acceleration and software safety (Pittsburgh: Carnegie Mellon University, 18 Sept. 2014), https://users.ece.cmu.edu/~koopman/pubs/koopman14_toyota_ua_slides.pdf.