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