Создаётся новая программа искусственного интеллекта Viv на замену Siri. Как создают искусственный интеллект: от кода до робота Искусственный интеллект программа для пк


  • Tutorial

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

Под катом gif-файлов мегабайт на 10.

Об игре

В игре вы управляете мотоциклом, который оставляет за собой стену из света. Игровое поле ограничено, а у соперников такие же мотоциклы. Мотоцикл едет постоянно, вы лишь можете поворачивать. Свободное место на поле кончается, и избегать препятствия становится сложнее. Побеждает тот, кто дольше всех продержится. Клон игры я сделал браузерным многопользовательским с использованием node.js и socket.io. Управление из двух кнопок – поворот влево и поворот вправо.

Интерфейс бота

Так как я использую socket.io, то обработка игроков на сервере у меня была в виде работы над массивом специальных объектов socket, которые создаёт socket.io. Из этих объектов я использовал только id, функции emit и broadcast. А значит безболезненно для самой игры можно реализовать интерфейс socket и использовать его в обработке, будто играет ещё один пользователь. Я назвал класс BotSocket .
Метод emit(event, data) у бота выполняет почти такие же действия что и у клиента при входящих данных от сервера, а именно:
  1. Сохраняет данные обо всех играющих мотоциклах при их добавлении
  2. Сохраняет ссылку на свой мотоцикл при его добавлении
  3. Обновляет данные обо всех играющих мотоциклах
  4. Сбрасывает состояния при перезапуске игры
Для передачи команд управления своим мотоциклом на сервер потребовалось сохранить ссылку на объект игры, который обрабатывает такие команды от обычных пользователей. Метод класса Game у меня назван onControl(socket, data) , поэтому я добавил метод в BotSocket
BotSocket.prototype.control = function(data) { this.game.onControl(this, data); };
При поступлении от сервера команды обновления данных мотоциклов (было совершено их передвижение) я проверяю, есть ли у меня вообще подконтрольный мотоцикл, не столкнулся ли он еще и был ли он перемещён, и, в случае успеха, я вызываю основной метод для работы ИИ - update() .
Интерфейс готов, теперь можно добавить сам ИИ.

Искусственный интеллект

Как бы громко это не звучало, но в играх игроков, за которых играет компьютер, принято называть именно ИИ, либо ботами. Объект BotSocket обладает необходимыми данными об игре, чтобы принять решение. Вариантов решения может быть всего три:
  1. Ничего делать, ехать прямо
  2. Повернуть направо
  3. Повернуть налево

Когда я решил написать бота, я понятия не имел, как это можно сделать. Я попробовал очень простой код:
BotSocket.prototype.update = function() { var r = Math.random(); if (r > 0.95) { this.control({"button": "right"}); } else if (r >
Поведение было примерно таким:

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

Но хотелось, чтобы он жил как можно больше. Я стал искать информацию о том, как пишут ИИ к играм. Нашел статьи , которые описывали разные подходы. Но я искал что-то чрезвычайно простое. Я нашел на хабре в одной из статей про бота для игры вроде Zuma упоминание волнового метода . Он же алгоритм Ли. Мне он показался очень простым и подходящим. Это алгоритм поиска кратчайшего пути из одной точки в другую по полю, где клетки могут быть либо свободными, либо занятыми. Суть простая. Мы начинаем из точки назначения, присваиваем ей значение 1 и помечаем все соседние свободные клетки цифрой на единицу больше. Затем берём все соседние свободные помеченных и снова помечаем на единицу больше. Так расширяемся на всё поле, пока не дойдем до точки назначения. А путь строим поиском из соседних по уменьшению числа, пока не дойдем до 1. Я смотрел алгоритмы поиска кратчайших путей в графах, но этот мне показался наиболее подходящим.

Я перенёс алгоритм копипастой из страницы в вики, дал ему имя BotSocket.prototype.algorithmLee . Для поля я создал сначала объект battleground , в котором при каждом обновлении помечал занятые точки с их координатами. А в алгоритме Ли сводил это поле к такому же, но с шагом 1.

Нужно было как-то определять точку назначения. Я решил выбирать её случайно через определенные интервалы времени. Сделал метод для поиска случайной свободной точки на поле:
BotSocket.prototype.getDesiredPoint = function() { var point = ; var H = Object.keys(this.battleground).length - 1; var W = Object.keys(this.battleground).length - 1; var x, y, i, j; var found = false; var iter = 0; do { i = this.getRandomInt(1, W); j = this.getRandomInt(1, H); x = i * this.moveStepSize; y = j * this.moveStepSize; if (this.battleground[x][y] === this.BG_EMPTY) { found = true; } iter++; } while (!found && iter < 100); point = ; return point; };

Теперь я мог переписать update:
BotSocket.prototype.update = function() { if (!this.desiredPoint || this.movements % this.updDestinationInterval === 0) { this.desiredPoint = this.getDesiredPoint(); } if (!this.desiredPoint) { return; } var currentPoint = ; var path = this.algorithmLee(currentPoint, this.desiredPoint); if (path && typeof path !== "undefined") { this.moveToPoint(path); } else { this.desiredPoint = this.getDesiredPoint(); } };
Здесь упоминается метод moveToPoint , который поворачивает, если нужно, чтобы достигнуть первую точку из кратчайшего пути с учётом текущего направления.

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

Бот на стороне клиента

Я решил попробовать перенести бота на клиентскую часть. Так как проект на node.js, я могу использовать написанный код для бота и на стороне клиента. Для этого я расширил BotSocket отдельным клиентским файлом, который переопределял методы emit() и control() , чтобы правильно взаимодействовать с сервером без ссылки на объект game.
Локально всё работало отлично, а после деплоя на удалённый сервер была какая-то странная картина:

Долго думая, я понял, что дело в задержке. Бот отправлял команду поворота, но она доходила после обновления его позиции на сервере, отчего он часто не мог попасть на прямой путь к желаемой точке. Но я хотел нормального бота на клиентской стороне. Поэтому решил учитывать задержку. Для этого написал снова расширение BotSocket. Статья получается длинной, так что опишу основные решения. Перед вызовом алгоритма Ли вместо текущей точки я подставлял прогнозируемое положение с учетом текущего положения и направления, а так же множителя задержки. Множитель задержки – это число, во сколько раз превосходит задержка частоту обновления положения на сервере. Предсказание будущей точки мне еще понадобилось в методе moveToPoint() .

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


Мой красненький, остальные серверные.

Самое важное – попробуйте сделать бота сами

Основная цель этой статьи – пробудить интерес к написанию бота. Я сделал много, чтобы победить вашу лень. Для этого я добавил возможность подгружать свой собственный скрипт с ботом, который будет расширять мой базовый клиентский класс. Зайдите на проект и нажмите на текст «Show options for room with your own bot», а затем на кнопку «Create room for test your own bot». Будет создана комната, где можно легко применять ботов, по умолчанию вашим ботом будет бот без учета задержки. Теперь настало время для вашего кода.
Два простых варианта для использования вашего кода в деле, используйте любой:
  1. Выкладывайте js-файл на любой сервер, который будет доступен вашему браузеру. Url к вашему скрипту вставляйте в игре рядом с кнопкой “Load your AI script”. После нажатия на эту кнопку будет создан и заполнен новый объект botSocket , у которого будет вызван метод start() .
  2. Используйте консоль браузера (Firebug – F12, Firefox - Ctrl+Shift+K, Chrome – Ctrl+Shift+J, другие – ).

Если вы определились с методом ввода вашего кода, попробуйте переопределить методы класса BotSocket . Для начала самое простое:
BotSocket.prototype.update = function() { var r = Math.random(); if (r > 0.95) { this.control({"button": "right"}); } else if (r > 0.90) { this.control({"button": "left"}); } }

После этого пересоздайте объект botSocket, введя
botSocket = null;
При этом код на странице сам пересоздаст и заполнит объект. Этим вы измените стандартное поведение бота на случайное. А дальше уже дело для вашей фантазии или глубоких знаний.
Вы так же можете подключить скрипт моего улучшенного бота с учетом задержки, вставив в url для бота https://raw.github.com/rnixik/tronode-js/master/public/javascripts/MyBotSocketClient.js

Заключение

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

Если у вас нет под рукой node.js, вы можете воспользоваться развернутыми мной приложениями:

1) tronode.livelevel.net - самая дешевая VPS на DigitalOcean,
2) tronode-js.herokuapp.com - бесплатная виртуальная единица на Heroku.

Первый, скорее всего, первым может не справиться с нагрузкой, а второй на некоторых компьютерах сбрасывает socket.io-транспорт в xhr-polling, из-за этого игра очень сильно лагает.
Если вы хотите узнать больше, о том, как я программировал игровую логику, то можете прочитать . Там же о развертке node.js и немного о графической части.

Если у вас нет аккаунта на хабре, то задать вопросы или прислать свои интересные предложения можете мне на почту [email protected].

Теги: Добавить метки

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

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


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


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


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

В ходе очередной попытки реализовать идеи из фантастических фильмов техногиганты один за другим приступили к работе над виртуальными ассистентами. На конференции Google I/O 2016 компания представила Google Assistant, а также аналог Amazon Echo - домашний голосовой помощник Google Home.

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

10 виртуальных ассистентов: обзор

Алексей Зеньков

Для начала вспомним, что такое Google Now.

Голосовой поиск Google/Google Now

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

Недостатки: Иногда надоедает излишней инициативностью (например, показывает результаты игр команд, которые вам неинтересны, или маршруты до дома из известных мест). Бесполезен при управлении «умным домом». Работа над интеграцией со сторонними приложениями, похоже, приостановилась.

Уровень человечности: Нулевой. Не располагает к общению. У него нет даже имени, кроме Google.

Резюме: Обширные запасы личных данных и доступ к поисковому движку, в теории, должны были сделать Google лидером отрасли, однако компания пока даже не смогла понять, как использовать свои преимущества и создать ассистента, который может понять пользователя. На сегодня Google Now и голосовой поиск на равных соперничают с Siri, но нового уровня развития пока не достигли.

А теперь - о конкурентах.

Apple Siri

Что: Голосовой ассистент, который умеет разговаривать с пользователем и давать проактивные рекомендации. Активируется долгим нажатием на кнопку «Домой» на и iPad. Недавно появилась поддержка ассистента на Apple TV и Apple Watch.

Особенности: Легко пользоваться на устройствах с iOS. Понимает естественную речь. Хорошо осведомлен о новостях, погоде, спорте, кино, маршрутах и местных компаниях. Может подсказать, что посмотреть по телевизору. Умеет взаимодействовать с некоторыми элементами «умного дома».

Недостатки: Не умеет взаимодействовать с большинством других приложений и сервисов. Работает медленнее некоторых конкурентов.

Уровень человечности: Не способен поддерживать полноценную беседу, но в определенные моменты демонстрирует собственную мудрость. Женский голос звучит сравнительно по-человечески.

Недостатки: Отлично себя чувствует на Windows – платформе, которая меньше всего интересна разработчикам, а, возможно, и пользователям. Пользоваться помощником на Android и iOS сложнее, а функций меньше.

Уровень человечности: Обожает шутки, особенно банальные. Имеет наготове длинный список остроумных ответов на общие вопросы. Может читать выдержки из Шекспира.

Резюме: После нескольких лет пребывания в тени Siri и Google Cortana стала намного более интересным чат-ботом. В Microsoft хотят сделать своего голосового ассистента базовым интеллектом для всех остальных ботов , способным управлять вашими путешествиями, встречами, списками дел и другими вещами, а также увеличить степень интеграции с другими продуктами Microsoft, например, с Office . Компания ставит себе цель создать новую оболочку для вычислительных технологий эпохи пост-ПК, но пока рано судить, получится у нее это или нет.

Facebook M

Что: Частично управляется , частично людьми, и пока еще находится в разработке. M будет ассистентом с текстовым управлением в среде Facebook Messenger.

Особенности: Постарается сделать все, что вы попросите.

Недостатки: Пока еще не является готовым продуктом, и еще долго им не станет. Доступен только небольшому количеству пользователей в Сан-Франциско.

Уровень человечности: Крайне высокий, поскольку в формировании ответов на вопросы будут участвовать люди. По данным Wired, в компании надеются, что со временем M научится у этих операторов и сможет работать более независимо.

Резюме: На данный момент M – это лишь чуть больше, чем просто идея. Но, учитывая интерес Facebook к чат-ботам в целом, будет неудивительно, если именно M в итоге станет сверхинтеллектом.

X.ai

Что: Один из немногих виртуальных ассистентов, имеющих только одну функцию. Работает только через e-mail, где может назначать встречи по вашей просьбе.

Особенности: Знает ваше расписание и предпочтения, договаривается с другими участниками за вас.

Особенности: Viv обещают, что их продукт сможет понимать сложные вопросы, такие как: «Будет ли температура около моста “Золотые ворота” выше 20 градусов послезавтра после 5 часов вечера?». Ведется работа по обеспечению совместимости со сторонними приложениями.

Недостатки: Пока, кроме подготовленных презентаций, нет доказательств, что все работает именно так, как заявлено.

Уровень человечности: Визуальные средства и конкретные ответы ценит выше, чем подробное описание. Наличие остроумия под вопросом.

Недостатки: Возможности по интеграции со сторонними приложениями ограничены, а открыть сервис напрямую на iOS или Android невозможно. Запросы, которые ассистент не может распознать, перенаправляются на Ask.com.

Уровень человечности: Не располагает к долгим беседам, но умеет отвечать на дополнительные вопросы.

Резюме: Похоже, что мобильные приложения Hound на самом деле существуют только для того, чтобы показать возможности сервиса Houndify (добавление функции голосового ассистента в любые приложения - прим. ред.), который SoundHound планирует продавать другим компаниям. Если все получится, мы даже не будем знать, что пользуемся именно им.

Ozlo

Что: ИИ, главная функция которого на данный момент – поиск кафе, баров и ресторанов. Доступен для ограниченного количества пользователей.

Особенности: Находит и объединяет данные с нескольких источников, среди которых Yelp и Foursquare, а затем преподносит все в форме удобных карточек. Пытается общаться, задавая и отвечая на дополнительные вопросы, к примеру «какие места открыты сейчас?» или «что у них в меню?»

Недостатки: Ограниченные возможности, если только создатели Ozlo не добавят новые функции. При обучении ИИ сильно зависит от пользователей.

Уровень человечности: Избегает лишних любезностей, только кратко приветствует по имени.

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

SpeakToIt Assistant.ai

Что: Одна из множества копий Siri. В магазине приложений поиск по запросу Siri выдает множество подобных программ, к примеру Voice Commands, Voice Secretary и Assistant.

Особенности: Мало чем отличается от Siri, но может выучить пользовательские команды для активации списка функций.

Недостатки: Не так полезен, как встроенный ассистент в вашем смартфоне, и не так удобен.

Уровень человечности: Звучит довольно неестественно, но изображает себя в качестве ассистента-человека, чей пол и внешний вид можно менять.

Резюме: Некоторые из этих клонов Siri выглядят пережитком прошлого, когда не все модели iPhone могли работать с фирменным ассистентом от Apple и нуждались в замене. В любом случае, похоже, что их создатели осознают, что такой подход не позволит добиться успеха. К примеру, SpeakToIt перешли к созданию набора инструментов, с помощью которых другие разработчики могли бы сделать собственных чат-ботов.

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

Простая программа с искусственным интеллектом.

Начнем из самого простого примера. ChatMaster - программа с искусственным интеллектом умеет разговаривать с человеком с помощью чата. Главной особенностью на первый взгляд простой программы – самообучение. Чем больше вы общаетесь с программой, тем более растет ее словарный запас и умение подстрагиваться под собеседника при ведении диалога. Автор программы утверждает, что ему удалось создать программную модель человеческого мышления.

При начале работы программа может показаться «слабенькой». Но причина в том, что ее после первого запуска не стоит сразу тестировать на уровень интеллекта и сообразительности. Сначала к программе следует относиться как к 12-ти летнему ребенку, который через несколько часов будет общаться на уровне своего собеседника. Для этого словарный запас программы должен вырасти до с 3000 до 10 000 слов. После чего впечатление от работы с программой превышает все ожидания.

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

Улучшенное программное решение искусственного интеллекта.

Очень интересное программное решение в области искусственного интеллекта предложили разработчики из A.L.I.C.E. Они хорошо разбираются в искусственном интеллекте и активно занимаются разработкой программ в данной области. Чтобы ознакомится с их разработками, было создано онлайн-приложение для общения с капитаном Кирком (Captain Kirk) в режиме реального времени. Принцип приложение построен аналогично предыдущей программе, но есть приятная особенность. Программа отвечает на все написанные ей вопросы голосом вслух. Существенным недостатком программы является возможность общения исключительно на английском языке. Подобное приложение для общения на русском найти не удалось и очень жаль, что программисты не использовали такую функцию. Ведь существуют много программ для синтеза речи, которые преобразуют текст в звуковую речь с помощью технологии SAPI5. Жаль, что у программистов не возникало желания создать альтернативную программу с поддержкой русского языка. Ведь по сути это пока еще свободная ниша.

Общение с программой через микрофон относится к искусственному интеллекту.

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

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

  • аппелятивная;
  • эмотивная;
  • метод превалирования.

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

Для мобильных технологий более активно разрабатывают и внедряют программы с искусственным интеллектом. В этом можно убедиться с краткого видео обзора программы:

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

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

Стадия 1. Разочарование

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

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

Стадия 2. Принятие

Когда спесь немного сбита студенческой литературой, можно приступать к практике. Бросаться на LISP или другие пока не стоит - сначала стоит освоиться с принципами проектирования ИИ. Как для быстрого изучения, так и дальнейшего развития прекрасно подойдёт Python - это язык, чаще всего используемый в научных целях, для него вы найдете множество библиотек, которые облегчат ваш труд.

Стадия 3. Развитие

Теперь переходим непосредственно к теории ИИ. Их условно можно разделить на 3 категории:

  • Слабый ИИ – боты, которых мы видим в компьютерных играх, или простые подручные помощники, вроде Siri. Они или выполняют узкоспециализированные задачи или являются незначительным комплексом таковых, а любая непредсказуемость взаимодействия ставит их в тупик.
  • Сильный ИИ – это машины, интеллект которых сопоставим с человеческим мозгом. На сегодняшний день нет реальных представителей этого класса, но компьютеры, вроде Watson очень близки к достижению этой цели.
  • Совершенные ИИ – будущее, машинный мозг, который превзойдёт наши возможности. Именно об опасности таких разработок предупреждают Стивен Хоккинг, Элон Маск и кинофраншиза «Терминатор».

Естественно, начинать следует с самых простых ботов. Для этого вспомните старую-добрую игру «Крестики-нолики» при использовании поля 3х3 и постарайтесь выяснить для себя основные алгоритмы действий: вероятность победы при безошибочных действиях, наиболее удачные места на поле для расположения фигуры, необходимость сводить игру к ничьей и так далее.

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

К слову, если вы всё-таки взялись за язык Python, то создать довольно простого бота можно, обратившись к этому подробному мануалу . Для других языков, таких как C++ или Java , вам также не составит труда найти пошаговые материалы. Почувствовав, что за созданием ИИ нет ничего сверхъестественного, вы сможете смело закрыть браузер и приступить к личным экспериментам.

Стадия 4. Азарт

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

Как вы поняли даже из названий, это API, которые позволят без лишних затрат времени создать некоторое подобие серьёзного ИИ.

Стадия 5. Работа

Теперь же, когда вы уже вполне ясно представляете, как ИИ создавать и чем при этом пользоваться, пора выводить свои знания на новый уровень. Во-первых, для этого потребуется изучение дисциплины, которое носит название «Машинное обучение ». Во-вторых, необходимо научиться работать с соответствующими библиотеками выбранного языка программирования. Для рассматриваемого нами Python это Scikit-learn, NLTK, SciPy, PyBrain и Numpy. В-третьих, в развитии никуда не обойтись от . Ну и самое главное, вы теперь сможете читать литературу о ИИ с полным пониманием дела:

  • Artificial Intelligence for Games , Ян Миллингтон;
  • Game Programming Patterns , Роберт Найсторм;
  • AI Algorithms, Data Structures, and Idioms in Prolog, Lisp, and Java , Джордж Люгер, Уильям Стбалфилд;
  • Computational Cognitive Neuroscience , Рэнделл О’Рейли, Юко Мунаката;
  • Artificial Intelligence: A Modern Approach , Стюарт Рассел, Питер Норвиг.

И да, вся или почти вся литература по данной тематике представлена на иностранном языке, поэтому если хотите заниматься созданием ИИ профессионально - необходимо подтянуть свой английский до технического уровня. Впрочем, это актуально для любой сферы программирования, не правда ли?