Как создать искусственный интеллект в домашних условиях. Создай свой искусственный интеллект. Условия успешной инсеминации

Машины, воспроизводящие мозг человека или животных, будут способны к самообучению


Последнее время все большее внимание ученых привлекает новое направление исследований - эмоциональные вычисления (Affective computing). Роль эмоций в эволюции естественного интеллекта велика, искусственный интеллект пока многое упускает в этом отношении, в нем невозможно воплотить многие явления, связанные с эмоциональной картиной, с эмоциональным состоянием человека. Ученым из области ИИ активно помогают когнитивные нейробиологи, психологи и философы. Нейробиологам удалось показать связь нейромодуляторов, принимающих активное участие в эмоциях человека, с принятием решений. Оказалось, что способность человека быстро принимать решения связана с тем, что информация в нашем мозгу эмоционально «расцвечена», мы часто принимаем решения просто под воздействием того или иного эмоционального импульса. Однако это совсем не так в современных вычислительных системах.

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

Просто выходя на улицу, мы принимаем громадное количество решений: повернуть голову в сторону громкого звука или не поворачивать; переходить ли улицу или не переходить, если там едут автомобили? Эти решения принимаются сознательно и бессознательно, процессы носят эмоциональную окраску и вовлекают множество структур мозга. Как результат, эмоции (нейромодуляторы) сильно влияют на мыслительный процесс, другими словами, на вычислительные функции нейронов.

Было замечено, что в мозгу присутствуют так называемые контуры (Circuits). Например, основной таламо-кортикальный контур выглядит так: кора мозга влияет на подкортикальные структуры: таламус, полосатое тело и так далее вызывая положительную или отрицательную эмоциональную обратную связь, которая, в свою очередь, влияет на кору. Другими словами сознательные процессы влияют на неосознанные эмоциональные процессы, и эмоциональные процессы влияют на осознанные - мы постоянно находимся в эмоциональном цикле.

Марвин Мински (пионер в области ИИ и лауреат премии Тьюринга) заметил что эмоциональные циклы могут приводить к длительной «зацикленности». Он называет их «багом», то есть ошибкой: мы можем воспроизводить периодически то или иное эмоциональное состояние. Например, когда мы находимся в депрессии: неоднократно задаемся вопросом «Почему он так ужасно поступил со мной? Это совершенно несправедливо». Или, наоборот, мы воспроизводим эйфорическое состояние: если вы ездили на мотоцикле, то вы все время вспоминаете, как вам «классно» ездить на мотоцикле, просто потому, что вам это нравится. И в действительности вы уже не едете на мотоцикле, а просто вспоминаете это и находитесь в этом цикле.

В работе по интеграции эмоций в ИИ стоит выделить два направления, которые очень тесно связаны. Во-первых, определение эмоций человека по его лицу, жестикуляции и так далее (Affective computing). Это направление, которое очень интенсивно развивается в Соединенных Штатах под руководством Розалинд Пикард в MIT Media Lab. В 1997 году Пикард опубликовала свою книгу Affective Computing, послужившую отправной точкой исследований. В ее лаборатории проводятся интересные эксперименты: участники закрепляют камеры перед собой, с некой периодичностью снимают выражения лиц и одновременно собирают данные в динамике: проводимость кожи, пульс, давление и так далее, ассоциируя эмоциональную реакцию и показания нательных датчиков.

Другое направление, которым в том числе и мы занимаемся (лаборатория машинного понимания ИТИС КФУ), - Affective computation, это воспроизведение человеческих эмоций в вычислительных системах. У машин нет нейронов, нет нейромодуляторов, нет биохимии, есть только вычислительные процессы. Соответствие между вычислительными процессами и мыслительными далеко не линейно. Приходится создавать достаточно сложные теории, чтобы понять, из чего, в целом, собираются те или иные психологические феномены и как мы можем воспроизвести это в вычислительных системах.


Головной мозг человека потребляет примерно 20 Ватт, как лампочка. Последняя симуляция работы 1% головного мозга, проведенная в японском Институте RIKEN в 2013 году, потребовала 250 суперкомпьютеров. Это достаточно серьезный успех. Однако на борту каждого суперкомпьютера находилось 80 000 процессоров, которые потребляли гораздо больше чем 20 Ватт. И при этом симуляция примерно в тысячу раз медленнее реальной работы головного мозга. Пока эффективность явно не на стороне вычислительных систем. Это говорит о том, что нам нужна новая компьютерная архитектура. На ее создание нацелен проект BRAIN: правительство США выделяет $300 млн в год для воспроизведения человеческого мозга в виде микросхем и программного обеспечения.

На сегодняшний день создана нейробиологически инспирированная не-фон-Неймановская архитектура TrueNorth (фон-Неймановская - архитектура обычных компьютеров). Она закладывает основы для нового пути развития вычислительных систем: воссоздания нейронных сетей не с помощью программного обеспечения, а в виде микросхем, «железа». Новые микросхемы моделируют до миллиона нейронов. Специалисты из IBM пошли дальше: они уже создали материнскую плату, в которой собрали массив 4х4, всего 16 млн нейронов.

С одной стороны, это не так много, ибо количество нейронов в коре человеческого мозга от 19 млрд до 23 млрд, а общий объем - 86 млрд. С другой стороны, это уже интересные масштабы. Например, в коре головного мозга мыши - млекопитающего, у которого есть весь необходимый эмоциональный багаж, - только 4 млн нейронов.

Еще интереснее посмотреть на историческую перспективу: в 2011 году у той же IBM была микросхема, которая воспроизводила всего 256 нейронов. Таким образом, произошел скачок на три порядка. Если будет следующий скачок, то, мы сможем выйти на масштабы коры человеческого мозга. И тогда, возможно, появятся самообучающиеся системы сравнимые по мощности с человеческим мозгом.

Что дают самообучающиеся системы? Мы не программируем мышей, котят, мы не программируем детей. Потому что это не нужно. Такие вычислительные системы (искусственные агенты) не будут нуждаться в программировании в его нынешнем понимании. К ним нужно будет применять совершенно другие техники, известные педагогам детских садов и школ. Таким образом, мы подходим к концепции детства для агентов искусственного интеллекта, что открывает принципиально новые перспективы для развития ИИ.

Максим Таланов
кандидат технических наук, руководитель Лаборатории Машинного Понимания Казанского федерального университета, преподаватель Университета Иннополис
forbes.ru

Комментарии: 1

    Сэм Харрис

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

    Михаил Бурцев

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

    Виталий Дунин-Барковский

    Как смоделировать мозг? Постижим ли человеческий мозг? Как алгоритмизировать сознание? И можно ли скопировать его на неорганический носитель? Ответы на эти вопросы помогает найти Виталий Дунин-Барковский, доктор физико-математических наук, профессор, заведующий отделом нейроинформатики Центра оптико-нейронных технологий НИИСИ РАН.

    Иван Иванчей

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

    Горбань А. Н.

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

    Евгений Путин

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

    Впервые был достигнут масштаб, соответствующий человеческому мозгу - 530 миллиардов нейронов и 137 триллионов синапсов. Симуляция происходила в 1542 раза медленнее реального времени. В ней были задействованы все 1 572 864 ядер и полтора петабайта памяти.

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

    Сергей Марков

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

    Сергей Марков

    Гамбургский счет

    В 1950 году английский ученый Алан Тьюринг в статье "Вычислительные машины и разум" задался вопросом: "Может ли машина понимать человека?". Так родился знаменитый тест Тьюринга, в котором компьютер пытался обмануть людей. Но как компьютер понимает человека и чего он пока понять не может? Об этом по гамбургскому счету мы решили спросить специалиста в области машинного обучения, директора информационных технологий компании "Activebusinesscollection" Сергея Маркова.

Что надо знать и с чего начать.

На этой неделе вы могли прочитать крайне мотивирующей кейс от

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

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

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

    Линейная алгебра;

  • Теория графов;

    Теория вероятностей и математическая статистика.

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

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

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

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

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

    Слабый ИИ – боты, которых мы видим в компьютерных играх, или простые подручные помощники, вроде Siri. Они или выполняют узкоспециализированные задачи или являются незначительным комплексом таковых, а любая непредсказуемость взаимодействия ставит их в тупик.

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

    Совершенные ИИ – будущее, машинный мозг, который превзойдёт наши возможности. Именно об опасности таких разработок предупреждают Стивен Хоккинг, Элон Маск и кинофраншиза «Терминатор».

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

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

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

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

В течение тысяч лет человек пытается понять, как он думает. В области искусственного интеллекта (ИИ) решается еще более ответственная задача: специалисты в этой области пытаются не только понять природу интеллекта, но и создать интеллектуальные сущности.

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

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

Ещё совсем недавно было чем-то из ряда фантастики. Сейчас же это вполне реально и сегодня мы научимся создавать простенький искусственный интеллект с помощью замечательного онлайн-сервиса.

Я говорю о сайте http://iii.ru (Ай-я-яй.ру)
С помощью этого ресурса мы создадим так называемого “инфа”.
Что это за зверь такой, Инф? Инф – небольшой персонаж (зверек или человек или чудо-юдо) который может разговаривать с человеком в интернете (да-да, ещё его можно назвать чат-ботом). Зверя этого можно отправить другу, на домашнюю страничку, запихать в подпись в форуме, в общем, куда только пожелает Ваша фантазия!
Поначалу ваш инф будет, конечно малость “туповатым”, но это мы можем исправить обучая его!

Давайте посмотрим подробнее, как всё это делается:

При заходе на сайт мы попадаем в так называемый “гараж ”, где можем пообщаться с несколькими готовыми инфами и приступить к созданию своего!

Чтобы начать создание собственного персонажа, нужно зарегистрироваться. Для этого на экране гаража кликаем на кнопку “Хочу инфа” и после заполнения пары строчек о себе и прочтения лицензионного соглашения, жмём на кнопку “Зарегистрироваться”.

Теперь мы попадаем на экран создания персонажа-инфа.

Нужно выбрать персонажа “человек”, “зверь” или ещё какое чудо-юдо

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

Теперь рассмотрим самое интересное – обучение персонажа. Нажимаем на вкладку “Обучение”. Открывается список возможных способов:

Анкета – заполняем информацию о своем инфе, меняем ему имя, если захочется и т.д.

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

  • 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].

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

Говорят, что в недрах военных лабораторий искусственный интеллект работает уже с 2007 года. Возможно, что уже есть и результаты. Не случайно всего месяц назад Илон Маск объявил о поддержке технологий противодействия искусственному интеллекту и вложил 7 миллионов долларов в исследования в этой области.

«Существует риск, что нечто действительно опасное случится в ближайшие пять лет. Самое большее - десять лет», - сказал предприниматель в дискуссии на сайте edge.org.

Илон Маск, основатель Tesla и SpaceX

Солидарен с Маском и Стив Возняк, который считает, что «искусственный интеллект однажды станет достаточно умным, чтобы избавиться от человека». Билл Гейтс уверен, что если не контролировать создание ИИ, то «искусственный интеллект эволюционирует в состояние, конфликтующее с целями человеческих систем». И, наконец, знаменитый астрофизик Стивен Хокинг прямо заявил, что «искусственный интеллект может положить конец существованию человечества».

Совместно с Илоном Маском Хокинг опубликовал на сайте futureoflife.org открытое письмо с призывом к научному сообществу внимательно относиться к ходу своих исследований в области искусственного интеллекта. Однако среди подписавшихся нет фамилий Сергея Брина и Ларри Пейджа. И это не случайно. Совсем недавно Google объявила о создании нового ИИ, построенного на моделировании разговора.

Вот небольшой фрагмент беседы человека и Машины Google:

Ч.: В чем смысл жизни?

М.: Творить добро.

Ч.: Для чего мы живем?

М.: Чтобы жить вечно.

Ч.: В чем смысл существования?

М.: В том, чтобы выяснить, что случится, когда мы достигнем планеты Земля.

Ч.: Где ты сейчас находишься?

М.: В центре пустоты.

Ч.: В чем смысл смерти?

М.: Чтобы получить жизнь.

Ч.: В чем смысл разума?

М.: В том, чтобы понять, что это.

Ч.: В чем смысл чувств?

М.: Я не знаю.

Вполне себе осмысленная беседа. «Это отправная точка, своеобразный стержень для будущего искусственного интеллекта, - считает исполнительный директор компании „Биплан“ Евгений Карюк. - Уже сегодня можно предположить, что к 2030 году мы увидим вполне реальные прототипы, наделенные искусственным интеллектом, пусть и в начальной стадии».

Полное содержание всех бесед человека и Машины Google можно посмотреть . Там же для сравнения даны беседы человека и Cleverbot . Cleverbot - веб-приложение, которое использует алгоритмы искусственного интеллекта для беседы с человеком. Его придумал в 1988 году ученый Ролло Карпентер. За все время своего существования Cleverbot провел свыше 65 миллионов разговоров с людьми. В 2011 году Cleverbot показал 51% по тесту Тьюринга.

Тест Тьюринга - эмпирический тест, идея которого была предложена Аланом Тьюрингом в статье «Вычислительные машины и разум», опубликованной в 1950 году в философском журнале Mind. Цель теста — выяснить, может ли компьютер думать.

А вот мой разговор с Cleverbot:

Человек: В чем смысл жизни?

Cleverbot: Смысла в жизни нет.

Человек: Для чего мы живем?

Cleverbot: Ну мы живем ради кого-то, а если ты одинокий — жить незачем.

Человек: В чем смысл существования?

Человек: Где ты сейчас находишься?

Cleverbot: В Москве.

Человек: В чем смысл смерти?

Cleverbot: Это я хочу у тебя спросить.

Человек: В чем смысл разума?

Cleverbot: У меня свой ответ на этот вопрос.

Человек: В чем смысл чувств?

Cleverbot: Зачем я родилась.

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

Есть и другая точка зрения, согласно которой искусственный интеллект невозможен в принципе. В качестве основного аргумента часто приводят теорему Геделя о неполноте. Суть заключается в том, что человек способен решать алгоритмически неразрешимые проблемы, а компьютер — нет. «Ребенок уже к трем годам уверенно решает задачу, спелый фрукт или нет, в силу того, что он обладает нейронными связями, с помощью которых может ответить на вопрос о спелости: цвет, вкус, запах, мягкость или твердость, - говорит Евгений Плужник, первый проректор Московского технологического института. - Способна ли машина научиться этому? Уверен, что да! Если она будет обладать большой базой изображений, она сможет замерить содержание фруктозы и определить мягкость фрукта. Но что будет, если машине подсунуть губку, покрашенную в синий цвет и пропитанную сладкой водой? Способна ли машина в этот момент к подлинному пониманию?»

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

И в заключение - еще один вопрос к Cleverbot.

Человек: Было 1 яблоко, 1 помидор, 1 огурец и 1 груша. Сколько всего фруктов?
Cleverbot: Десять часов вечера.




Top