Поисковая система знает, какие результаты показать нам, а какие – соседу или начальнику. Amazon и Netflix подбирают книги и фильмы, которые будут по душе конкретному человеку, а Facebook выстраивает ленту новостей в соответствии с нашими интересами. Все эти ресурсы не программируются под каждого пользователя – невозможно к каждому человеку приставить персонального программиста. Встроенный алгоритм самостоятельно анализирует обновляющиеся данные и вносит изменения в свои настройки.
Современные смартфоны уже стали не просто средствами связи, а самообучающимися персональными ассистентами. Они предугадывают следующее действие владельца и сообщают, что встреча, запланированная на 10:00, переносится на два часа – именно на это время задерживается рейс заказчика.
Мы отправляем резюме и удивляемся, что работодатель его даже не открыл. Все просто: специальный алгоритм беспристрастно отсортировал 10 резюме, наиболее соответствующих требованиям, описанным в вакансии. На сайте знакомств мы в первую очередь видим людей, отвечающих нашим запросам.
«Верховный алгоритм» – путеводитель в мире машинного обучения. Автор считает, что каждый человек, живущий в наше время, должен иметь хотя бы базовое представление об обучающих алгоритмах, просто чтобы понимать, в каком мире он живет. Новые алгоритмы возникают каждый день, но все они базируются на фундаментальных идеях, описанных в книге.
Педро Домингос уверен, что высшей стадией развития машинного обучения станет создание верховного алгоритма, который сумеет объединить всю информацию прошлого, настоящего и будущего и эффективно решить любую проблему. С его появлением человечество решит все сложные проблемы: от создания универсальных домашних помощников до победы над раком.
1. Век алгоритмов
Наша жизнь – переплетение алгоритмов. Они есть не только в смартфонах и компьютерах, но и в автомобилях, бытовой технике и даже игрушках. Алгоритмы управляют самолетами, производством, снабжением и ведут бухгалтерию. Если все эти алгоритмы неожиданно перестанут работать – без преувеличения, наступит конец света.
1.1. Базовые алгоритмы
Самый простой алгоритм – включение и выключение. Положение «один» – транзистор включен, и «ноль» – выключен. Единица в компьютерных базах банка показывает, превысили ли вы лимит по карте, а единица в управлении социального обеспечения сообщает, что вы живы.
Другой простейший алгоритм – «соедини два бита». Он включает три логических рассуждения:
• Транзистор A включается, только если включены транзисторы B и C.
• A включается, когда включен либо B, либо C.
• A включается всегда, когда выключен B, и наоборот.
Даже самый сложный алгоритм сводится к трем операциям: И, ИЛИ и НЕ.
Соединяя множество простых операций, можно составлять сложные цепочки логических рассуждений и создавать программы.
1.2. Нарастающая сложность
Написать алгоритм непросто: предположения программиста вполне могут оказаться ошибочными, и тогда ему придется искать другой подход. Кроме того, алгоритм надо выразить на понятном компьютеру языке (например, Java), потом отладить так, чтобы любой пользователь мог с ним работать.
Для создания сложных программ одни алгоритмы соединяются с другими.
Но чем сложнее и объемнее программы, тем труднее их использовать.
• Если алгоритму нужно больше памяти, чем есть у компьютера, он бесполезен, и его приходится отбрасывать.
• Сложные алгоритмы долго выполняются.
• Когда алгоритм становится слишком запутанным и объемным, а связи между элементами – слишком многочисленными, в нем появляются ошибки. Человеку сложно их найти и исправить в миллионах строк кода.
Незначительная ошибка в алгоритме, и ракета стоимостью миллиард долларов взрывается, город остается без электричества и обрушивается фондовый рынок.
1.3. Машинное обучение VS программирование
Машинное обучение называют по-разному: распознавание паттернов, статистическое моделирование, извлечение данных, предсказательная аналитика, адаптивные и самоорганизующиеся системы. Неверно ставить знак равенства между машинным обучением и искусственным интеллектом. Изначально машинное обучение было разделом науки об искусственном интеллекте, однако сегодня машинное обучение – самостоятельная область, более востребованная, чем искусственный интеллект. Цель искусственного интеллекта – научить машины делать то, что люди умеют делать лучше, а умение самостоятельно обучаться – ключевой навык, без которого компьютеры не смогут развиваться.
Машинное обучение – это программирование наоборот. У любого алгоритма есть вход и выход: данные поступают в компьютер, алгоритм делает с ними то, что нужно, и выдает результат. Машинное обучение, имея в своем распоряжении данные и желаемый результат, создает алгоритм, который превращает одно в другое. Обучающиеся алгоритмы