Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Искусственный интеллект — часть нашей повседневной жизни. Мы встречаемся с его проявлениями, когда занимаемся шопингом в интернет-магазинах, получаем рекомендации «вам может понравиться этот фильм», узнаем медицинские диагнозы… Чтобы уверенно ориентироваться в новом мире, необходимо понимать алгоритмы, лежащие в основе ИИ. «Грокаем алгоритмы искусственного интеллекта» объясняет фундаментальные концепции ИИ с помощью иллюстраций и примеров из жизни. Все, что вам понадобится, — это знание алгебры на уровне старших классов школы, и вы с легкостью будете решать задачи, позволяющие обнаружить банковских мошенников, создавать шедевры живописи и управлять движением беспилотных автомобилей.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 278
Veröffentlichungsjahr: 2023
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Переводчик Д. Брайт
Ришал Харбанс
Грокаем алгоритмы искусcтвенного интеллекта. — СПб.: Питер, 2023.
ISBN 978-5-4461-2924-9
© ООО Издательство "Питер", 2023
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Посвящается моим родителям, Пранилу и Рекхе — спасибо, что помогли мне добиться успеха.
В предисловии рассказывается о развитии технологии, о нашей потребности в автоматизации, а также о необходимой ответственности за принятие этических решений при использовании искусственного интеллекта.
На протяжении всей своей истории человечество неустанно искало способы решать задачи, прикладывая как можно меньше ручного труда и усилий. Люди всегда стремились создавать инструменты и автоматизировать повторяющиеся действия, чтобы выживать и сохранять энергию. Здесь некоторые могут поспорить, заявив, что человек умен, он ищет возможности совершенствования, решая задачи творчески или создавая произведения литературы, музыки и других искусств. Но эта книга не ставит целью обсуждение философской сути бытия. Она дает обзор методов искусственного интеллекта (ИИ), которые можно применять для решения прикладных задач. Решая эти задачи, мы облегчаем себе жизнь, делая ее более безопасной, здоровой, полной и радостной. Все технологические достижения человечества, которые вы видите сегодня, включая ИИ, удовлетворяют потребности отдельных людей, их сообществ и целых наций.
Чтобы создавать будущее, необходимо понимать ключевые вехи прошлого. Во многих переломных моментах истории инновации меняли образ жизни человека и определяли способы взаимодействия с миром и его восприятие. И человечество продолжит меняться по мере развития инструментов, которые открывают перед нами все больше возможностей (рис. 0.1).
Этот краткий исторически-философский экскурс нужен исключительно затем, чтобы заложить основу для понимания технологий и ИИ, а также заставить задуматься об ответственном принятии решений при реализации собственных проектов.
Рис. 0.1. Краткая хронология технологического развития человечества
Обратите внимание, что чем ближе к настоящему, тем быстрее происходят смены этапов развития. К самым значимым технологическим прорывам последних 30 лет можно отнести усовершенствование микросхем, широкое распространение персональных компьютеров, бум сетевых устройств и переход всех отраслей в цифровую среду, которая разрушила физические ограничения, объединив весь мир. Все это послужило причиной роста важности и актуальности искусственного интеллекта.
• Интернет объединил мир и сделал возможным собирать огромные объемы данных практически обо всем.
• Развитие вычислительного оборудования предоставило возможности обрабатывать с помощью этих данных ранее известные алгоритмы и одновременно с этим открывать новые.
• Различные отрасли ощутили потребность в применении данных и алгоритмов, чтобы принимать лучшие решения, решать более сложные задачи и оптимизировать условия жизни (что люди и делали с самого зарождения человечества).
Мы склонны рассматривать технологический прогресс в линейной перспективе. Но если обратиться к истории, можно заметить, что он есть и будет экспоненциальным (рис. 0.2). Технологические достижения появляются все чаще, потребность в освоении все новых инструментов и техник растет, но в основе всего этого лежатименно принципы решения задач.
В этой книге мы расскажем о фундаментальных концепциях, которые помогают решать непростые задачи; но при этом постараемся описать даже самые сложные концепции в простой форме.
Рис. 0.2. Реальный и воспринимаемый технологический прогресс
Разные люди по-разному воспринимают понятие автоматизации. Для технического специалиста она может означать написание скриптов, которые упрощают процессы разработки, развертывания и дистрибуции ПО и помогают избежать ошибок. Для инженера — расширение производственной линии, увеличение ее пропускной способности и снижение процента брака. Фермер может считать автоматизацию средством повышения урожайности сельхозкультур с помощью тракторов и систем ирригации. Автоматизация — это любое решение, которое снижает потребность в человеческой энергии для увеличения производительности или ценности в сравнении с ручным трудом (рис. 0.3).
Рис. 0.3 Ручной и автоматизированный процесс
Если подумать о возможных причинах для отказа от автоматизации, то одной из наиболее существенных можно назвать способность человека выполнять задачу более качественно, с меньшим риском ошибки и более точно. Это касается задач, в которых требуется оценка и понимание сразу нескольких перспектив, когда нужен абстрактный творческий подход, либо при анализе социальных взаимодействий и природы людей.
Медсестры не просто выполняют какие-то задачи, они общаются с пациентами и заботятся о них. Исследования показывают, что человеческая забота — важная составляющая процесса лечения. Преподаватели не просто передают знания, они находят творческие способы подать, объяснить материал, а также помогать студентам с учетом их способностей, личностных качеств и интересов. Таким образом, в нашей жизни есть место и для технологий, и для людей. При современном уровне развития технологий автоматизация становится близким спутником любой профессии.
Зачем вообще в этой книге раздел про этику и ответственность, спросите вы. Дело в том, что по мере приближения к миру, в котором технологии тесно вплетены в повседневную жизнь, создатели технологий получают намного большую власть, чем могут предполагать. Даже небольшое воздействие может приводить к ощутимой отдаче. Поэтому важно, чтобы наши намерения были благими, а результаты работы не причиняли вреда (рис. 0.4).
Рис. 0.4. Стремление к этичному и правомерному применению технологий
При создании чего-либо, будь то новый материальный продукт, сервис или программа, всегда важен мотив. Несет ли создаваемое ПО положительный эффект или же намерения разработчика нечисты и корыстны? Учитывает ли он влияние создаваемого продукта? Бизнес всегда находит способы увеличить прибыль и распространить власть, в чем и состоит весь его смысл. Предприниматели строят стратегии нахождения лучших путей победы над конкурентами, расширения клиентской базы и сфер влияния. С учетом сказанного бизнесменам следует спросить себя, чисты ли их намерения. Причем не только с точки зрения выживания самого бизнеса, но и с позиции пользы для своих клиентов и общества в целом. Многие известные ученые, инженеры и технологи не раз указывали на необходимость управления и контроля технологий ИИ, чтобы они не применялись во вред. Мы тоже как отдельные личности обязаны действовать в рамках этики и морали и руководствоваться своими базовыми ценностями. Когда вас просят делать нечто противоречащее вашим принципам, важно озвучить эти принципы и придерживаться их.
Очень важно выявлять возможность непредусмотренного применения разработки и препятствовать этому. Хотя задача кажется очевидной и простой, на самом деле сложно предугадать, как люди будут использовать создаваемый продукт, а еще сложнее предсказать, насколько такое использование согласуется с вашими ценностями и ценностями организации.
В качестве примера можно привести громкоговоритель, изобретенный Питером Дженсеном (Peter Jensen) в 1915 году. Изначально он был назван Magnavox и использовался в Сан-Франциско, чтобы транслировать оперную музыку широкой публике — достаточно благой способ применения. Но нацисты в Германии нашли для него другое применение: они поместили громкоговорители в общественных местах, так чтобы все жители волей-неволей слушали речи Гитлера. Поскольку избежать этого было невозможно, люди попали под влияние идей нацизма, и этот режим получил обширную поддержку в стране. Дженсен явно не предполагал, что его изобретение будет использоваться таким образом, но сделать с этим ничего не мог.
Времена изменились, и теперь у людей есть больше контроля над создаваемыми продуктами, особенно в области ПО. Невозможно заранее представить все варианты использования той или иной технологии, но почти с уверенностью можно сказать, что кто-нибудь да найдет способ применить ее не так, как задумывалось изначально, вызвав либо позитивные, либо негативные последствия. С учетом этого и мы как профессионалы в сфере технологий, и организации, с которыми мы работаем, должны препятствовать злонамеренному использованию наших разработок, насколько это возможно.
В процессе создания ИИ-систем мы применяем свои знания контекстов и предметных областей. Мы также используем алгоритмы для поиска закономерностей в данных и выполнения соответствующих действий. При этом нельзя отрицать, что на нас влияют предубеждения. Предубеждение — это предрассудок в отношении человека или группы людей на основе их пола, расы, вероисповедания и других критериев. Многие из подобных предрассудков обусловлены коллективным поведением социума, историческими событиями, а также политическими и культурными взглядами на мир. Все они оказывают влияние на собираемые нами данные. И поскольку алгоритмы ИИ в итоге работают с этими предвзятыми (иначе говоря, смещенными) данными, то они и «усваивают» их. С технической точки зрения мы можем спроектировать совершенную систему ИИ, но в конечном счете с ней будут взаимодействовать люди, и наша задача — минимизировать возможное смещение (предвзятость) модели, насколько это возможно. Используемые нами алгоритмы хороши ровно в той степени, в которой хороши данные, на которых они обучаются. Понимание этих данных и контекста, в котором они применяются, — первый шаг в борьбе со смещением. Это также поможет вам лучше ориентироваться в предметной области. Сбалансированные данные с минимальным смещением позволяют разрабатывать наиболее эффективные решения.
Правовой аспект нашей работы также чрезвычайно важен. Закон определяет, что мы можем и чего не можем делать в интересах общества в целом. Многие законы были написаны во времена, когда компьютеры и интернет не являлись важной частью нашей жизни. Поэтому сейчас вскрывается множество неоднозначных трактовок того, как мы должны разрабатывать технологии и что нам дозволено с ними делать.
Мы рискуем своими персональными данными практически постоянно, когда взаимодействуем с компьютерами, смартфонами и другими устройствами. Мы передаем огромное количество информации о себе, иногда очень личной. Как эти данные обрабатываются и хранятся? Эти факты необходимо учитывать при создании собственных проектов. Люди должны иметь возможность выбирать, какие из их данных будут собираться, обрабатываться и храниться; как эти данные будут использоваться и кто может получить к ним доступ. По своему опыту могу сказать, что люди обычно соглашаются передавать свои данные, если это улучшает необходимые им продукты. При этом очень важно понимать, что люди гораздо более сговорчивы, когда им предоставляют выбор и уважают его.
Сингулярность — это идея создания ИИ, который будет настолько умен, что сможет самосовершенствоваться и расширяться до уровня сверхинтеллекта. Беспокойство вызывает тот факт, что люди не могут понять явление таких масштабов: явление, которое окажется способным изменить мир, каким мы его знаем, по причинам, которые нам не удается даже представить. Некоторые люди боятся, что интеллект такого уровня может увидеть в них угрозу. Другие предполагают, что сверхинтеллект может относиться к людям так, как мы относимся к муравьям. Мы не обращаем внимания на муравьев и не озадачиваемся пониманием их жизни, но, если они нас раздражают, мы от них избавляемся.
Независимо от того, в какой степени эти предположения реально отражают будущее, мы должны нести ответственность за принимаемые решения и обдумывать их, поскольку в конечном итоге они оказывают воздействие на человека, группы людей или даже на весь мир.
Написание этой книги стало одним из наиболее трудных, но при этом стоящих начинаний в моей жизни. Мне приходилось выискивать время, когда его не было, создавать необходимый настрой, работая одновременно с несколькими задачами, а также поддерживать мотивацию, когда меня поглощали жизненные обстоятельства. Все это мне бы не удалось, если бы не помощь удивительных людей. Этот опыт многому меня научил. Благодарю тебя, Берт Бейтс (Bert Bates), за наставничество и фантастическую редакторскую помощь. Я очень многое узнал от тебя об эффективном обучении и письменной коммуникации. Наши споры и обсуждения, а также твоя дружеская поддержка помогли мне сделать эту книгу такой, какая она есть. Каждому проекту требуется организатор, который бы держал руку на пульсе и следил за тем, чтобы все шло как запланировано. За это я благодарю моего редактора-консультанта Элешу Хайд (Elesha Hyde). Работать с тобой было абсолютным удовольствием. Ты всегда подсказывала нужное направление и делилась полезными наблюдениями о моей работе. Нам всегда нужны люди, с которыми можно обсудить идеи, а для этого лучше всего подходят друзья. Особенно хочу поблагодарить Хэнни Бринк (Hennie Brink) за то, что была надежной опорой и терпеливым слушателем. Также выражаю свою признательность Франсесу Буонотемпо (Frances Buontempo) и Кшиштофу Камычеку (Krzysztof Kamyczek) за конструктивную критику и объективную обратную связь по техническим и языковым вопросам. Ваш вклад помог мне заполнить пробелы и сделать книгу более доступной для понимания. Выражаю также благодарность Дейдре Хиам (Deirdre Hiam), моему менеджеру проектов; рецензенту Ивану Мартиновичу (Ivan Martinovic), выпускающему редактору Киеру Симпсону (Kier Simpson), а также корректору Джейсону Эверетту (Jason Everett).
В заключение искренне благодарю всех консультантов, которые вычитывали мои рукописи и давали ценную обратную связь: Андре Вайнера (Andre Weiner), Арава Агарвала (Arav Agarwal), Чарльза Соетана (Charles Soetan), Дэна Шейха (Dan Sheikh), Дэвида Джейкобса (David Jacobs), Дхивью Шивасубраманяна (Dhivya Sivasubramanian), Доминго Салазара (Domingo Salazar), Ганди Раджана (Gandhi Rajan), Хелен Мэри Баррамеду (Helen Mary Barrameda), Джеймса Чжицзюнь Лю (James Zhijun Liu), Джозефа Фридмана (Joseph Friedman), Джузефа Мурада (Jousef Murad), Карана Ниха (Karan Nih), Кельвина Д. Микса (Kelvin D. Meeks), Кена Бирна (Ken Byrne), Кшиштофа Камычека (Krzysztof Kamyczek), Кайла Петерсона (Kyle Peterson), Линду Ристевски (Linda Ristevski), Мартина Лопеса (Martin Lopez), Питера Брауна (Peter Brown), Филипа Паттерсона (Philip Patterson), Родольфо Альендеса (Rodolfo Allendes), Теджаса Джайна (Tejas Jain) и Вейрана Дена (Weiran Deng).
Книга «Грокаем алгоритмы искусственного интеллекта» была написана и оформлена так, чтобы облегчить рядовому техническому специалисту понимание и реализацию алгоритмов ИИ, а также способы их применения. Для этого используются аналогии, практические примеры и визуальные пояснения.
Книга — для разработчиков ПО и всех связанных с этой индустрией людей, которые хотят понять принципы и алгоритмы искусственного интеллекта на практических примерах и наглядных пояснениях, сопровождаемых теоретическими основами и математическими выкладками.
Книга рассчитана на тех, кто имеет базовое представление о таких понятиях программирования, как переменные, типы данных, массивы, условные конструкции, итераторы, классы и функции; кто имеет опыт разработки на любом языке; а также тех, кто знаком с основными математическими понятиями: переменной величиной, способами задания функций, отображением функций и данных на графиках.
Книга разделена на 10 глав, каждая из которых посвящена отдельному алгоритму ИИ или подходу. В начале рассматриваются основные алгоритмы и понятия, чтобы подготовить вас для изучения более сложных тем.
• Глава1 «Понятие искусственного интеллекта» рассказывает о фундаментальных понятиях в области данных, типов задач, категорий алгоритмов и парадигм, а также общих случаях использования алгоритмов ИИ.
• Глава2 «Основы поиска» содержит описание ключевых принципов структур данных и простейших алгоритмов поиска, а также примеры их использования.
• Глава 3 «Умный поиск» переходит от простых поисковых алгоритмов к оптимальным поисковым решениям, а также к нахождению решений в соревновательной среде.
• Глава 4 «Эволюционные алгоритмы» посвящена работам в области генетических алгоритмов, где решения задач генерируются итеративно и совершенствуются по принципу эволюции в природе.
• Глава 5 «Продвинутые эволюционные подходы» является продолжением главы 4, но описывает продвинутые принципы, включающие способы подстройки этапов развития алгоритмов для более оптимального решения различных задач.
• Глава6 «Роевой интеллект: муравьи» раскрывает суть реализации роевого интеллекта и показывает, как муравьиный алгоритм использует принципы жизнедеятельности муравьев и способы решения этими насекомыми сложных задач.
• Глава7 «Роевой интеллект: частицы» продолжает предыдущую тему, переходя к рассмотрению задач оптимизации и способов их решения с помощью метода роя частиц, который ищет лучшие решения в обширных пространствах поиска.
• Глава8 «Машинное обучение» знакомит с рабочим процессом машинного обучения, включающим подготовку данных, их обработку, моделирование и тестирование (для решения регрессионных задач с помощью линейной регрессии, а также задач классификации с помощью деревьев решений).
• Глава9 «Искусственные нейронные сети» знакомит с понятием искусственных нейронных сетей. В ней описываются логические шаги и математические вычисления, выполняемые в ходе обучения, для нахождения закономерностей в данных и формирования прогнозов. Эта глава также определяет место нейронных сетей в машинном обучении.
• Глава10 «Обучение с подкреплением с помощью Q-Learning» знакомит читателей с понятием обучения с подкреплением на основе поведенческой психологии и демонстрирует алгоритм Q-Learning, с помощью которого агенты в среде путем стимуляции обучаются отличать неудачные решения от успешных.
Читать книгу рекомендуется по порядку, от начала и до конца. Все концепции излагаются последовательно. После прочтения каждой главы полезно обращаться к коду Python в репозитории, чтобы попрактиковаться и разобраться в реализации соответствующих алгоритмов.
В этой книге содержится псевдокод, который поможет понять логические принципы и идеи, лежащие в основе алгоритмов. Он доступен каждому вне зависимости от предпочитаемого языка программирования. Псевдокод — это неформальный способ описать инструкции в коде. Он более удобен для человеческого восприятия, поэтому его легче читать и понимать.
Для всех описываемых в книге алгоритмов доступны рабочие примеры кода Python в репозитории GitHub (https://github.com/rishal-hurbans/Grokking-Artificial-Intelligence-Algorithms). Исходный код сопровождается инструкциями по настройке и комментариями, которые будут помогать вам в ходе обучения. Рекомендуем обращаться к коду после прочтения каждой главы. Это позволит закреплять полученные знания об алгоритмах.
Исходный код Python призван показать варианты реализации этих алгоритмов. Его примеры оптимизированы ДЛЯ ОБУЧЕНИЯ, а не для ПРАКТИЧЕСКОГО использования. Код намеренно был написан в качестве вспомогательного обучающего материала. Для практических проектов рекомендуется использовать установленные библиотеки и фреймворки, так как они обычно оптимизированы для высокой производительности, прошли надлежащее тестирование и имеют профессиональную поддержку.
Приобретая книгу «Грокаем алгоритмы искусственного интеллекта», вы получаете бесплатный доступ к закрытому веб-форуму издательства Manning (на английском языке), на котором можно оставлять комментарии о книге, задавать технические вопросы и получать помощь от автора и других пользователей. Чтобы получить доступ к форуму, откройте страницу https://livebook.manning.com/book/grokking-artificial-intelligence-algorithms/welcome/v-5/discussions. Информацию о форумах Manning и правилах поведения на них см. на https://livebook.manning.com/#!/discussion.
В рамках своих обязательств перед читателями издательство Manning предоставляет ресурс для содержательного общения читателей и авторов. Эти обязательства не подразумевают конкретную степень участия автора, которое остается добровольным (и неоплачиваемым). Задавайте автору хорошие вопросы, чтобы он не терял интереса к происходящему! Форум и архивы обсуждений доступны на веб-сайте издательства, пока книга продолжает издаваться.
Исходный код для «Грокаем алгоритмы искусственного интеллекта»: https://github.com/rishal-hurbans/Grokking-Artificial-Intelligence-Algorithms.
Сайт автора: https://rhurbans.com
Ришал с самого детства увлекается компьютерами, технологиями и различными безумными идеями. На протяжении своей карьеры он руководил командами и проектами, занимался практической разработкой программного обеспечения, стратегическим планированием и решениями полного цикла для международных компаний. Он активно внедряет культуру прагматизма, а также пропагандирует постоянное обучение и расширение навыков в компании, сообществе и всей индустрии.
Ришал страстно увлечен бизнес-механиками и стратегиями, развитием людей и команд, а также искусственным интеллектом и философией. Он создал немало различных цифровых продуктов для повышения эффективности работы, чтобы люди и компании могли сосредоточиться на наиболее важных вещах. Помимо этого, он неоднократно выступал на международных конференциях, объясняя сложные понятия доступным языком и помогая людям совершенствовать знания и навыки.
Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.
В этой главе
• Определение ИИ, каким мы его знаем
• Представление применимых к ИИ концепций
• Виды задач в компьютерной науке и ИИ, а также описание их свойств
• Обзор ИИ-алгоритмов, с которыми вы познакомитесь в книге
• Реальные примеры использования ИИ
Интеллект — это загадка, понятие, для которого не существует единого определения. Философы, психологи, ученые и инженеры по-разному определяют, что это такое и откуда происходит. Мы видим интеллект в окружающей природе, например в групповом взаимодействии живых существ. Мы также видим его проявление в способах мышления и поступках людей. Если говорить в общем, то объекты, являющиеся автономными, но при этом умеющие приспосабливаться, считаются наделенными интеллектом. Автономные означает, что им не требуются постоянные инструкции. А приспосабливающиеся подразумевает способность менять поведение в соответствии с изменениями среды или пространства задачи. При рассмотрении живых организмов и машин мы понимаем, что основой для их действий выступают данные. Данными служат образы, которые мы видим; звуки, которые мы слышим; характеристики вещей и явлений, которые нас окружают. Мы получаем все эти данные, обрабатываем и делаем выводы. Поэтому для понимания алгоритмов искусственного интеллекта очень важно понимание концепций, связанных с данными.
Некоторые люди утверждают, что мы не понимаем суть ИИ, потому что не можем определить само понятие интеллекта. Сальвадор Дали верил, что признаком интеллекта является амбиция. Он говорил: «Ум без амбиции — все равно что птица без крыльев». Альберт Эйнштейн считал, что весомым показателем интеллекта является воображение. Он говорил: «Не знание является истинным признаком интеллекта, а воображение». А вот слова Стивена Хокинга: «Интеллект — это способность адаптироваться», что подразумевает способность подстраиваться под изменения в мире. Эти три великих ума рассматривали явление интеллекта с различных позиций. До сих пор не имея единого истинного определения этого понятия, мы основываем понимание интеллекта на том, что человек является доминирующим и наиболее разумным видом на земле.
С позиции здравого смысла и для согласованности с практическими примерами из данной книги мы дадим примерное определение ИИ как синтетической системы, демонстрирующей «умное» поведение. Вместо того чтобы пытаться разобрать, что есть ИИ, а что им не является, мы будем обращаться к ИИ-подобию рассматриваемых явлений. Некая сущность может проявлять определенные признаки интеллекта, так как помогает нам решать сложные задачи, а также привносит ценность и пользу. Обычно реализации ИИ, симулирующие зрение, слух и другие органы чувств, рассматриваются как ИИ-подобные. Решения, которые способны обучаться автономно и в то же время приспосабливаться к новым данным и средам, также считаются ИИ-подобными.
Вот некоторые примеры ИИ-подобных явлений:
• Система, способная играть в разнообразные сложные игры.
• Система обнаружения раковых опухолей.
• Система, генерирующая произведения искусства на основе небольшого количества входных данных.
• Беспилотный автомобиль.
Как сказал Дуглас Хофштадтер (Douglas Hofstadter): «ИИ — это то, что еще не разработано в достаточной степени». В приведенных выше примерах беспилотные автомобили могут выглядеть как умные, потому что еще недостаточно усовершенствованы. А компьютер, выполняющий сложение чисел, еще не так давно считался умным, но теперь этим никого не удивишь.
Суть в том, что ИИ — это неоднозначный термин, который для разных людей, индустрий и дисциплин означает разные понятия. Представленные в этой книге алгоритмы в прошлом или настоящем были классифицированы как алгоритмы ИИ, и не имеет значения, соответствуют ли они конкретному определению ИИ. Важно то, что они решают сложные задачи.
Данные — это путь к волшебным алгоритмам, которые позволяют получать в некотором смысле магические результаты. Если данных недостаточно, они неверно выбраны или нерепрезентативны, алгоритмы работают плохо. Качество работы алгоритмов напрямую определяется качеством исходных данных. Мир заполнен информацией, и эта информация существует даже в таких формах, которые мы не способны почувствовать. Данные могут представлять значения, измеряемые численно, например текущую температуру воздуха в Арктике, количество рыбы в водоеме или ваш возраст в днях. Все эти примеры подразумевают подбор точных численных значений на основе фактов. Такие данные сложно интерпретировать с ошибкой. Температура в конкретном месте в конкретное время абсолютно верна и не подвержена смещению. Такие данные называются количественными.
Данные также могут представлять показания наблюдений, например запах цветка или степень чьего-либо согласия с политикой партии. Такие данные называются качественными и иногда трудно интерпретируются, потому что представляют не абсолютную истину, а чье-то личное восприятие истины. На рис. 1.1 показано несколько примеров окружающих нас количественных и качественных данных.
Данные — это сырые факты о вещах, поэтому их запись, как правило, не имеет смещения. Тем не менее в реальном мире люди собирают, записывают и сопоставляют данные в конкретном контексте и с конкретным пониманием того, как их можно использовать. Формирование на основе данных неких осмысленных идей для ответа на определенный вопрос рождает информацию. Далее использование информации на основе опыта и сознательное ее применение формируют знания. Отчасти именно это мы и стремимся симулировать с помощью алгоритмов ИИ.
Рис. 1.1. Знакомые нам примеры данных
На рис. 1.2 показано, как количественные и качественные данные можно интерпретировать. Такие стандартизированные инструменты, как часы, калькуляторы и весы, обычно используются для измерения количественных данных, в то время как наши обоняние, вкус, слух, осязание, зрение, а также оценочные суждения служат для формирования качественных данных.
Разные люди могут по-разному интерпретировать данные, информацию и знания в зависимости от их уровня понимания соответствующей области и взгляда на мир. Этот факт влияет на качество решений, делая научный аспект в создании технологии крайне важным. Соблюдая повторяемые научные процессы сбора данных, выполнения экспериментов и регистрирования результатов, можно обеспечить их повышенную точность и находить лучшие решения задач при обработке данных с помощью алгоритмов.
Рис. 1.2. Качественные и количественные данные
Итак, мы знаем примерное определение ИИ и понимаем, как важны данные. Теперь надо разобраться, что именно из себя представляет алгоритм. Алгоритм — это набор инструкций и правил, представленных в качестве спецификации для достижения конкретной цели. Как правило, алгоритмы получают входные данные, и после нескольких этапов, на которых алгоритмы меняют их состояния, производятся выходные данные.
Даже такое простое занятие, как чтение книги, можно представить в виде алгоритма. Вот пример этапов чтения:
1. Найти книгу «Грокаем алгоритмы искусственного интеллекта».
2. Открыть книгу.
3. Пока остаются непрочтенные страницы:
а) прочесть страницу;
б) перелистнуть;
в) обдумать полученные знания.
4. Подумать, как эти знания можно применить на практике.
На рис. 1.3 алгоритм представлен в виде рецепта. Входными данными служат ингредиенты и необходимый инвентарь, а выходными — блюдо, приготовленное в соответствии с инструкциями.
Алгоритмы используются в различных решениях. Например, можно реализовать видеочат с помощью алгоритмов сжатия или перемещаться по городам с помощью сим-карт на смартфоне, использующих алгоритмы построения маршрутов в реальном времени. Даже простая программа «Hello World» задействует множество алгоритмов, чтобы перевести понятный человеку язык программирования в машинный код и выполнить его инструкции в аппаратной части устройства. Алгоритмы можно встретить повсюду, нужно лишь повнимательнее присмотреться.
Рис. 1.3. Алгоритм подобен рецепту
Для более наглядной демонстрации принципа действия алгоритмов на рис. 1.4 приводится блок-схема алгоритма игры по угадыванию чисел. Компьютер генерирует в заданном диапазоне случайное число, а игрок старается это число угадать. Обратите внимание, что алгоритм содержит дискретные шаги, которые выполняют действие либо определяют решение до перехода к следующей операции.
Рис. 1.4. Блок-схема игры по угадыванию чисел
На основе нашего понимания технологии, данных, интеллекта и алгоритмов можно определить алгоритмы ИИ как наборы инструкций, которые используют данные для создания систем, демонстрирующих разумное поведение и решающих сложные задачи.
Краткий обзор этапов становления индустрии ИИ поможет понять, что старые техники можно успешно совмещать с новыми идеями для решения задач инновационными способами. Сама по себе технология ИИ не нова. История наполнена мифами о механических людях и автономных «мыслящих» машинах. Оглядываясь назад, мы обнаруживаем, что стоим на плечах гигантов. Возможно, и мы сможем внести свою лепту в общий поток знаний.
Анализ прошлых достижений подчеркивает важность понимания основ ИИ. Алгоритмы, разработанные несколько десятилетий назад, чрезвычайно важны в современных реализациях ИИ. Эта книга начинается с разбора именно основополагающих алгоритмов, которые помогут вам выработать понимание, как решать задачи с их помощью и постепенно продвигаться к более интересным и современным подходам.
На рис. 1.5 приведен далеко не исчерпывающий список достижений в области ИИ — это просто небольшой набор примеров. История исполнена множества великих прорывов и открытий!
Рис. 1.5. Эволюция ИИ
Возможности алгоритмов ИИ очень велики, но при этом они не являются универсальным средством, способным решать любые задачи. А о каких задачах тогда идет речь? В этом разделе я расскажу о нескольких типах, которые чаще всего встречаются в компьютерной науке, и помогу сформировать о них базовое понимание. Это позволит вам выявлять похожие задачи в реальной жизни и выбирать подходящие для их решения алгоритмы.
В компьютерной науке и области ИИ для описания и классификации задач используются термины контекст и цель.
Задача поиска подразумевает ситуацию, в которой есть несколько возможных решений. Каждое из них — последовательность шагов (путь) к нужной цели. Некоторые решения содержат пересекающиеся поднаборы путей; одни оказываются более подходящими, чем другие; при этом некоторые менее затратные, а другие наоборот. «Лучшее» решение определяется конкретной решаемой задачей. Термин «менее затратные» означает менее требовательные к вычислительным ресурсам для выполнения. Пример: определение на карте кратчайшего пути между городами. Доступно множество дорог, каждая со своей протяженностью и условиями движения, но при этом некоторые дороги окажутся предпочтительными. Многие алгоритмы ИИ основаны на принципе поиска в пространстве решений.
Задача оптимизации подразумевает ситуацию с множеством подходящих решений, среди которых сложно найти абсолютно лучшее. Пример — разместить чемоданы в багажнике автомобиля так, чтобы максимально полно задействовать его объем. Здесь возможно множество комбинаций, и чем эффективнее заполняется багажник, тем больше в него войдет вещей.
Подумайте об этом
Так как задачи оптимизации предполагают множество решений, и поскольку эти решения существуют в различных точках пространства поиска, возникает понятие локального и глобального лучшего. Локальное лучшее решение — это наилучшее решение внутри определенной зоны пространства поиска, а глобальное лучшее — это наилучшее решение во всем пространстве. Как правило, существует много локальных лучших решений и одно глобальное. Возьмем, например, поиск лучшего ресторана. Можно найти лучший ресторан в вашем городе, но он не обязательно окажется лучшим рестораном в стране или во всем мире.
Задача прогнозирования — это задача, в которой у нас есть данные о чем-либо и требуется найти в них закономерности. Например, у нас есть данные о разных транспортных средствах (ТС) и объемах их двигателей, а также количестве потребляемого этими ТС топлива. Можем ли мы спрогнозировать потребление топлива у новой модели ТС, исходя из объема ее двигателя? Если в имеющихся данных присутствует корреляция между объемами двигателей и потреблением топлива, то прогнозирование окажется возможным.
Задача классификации похожа на задачу прогнозирования, но вместо поиска конкретного прогноза, как в случае с потреблением топлива, мы стараемся определить категорию чего-либо на основе его признаков. Например, имея данные о размере ТС, объеме его двигателя и количестве сидений, можем ли мы спрогнозировать, чем это ТС является: мотоциклом, седаном или спорткаром? Задачи классификации требуют обнаружения закономерностей в данных, которые объединяют примеры в категории. При поиске таких закономерностей важным принципом является интерполяция, потому что здесь на основе известных данных мы вычисляем их новые точки.
Задача кластеризации включает сценарии, в которых тренды и связи выявляются из анализа данных. Примеры группируются различными способами на основе различных свойств данных. Например, при наличии информации о стоимости блюд и расположении ресторанов можно выяснить, что молодежь чаще посещает места с более низкими ценами.
Кластеризация позволяет находить связи в данных, даже когда не сформулирован точный вопрос. Это полезно для лучшего понимания данных и того, какие действия с ними можно совершать.
Детерминированные модели — это модели, которые при получении конкретных вводных данных возвращают одинаковый результат. Например, мы ожидаем, что в полдень в одном и том же городе всегда будет светло, а в полночь темно. Конечно, этот простой пример не учитывает нестандартную продолжительность светового дня в районе полюсов.
Вероятностные модели — это модели, которые при получении конкретных вводных данных возвращают один результат из набора возможных. Такие модели обычно содержат элемент контролируемой случайности, который оказывает воздействие на набор возможных результатов. Например, при условии дневного времени можно ожидать солнечную погоду, облачную или дождливую. Для этого времени нет фиксированного варианта погоды.
ИИ — это «горячая» тема, равно как машинное и глубокое обучение. Разобраться в этих различных, но в то же время схожих понятиях непросто. К тому же, в области ИИ отличия существуют и между уровнями интеллектуальности.
В этом разделе мы разберем некоторые понятия ИИ, а также представим план книги.
Начнем со знакомства с тремя уровнями ИИ, представленными на рис. 1.6.
Рис. 1.6. Уровни ИИ
Системы с ограниченным ИИ решают задачи в конкретном контексте или предметной области. Как правило, они не способны решать задачу в одном контексте и затем применять то же знание в другом. Например, система, разработанная для понимания взаимодействия с клиентом и его модели расходов, не сможет распознавать кошек на изображении. Обычно для эффективного решения какой-либо задачи требуется специализация именно в этой области, что усложняет адаптацию к другим видам задач.
Различные системы ограниченного интеллекта можно совмещать, создавая варианты с расширенным спектром возможностей. Рассмотрим, к примеру, голосовой помощник. Эта система может понимать естественный язык, что само по себе описывает ее как узконаправленную. Однако интеграция с другими системами, например интернет-поиском и рекомендательным движком для музыки, делает ее уже более обобщенной.
Общий интеллект подобен человеческому. Будучи людьми, мы способны обучаться на различном опыте и взаимодействиях с миром, а также применять полученные знания для решения различных задач. Например, если вы обожглись в детстве и почувствовали боль, то экстраполируете этот опыт и будете знать, что другие горячие предметы также могут причинить боль. Тем не менее общий интеллект у людей — это больше чем просто рассуждение наподобие «горячие объекты могут причинить вред». Общий интеллект подразумевает память, пространственный анализ на основе визуального восприятия, использование знаний и другие аспекты. Достичь уровня общего интеллекта у машин в обозримой перспективе невозможно, но успехи в области квантовых вычислений, обработки данных и алгоритмов ИИ могут сделать это реальностью в более отдаленном будущем.
Некоторые идеи сверхинтеллекта встречаются в научно-фантастических фильмах про постапокалиптические миры, где все машины связаны, способны рассуждать о выходящих за грани нашего понимания вещах и доминируют над людьми. Существует множество философских рассуждений на тему, способен ли человек изобрести нечто более разумное, чем он сам. А если даже способен, то знает ли он об этом? Сверхинтеллект — это великое неизвестное, и еще долгое время любые его определения будут не более чем гипотетическими.
Иногда используются выражения «старый ИИ» и «новый ИИ». Старый ИИ зачастую понимается как система, где люди закодировали действия, благодаря которым алгоритм демонстрирует разумное поведение — исходя из глубокого знания задачи или путем проб и ошибок. Примером является человек, вручную создающий дерево решений, а также правила и варианты во всем этом дереве. Новый ИИ подразумевает создание алгоритмов и моделей, которые обучаются на данных и создают собственные правила, выполняемые настолько же точно, что и заложенные человеком, или даже точнее. Разница этих двух ИИ в том, что последний может находить в данных важные закономерности, которые человек может либо не найти совсем, либо искать очень долго. Поисковые алгоритмы зачастую рассматриваются как старый ИИ, но понимание, как они работают, полезно для изучения более сложных подходов. В этой книге приводятся наиболее популярные алгоритмы ИИ и постепенно раскрываются лежащие в их основе концепции. На рис. 1.7 показана связь между некоторыми концепциями искусственного интеллекта.
Рис. 1.7. Категоризация концепций в области ИИ (поисковые алгоритмы, алгоритмы, вдохновленные природой, машинное обучение, глубокое обучение)
Поисковые алгоритмы полезны в решении задач, в которых для достижения цели требуется совершить несколько шагов. Например, поиск пути через лабиринт или определение наилучшего хода в игре. Эти алгоритмы оценивают будущие состояния и пытаются найти оптимальный путь к наиболее стоящей цели. Как правило, у нас есть слишком много возможных решений, чтобы механически перебирать их. В таких случаях поиски лучшего решения даже в небольшой области могут занимать тысячи часов вычислений. Алгоритмы поиска помогают оценить область поиска. Они используются в поисковых движках интернета, картографических приложениях и даже в игровых агентах.
Когда мы смотрим на окружающий мир, то замечаем удивительные вещи в поведении и функционировании живых организмов. К примерам можно отнести кооперацию муравьев при сборе пищи, образование стай птиц при их миграции, работу головного мозга, а также эволюцию организмов для выведения более сильного потомства. Через наблюдение и изучение различных явлений мы получаем знания о том, как эти органические системы работают и как простые правила приводят к появлению разумного поведения. Некоторые из этих явлений легли в основу алгоритмов, которые оказались эффективными в области ИИ, а именно эволюционных алгоритмов и алгоритмов роевого интеллекта.
Эволюционные алгоритмы построены на основе теории эволюции, сформулированной Чарльзом Дарвином. Она гласит, что в результате смешения генов и мутаций в процессе воспроизводства новые особи в популяции рождаются более приспособленными к среде обитания. Роевой интеллект — это группа на первый взгляд «глупых» особей, демонстрирующих разумное поведение. В книге будут рассмотрены два наиболее популярных алгоритма оптимизации этого типа: муравьиный алгоритм и алгоритм роя частиц.
В машинном обучении (МО) для обучения моделей на основе данных используется статистический подход. Машинное обучение включает в себя множество алгоритмов, которые можно задействовать для понимания связей в данных, принятия решений и формирования прогнозов на основе этих данных.
В этой области можно выделить три основных подхода:
• Обучение с учителем, то есть обучение моделей с помощью алгоритмов в условиях, когда обучающие данные содержат известные результаты для заданного вопроса. Например, определение вида фрукта на основе набора данных, включающего вес, цвет, фактуру поверхности, а также метку фрукта для каждого примера.
• Обучение без учителя раскрывает скрытые связи и структуры внутри данных, которые помогают подобрать для датасета подходящие вопросы. Алгоритм может находить закономерности в свойствах схожих фруктов и соответствующим образом эти свойства группировать, на основе чего формируются конкретные вопросы к данным. Эти ключевые принципы и алгоритмы закладывают основу для изучения продвинутых алгоритмов.
• Обучение с подкреплением основано на поведенческой психологии. Если кратко, то оно описывает схему вознаграждения агента при выполнении им эффективного действия и, наоборот, штрафа в обратном случае. Например, ребенок получает награду за хорошую отметку в дневнике и наказание за плохую, что стимулирует его приносить хорошие отметки. Обучение с подкреплением полезно для изучения способов взаимодействия программ или роботов с динамической средой. Приведем в пример робота, получившего задачу открывать двери. Если в нужный момент он этого не делает, то получает наказание, если же справляется правильно — вознаграждение. С течением времени, после множества попыток, робот «заучивает» последовательность действий, необходимую для открывания двери.
Глубокое обучение