Есть ли у кого-нибудь соображения, о возможности реализовать в WC3 нечто похожее на AlfaStar из мира StarCraft 2. Потянет ли движок WC3 нейронную сеть? Можно ли такое реализовать на Lua?

Принятый ответ

Прежде всего, нейросеть для старкрафта сидит вне клиента игры. Спрашивать потянет ли это движок не корректно потому как движок то тут ни при чем. Правильнее ставить вопрос,реально ли реализовать интерфейс для взаимодействия нейросети с игрой.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2
28
5 лет назад
2
уже в ближайшем будущем ты просто не найдёшь игроков которые бы играли на патче 1.26а
вся гарена и часть серверов сидят на 1.26а
0
18
5 лет назад
0
Здравствуй, движок потянет.
Проблемы которые могут возникнуть:
  • 1.1) Превышение лимита операций обходе/обучении нескольких нейросетей;
  • 1.2) Превышение лимита операций при обходе одной неросети;
2.) Ограничение на количество структур (длину массива) => ограничение на архитектуру сетей/сети.
Решения:
  • 1.1) Распараллеливание вычислений, 1 сеть - 1 поток;
  • 1.2) Ручками разделение обхода (для каждого вида сети);
2.) Хеш-таблица или хитрый алгоритм обращения к нескольким массивам (если количество весов более 8190 то надо писать систему сохранения весов в несколько файлов).
Итого:
  • Нейросети получаются миниатюрными, но вполне подходят для решения некоторых задач;
  • Помимо прочих костылей есть еще особенности вычислений на Blizzard Машине. Например, с точки зрения лимита одно сложение/вычитание = одному умножению и т. п. Это может привести к необычным оптимизациям.
16 нейросетей общая сумма весов которых не превышала 8190 успешно обучались с помощью ГА, учились самостоятельно принимать решения (использовать зелье и подходить к руднику) чтобы победить врага.
Обучение нейросети с помощью алгоритма обратного распространения ошибки может вестись в одиночке с помощью таймера с периодом 0.00001 и полной загрузкой потока без тормозов. Вывод ошибки обучения на экран каждый тик, кстати, вызывает дикие лаги, поэтому выводилась только каждая N-ная ошибка.
Предварительно максимальная производительность достигалась тогда, когда работает один максимально загруженный поток
0
28
5 лет назад
0
2.) Ограничение на количество структур (длину массива) => ограничение на архитектуру сетей/сети.
эта проблема решается с помощью v/cjass указанием размера массива
Vlod:
  • 1.1) Превышение лимита операций обходе/обучении нескольких нейросетей;
кроме распараллеливания может использоваться вейт на 0 секунд, т.к. для большинства карт не требуется слишком частого обновления
0
18
5 лет назад
0
nvc123, если я не ошибаюсь в том как сделаны структуры в vjass, то их количество имеет лимит, который еще и уменьшается с введением массива.
Для нейросети 20х20х20 -> 400+400=800 связей, то есть в игре таких сеток может быть всего 10, более того, использование слоев разных размерностей принудит либо к описанию каждого типа отдельно, либо отказ от априорного определения размерности
Вейт - ужасное решение для backpropagation, который является основным методом обучения на данное время
0
28
5 лет назад
0
эта проблема решается с помощью v/cjass указанием размера массива
У vJass лимит кастомного массива 32к, в 1.29+ такой размер массива нативен.
Vlod, ты описываешь нейросеть, которая будет существовать только во время запуска карты. После её закрытия все изменения сотрутся. Нужно сохранять как-то и загружать, что адекватно сделать нельзя, только костылями через прелоад. Пока не будет нормального I\O API, не вижу смысла этим заниматься.
0
18
5 лет назад
Отредактирован Vlod
0
PT153, есть несколько вариантов, самый простой - это обучить сетку, сжать по возможности и запихнуть её в карту, а что тебя смущает даже в этом случае?
0
28
5 лет назад
0
Vlod, в этом - ничего. Но обучать придётся вручную.
0
18
5 лет назад
0
PT153, можно по-подробнее о том, какой не ручной метод ты имеешь ввиду? самообучающиеся или что?
0
28
5 лет назад
Отредактирован PT153
0
нечто похожее на AlfaStar
AlfaStar обучался на реплеях. Чтобы сделать также, нужно как минимум API для реплеев.
Будет API для реплеев - НС можно будет обучить по ним. Будет API для связи с сервером - можно будет сделать НС с самообучением.
Пока из этого ничего нет, потому НС можно обучить вручную, то есть выписать кучу данных и применить алгоритм обучения на них.
0
24
5 лет назад
0
Ну, допустим, реплеи парсить и использовать для обучения внешней сети можно и без клиента. Если сетке не ставится задача распознавать изображение на экране, как это делает AlfaStar.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.