Оффтоп BinaryDistrict Russia
442

Нейросеть — это соперник

Кто и как учит машину атаковать, защищаться и ловить читеров

В закладки

Mortal Kombat, Quake III Arena, Dota 2 — в этих играх нейросети уже победили профессиональных игроков. Мы выбрали пять примеров таких игр и попытались разобраться, где и для чего еще можно использовать игровой ИИ.

1. Mortal Kombat — ноябрь 2016 года

Mortal Kombat: Саб-Зиро против Скорпиона.

Аспиранты Израильского технологического института разработали платформу Retro Learning Environment, позволяющую использовать искусственный интеллект в играх на консоли Nintendo 1990-х годов – SNES. В их числе оказались Mortal Kombat, F-Zero и Wolfenstein. В Mortal Kombat ИИ неоднократно смог выиграть у человека, даже когда компьютеру противостоял опытный игрок.

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

Исходный код системы разработчики сделали открытым и выложили на GitHub.

2. Alpha Zero — декабрь 2017

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

В отличие от предыдущих программ DeepMind, AlphaZero создавался как алгоритм, способный научиться сразу нескольким задачам-играм, а не одной. Для этого его не обучали побеждать, а давали только базовые знания о правилах игры. AlphaZero затем играл сам с собой и самостоятельно вырабатывал тактику.

За 4 часа алгоритм научился играть в шахматы так, что сумел обыграть предыдущего чемпиона среди таких программ — алгоритм Stockfish. На обучение японским шахматам (сегам) нейросети понадобилось два часа — после этого AlphaZero сумел победить один из лучших алгоритмов в этой области, программу Elmo. Дольше всего — 8 часов, пришлось учиться игре в го — в итоге нейросеть сумела справиться с программой AlphaGo, которая в мае 2017 года победила абсолютного чемпиона в го среди людей Кэ Цзе.

3. Counter Strike — март 2018 года

CS GO, скриншот из игры

Компания Valve объявила о начале разработки нейросети VACnet. С ее помощью планируется избавиться от читеров в игре Counter Strike Global Offensive (CS:GO). За шесть лет с момента релиза игры эта проблема успела изрядно надоесть игрокам. Читы помогали мошенникам повышать ранг в игре, некоторым — даже пройти в игровые турниры. Разработанные Valve ранее античитерские системы «Патруль» (OverWatch) и Valve Anti-Cheat (VAC) не помогали.

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

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

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

4. Dota 2 — июнь 2018 года

Команда из пяти нейросетей, созданная некоммерческой организацией OpenAI, научилась побеждать профессиональных игроков в Dota 2. Изначально нейросети ничего не знали о стратегиях игры, но с каждым новым матчем они совершенствовались. Во время первых игр герои бесцельно бродили по карте, но через несколько часов они стали понимать, что в игре есть три основных концепции: надо атаковать, убивать монстров для накопления золота и биться на миде (в центре карты). Через несколько дней OpenAI Five начали обучаться базовым стратегиям, которые используют живые игроки.

Ранее бот OpenAI победил профессионального игрока в Dota 2 во время международного турнира The International 2017. Первый раунд матча длился 10 минут и закончился смертью персонажа, за которого играл человек. Спустя еще несколько минут тем же результатом закончился второй раунд. После матча представители OpenAI уточнили, что бот закончил больше партий в Dota 2, чем любой человек. На обучение программы у разработчиков ушло всего около двух недель.

5. Quake III Arena — июль 2018

Разработчики компании DeepMind научили нейросеть играть в Quake III. Алгоритм обучили адаптироваться к постоянно меняющимся картам в игре Quake: 30 ботов тренировались на 450 тысячах пятиминутных игр в режиме Capture the Flag («Захват флага»). В этом режиме выигрывает та команда, которая сможет в течение пяти минут захватить и удержать флаг соперника максимальное количество раз. ИИ каждый раз заставляли играть на новом уровне, поэтому ему приходилось разрабатывать собственную стратегию игры. Для обучения использовалась так называемая система с подкреплением: алгоритм получал награду или штраф в зависимости от того, успешны ли были его действия.

На тренировки ИИ ушло 1736 дней, однако результат превзошел ожидания. Тридцать ботов не только научились работать в группе, защищать свой флаг и захватывать вражеский, но смогли это делать на картах, которые каждый раз генерировались по-новому. При этом, в отличие от ботов OpenAI для игры Dota 2, ИИ DeepMind не видел числовых данных — расстояния до цели, «здоровье» и прочее. Разработчики фактически сравняли его с игроком-человеком — для нейросети было доступно только изображение карты.

А что дальше?

О том, что еще умеют нейросети в играх, какие направления самые перспективные и как технологии могут изменить индустрию, мы спросили у спикера курса Binary District «Нейросети в бизнесе», разработчика компании Rubius Павла Хаустова.

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

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

Поиск читеров в игре, как в Counter Strike — тоже очень перспективное направление. У любого человека-игрока есть определенная модель поведения. Нейросети нужны, чтобы оценить, как быстро меняется уровень мастерства игрока и найти аномалии.

В будущем лично мне было бы интересно, например, увидеть, как нейросеть научится играть в «Героев меча и магии III» (Heroes of Might and Magic III). Эта игра — что-то вроде шахмат игрового мира: в ней много степеней свободы в действиях игроков, так что это действительно будет прорывом.

Павел Хаустов
разработчик компании Rubius

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

Написать
{ "author_name": "BinaryDistrict Russia", "author_type": "self", "tags": [], "comments": 0, "likes": 7, "favorites": 1, "is_advertisement": false, "subsite_label": "flood", "id": 44625, "is_wide": false }
00
дни
00
часы
00
мин
00
сек
(function(){ var banner = document.querySelector('.teaserSberbank'); var isAdsDisabled = document.querySelector('noad'); if (!isAdsDisabled){ var countdownTimer = null; var timerItem = document.querySelectorAll('[data-sber-timer]'); var seconds = parseInt('15388' + '59599') - now(); function now(){ return Math.round(new Date().getTime()/1000.0); } function timer() { var days = Math.floor(seconds / 24 / 60 / 60); var hoursLeft = Math.floor((seconds) - (days * 86400)); var hours = Math.floor(hoursLeft / 3600); var minutesLeft = Math.floor((hoursLeft) - (hours * 3600)); var minutes = Math.floor(minutesLeft / 60); var remainingSeconds = seconds % 60; if (days < 10) days = '0' + days; if (hours < 10) hours = '0' + hours; if (minutes < 10) minutes = '0' + minutes; if (remainingSeconds < 10) remainingSeconds = '0' + remainingSeconds; if (seconds <= 0) { clearInterval(countdownTimer); } else { timerItem[0].textContent = days; timerItem[1].textContent = hours; timerItem[2].textContent = minutes; timerItem[3].textContent = remainingSeconds; seconds -= 1; } } timer(); countdownTimer = setInterval(timer, 1000); } else { banner.style.display = 'none'; } })();
{ "id": 44625, "author_id": 128754, "diff_limit": 1000, "urls": {"diff":"\/comments\/44625\/get","add":"\/comments\/44625\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/44625"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791 }

Комментариев нет 0 комм.

Популярные

По порядку

0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Компания отказалась от email
в пользу общения при помощи мемов
Подписаться на push-уведомления