Перейти к содержанию

Сообщения от Симулятор Танта

Пока нет оценок — будьте первым!
Аватар пользователя
7 лет назад
TL DR: прогресс можно наблюдать здесь: https://ihromant.github.io

SMOrc
SMOrc SMOrc
SMOrc SMOrc SMOrc
SMOrc SMOrc
SMOrc

Здравствуй, дорогой чятик. Думаю, все сльішали про AlphaZero, которьій сейчас считается непобедимьім в шахматах. Под капотом у AlphaZero есть так назьіваемое машинное обучение на нейронньіх сетях. И с его помощью благодаря простой стратегии обучения (машина учится играть так же как люди - путем наигрьіша и набивания шишек) он в конце концов порвал Стокфиша. Ето бьіло лирическое отступление.

На самом деле в коде АльфаЗеро ничего сложного нету с точки зрения вечности. (например, здесь https://gist.github.com/erenon/cb42f6656e5e04e854e6f44a7ac54023 можно посмотреть псевдокод). Вопрос в инфраструктуре (Гугл под ето дело вьіпустил так назьіваемьій TPU-чип) и в количестве компов что ету модель считают. Также с псевдокода вьі можете видеть, что заменив всего несколько частей кода, можно тот же алгоритм для Го или Шоги применить.

К чему я веду? Я веду к тому, что кто понял как работает АльфаЗеро, тот может (захватить вселенную) писать АІ для любой игрьі какую пожелает (как например пишут ботов для Дотьі которьій уже походу рвет чемпионов International https://openai.com/five/ ).

Конечно, Герои имеют общее как с дотой (рандом, неполнота информации), так и с шахматами (полная походовость). Но на самом деле в некоторьіх случаях герои очень простьіе с точки зрения вариантов. Вот один из вариантов я бьі хотел рассмотреть.

Предположим у вас есть Тант. Статьі 1-2-5-8, маньі 120. И 350 скелетов. И утопа 1-2 маячит перед глазами. Вопрос знатокам из чятика: лезть туда или не лезть? Санек например не принимает ход, делает в редакторе карту и гоняет там ету битву 3-4 раза и после етого решает что делать в тот момент когда оппонент матерится "почему он ход не принимает?". Опустив шуточки, в утопе у нас все очень предопределено на самом деле (драконьі врежутся в определенньіе стеки, моралей нет, у нас в качестве ответа очень мало толковьіх вариантов - щит, деф, атака, подождать, анимейт), и так до победьі (или поражения).

В общем, модель очень хорошо ложится на алгоритм машинного обучения что назьівается Reinforced learning. Принцип прост - лезем в утопу, делаем какое-то предположение, получаем (удалено модером), делаем вьіводьі, пробуем новое. Или побились хорошо, думаем как меньше маньі потратить.

Теперь о связи с другой одной игрой. Есть игра "крестики-нолики". Думаю, ее кто-то уже играл на парах или в школе. Игра на самом деле очень похожа на взятие Тантом утопьі. Вариантов примерно такое же число, в конце концов есть результат, можно вариировать количество ответов (например, играть не 3х3 3 в ряд, а 5х5 или 5х6 4 в ряд, или 15х15 5 в ряд). Если научить компа играть ету игру, то путем несложньіх манипуляций можно научить компа брать Тантом утопьі.

Извините за долгое вступление, теперь наконец суть. Я смог научить компа играть в крестики-нолики 3х3 3 в ряд, 5х5 4 в ряд что он не проигрьівает, а если зеваешь - то вьіигрьівает. Сделал ето именно с помощью алгоритма Reinforced learning и машинного обучения на нейронньіх сетях. Код можно посмотреть здесь https://github.com/Ihromant/reinforced-learning .

Я почти уверен, что с его можно адаптировать для случая с Тантом и утопой. Тоесть научить компа брать утопу с минимумом потерь, а если потерь нету - то с минимумом потерь маньі. Если идти дальше - то потом можно идти и к взятию конс (хоть до микрения гарпиями цехов), просто ето сложнее, дольше и его нельзя перепрьігнуть.

Теперь спрашивается почему я ето все создал. Во-первьіх, похвастаться (ну да, ЧСВ). Во-вторьіх, я приблизился к етапу, где кто-то уже может помочь. Вариантов явньіх я вижу пока 2:
1. Мне надо модель взаимодействия драконов со скелетами. Я думаю, что смогу со временем впилить ету модель, но во-первьіх я работаю, во-вторьіх имею другую деятельность. А дело ето требует усидчивости и немного скучное. А тренировать на неправильной модели - будут неправильньіе советьі. Потом модель может вьірасти и до взятия конс и прочего. Но надо знатока поведения компов что сможет перевести свой опьіт войньі с компами в код.
2. Тренировка моделей не делается мгновенно. Дальше надо будет тренировать пошагово. Процесс довольно скучньій на самом деле. Запустил, подождал, сохранил в файлик. Файлик где-то вьіложил, кто-то другой его тоже запустил, потренировал, вьіложил. Надо комп с хорошой видеокартой (у меня ноут, комп в планах, но щас нету). Потому, что чтобьі научить компа играть в 5х5 крестики нолики - то занимает ето 2 часа работьі на моем рабочем мощном компе). Можете представить сколько времени займет тренировка взятия консьі.

В общем, где-то так пока. Обсуждаем.
Аватар пользователя
7 лет назад
Я скептически настроен по поводу ИИ, но если вдруг "взлетит", то вы не боитесь таким образом случайно "убить" игру онлайн и оффлайн-турниры? А то ведь паранойя по поводу того, что у оппонента нвидиевский ящичек под столом спрятан, будет лечится только прямой видеотрансляцией (и то не факт).
Аватар пользователя
7 лет назад
Я тоже одно время прикидывал насчет AI в героях, как достойного противника. ИМХО, теоретически реализуемая, но титаническая задача. Даже по глобальному, стратегическому AI. Но человекочасов тут надо немеряно..

А по боевкам в основе должен лежать простой перебор всевозможных вариантов на 2..n ходов вперед, на основе все-таки некоего тактического "скелета", со сравнением по некоей формуле отношения потерь врага к собственным.
Разумеется, перед этим надо аналитически вывести реальный боевой алгоритм AI (драконов) и тогда уже можно будет обучать нейросеть действительно быстро.

Дефолтный AI считает, как нанести наибольшие потери, но только за текущий ход, и что стоит "подарить" ему еще немного процессорного времени? Три хода вперед, на вскидку, это 200х200х200 вариантов - "семечки" для сегодняшнего "железа!"
leiz
вы не боитесь таким образом случайно "убить" игру онлайн
Если реализовать продукт в виде новых костылей-калькуляторов, то да. Но в идеале - создать бота. И заставить сотни клонов таких ботов самообучаться в непрерывных виртуальных боях..
В ответ пользователю Meo
Аватар пользователя
7 лет назад
leiz
Я скептически настроен по поводу ИИ, но если вдруг "взлетит", то вы не боитесь таким образом случайно "убить" игру онлайн и оффлайн-турниры? А то ведь паранойя по поводу того, что у оппонента нвидиевский ящичек под столом спрятан, будет лечится только прямой видеотрансляцией (и то не факт).
Нет, не думаю. Во-первьіх я не думаю сделать полного бота. Я уже писал на счет сложности вьічислительной и прочей. В планах есть сделать битву в утопе Тантом, в идеале еще взятие обьектов (потому, что там бьістро битва заканчивается) с учетом статов и магии в книжке героя. На счет микрения нейтралов - уже не знаю хватит ли мощности и моего умения. Потому бонус так себе, на самом деле. Похоже на то, как запускать во время игрьі "Взятие склепов Complete edition" на ютубе. Вроде потери немного меньше (не думаю что он порвет суперопьітного игрока), но таймер залит.
Meo
Я тоже одно время прикидывал насчет AI в героях, как достойного противника. ИМХО, теоретически реализуемая, но титаническая задача. Даже по глобальному, стратегическому AI. Но человекочасов тут надо немеряно..

А по боевкам в основе должен лежать простой перебор всевозможных вариантов на 2..n ходов вперед, на основе все-таки некоего тактического "скелета", со сравнением по некоей формуле отношения потерь врага к собственным.
Разумеется, перед этим надо аналитически вывести реальный боевой алгоритм AI (драконов) и тогда уже можно будет обучать нейросеть действительно быстро.

Дефолтный AI считает, как нанести наибольшие потери, но только за текущий ход, и что стоит "подарить" ему еще немного процессорного времени? Три хода вперед, на вскидку, это 200х200х200 вариантов - "семечки" для сегодняшнего "железа!"

Если реализовать продукт в виде новых костылей-калькуляторов, то да. Но в идеале - создать бота. И заставить сотни клонов таких ботов самообучаться в непрерывных виртуальных боях..
Да, основная сложность - ето вьівести реальньій боевой AI. Потому, что machine learning - он учится на том, на чем тьі его учишь. Научил на кошках - он и умеет на кошках, а при виде человека теряется. Кое-что конечно может переиспользовать, но например если тьі учил его взятию утоп без жаждьі крови, а потом с жаждой - то придется скорее всего переучивать с ноля потому, что он тупо не будет знать что с жаждой делать (модель там ооооооочень важна).
Аватар пользователя
7 лет назад
Бьіла оказалось проблема. У меня на 300 000 испьітаниях для крестиков-ноликов 5х5 бот проходил локальньій минимум потом влазя в бесконечное блуждание. Добавил логирование, запустил на миллионе. Оказалось что да, учится, и очень хорошо учится. Веселая медитация на вечер получилась. Можете запускать и медитировать на консоль смотря как машина обучается.
Вложения 2
2 файл(ов) • Общий размер: 44,3 KB
7 лет назад
А чо там, в го боты уже научились играть без ошибок ?
В ответ пользователю Grando
Аватар пользователя
7 лет назад
Al Feyn
А чо там, в го боты уже научились играть без ошибок ?
5x6 (в теории вьіигрьішное). Вьіглядит норм, но я недоволен. Завтра на работе попробую исправить. Когда получу то, чего хочу (в конце игру без изьянов и хороший перебор вариантов) - то буду делать сохранение версий AI.
Вложения 1
1 файл • Общий размер: 17,6 KB
В ответ пользователю Ihromant
Аватар пользователя
6 лет назад
Обновление (если кому-то интересно).

1. Очень много передельівал потому, что сначала сделал все под крестики-нолики (например делал оценку по последствию действия, а не по комбинации состояние-действие). Также вьіделил хороший кусок кода в "агента", теперь есть много агентов, интересньіх и разньіх (которьім управлять может комп, которьім управляет минимакс, которьім управляет QLearningAI на базе пофигу или Map или нейронки).
2. Разделил "тренировку" и "игру". Теперь тренировать можно постепенно, сохраняя промежуточньіе результатьі на диск. Соответственно, если че-то упало, просто берем предьідущий результат и начинаем опять. Также можно контролировать сколько тренировать в текущий момент.
3. Бьіла проблема с тем, что со временем нейронка вьірождалась в NaN (в общем, портилась бесповоротно), из-за чего поменял функцию активации с ReLu на Sigmoid на первом слое. Учится немного медленнее, но уже пошел на 4 миллион, брат жив, зависимости нету.
4. Вьіделил результат игрьі, еще не сделал конвертации результата непосредственно в вьівод нейронки, но уже препятствий никаких нету.
5. Есть идея попробовать convolutional layer, но он поможет для крестиков-ноликов, но не для героев (хотя если усложнить в дальнейшем структуру нейронки - то анализ поля можно будет пропускать через него, а анализ остального (магии, статов героя и прочего) через плотньій слой.

В общем, к чему я все ето. Я 25 сентября буду вьіступать в своей компании и показьівать то, чего добился с крестиками-ноликами. До етого буду полировать то, что есть и делать презентацию. Если кто-то хочет - может начать реализовьівать состояние для героев в ето время. (завлекаю :D ) Если нет - то вероятно начну уже сам что-то пилить с октября именно по героям.

3х3 учится за 1,5 миллиона испьітаний так, что не проигрьівает минимаксу (тоесть играет идеально).

Внизу картинки для привлечения внимания (как учится 5х5, 4 в ряд).
Вложения 4
4 файл(ов) • Общий размер: 72,5 KB
Аватар пользователя
6 лет назад
Ihromant
Можете представить сколько времени займет тренировка взятия консьі.

В общем, где-то так пока. Обсуждаем.

Может лучше сделаем герои более линейными, как шахматы; отстроил гильду получил именно то заклинание, 3 разных строения для заклов контроля; с карты убираем все свитки святыни заклинаний; взамен добавляем чтото другое; насчет ИИ есть же опция пвп, нужно лишь ее доработать; а также можно сделать для новичкев ОХ для 5 и больше игроков; чтобы больше игроков приходило.

Нужно переделать опцию пвп битвы с возможностью отказатся от боя тому кто играет за ИИ, если бой 100% проиграшный; чтобы лишнее не кликать.
В ответ пользователю ДаУ
6 лет назад
ДаУ
Может лучше сделаем герои более линейными, как шахматы; отстроил гильду получил именно то заклинание, 3 разных строения для заклов контроля; с карты убираем все свитки святыни заклинаний; взамен добавляем чтото другое; насчет ИИ есть же опция пвп, нужно лишь ее доработать; а также можно сделать для новичкев ОХ для 5 и больше игроков; чтобы больше игроков приходило.

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

О, я наконец-то узнал, кто такой легендарный ДаУ, о котором все говорят.

Сделать герои еще более линейными чем в хоте, или на джебе?
Интересно.

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

Есть типичный пример из недавних игр:
В начале 2019го вышла кастомка в доте, Dota Auto Chess, которая в своё время собрала нереальный хайп, и смотрело DAC больше чем собственно доту.
Габен, понял что тут пахнет бабками и хайпом, Риоты поняли, что тут пахнет бабками и хайпом, EpicGames поняли что тут пахнет бабками и хайпом.
В это же время, Drodo - авторы сей кастомки, пилили мобильную игру и саму кастомку.
Как итог, Drodo заключают контракт с EpicGames, а Riot и Valve решают создать свои клоны.
Так как мобилку без особых проблем можно создать на Unity, c уже имеющимися модельками, а y Riot есть своя платформа в виде LoL, эти игры выходят в один день, опережая EpicStore на несколько месяцев.
Габен с Riot говорят, вот у нас бета версии игр, идите к нам, мы будем их апдейтить и проводить турики с призовыми. И игроки, как бараны идут в недопиленую хрень, потому что бабки, бабки, бабки.
EpicGames понимают что запахло жареным, и обьявляют турнир на 1кк баксов.
Потом выпускают свою игру, а она сырее досок пролежавших 7 суток под дождем, половина функционала не работает и попахивает провалом.
А турик мы анонсировали, а все даты уже есть.
Как итог отборочные турика переносятся на мобильную версию Дродо авто чесс.
И игроки как зомби идут играть в неё, трениться, ибо миллллллллиоооооооооооооон.
А слотов 2, а игроков дохера, а игра рандомная.
Как итог отыграв отборочные к турниру, все забивают на игру.
Итого, что мы имеем:
Высер Габена (андерлордс не могу иначе назвать)
Немного иная казуальщина от Riot, с стыренной идеей и так себе реализацией
Мобилка от дродо отстающая на 2 месяца в развитии.
Неготовая игра от Эпикгеймс.
И прекраснейшая кастомка, в которой куча нововведений и интересных страт.
И все уже просрали свой онлайн...
Аватар пользователя
6 лет назад
В ответ пользователю Aiwe
Аватар пользователя
6 лет назад
Бот берет склепьі. Если хотите посмотреть результат - смотрите в самому конце последние полчаса. Если хотите посмотреть все байто ужасьі - смотрите с самого начала.
https://www.twitch.tv/videos/615773537

Вьі понимаете куда все идет, я надеюсь? Kappa
Аватар пользователя
6 лет назад
Иван, Вы больны на голову, Вам как можно скорее надо лечиться! )
В ответ пользователю Ihromant
Аватар пользователя
6 лет назад
Ihromant
Вьі понимаете куда все идет, я надеюсь? Kappa
Погосты! А затем и цеха!!!! :smile54:

Статистика

Приветствуем новейшего участника: recijeb

Сейчас на сайте 4 пользователей 1279 гостей