Comments 47
P.S. Судя по видео, переключение «боевой» и «исследовательской» сети происходит топорно — бот не умеет стрелять во врага и «стрейфится» по направлению к аптечке/патронам. Да и просто в «боевой» бот обычно либо стоит либо бежит только вперёд.
С бочками, думаю, что сеть можно было бы обучить, если пускать её на уровень с кучей бочек. А так она даже вряд ли их научилась детектировать. Они не выводились в feature вектор состояния из движка, как я понимаю.
Кто-то на ютубе писал в стиле: «кардинальное отличие поведения от детей! дети не пропускают ни одной бочки, когда учатся играть!».
кардинальное отличие поведения от детей!
Да! Было-бы намного круче, если бы сеть в первых циклах обучения пыталась различными способами взаимодействовать с объектами, и на основе этого уже выделяла их в разные группы враг/предмет/и т.п.
Более интересная задача как найти в большом пространстве возможных состояний наиболее интересные области и прицельно исследовать именно их. То есть например повзаимодействовать с бочкой, а не изучать, к примеру, что бывает от выстрелов в разные конфигурации стен.
Что с «противоречивыми» оценками? Например — взрывать бочку впритык к себе — плохо, а взрывать бочку которая впритык к противнику — хорошо? Это закладывалось в изначальные знания сети, или она этому училась сама? И училась ли?
Тогда нужна сеть-стратег, которая принимает решения более высокого уровня. При этом исследователь только генерирует для стратега и для война выявленные им закономерности мира типа: "врагов можно подстрелить рикошетом" или "в моём мире есть проёмы и зеркала, отличающиеся только цветом притолки". а стратег и воин принимают решения на основании подтвердившихся закономерностей и собственного опыта.
Кстати, а как сеть поведёт себя на уровне типа "зеркального лабиринта", с очень большим количеством переотражений противника в зеркальных поверхностях?
Интересно было-бы посмотреть на соревнования этих сетей, как на один из вариантов киберспорта среди программистов. Только не в 2,5D, а в полноценном 3D.
Человека сеть побеждает с неплохим отрывомНепонятно почему. Более активное/агрессивное поведение?
По идее, бот должен быть более предсказуемым. Человек должен понимать то, что если бот сейчас не в бою, его надо искать в местах расположения патронов/аптечек.
авторы… сделали две независимых сети. Одна сеть умела искать аптечки и патроны. Вторая делать фраги.
…
Если монстров не видно, то используются решения «исследовательской сети», после появления монстра решения «боевой».
Как мне кажется, человек, который будет отстреливаясь от бота собирать аптечки/броню/патроны (т.е. держа в голове план уровня, во время боя задним ходом бежать к местам расположения аптечек — совмещая бой с пополнением запасов) должен у бота выигрывать. Хуже точность? Почему сеть показывает лучший результат?
Что за информация? Мне кажется это ключевое, а не описано.
По использованию нейросетей в играх на мой взгляд самым интересным было применение нейроэволюционных алгоритмов (например, NEAT и проект NERO по нему).
Марио через Q-Learning как я понял не взлетел.
Там например что-то типа обзора разных методов для разных игр. В общем сравниваются разные алгоритмы, сети, подходы к управлению и получению информации из окружающего мира и т.п. Как раз там указан Q2 в котором использовался визуальный вход 14x2. Дальше можно пойти по ссылкам. На ютубе можно найти MarI/O — там тоже используется визуальный вход (но очень примитивный) а в качестве алгоритма выступает NEAT ( на сайте университета Техаса по нему полно инфы). В Interactively Evolved Modular Neural Networks for Game Agent Control рассматривают преимущества модульной нейросети (одна нейросеть управляет движением, другая управляет стрельбой) по сравнению с единой нейросетью на примере игры XNA NET Rummble (старая демонстрашка XNA).
Это вот так навскидку. По UT находил кучу статей, где вообще для каждого аспекта игры (смена оружия, поиск бонусов, стрельбу, передвижение и т.п.) была своя сеть (охрененно сложная модульная сеть) но всех названий не упомню уже. А так вообще дофига статей и даже целых дипломов и диссертаций. Проблема только в том, что подавляющее большинство статей которые я читал на эту тему находятся в репозитариях за доступ к которым надо платить — поэтому читать я их могу только на работе.
Ну а что касается безмодельного обучения в общем, то там действительно сложно взлететь — во-первых очень длительный процесс обучения, во-вторых, это тот самый случай когда программа умнее программиста. Например, когда я обучал ропатов убивать ропатов и поленился взяв фитнесс функцию из 5 слагаемых: Положительное — попадания и время жизни, негативные — получение урона, промахи попадание по союзнику, к 60-ому поколению боты разбредались по карте максимально далеко друг от друга и расстреливали препятствия (попадания по всем объектам считались положительными если dammager.team!=hitted.team) — все живы-здоровы, получают очки и никто не умирает, а самое главное неподвижные объекты никуда не убегут и обеспечат хороший процент попаданий, а самое главное сдачи не дадут.
Но всё же тут интересно, что все аспекты игры собраны более-менее в одной сети с единым пайплайном тренировки. Понятно, что чтобы сделать aimbot, никакой нейронной сети не нужно. Так же как для того чтобы сделать бота, который по триггерам бегает.
В общем с 10-ок игр точноберется. Правда чо там внутри зарыто — я хз.
Проблема в том что говнокодеров разбирающихся в ИИ на самом деле очень мало, задачи там сложные и даже тут на Хабре считают что лучше нафигачить 100500 if...then...else чем морочить голову всякими сложными вещами. Это вот недавно снова пошла мода на все эти нейросети и генетические алгоритмы.
А так у меня была когда то древнейшая книга (она была древней уже когда я учился в универе) которая как раз была посвящена как можно вставить академический ИИ в игры, еще и на примере ботов из Кваки и были там не только нейросети.
Может проще ИИ научить лазить в видеопамять напрямую?
Они в итоге учили на небольших последовательностях где-то по десятку кадров. При этом первые 5 кадров служили для того, чтобы накопить аккумулятор LSTM — обучения не происходило. А апдейтили веса только на последних нескольких кадрах. Там вообще целая пачка таких маленьких аджастментов. Та же e-greed стратегия.
Я не разу Q-Learning не обучал, поэтому важность и специфику этих мелочей мне сложно оценить.
Моделирование живого — уже сейчас этим занимаются — OpenWorm
(https://habrahabr.ru/post/208036/). И уже сейчас задаются вопросом — а чувствует эта модель живого существа боль? При желании можно скачать и поиграться.
Что за версия игры на первом видео? Интерьер из дума, а вот монстров таких там точно не было
О новых успехах противостояния (СР УВЧ!*)