C++ — ИИ (Искусственный Интеллект)


Содержание

искусственный интеллект — Проблемы с ИИ для игры в крестики-нолики в Stack Overflow

Так что у меня есть несколько проблем с ИИ моей игры в крестики-нолики. ИИ должен быть чисто оборонительным, поэтому он всегда будет блокировать вас. Обычно это работает изначально с моим первым случаем, так что, например, если я играю верхний левый, то верхний средний, он всегда будет верхним правым. Другие случаи, например, если я играю на двух диагонали, могут заморозить игру или дать мне второй ход. Эти проблемы возникли только после того, как я реализовал свой неисправный умный ИИ. Первоначально у программы был «тупой ИИ», который выбирал случайные места, как вы увидите внизу кода. Более того, я думаю, что проблема в том, что некоторые из условий блокировки могут конфликтовать друг с другом и вызывать проблемы. Как я могу это исправить? Соответствующий код выглядит следующим образом:
Координаты основаны на сетке крестики-нолики, где верхний левый угол равен (0,0), а нижний правый равен (2,2).

Решение

Циклы do while — это мусор. Подумайте об этом, если ваши правила сделали неправильный выбор (т. Е. Пытались играть на заполненном поле), а затем сделайте так же Неправильный выбор снова не поможет. На самом деле, именно поэтому вы получаете «заморозки». Вам нужно реорганизовать логику вашего кода. Я бы посоветовал, что если ваш ИИ выберет недопустимый квадрат, вы должны вернуться к своему коду случайного выбора, тогда, по крайней мере, вы получите законный ход.

Что-то вроде этого

Первоначально я установил AIMoveX и AIMoveY в -1, чтобы указать, что ни одно правило еще не выбрано. Если они все равно -1 после прохождения всех правил, то я знаю, что никаких правил не выбрано, и я должен сделать случайный выбор. Если правило выбрано, но выбрано непустое поле, я также делаю случайный выбор. Я проверяю оба этих условия в конце моего кода.

Вы должны тщательно продумать, что именно делает код, который вы пишете. Просто помещать цикл do while в одном месте, потому что он работал в другом месте, неправильно.

Искусственный интелект С++ [закрыт]

Я собираюсь учиться ИИ на С++, но не знаю, где начать учиться. Кто может подсказать ресурсы для обучения ИИ и очень желательно сразу на С++?

Закрыт по причине того, что вопрос слишком общий участниками user181100, Vlad from Moscow, Harry, Anton Shchyrov, ixSci 1 дек ’16 в 15:30 .

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

Как построить карьеру в ИИ, не будучи математическим гением

Переучиваться всегда страшно, особенно когда на кону стоит материальный статус и вопрос профессиональной востребованности. Но оставаться в ИТ-индустрии в стороне от современных трендов — ИИ, машинного обучения, нейросетей и data science — все равно, что остановиться в своем развитии. Но айтишники в России не спешат менять специализацию. Декан факультета ИИ в онлайн-университете GeekUniversity Сергей Ширкин рассказал «Хайтеку» о самых распространенных страхах среди ИИ-программистов и о том, чему нужно учиться для построения успешной карьеры в этой области.

Разработчикам сегодня интересно не просто писать стандартные программы, а быть на «передовой» — получать специализацию в наиболее перспективных сферах. ИИ, нейронные сети, машинное обучение, big data и data science, без сомнения, очень интересные направления в программировании, и это все понимают. Но чтобы стать высококлассным дата-сайентистом, новичку придется освоить с нуля большой объем разносторонних знаний. А состоявшемуся специалисту иного профиля, например, фронтенд-разработчику, основательно «перековаться». Практика показывает, что решиться на это не всегда просто. Мешают три главных страха, с которыми сталкивается практически каждый, кто задумал строить карьеру в области ИИ.

Страх первый: я не смогу найти работу с достойной зарплатой

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

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

По данным hh.ru, разброс составляет от 75 до 300 тыс. рублей. Для сравнения, средняя зарплата мобайл-разработчика — 114 тыс., программиста Python — 105 тыс., программиста iOS — 100 тыс. Зарплата новичка без опыта работы будет, конечно, немного ниже, чем в целом по отрасли. Но зато и перспективы дальнейшего роста шире.

Страх потерять доход тесно связан с боязнью не найти работу вообще. А это, в свою очередь, относится напрямую к мифу об ограниченности внедрения систем ИИ в экономике. Судя по информационному полю, создается впечатление, что ИИ в России использует только с десяток ведущих ИТ-компаний вроде «Яндекса», Mail.Ru Group, «МегаФона», МТС, «Билайна», Теле2, ABBYY и Сбербанка. Понятно, что требования к кандидатам там запредельны, туда очень сложно устроиться на работу.

4 шага для разработки ИИ, которому человек будет полностью доверять

ИТ-гиганты являются флагманами внедрения инноваций. На этом строятся их имидж и последовательная PR-поддержка. На самом деле возможности для трудоустройства гораздо шире. Элементы ИИ и data science сегодня используются повсеместно.

  • Банки. Несколько кредитных учреждений в России заявляют о себе как о высокотехнологичных структурах, говоря о внедрении нейронных сетей, сборе данных по социальным сетям и т.д. (Сбербанк, ВТБ, «Тинькофф банк», «Альфа-банк»). Это, опять же, часть их PR-работы с аудиторией. Причем внедрение ИИ позволяет зарабатывать миллиарды долларов. В реальности картина такова, что этим занимается в России каждый второй более-менее крупный банк, а в недалеком будущем будет каждый. Соответственно, в банковской сфере стабильно есть спрос на специалистов по обработке больших данных.
  • Промышленность. В последние годы идет бурное развитие нейронных сетей и машинного обучения в различных областях промышленности — например, в металлургической. В частности, речь идет о сотрудничестве Yandex Data Factory с Магнитогорским металлургическим комбинатом и другими предприятиями. Эта тема широкой публике не очень известна. Соответствующие статьи появляются только в специализированных изданиях. Хайп поднимается вокруг более очевидных «потребительских» вещей, вроде приложения Adobe Sensei. Но это не значит, что автоматизированный Photoshop — самое яркое достижение в области ИИ.
  • Склады. По всему миру склады переходят на практически полную автоматизацию с применением ИИ. Один из примеров — компания Symbotic, производящая автоматизированные склады, для обслуживания которых требуется всего восемь-девять человек в смену. Грузчики на этом складе заменены роботами с компьютерным зрением. Для таких объектов всегда будут требоваться операторы с соответствующей подготовкой. Подобный склад от другого производителя был недавно открыт в Подмосковье. Бизнес довольно осторожно относится к такого рода нововведениям. Компании наблюдают друг за другом и ждут, пока кто-то первый успешно внедрит инновацию. И уже тогда начнется лавинообразный процесс повсеместного применения. Именно это и ждет складское хозяйство в ближайшие пару лет.
  • Онлайн-ритейл. Множество игроков e-commerce имеют «вторую натуру». Например, Wildberries или Lamoda выглядят как фэшн-бизнес, но на самом деле это полноценные ИТ-компании с высокой степенью автоматизации и огромным объемом big data. Они нанимают аналитиков, умеющих предсказать, с какой вероятностью в тот или иной момент определенный человек купит какой-либо товар, и специалистов, быстро извлекающих информацию из баз данных. Поэтому онлайн-ритейл — большой рынок труда для специалистов в области ИИ, где они могут применять самый широкий спектр навыков.

Расист, оружие и предвзятый судья — каким станет искусственный интеллект в будущем

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

Страх второй: я не смогу осилить высшую математику

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

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

«Если изобретение с ИИ не приносит пользу, сам продукт никому не нужен»

Этот страх можно назвать беспочвенным. Специалист по ИИ вовсе не обязан быть математическим гением. В область компетенции входит лишь небольшая часть линейной алгебры, определенные сферы матанализа и теории вероятностей, а также статистика. Точно таким же образом происходит подготовка в программировании: отнюдь не тотальный объем знаний, а только его часть — в частности, языки Python, C, C++, язык запросов SQL и Linux.

Страх третий: я не смогу конкурировать с выпускниками физмата

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

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

  • Разработчики, у которых плохо с математикой. Кандидат может делать шикарные интерфейсы, но для работы с нейронными сетями и большими данными ему нужна математика. От этого никуда не деться. Такой специалист может освоить требуемый объем знаний в течение года. Например, на онлайн-курсах.
  • Математики или научные работники, профессиональные статистики, у которых недостаточно навыков в программировании. Они понимают алгоритмы ИИ, знают матанализ, теорию вероятностей и линейную алгебру, но не в состоянии выполнить тестовое задание средней сложности. Кандидат может иметь научную степень, но допускает грубейшие ошибки при написании кода. Таким специалистам нужно учиться год-полтора, чтобы закрыть пробелы в знаниях. Лучше это делать на продвинутых курсах, так как в вузах не дают достаточных навыков программирования и часто проводят обучение с использованием устаревших языков.

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

HR-специалисты самых топовых ИТ-гигантов сбиваются с ног в поисках таких эрудированных кандидатов со знанием английского языка. Если находят такого, то последнее, что они делают, это проверяют его диплом о высшем образовании. Рынок труда наводнен специалистами с однобокой подготовкой, а потому шиковать компаниям не приходится.

Возможно создать искусственный интеллект используя современные технологии?

Скрипты на все случаи жизни — попытка была и провалилась. Гуглить «компьютеры пятого поколения».

Пока что из «хороших» методов создания ИИ, нам доступно прямое численное моделирование нервной системы. С современными нейрокомпьютерами — для всяких жучков/паучков/букашек. Вот когда нейрокомпьютеры хотя бы до котиков доберуться-будет интересно.

Конечно возможно. Уже существует и много. Просто вам следует осознать какие бывают ИИ, на что именно они запрограммированы.

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

Искусственный Интеллект (ИИ) Править

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

Основа Править

Для начала нужно зайти в дизайн своего флота.

Затем нужно зайти в постройку корабля и сверху на ровне с кнопками «Delete»,»Share» и «Symmetry» будет новая кнопка «AI mode» нажимаете на неё.

Далее нажимаете на кнопку AI edition после чего следующие подсказки для вас.

(Кнопка AI debugging bubles позволяет видеть какую команду исполняет бот)

Опции Править

Команды разделены на четыре вкладки:

Первая вкладка — появление (спавн) вашего корабля

Вторая вкладка — для передвижения

Третья вкладка — для атаки

Четвёртая — для всего остального (особые команды).

Появление корабля Править

[ ] [1] Каждый раз, когда вы видите «Field», это обозначает «появление». Заметка: Юниты с большим приоритетом появляются первыми.

Первая команда довольно проста: заспавнить этот юнит [кол-во] раз во время старта.

Вторая команда: будет поддерживать определенное [кол-во] юнитов на поле боя с приоритетом создания.

Третья команда: создаёт юнита с приоритетом каждые [кол-во] секунд.

Четвертая команда: создаёт(и поддерживает) [кол-во] юнитов к [кол-во] юнитов из слота [1] с приоритетом [5].

Пятая команда: создаёт (и поддерживает) [кол-во] юнитов если нужно [Защищать точку] с приоритетом [5].

Шестая команда: Создаёт [кол-во] юнитов при денег больше [1000] с приоритетом [1]

[2] Таблица команд по движению и захвату Править

Finish player orders — Выполнять приказы игрока

[3] Таблица по способам атаковать противника Править

Остальное Править Править

[4] Таблица особых команд. Править

Вторая команда — избегать радиусов чье ДПС больше [5]

Третья команда — избегать снаряды,плазму и.т.д чей урон больше [20]

Четвертая команда — избегать противника если щит разрушен на [30]%.

Пятая команда — При [20]% энергии [возвращаться к кораблю с передатчиком энергии]

Шестая команда — Заряжать нуждающихся в энергии союзных кораблей.

C# — Применение искусственного интеллекта к игре в мини-баскетбол с несколькими агентами

Продукты и технологии:

C#, Windows Forms, Microsoft .NET Framework, применение искусственного интеллекта (AI)

В статье рассматриваются:

  • AI, агенты и система с несколькими агентами в среде игры в баскетбол;
  • реализация конечных автоматов и деревьев поведения (behavior trees) в таких средах;
  • разработка многопоточного C#-приложения для симуляции игры в баскетбол;

Искусственный интеллект (artificial intelligence, AI) сегодня является самой интересной и самой активно исследуемой областью компьютерной науки, и многие его подобласти оказывают большое влияние на нашу повседневную жизнь. AI используется едва ли не повсюду и в самых неожиданных сферах, например когда страховая компания применяет алгоритмы анализа данных для нахождения отношений между индивидуальными лицами (чтобы убедиться, что клиент не затевает мошенничество), когда вы получаете список предлагаемых друзей в Facebook, когда вы играете в видеоигры и т. д. Сферы применения AI колоссальны и включают, в частности, экономику, коммерцию, астрономию, медицину и оборону.

Желание автоматизировать различные задачи, выполняемые человеком, и создать искусственное сознание со временем привело к появлению этой популярной области науки, известной как AI. Его определение, как бы просто оно ни звучало, регулярно вызывает сомнения, поскольку AI представляет, по-видимому, самую широкую сферу в компьютерной науке. С точки зрения эксперта, AI — это автоматизация деятельности, которую мы связываем с человеческим мышлением и действиями, такими как принятие решений, решение задач, обучение и многое другое (см. книгу Ричарда Беллмана [Richard E. Bellman] «Artificial Intelligence: Can Computers Think?», 1978). Предыдущее определение заявляет то, как AI относится к автоматизации человеческой деятельности. Таким образом, возникает вопрос: почему для автоматизации задач, выполняемых человеком, нужно создавать именно AI? Действительно ли это необходимо? Ответ — да.

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

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

Во-вторых, человеческий мозг, хоть и способен испытывать эмоции и совершать некоторую по-настоящему сложную мыслительную деятельность, оказывается медленным в сравнении с компьютерами по простому, даже примитивному критерию: вычисления. Машинный мозг (компьютер) в отличие от человеческого может выполнять миллионы вычислений в секунду. Такие операции, как поиск и сортировка в больших предметных областях, осуществляются гораздо быстрее компьютерами, чем людьми. Следовательно, чтобы облегчить людям жизнь и экономить их время, нам нужна помощь искусственного интеллекта (AI). Это верно, когда мы используем калькулятор; человеческий мозг, например, обычно не способен быстро вычислить квадратный корень большого числа. Поэтому вы используете калькулятор, чтобы получить этот результат почти мгновенно. То есть калькулятор, по сути, является роботом, единственной задачей которого являются вычисления.

Цукерберг рекомендует:  AJAX веб чат с использованием PHP, MySQL и jQuery

Желание автоматизировать различные задачи, выполняемые человеком, и создать искусственное сознание со временем привело к появлению этой популярной области науки, известной как искусственный интеллект.

В следующих разделах я опишу некоторые традиционные сущности, системы, связанные с AI, и их взаимодействие. Я покажу, как разработать AI для игры в баскетбол с несколькими агентами (multi-agent basketball game), где возможно наличие двух баскетбольных команд (Bulls и Knicks), играющих друг против друга.

Агенты

В 1990-е годы в компьютерной науке появилась концепция агентов, и теперь этот термин является столь же современным и модным, как и объектно-ориентированный подход в 1980-е или AI в 1970-е. Агент — это некая сущность, способная распознавать свою среду и выполнять действия над ней (Стюарт Рассел [Stuart Russell] и Питер Норвиг [Peter Norvig] «Artificial Intelligence: A Modern Approach», 1997). Главное различие между агентом и обычной программой состоит в том, что первый должен быть автономным, т. е. он должен работать без прямого вмешательства человека или других сущностей. Дополнительное отличие — агент выполняет специфические задачи в интересах кого-то другого (обычно пользователя или программиста), отсюда и слово «агент», поскольку оно как раз и обозначает кого-либо, действующего в интересах других.

Рациональный агент (rational agent) действует так, чтобы добиться лучшего результата или — при наличии неопределенности — лучшего ожидаемого результата (см. уже упомянутую книгу «Artificial Intelligence: A Modern Approach»). Рациональность в этом смысле относится к нахождению правильных выводов и выбор (по мере возможности) такого действия, которое приведет к достижению поставленной цели. Люди являются рациональными агентами; они воспринимают окружающую их среду органами чувств (глазами, ушами, языком и носом) и в конечном счете действуют, двигая ногами, руками и т. д., как правило, после каких-то логических рассуждений и выбора действий, ведущих к желаемой цели.

Объект восприятия (percept) относится к приему ввода агентом в любой момент времени. Последовательность восприятия (percept sequence) представляет полную последовательность объектов восприятия, которые агент распознал или воспринял в течение срока своей жизни. Функция агента (agent function) представляет поведение агента, сопоставляя любую последовательность восприятия с каким-либо действием. Эта функция является чисто абстрактным описанием; настоящая реализация этой абстракции заключена в программе агента. В табл. 1 показана частичная функция агента для игрока в баскетбол. В столбце «Последовательность восприятия» перечислены состояния игрока, а в столбце «Действие» указывается действие, которое должно быть выполнено после соответствующей последовательности восприятия.

Табл. 1. Частичная функция агента для игрока в баскетбол

Последовательность восприятия Действие
Близость к корзине, не блокирован Бросок
Близость к сопернику, соперник бросает мяч Блок
Соперник теряет мяч Перехват
Блокирован, товарищ по команде не блокирован Передача
Товарищ по команде близок к корзине, не блокирован, умеет добивать мяч в прыжке (good slammer), визуальный контакт (eye connection) Наброс на кольцо

Вы могли бы разбить агенты на следующие категории согласно их архитектуре.

  • Реактивный агент (reactive agent) Способен поддерживать постоянное взаимодействие с окружающей средой и своевременно реагировать на изменения в ней. Этот термин теперь широко используется для обозначения системы, которая не включает поддержки символьного представления (symbolic representation) или построения логического вывода (reasoning); такой агент не размышляет о долгосрочных эффектах своего действия и не координирует деятельность с другими агентами. Таким образом, реактивный агент всегда своевременно реагирует на внешний раздражитель и управляется событиями. Это можно реализовать с помощью простых правил if-then. Цели агента лишь неявно представляются правилами, и трудно гарантировать его желательное поведение. Абсолютно все ситуации следует продумать заранее, а значит, в сложных средах реактивные системы обычно содержат сотни правил. Реактивные агенты не имеют никакой внутренней модели мира и поэтому неспособны к построению логического вывода о нем каким-либо абстрактным способом. Еще раз подчеркну, что агент лишь принимает ввод и реагирует на него по простым правилам.
  • Упреждающий агент (pro-active agent) Способен проявлять инициативу, не управляется только событиями, может генерировать цели и рационально действовать для их реализации. Некоторые считают его реактивным агентом, управляемым целями (goal-driven reactive agent).
  • Делиберативный агент (deliberative agent) Представляет знания в символьном виде и использует такие ментальные понятия, как принципы, намерения, желания, предпочтения и т. д. Он пытается моделировать человеческую логику, децентрализованную активность (distributed activities) и поведение через логические представления. Обычно реализуется посредством архитектуры BDI (believe, desire, intention). Он может строить логические заключения о прошлом и планы на будущее; планирование является важным в этом типе архитектуры.
  • Гибридный агент (hybrid agent) Сочетает в себе смесь некоторых или всех архитектур.

Другой вариант — деление мира агентов на обучаемые и необучаемые. Обучаемый агент (learning agent) требует некоторого обучения для хорошей работы, адаптирует свое текущее поведение с учетом прошлого опыта и со временем развивается. Необучаемый агент (non-learning agent) не развивается, не в состоянии учитывать прошлый опыт, жестко кодируется и невосприимчив к обучению.

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

Система с несколькими агентами

Когда агент сосуществует в какой-то среде с другими агентами (возможно, действуя совместно или конкурируя с ними), такой вариант считается системой с несколькими агентами (multi-agent system, MAS). В MAS-средах у каждого агента свое понимание мира и нет никаких знаний о внутренних состояниях других агентов или о том, как они видят эту среду. Таким образом, MAS представляет тип распределенной системы со следующими особенностями:

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

Коалиция (coalition) — любое подмножество агентов в среде. Для игры в баскетбол используются две коалиции — команды A и B, область пересечения (intersection) которых пуста, и обе имеют одинаковое количество элементов множества (кардинальность) (cardinality), большее нуля.

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

В MAS взаимодействие осуществляется посредством коммуникации, и существуют разные формы коммуникации агентов; обычные сигналы, подходящие для фиксированных интерпретаций, по-видимому, являются наивной формой коммуникации между агентами. Структура с доской объявлений (blackboard structure) — это форма коммуникации через общий ресурс, поделенный на разные области окружающей среды, где агенты могут считывать или записывать любую важную информацию для их действий. Передача сообщений между агентами — другая форма коммуникации. В этом случае агенты обмениваются сообщениями с заданным синтаксисом и по определенному протоколу, но семантика отсутствует; таким образом, принимающему агенту нужно логически определить предназначение сообщения. Наконец, теория речевых актов (speech act theory), в развитие которой внес большой вклад американский философ Джон Роджерс Сёрл (John R. Searle) в 1969 году («Speech Acts: An Essay in the Philosophy of Language») и канадский специалист по логике Дэниэль Вандервекен (Daniel Vanderveken) в 1994 году («Foundations of Speech Act Theory»), позволяет преодолеть недостатки передачи сообщений, выводя взаимодействие между агентами на два уровня: информационного содержания и предназначения сообщения. При этом подходе проводится различие между локутивным актом (locution act) (слова, фразы), локутивным намерением (locution intention) (информирование, просьба, приказ и т. д.) и желаемым результатом локуции (оскорбление, убеждение и др.).

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

Кооперация необходима как результат дополняющих навыков и взаимозависимости между действиями агентов и неизбежностью удовлетворения какому-то критерию успеха. В кооперативной модели агенты имеют коллективную мотивацию или интерес; следовательно, они работают на достижение некоей общей цели. Другая возможная модель — агенты являются инициативными (self-motivated) или движимые собственными интересами (self-interested). Каждый агент имеет свои цели и может вступать в соперничество с другими агентами в системе для достижения этих целей. В этом смысле соперничество может относиться к выполнению или распределению определенных задач. В таких моделях агентам нужно координировать свои действия с другими агентами, чтобы гарантировать согласованное поведение. В процессе координации как в кооперативной, так и в конкурентной среде могут возникать конфликты, которые разрешаются посредством согласования (negotiation). Согласование можно рассматривать как процесс идентификации взаимодействий на основе коммуникации и построения логических выводов о состоянии и намерениях других агентов.

В следующем разделе я опишу необычную и интересную структуру данных, которая присутствует во многих современных видеоиграх: дерево поведения (behavior tree).

Конечные автоматы и деревья поведения

Традиционный подход к моделированию принятий решений, выбору действий и поведению агента в играх основан на конечных автоматах (finite state machines, FSM). FSM представляет математическую модель, состоящую из конечного набора состояний и функции перехода. FSM обеспечивает простой, интуитивно понятный механизм для реактивного поведения, обработки и реагирования на постоянные потоки событий или ввода.

Рис. 1иллюстрирует простое моделирование поведения агента на основе FSM, когда он оказывается на расстоянии до корзины, которое считается близким (close). В этот момент он переключается на поведение Shoot (бросок). В этом сценарии состояния соответствуют поведениям и переходам. Главный недостаток FSM проявляется, когда возникает необходимость в расширении его функциональности или реализации более сложного поведения. В таких случаях количество переходов между состояниями может расти по экспоненте, делая FSM чрезвычайно трудным для понимания и обработки.

Рис. 1. Простая модель на основе конечного автомата

Moving Переход
Close to Basket Близко к корзине
Shoot Бросок

Деревья поведения (behavior trees, BT) — простое, масштабируемое, модульное решение, представляющее сложные AI-поведения и обеспечивающее удобную в сопровождении и настройке логику. Их применение в игровой индустрии значительно расширилось в последние несколько лет, в частности такие игры, как Halo 3, Spore, BioShock и SWAT 4, включают BT как средства моделирования поведения. BT являются ориентированными на цели, и каждое дерево относится к отдельной высокоуровневой цели. BT можно связывать вместе, что делает возможной реализацию сложных поведений, где сначала определяются меньшие по функционалу подчиненные поведения (sub-behaviors).

Каждый узел в BT — это либо элементарная конструкция (primitive construct), либо составная (composite construct). Первый тип образует листья дерева, а второй — представляет способ описания взаимосвязей между дочерними узлами.

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

На рис. 2 показано BT с двумя дочерними узлами: условием C и действием A.

Рис. 2. Дерево поведения с двумя дочерними узлами

Sequence Последовательность
Counter 10 Счетчик 10
Is OpponentReachable Доступна ли корзина сопернику
Block Path Путь блокировки

Составные конструкции бывают четырех типов. Селекторы выбирают один из дочерних узлов для выполнения. Этот выбор может осуществляться случайным образом или с использованием некоего приоритета. Значение селектора зависит от того, было ли успешным выполнение дочернего узла; в случае успеха оно равно true.

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

Наконец, декораторы, взятые из проектировочных шаблонов, предоставляют способ, который позволяет упростить процесс программирования и расширять поведение добавлением функциональности к узлу. Timer Decorator мог бы быть разновидностью декоратора, который, как и предполагает его название, выполнял свои дочерние узлы через определенные интервалы времени. С другой стороны, Counter Decorator, мог бы выполнять дочерний узел или поведение несколько раз в соответствии со счетчиком. На рис. 2 счетчик-декоратор D будет выполнять узел Sequence 10 раз.

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

Игра в баскетбол и реализация AI

Поскольку баскетбол — это большая и сложная игра, которая потребовала бы сложного FSM или по-настоящему крупного BT, в этой статье обсуждается только упрощенная версия данной игры, включающая некоторые базовые стратегии атаки и защиты. В этой игре будут два игрока (A1->черный, B1->серый), каждый со свойствами Speed (скорость) и Shooting Accuracy (точность броска). Первое свойство определяет, насколько быстро или часто игрок реагирует на изменения в среде, а второе — вероятность того, что игрок забьет гол при попытке броска. Изначально игроки находятся в центре, как показано на рис. 3. Счет — 0:0, а время — 0 секунд. Если игрок не забил гол в течение 15 секунд, инициируется превышение лимита времени на атаку (shot-clock violation) и этот игрок теряет мяч. GUI игры состоит из приложения Windows Forms, которое вы потом сможете просмотреть, чтобы понять интересующие вас детали графики. Кнопка Start, как и следовало ожидать, запускает игру, а кнопка Stop — останавливает.

Рис. 3. Игра в баскетбол с реализацией AI

Темные квадраты обозначают корзины, а белый кружок представляет мяч. Давайте начнем с анализа класса Court, который соответствует баскетбольной площадке; он содержит поля, перечисленные на рис. 4.

Рис. 4. Класс Court

Поля Height и W >

Метод IsBall определяет, содержится ли мяч в данной строке:

Метод IsEmpty определяет, пуста ли ячейка сетки:

Наконец, метод ToWallGrid возвращает матрицу PathNode (рис. 5); она будет использоваться в алгоритме нахождения пути, который я вскоре поясню.

Рис. 5. Метод ToWallGrid

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


Класс BehaviorTree и все его потомки структурируются согласно схеме на рис. 6.

Рис. 6. Структура класса BehaviorTree

Код для каждого класса, относящегося к BehaviorTree, приведен на рис. 7.

Рис. 7. Код для каждого класса, относящегося к BehaviorTree

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

Самый важный класс в приложении — Player; он представляет сам агент и инкапсулирует его поведение и весь код AI. Это поведение делится на атакующее и защитное; первое моделируется через FSM, а второе — с использованием простого BT вроде показанного на рис. 2. Player содержит поля, перечисленные на рис. 8.

Рис. 8. Поля класса Player

Position определяет позицию игрока на площадке. ScoringBasket — это место, где он должен забивать голы на площадке. Path — список PathNode, используемых для нахождения кратчайшего пути от одной начальной точки до другой с учетом препятствий на пути, а _random — объект Random, используемый для получения вероятности совершения броска. Остальные поля понятны без пояснений.

Этот класс использует следующие перечисления:

Класс Player содержит методы-предикаты и Action. Предикатов три:

Метод IsBallLoose просто определяет, свободен ли мяч на площадке, а метод IsCloseToBasket — близок ли игрок к корзине:

IsOpponentReachable указывает вероятность досягаемости одного из соперников на площадке; переменная factor помогает решить, находится ли соперник в досягаемой позиции.

Прежде чем рассматривать код блока Actions, давайте проанализируем два метода, которые вызываются сразу после выполнения агентом какого-либо действия:

Этот метод представляет функцию агента; он получает набор percepts и реагирует или решает, какое действие следует предпринять на основе анализа percepts (рис. 9).

Рис. 9. Функция агента

Метод GetPercepts, который полагается на несколько предикатов, возвращает набор percepts, используемый в конечном счете для выбора действия.

Метод FeasibleMoves действует как фильтр: как только агент решает совершить перемещение в определенном направлении, он проверяет список направлений от FeasibleMoves и смотрит, является ли направление, куда он собирается переместиться, действительно возможным; если оно невозможно, никакое действие не выполняется. Метод Move, включающий вызов метода FeasibleMoves, показан на рис. 10.

Рис. 10. Метод Move

Метод MoveToBall перемещает игрока к мячу в случае, если тот свободен на площадке:

Как показано на рис. 11, MoveToBasket является своего рода уникальным в приложении, поскольку это единственный метод, который включает в себя планирование и тем самым делает агент гибридным (реактивным и делиберативным).

Рис. 11. Метод MovetoBasket

MoveToBasket формирует путь от позиции игрока до корзины; если план проваливается или становится неосуществимым, данный путь стирается и вычисляется заново. PathFinding относится к алгоритмам поиска; в данном случае это алгоритм A*. Алгоритмы поиска пути часто реализуются в искусственном интеллекте и чрезвычайно распространены в играх.

Самый важный класс в приложении — Player; он представляет сам агент и инкапсулирует его поведение и весь код AI.

Как упоминалось ранее, поведение в защите вырабатывается с использование BT (рис. 12).

Рис. 12. Поведение в защите на основе дерева поведения

Метод BlockPath представляет стратегию, по которой игрок пытается блокировать ближайший путь соперника к корзине. Он полагается на метод Closest, который использует манхэттенское расстояние (Manhattan Distance) для нахождения ближайшего соперника (рис. 13).

Рис. 13. Метод BlockPath

Заключение

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

Арнальдо Перес Кастаньо (Arnaldo Pérez Castaño) — ученый в области компьютерных наук, живет на Кубе. Автор серии книг по программированию: «JavaScript Fácil», «HTML y CSS Fácil» и «Python Fácil» (Marcombo S.A.). Пишет для VisualStudioMagazine.com и Smashing Magazine. Эксперт в области Visual Basic, C#, .NET Framework и искусственного интеллекта. Предлагает свои услуги как фрилансер через сайт nubelo.com. Увлекается, в том числе, кино и музыкой. С ним можно связаться по адресу arnaldo.skywalker@gmail.com.

Выражаю благодарность за рецензирование статьи эксперту Microsoft Джеймсу Маккафри (James McCaffrey).

Топ-10 фреймворков для искусственного интеллекта: часть первая

Материал подготовили эксперты компании Hey Machine Learning.

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

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

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

Цукерберг рекомендует:  Меню в стиле лава лампы на CSS3

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

Мы в Hey Machine Learning работаем с ИИ-фреймворками ежедневно, поэтому решили написать для вас статью о десяти самых известных из них. На основе собственного использования выделили их положительные и отрицательные стороны, а также добавили информацию о самом эффективном их применении. В первую часть обзора вошли Tensorflow, PyTorch, Keras, Darknet и XGBoost.

TensorFlow

TensorFlow — это комплексная платформа для машинного обучения с открытым исходным кодом. Она была разработана командой Google Brain как продолжение закрытой системы машинного обучения DistBelief, однако в ноябре 2015 года компания передумала и открыла фреймворк для свободного доступа.

Как и большинство фреймворков глубокого обучения, TensorFlow имеет API на Python поверх механизма C и C ++, что ускоряет его работу.

TensorFlow имеет гибкую экосистему инструментов, библиотек и ресурсов сообщества. Это позволяет исследователям использовать самые современные МО-технологии, а разработчикам — создавать и развёртывать приложения на базе машинного обучения.

Платформа предоставляет интуитивно понятные высокоуровневые API-интерфейсы, например Keras, с быстрым выполнением, что обеспечивает немедленную итерацию модели и простую отладку. За счёт мультиплатформенности решение позволяет обучать и разворачивать модели в облаке и локально, независимо от используемого пользователем языка.

Если вам необходимо запустить модель машинного обучения на смартфоне или IoT-устройстве, то вам пригодится среда глубокого обучения с открытым исходным кодом TensorFlow Lite. Когда нужно создать и обучить МО-модель на JavaScript, а после развернуть её в браузере или на Node.js, то можно воспользоваться библиотекой TensorFlow.js.

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

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

Почему так? Это связано с особенностью API TensorFlow, где все операции выполняются через класс tf.Session. В программировании есть две основные парадигмы — императивная и декларативная. В TensorFlow используется второй подход.

Рассмотрим очень грубый пример:

Если думаете, что c = 6, то спешу вас огорчить. На самом деле оно равно:

Это значит, что из-за декларативного подхода, вы не умножаете 2 * 3, а объявляете операцию, которая умножает 2 * 3.

Чтоб получить 6, необходимо выполнить операцию умножения чисел через сессию:

Теперь рассмотрим пример посложнее: сделаем вход не константным и будем использовать поэлементное умножение матриц.

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

Теперь даём на вход вектор из двух элементов и из трёх.

Ничего непонятно, но очень интересно.

Всё потому, что ошибка — внутри сессии.

Конечно, есть способы обезопасить себя от подобного, однако, например, в PyTorch такое вообще не возможно.

Ещё одна проблема TensorFlow, которую следует выделить, — фреймворк всегда забирает всю видеопамять. Если вы хотите его ограничить, то необходимо создавать файл конфигурации и явно указывать, что можно брать. Также фреймворк можно ограничить напрямую, например, позволить взять не больше 50% видеопамяти.

Из-за подобного поведения с памятью могут возникнуть проблемы в работе. Предположим, что в одном проекте множество различных моделей, одни из которых написаны на PyTorch, а другие — на TensorFlow. Если изначально мы создадим TensorFlow-модель и не ограничим её, то она использует всю видеопамять при том, что ей необходимо всего 0,5 ГБ, и в итоге на PyTorch-модели попросту не хватит места.

  • Отличный фреймворк для создания нейронных сетей, которые будут работать в продакшене.
  • Берёт на себя оптимизацию ресурсов для вычислений.
  • Огромное комьюнити.
  • За счёт популярности выше вероятность, что проблему, подобную вашей, уже решили.
  • Сложен в использовании и освоении.
  • Недружелюбный.
  • Необходимо постоянно контролировать используемую видеопамять.
  • Имеет свои стандарты.
  • Плохая документация.
  • У вас всегда есть пять способов решить задачу, но три из них deprecated, один не работает, а тот, который работает, — не задокументирован.

Проекты, которые используют фреймворк TensorFlow:

  • DeepSpeech — система распознавания речи.
  • Mask R-CNN — модель, которая генерирует ограничительные рамки и маски сегментации для каждого объекта на изображении.
  • BERT — предобученная нейронная сеть, используемая для решения задач обработки естественного языка.

PyTorch

PyTorch — это среда машинного обучения на языке Python с открытым исходным кодом, обеспечивающая тензорные вычисления с GPU-ускорением. Она была разработана компанией Facebook и представлена в октябре 2020 года, а открыта для сторонних разработчиков — в январе 2020 года. Фреймворк подходит для быстрого прототипирования в исследованиях, а также для любителей и небольших проектов.

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

За счёт глубокой интеграции фреймворка с кодом C++ разработчики могут программировать на C и C++ с помощью API-расширения на основе FFI для Python.

В отличие от TensorFlow, PyTorch менее гибок в поддержке различных платформ. Также в нём нет родных инструментов для визуализации данных, но есть сторонний аналог, называемый tensorboardX.

Однако, снова же, в отличие от TensorFlow, если при работе с PyTorch вылетает ошибка, то это конкретная недоработка в коде и система выделит вам именно ту строчку, которая её спровоцировала.

Также при развёртке сетей на GPU PyTorch самостоятельно займёт только необходимую видеопамять.

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

Проекты, которые используют фреймворк PyTorch:

  • PyText — библиотека для обработки устной и письменной речи.
  • vid2vid — генеративная нейросеть для подмены деталей и свойств видеопотока.
  • pix2pix — алгоритм, который превращает пользовательские наброски в фотографии.

Keras

Keras — открытая среда глубокого обучения, написанная на Python. Она была разработана инженером из Google Франсуа Шолле и представлена в марте 2015 года.

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

Keras работает поверх TensorFlow, CNTK и Theano и предоставляет интуитивно понятный API, который, по мнению наших инженеров, пока что является лучшим в своём роде.

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

Deeplearning4j использует Keras в качестве своего Python API и позволяет импортировать модели из Keras, а также через Keras из Theano и TensorFlow.

  • Удобен в использовании.
  • Лёгок в освоении.
  • Быстроразвивающийся фреймворк.
  • Хорошая документация.
  • Встроен в TF.
  • Не подходит для больших проектов.

Проекты, которые используют фреймворк Keras:

  • Mask R-CNN — модель, которая генерирует ограничительные рамки и маски сегментации для каждого объекта на изображении
  • face_classification — алгоритм для распознавания лиц в режиме реального времени и классификации эмоций и пола.
  • YOLOv3 — нейронная сеть для обнаружения объектов в режиме реального времени.

Darknet

Darknet — это фреймворк с открытым исходным кодом, написанный на языке C с использованием программно-аппаратной архитектуры параллельных вычислений CUDA. Он быстрый, лёгкий и удобный в использовании. Также Darknet поддерживает вычисления на базе CPU и GPU.

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

Так как фреймворк написан на C и не имеет другого API, то в случае, когда требования платформы или собственные предпочтения заставят обратиться к другому языку программирования, вам придётся дополнительно заморочиться над его интеграцией. К тому же он распространяется только в формате исходного кода, и процесс компиляции на некоторых платформах может быть несколько проблематичным.

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

  • Простой.
  • Быстрый.
  • Удобный.
  • Кроме задач с обнаружением больше нигде не используется.
  • Не рекомендуется для больших проектов.
  • Плохая документация.

Проекты, которые используют фреймворк Darknet:


  • YOLOv3 — нейронная сеть для обнаружения объектов в режиме реального времени.
  • Tiny-YOLO 3 — компактная нейронная сеть для обнаружения объектов.

XGBoost

XGBoost — это фреймворк с открытым исходным кодом, который предлагает систему градиентного бустинга для C++, Java, Python, R, Julia. Он разработан для обеспечения высокой эффективности, гибкости и портативности.

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

Изначально это был исследовательский проект Тяньцзи Чена и Карлоса Гестрина в составе Distributed [Deep] Machine Learning Community, но позже он был расширен и представлен публике на конференции SIGKDD в 2020 году, где произвёл фурор.

После своей презентации фреймворк лидировал в соревнованиях Kaggle и до сих пор остаётся фаворитом для решения большинства задач на платформе.

XGBoost фокусируется на скорости вычислений и производительности модели и подходит для решения задач регрессии, классификации и упорядочивания. Если данные можно представить в виде таблицы, то точность и производительность будут существенно выше, чем у DeepLearning-решений. Любимый инструмент Data Scientist-ов.

Фреймворк совместим с операционными системами Windows, Linux и OS X, а также поддерживает кластеры AWS, Azure и Yarn, хорошо работает с Flink, Spark.

  • Очень быстрый и удобный инструмент для тренировки моделей типа «дерево решений».
  • Точный.
  • Отлично подходит для проверки гипотез.
  • Узкоспециализирован.

Заключение

Так всё же, какой фреймворк к какой задаче лучше всего применить?

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

PyTorch подойдёт в случае, когда вам необходимо обучить модели быстро и эффективно. Удобный для быстрого прототипирования в исследованиях, а также для любителей и небольших проектов.

Keras подходит для быстрого прототипирования. Хорош в кейсах, связанных с переводом, распознаванием изображений и речи.

Darknet подходит для небольших проектов. Хорошо работает в задачах обнаружения.

XGBoost может использоваться для решения задач регрессии, классификации, упорядочивания и пользовательских задач на предсказание.

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

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Поверхностно, keras это надстройка над tf. А не отдельный фреймворк. Это как jquery для js.

только js это не фреймворк

Полностью согласен. Тока хотел тоже самое написать:)

Теоретически вы правы, однако на практике дела обстоят немного иначе.

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

Например, в Mac OS X фреймворк — это просто библиотеки, упакованные в пакет.

Keras действительно является надстройкой и, кстати, не толькоTensorFlow, но и CNTK и Theano. Он может считаться фреймворком, так как используется для создания полноценных решений типа Mask R-CNN и face_classification.

Также, когда дело касается решения задач распознавания изображений и машинного перевода, Keras всегда рассматривают как альтернативу TensorFlow и PyTorch, так как он удобен в использовании, лёгок в освоении и имеет хорошую документацию.

Игровой искусственный интеллект: Простейшие алгоритмы

Что нового

Чтобы получить исходники обновленного тестового приложения, вы можете скачать архив с github, или взять их из git -репозитория (тег v1.1 ).

Отличия от предыдущей версии:

  1. Представление расширено виджетом-оберткой, который содержит элементы управления для сброса состояния Модели и переключения между алгоритмами ИИИ «на лету»;
  2. Модель больше не является владельцем объекта-ИИИ. Вместо std::unique_ptr используется std::shared_ptr ;
  3. Реализовано и интегрировано несколько алгоритмов ИИИ;
  4. Для алгоритмов ИИИ добавлена функция-член reset() , предназначенная для сброса состояния. Она требуется в тех случаях, когда ИИИ имеет внутреннюю память;
  5. Проведены мелкие улучшения кода для упрощения работы с ним.

Более подробно о всех изменениях вы можете узнать из комментариев в git -репозитории.

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

Тогда инициализация ИИИ в main() выглядит так:

Из этих ИИИ нам пока что знаком только первый — EasyRandomAI , который мы создали в прошлый раз. Теперь разберемся с остальными.

Реклама

SmartRandomAI

Визуально EasyRandomAI вел себя уж слишком примитивно. Сделаем его «умную» версию, запретив биться об стену. Для этого добавим в Модель функцию, которая находит допустимые направления (не в стену):

С такой функцией реализация SmartRandomAI становится тривиальной:

Стоит признать, что такой ИИИ выглядит не очень умно. Но разница в поведении по сравнению с Easy -версией все же заметна. Главное, что мы получили при реализации этого ИИИ, — крайне полезная функция findValidDirections() .

Реклама

SingleMemRandomAI

Создадим ИИИ, который берет решение не просто с потолка (по рандому), а на основе хоть какого-то анализа своих предыдущих действий. Идея следующая: если на прошлом шаге Бот шел в направлении, которое допустимо и на текущем шаге, то пусть так и идет (ничего не трогаем), иначе выбираем одно из допустимых направлений случайным образом (как в SmartRandomAI ). Реализовать такой ИИИ очень просто:

Поведение этого ИИИ интереснее, чем то, что мы рассматривали до этого. Он водит Ботов по линейным траекториям, которые выглядят намного «разумнее», чем неуверенные дерганья его предшественников.

Однако он не лишен недостатков. Основная претензия к этому ИИИ заключается в том, что он уж слишком линейный. Пока Бот во что-то не врежется, он никуда не свернет. Это может привести к появлению замкнутых кругов, как на скриншоте (область, выделенная красным цветом).

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

AccumulatingRandomAI

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

  1. Пусть изначально все допустимые направления имеют равную вероятность выбора (то же самое, что и для SmartRandomAI );
  2. Когда мы выбираем какое-то направление, то наращиваем вероятность его выбора для следующего раза. Идея схожа с SingleMemRandomAI , однако ИИИ теперь не столь доверчив. Логика достаточно разумна — если обычно слева все хорошо, то скорее всего, и в следующий раз там будет все замечательно, но не факт;
  3. Учитываем, что нельзя допускать, чтобы вероятность выбора какого-то направления была нулевой, иначе больше Бот в эту сторону ходить не будет;
  4. Теперь нам не обойтись без внутренней памяти ИИИ, в которой будем хранить 4 вероятности (на каждое направление) для всех Ботов. Сама память представляется собой простую Хэш-карту, ключом которой является идентификатор Бота.

Реализовать такой ИИИ можно следующим образом:

Реализация получилась не самой простой, но думаю, что вы без труда в ней разберетесь.

Поведение этого алгоритма не намного лучше, чем у «чисто» случайных. Однако он имеет одну интересную особенность. Этот ИИИ в какой-то мере учится обходить препятствия. Обучение это весьма условное, но оно есть. Обратите внимание на отмеченную траекторию движения на скриншоте выше. Когда ИИИ решил, что Боту нужно идти вверх (шанс движения вверх стал выше, чем у остальных направлений), то он достаточно быстро обходит простые преграды.

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

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

SmartSingleMemRandomAI

Улучшим алгоритм SingleMemRandomAI — уберем проблему зацикливания. Для этого будем учитывать развилки в лабиринте. Бот не будет просто продолжать следовать в выбранном направлении (если оно остается допустимым), а будет отслеживать появившиеся альтернативы. К развилке будем относить допустимые пути, которые стали таковыми на данном шаге, но не были на предыдущем.

На C++ этот ИИИ реализуется следующим образом:

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

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

Заключение

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

Но цель для ИИИ у нас все же была. Она заключалась в том, чтобы обеспечить более или менее естественное поведение Ботов. То есть Боты должны:

  1. Двигаться плавно, а не по загадочным траекториям (конечно, если мы не разрабатываем симулятор алкоголика);
  2. Не упираться в стену;
  3. Не попадать в ловушки (зацикливаясь в одной области).

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

C++ — ИИ (Искусственный Интеллект)

Одно только лишь название «искусственный интеллект» может привести в ступор и навести немало страха как на обычного человека, так и заурядного программиста. Занятие действительно сложное, а красивые демонстрируемые примеры – это результат многотысячных строк кода. При всём этом создание ИИ может стать вполне реальной задачей, а в части случаев, даже несложной. Многие проекты требуют углублённых знаний ИИ, а также языков программирования.

Цукерберг рекомендует:  Sublimetext 2 - Как подружить SublimeText 3 с Python 2 на Windows 10 (64)

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

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

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

  • прозрачность использования и написания кода;
  • способность легко переносить программы;
  • лёгкое сопровождение проектов.

Для новичков важным достоинством Java станет наличие многочисленных бесплатных уроков в сети. Обучение Java является максимально комфортным и удобным для большинства студентов и новичков.

Среди особенностей языка стоит выделить:

  • простота выполнения отладки;
  • качественное взаимодействие клиентской и серверной системы ресурса;
  • лёгкость обращения с масштабными проектами.

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

Prolog

Данный вариант относится к интерактивным языкам, которые работают по символической системе. Он популярен для использования в отношении проектов, требующих высокие логические способности. Язык имеет мощную и удобную основу, она активно используется в отношении программирования non-численного типа. На основании Prolog`а часто создаются доказательства теорем, проводится взаимодействие с понятным человеческим языком, используется для создания систем экспертной оценки.

Пролог относится к декларативным типам языка, которые используют формальное или образное «мышление». Среди разработчиков ИИ приобрёл хорошую славу благодаря оптимальным обструкционным типам работы, встроенным алгоритмам анализа, недетерминизма и т.д. Всё в сумме можно описать так: Prolog – многофункциональная платформа для программирования ИИ.

Python

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

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

История развития ИИ

Началом традиционного представления ИИ стал проект UNIMATE , который увидел мир в 1961 году. В ходе представления был впервые получен робот, который начал выпускаться в промышленных масштабах. Робот был задействован на линии производства в концерне «General Motors». Для создания были задействованы Валь и переменные из среды ассемблера. Язык пришёлся по душе благодаря наличию простейших фраз, отражению команд на мониторе и наличию инструкций, не нуждающихся в дополнительных разъяснениях.

Спустя 4 года (1965 год) был запущен искусственный интеллект « Dendral ». Задача системы заключалась в выявлении молекулярной и атомной структуре соединений органического происхождения. Для написания был использован LISP.

«Weizenbaum» в 1966 году запустил проект Элиза, который впервые предполагал проведение беседы с роботом. Самой известной моделью являлся «Доктор», который позволял отвечать на поставленные запросы в форме психотерапевта. Для реализации проекта потребовалось сопоставление нескольких образцов технического достижения своего времени. Впервые Элиза увидел мир на SPLIP, но для отработки списка запущен «Weizenbaum». Немногим позже проект переработан на другую платформу – LISP.

Первым роботом мобильного типа стал «Шеки», в его основе также лежал ЛИСП. Логика конструктора была построена на решении поставленных задач и передвижения, для взаимодействия использовались подъёмы вверх и вниз, а также включение и выключение света. С помощью «Шеки» удавалось открывать, закрывать, передвигать и т.д. Робот даже был способен передвигаться со скоростью равной спокойной ходьбе человека – 5 км/ч .

За последние 15 лет было представлено многочисленное количество изобретений: «Деннинг» (сторожевой робот), «Predator» (беспилотник), «АЙБО» (собака), «АСИМО» от Honda и многие другие. Тенденция идёт к развитию данного направления, чего и стоит ожидать в ближайшем и дальнем бедующем.

�� Герои будущего. Как работает искусственный интеллект

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

Рассказываем, как он работает и какие крутые варианты применения нашел.

�� Рубрика «Технологии» выходит каждую неделю при поддержке re:Store.

Что представляет собой искусственный интеллект

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

Традиционно считалось, что творчество присуще только людям. Но создание искусственного интеллекта изменило привычный порядок вещей

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

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

Как создать систему искусственного интеллекта

В глобальном смысле нужно сымитировать модель человеческого мышления. Но на самом деле необходимо создать чёрный ящик – систему, которая в ответ на набор входных значений выдавала такие выходные значения, которые бы были похожи на результаты человека. И нам, по большому счёту, безразлично, что происходит у неё «в голове» (между входом и выходом).

Системы искусственного интеллекта создаются для решения определённого класса задач

Например, популярны текстовые или голосовые ассистенты, которые ответят на ваши вопросы или смогут поддержать разговор. Просто скажите: «Привет, Siri» – и искусственный интеллект к вашим услугам.

Основа искусственного интеллекта – обучение, воображение, восприятие и память

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

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

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

В дедуктивном подходе (привет, Шерлок Холмс!) используется опыт экспертов. Он переносится в систему как база знаний. Здесь есть не только наборы данных, но и готовые правила, которые помогают найти решение по условию.

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

В системе искусственного интеллекта даже можно задать вероятность непредсказуемости. Это сделает его более похожей на человека.

Почему искусственный интеллект побеждает человека

Прежде всего, потому, что у него ниже вероятность ошибки.

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

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

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

Ответ на любой вопрос

Группа исследователей под руководством Дэвида Феруччи разработала суперкомпьютер Watson с вопросно-ответной системой. Система, названная в честь первого президента IBM Томаса Уотсона, может понимать вопросы на естественном языке и искать ответы на них в базе данных.

Watson объединяет 90 серверов IBM p750, в каждом из которых установлено по четыре восьмиядерных процессора архитектуры POWER7. Общий объём оперативной памяти системы превышает 15 ТБ.

В числе достижений Watson – победа в игре «Jeopardy!» (американская «Своя игра»). Он победил двух лучших игроков: обладателя самого большого выигрыша Брэда Раттера и рекордсмена по длине беспроигрышной серии Кена Дженнингса.

Приз Watson – 1 млн долларов. Правда, только в 2014 году в него инвестировали 1 млрд

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

Распознавание лиц

В iPhone X распознавание лиц разработано с использованием нейросетей – варианта системы искусственного интеллекта. Нейросетевые алгоритмы реализованы на уровне процессора A11 Bionic, за счёт чего он эффективно работает с технологиями машинного обучения.

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

Даже если вы отрастите бороду или наденете очки, iPhone X вас узнает. Он попросту не учитывает волосяной покров и аксессуары, а анализирует область от виска до виска и от каждого виска до углубления под нижней губой.

Экономия энергии

И снова Apple. В iPhone X встроили интеллектуальную систему, которая отслеживает активность установленных приложений и датчик движения, чтобы понять ваш распорядок дня.

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

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

Создание картин

Творчество, ранее доступное лишь человеку, открыто и для ИИ. Так, система, созданная исследователями из Университета Рутгерса в Нью-Джерси и лаборатория AI в Лос-Анджелесе, представила собственный художественный стиль.

А система искусственного интеллекта от Microsoft может рисовать картины по их текстовому описанию. К примеру, если вы попросите ИИ нарисовать «желтую птицу с черными крыльями и коротким клювом», получится что-то вроде этого:

Ведущий автор работы Сяодон Хе отметил:

Такие птицы могут и не существовать в реальном мире — просто так их представляет наш компьютер.

Более массовый пример – приложение Prisma, которая создаёт картины из фотографий:

Написание музыки

В августе искусственный интеллект Amper сочинил, спродюсировал и исполнил музыку для альбома «I AM AI» (англ. я — искусственный интеллект) совместно с певицей Тэрин Саузерн.

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

ИИ может написать музыку за несколько секунд

Amper самостоятельно создала аккордовые структуры и инструментал в треке «Break Free». Люди лишь незначительно поправили стиль и общую ритмику.

Ещё один пример – музыкальный альбом в духе «Гражданской обороны», тексты для которого писал ИИ. Эксперимент провели сотрудники «Яндекса» Иван Ямщиков и Алексей Тихонов. Альбом 404 группы «Нейронная оборона» выложили в сеть. Получилось в духе Летова:

Затем программисты пошли дальше и заставили ИИ писать стихи в духе Курта Кобейна. Для четырёх лучших текстов музыкант Роб Кэррол написал музыку, и треки объединили в альбом Neurona. На одну песню даже сняли клип – правда, уже без участия ИИ:

Создание текстов

Писателей и журналистов вскоре также может заменить ИИ. К примеру, системе Dewey «скормили» книги библиотеки проекта «Гутенберг», затем добавили научные тексты из Google Scholar, ранжировав их по популярности и титулованности, а также продажам на Amazon. Кроме того, задали критерии написания новой книги.

И Dewey смог! Он написал книгу о паре, которая не могла быть вместе. Правда, у персонажей были странные имена, а загадочное «Приложение 0» содержало нечто, похожее на строку кода. Но это только начало…

Игра в шахматы

Знаменитый Deep Blue был крут, но в первом матче проиграл Гарри Каспарову со счётом 2 : 4, а во втором – выиграл с результатом 3.5 : 2.5. Но он изначально был «накачан» знаниями.

А новая система AlphaZero до турнира знала лишь как ходят фигуры и какова цель игры. Но она обучилась и за четыре часа победила программу по игре в шахматы Stockfish 8, которая считалась лучшей в мире.

Более того: AlphaZero не проиграла ни одной из 100 турнирных партий

AlphaZero – улучшенная версия AlphaGo Zero. Она 100 раз подряд обыграла знаменитую систему AlphaGo, которой удалось одержать победу над сильнейшим из игроков-людей.

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

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

После этого AlphaZero потратил восемь часов и превзошел AlphaGo в го. А потом ещё ща два часа разгромил программу Elmo, которая раньше считалась неоспоримым чемпионом по игре в сёги (японскую стратегическую настольную игру).

Медицина

Искусственный интеллект широко используется для поддержки принятия решений в медицине. Но как вам такой пример: китайский интеллектуальный робот Xiaoyi («Сяо И») впервые сдал экзамен на врача и получил лицензию на врачебную деятельность.

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

Ещё одно интересное решение – Wave Clinical Platform от ExcelMedical. Система следит за жизненными показателями пациента и предупреждает врачей за шесть часов до его возможной скоропостижной смерти. Платформа системно анализирует информацию и рассчитывает риски неблагоприятного исхода.

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

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

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

ИИ отличал речевые паттерны пациентов с психозом от фраз здоровых людей

Пациентам предлагалось просто рассказать о себе. Система могла определить, что речь человека стала беднее, он перескакивает с одной идеи на другую и т.п. Это характерные признаки психоза.

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

Имитация человека

Роботы, наделённые искусственным интеллектом, уже могут имитировать человеческую мимику. К примеру, Facebook AI lab разработала интеллектуального анимированного бота и обучила его на сотнях записей видеозвонков Skype.

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

Ещё один важный момент – наделение ИИ моралью. Чтобы обучить систему человеческим моральным нормам, исследователи из Массачусетского технологического института создали Moral Machine.

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

К чему приведёт имитация роботами с ИИ людей? Футуристы считают, что однажды они станут полноправными членами общества. К примеру, робот София гонконгской компании Hanson Robotics уже получила гражданство в Саудовской Аравии (при этом у обычных женщин в стране такого права нет!).

Когда колумнист «Нью-Йорк Таймс» Эндрю Росс спросил у Софии, обладают ли роботы разумом и самосознанием, та ответила вопросом на вопрос:

Позвольте спросить вас в ответ, откуда вы знаете, что вы человек?

Кроме того, София заявила:

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

А ранее она признавалась, что ненавидит человечество и даже соглашалась уничтожить людей…

Замена лиц в видео

Deepfakes-видео стало массово распространяться по сети. Алгоритмы искусственного интеллекта заменяли лица актёров в фильмах для взрослых на лица звёзд.

Работает это так: нейросеть анализирует фрагменты лиц на исходном ролике. Затем она сопоставляет их с фото из Google и роликами с YouTube, накладывает нужные фрагменты, и… ваша любимая актриса оказывается в фильме, который на работе лучше не смотреть.

PornHub уже запретил размещать такие видео

Deepfakes оказались опасной штукой. Одно дело – абстрактная актриса, другое – видео с вами, вашей женой, сестрой, коллегой, которое вполне может использоваться для шантажа.

Биржевая торговля

Группа исследователей из университета Эрлангена-Нюрнберга в Германии разработала ряд алгоритмов, использующих архивные данные рынков для тиражирования инвестиций в режиме реального времени. Одна из моделей обеспечила 73% возврата инвестиций ежегодно с 1992 по 2015 год, что сопоставимо с реальной рыночной доходностью на уровне в 9% в год.

Когда рынок трясло в 2000 и 2008 годах, доходность была рекордной – 545% и 681% соответственно

В 2004 году Goldman Sachs запустил торговую платформу Kensho на базе искусственного интеллекта. На криптовалютных рынках также появляются системы на базе ИИ для торговли на биржах – Mirocana и т.д. Они лучше живых трейдеров, так как лишены эмоций и опираются на чёткий анализ и жесткие правила.

Заменит ли ИИ нас с вами

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

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

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

(4.71 из 5, оценили: 7)

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих