Перейти к публикации
[ {"link":"https://topdeck.ru/apps/toptrade/member/32/promo/1", "image":"https://topdeck.ru/apps/toptrade/member/32/promo/1/image"}, {"link":"https://topdeck.ru/apps/toptrade/member/32/promo/2", "image":"https://topdeck.ru/apps/toptrade/member/32/promo/2/image"} ]

Автоматизированный анализ драфта


rx303
 Поделиться

Рекомендованные сообщения

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

 

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

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 57
  • Создано
  • Последний ответ

Наиболее активные участники

Дни наивысшей активности

а это нормально, что кнопка 'start new draft не работает?'. Выдает : javascript: $('#startDraftModal').modal() в url и [object Object] на самой странице.

Ссылка на комментарий
Поделиться на других сайтах

За выходные добавил страницу с итоговым надрафченным кардпулом + сортировку карт по цвету или СМС + при старте драфта в выпадашке появилась опция OGW-OGW-BFZ ))

 

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

Изменено пользователем rx303
Ссылка на комментарий
Поделиться на других сайтах

Кажется, поправил. Можно гонять драфты.

Ссылка на комментарий
Поделиться на других сайтах

Отличное начинание!

Правда, есть несколько замечаний...

 

В 21 веке люди алгоритмы уже не пишут )

Это просто неверно. Computer Science активно развивается в 21м веке. И немало хитрых подходов и алгоритмов придумано именно в 21м веке, особенно для нейронных сетей.

 

Входные данные - это карты в очередном бустере + уже пикнутые карты. Выходные данные - это карта, которую надо взять. Зависимостями между пиками в одном драфте ("отпустил на круг" и т.д.) пренебрегаю.

На этих данных обучил нейронную сеть.

Есть несколько вопросов по реализации:


  •  
  • Каким алгоритмом обучения пользуетесь?
  • Если есть учитель, то что в его роли выступает?
  • Каким способом кодируете карты?
  • Какой размер сети (количество узлов) берёте?
     

upd: если ответ на какой-то вопрос является тайной (вдруг вы монетизировать свой сайт потом хотите?), то, конечно, отвечать не следует =)

 

Помимо этого есть и другой вопрос: на чём написан сам код обучалки нейросети? Если на плюсах и работает под линуксом, то я могу позапускать его на кластере (500+ процов Intel Xeon) - выгоду такой мощи объяснять вроде как не нужно =)

Изменено пользователем zuko3d
Ссылка на комментарий
Поделиться на других сайтах

Отличное начинание!

Правда, есть несколько замечаний...

 

 

Это просто неверно. Computer Science активно развивается в 21м веке. И немало хитрых подходов и алгоритмов придумано именно в 21м веке, особенно для нейронных сетей.

 

 

Есть несколько вопросов по реализации:


  •  
  • Каким алгоритмом обучения пользуетесь?
  • Если есть учитель, то что в его роли выступает?
  • Каким способом кодируете карты?
  • Какой размер сети (количество узлов) берёте?
     

upd: если ответ на какой-то вопрос является тайной (вдруг вы монетизировать свой сайт потом хотите?), то, конечно, отвечать не следует =)

 

Помимо этого есть и другой вопрос: на чём написан сам код обучалки нейросети? Если на плюсах и работает под линуксом, то я могу позапускать его на кластере (500+ процов Intel Xeon) - выгоду такой мощи объяснять вроде как не нужно =)

 

Алгоритм обучения - backprop, разумеется. Градиентный спуск - при помощи Adam (http://arxiv.org/abs/1412.6980v8)

Учитель - данные по пикам игроков с симулятора tappedout.net

Кодировка - просто порядковый номер в списке карт формата, отсортированных по алфавиту. Потом перевожу в one-hot представление и суммирую для бустера\надрафченных карт. Т.е. цвета, смс, типа карты в исходных данных нет. Только некий id'шник.

Размер сети - много разного перебрал, сейчас это 3 слоя по 1000 нейронов.

Для обучения сети использую Keras. Гоняю код на gpu2.2xlarge сервере Амазона - там у них стоит NVidia Grid K520. Обучение сети для OGW-OGW-BFZ заняло в районе часа.

Ссылка на комментарий
Поделиться на других сайтах

Алгоритм обучения - backprop, разумеется. Градиентный спуск - при помощи Adam (http://arxiv.org/abs/1412.6980v8)

Учитель - данные по пикам игроков с симулятора tappedout.net

Кодировка - просто порядковый номер в списке карт формата, отсортированных по алфавиту. Потом перевожу в one-hot представление и суммирую для бустера\надрафченных карт. Т.е. цвета, смс, типа карты в исходных данных нет. Только некий id'шник.

Размер сети - много разного перебрал, сейчас это 3 слоя по 1000 нейронов.

Для обучения сети использую Keras. Гоняю код на gpu2.2xlarge сервере Амазона - там у них стоит NVidia Grid K520. Обучение сети для OGW-OGW-BFZ заняло в районе часа.

Спасибо за ответы!

Вопрос - почему backprop? На мой взгляд, он самый простой в реализации, но так же и самый "слабый". Пробовали ли "модный" deep learning с использованием RBM? Или эволюционные алгоритмы (в совокупности с нормальным обучением)?

Ещё вопрос про внутреннее устройство: вы на вход сети подаёте все карты руки + все уже надрафченныве, а на выходе она (в каком-то закодированном виде) выдает ту карту, которую нужно подрафтить - я правильно понял? Просто мне кажется более удобным вариант "рейтинговой системы" - на вход подавать только мой текущий пул и одну карту - а сеть выдаёт "рейтинг" этой карты. Таким образом мы можем подать ей по очереди все карты бустера и предлагать пикать ту, у которой рейтинг выше. Это, имхо, позволит снизить шум за счёт того, что не будет сразу много данных поступать на вход => проще обучить.

 

Я почему спрашиваю - сам думал что-то подобное сделать, но как-то не доходят руки. А тут вы уже сделали рабочую версию - очень любопытно стало.

Ссылка на комментарий
Поделиться на других сайтах

Спасибо за ответы!

Вопрос - почему backprop? На мой взгляд, он самый простой в реализации, но так же и самый "слабый". Пробовали ли "модный" deep learning с использованием RBM? Или эволюционные алгоритмы (в совокупности с нормальным обучением)?

Ещё вопрос про внутреннее устройство: вы на вход сети подаёте все карты руки + все уже надрафченныве, а на выходе она (в каком-то закодированном виде) выдает ту карту, которую нужно подрафтить - я правильно понял? Просто мне кажется более удобным вариант "рейтинговой системы" - на вход подавать только мой текущий пул и одну карту - а сеть выдаёт "рейтинг" этой карты. Таким образом мы можем подать ей по очереди все карты бустера и предлагать пикать ту, у которой рейтинг выше. Это, имхо, позволит снизить шум за счёт того, что не будет сразу много данных поступать на вход => проще обучить.

 

Я почему спрашиваю - сам думал что-то подобное сделать, но как-то не доходят руки. А тут вы уже сделали рабочую версию - очень любопытно стало.

Насчет "слабого" - что-то не уверен. Вроде как главный алгоритм для обучения простых feed-forward сетей. Думаю, он сходится быстрее, чем эволюционные алгоритмы.

 

Если исключительно RBM, как у Хинтона в статье про Netflix вроде, - нет, не пробовал. Если RBM для предобучения, то есть ведь glorot initialization.

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

 

Я вообще решал эту проблему как задачу многоклассовой классификации.

Ссылка на комментарий
Поделиться на других сайтах

Насчет "слабого" - что-то не уверен. Вроде как главный алгоритм для обучения простых feed-forward сетей. Думаю, он сходится быстрее, чем эволюционные алгоритмы.

С каждым высказаыванием по отдельности я согласен. Но мне не кажется, что для драфта лучшим вариантом является простая сеть. Хотя... если оно работает (причём судя по отзывам - работает как минимум нелпохо), то может так оно и вправду лучше.

 

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

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

Ссылка на комментарий
Поделиться на других сайтах

Залил на сайт Shadows of Innistrad. Вчера была версия, которая пикает карту, первую по алфавиту. С ней нагенерили 3990 пиков. Сегодня переобучил на этих данных - сейчас уже более вменяемые решения.

Изменено пользователем rx303
Ссылка на комментарий
Поделиться на других сайтах

Для иннистрада надо с двусторонними картами прописать правила. А то бывают паки вообще без них, это так не должно работать:

 

 

 

 

82802b5d04eb0651b7ea35f2aec5f9cd.jpg

 

 

 

Ссылка на комментарий
Поделиться на других сайтах

Всем привет. Я намедни написал небольшой сайт, на который можно закачать лог сыгранного драфта из МТГО, проанализировать, и компьютер выдаст оценки карт из бустера в каждом пике. Карта с наиболее высокой оценкой - наиболее правильный пик. Соответственно, можно проверить свои решения или сравнить, насколько сильно пики карт друг от друга отличаются. В качестве примера первые два драфта - это с PT BFZ из визардовского draft viewer. И еще несколько просто найденных в интернете. Что скажете?

давно хотел написать анализаторы для стандарта. Не интересовался этим вопросом? главное в принципе хорошая выборка по играм и колодам.

Ссылка на комментарий
Поделиться на других сайтах

давно хотел написать анализаторы для стандарта. Не интересовался этим вопросом? главное в принципе хорошая выборка по играм и колодам.

Я пока немного отошел от сайта, поскольку залип за этим: http://blackboxchallenge.com/

Ссылка на комментарий
Поделиться на других сайтах

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

Ссылка на комментарий
Поделиться на других сайтах

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

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

Изменено пользователем rx303
Ссылка на комментарий
Поделиться на других сайтах

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

Почему так происходит понятно. Я лишь говорю о том, что это убавляет реалистичность.

Изменено пользователем MrCarrot
Ссылка на комментарий
Поделиться на других сайтах

Я пока немного отошел от сайта, поскольку залип за этим: http://blackboxchallenge.com/

Наш ответ Кэгглу?)

Ссылка на комментарий
Поделиться на других сайтах

Наш ответ Кэгглу?)

Скорее, это mail.ru запустил новую серию соревнований. У них ведь уже есть Russian Developer Cup, есть Russian AI Cup, а с этого года и вот такой конкурс на RL.

Ссылка на комментарий
Поделиться на других сайтах

Я пока немного отошел от сайта, поскольку залип за этим: http://blackboxchallenge.com/

 

То есть до конца мая правильного наполнения бустера двусторонними картами можно не ждать?)

Ссылка на комментарий
Поделиться на других сайтах

То есть до конца мая правильного наполнения бустера двусторонними картами можно не ждать?)

Да нет, на самом деле уже можно пользоваться )

Плюс еще с главной страницы можно перейти на страницу формата, где будет рейтинг карт P1P1. Для 3xSOI - все нормально, но для остальных форматов есть нюансы:

1) Когда драфтимся по разным сетам (OGW-OGW-BFZ), то бот, разумеется, не ожидает, что карты из BFZ будут попадаться в первом бустере. Так что там они сильно ниже. Поправлю как-нибудь. Зато там все равно можно оценить, насколько крутой Oblivion Strike )

2) 3xBFZ я давно не переучивал, т.к. он уже нерелевантен, и там четко видна ошибка с перепутыванием соседних по алфавиту карт, у которых есть знаки пунктуации в названии. Гидеон и Драна, короче.

Ссылка на комментарий
Поделиться на других сайтах

Да нет, на самом деле уже можно пользоваться )

 

Йеей, спасибо! =)

Ссылка на комментарий
Поделиться на других сайтах

Добавил Eternal Masters на сайт.

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

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

Плюс из интересного - появилась опция сыграть драфт на паках из какого-нибудь другого драфта. Т.е. можно посмотреть, как бы пошло дело, если бы вы драфтились немного по-другому, или сидели на другом месте ('Replay draft' в меню на странице сыгранного драфта)

Изменено пользователем rx303
Ссылка на комментарий
Поделиться на других сайтах

В драфтах по Eldritch Moon вкралась какая-то ошибка и у Sigardian Priest всегда вес 0%. Очень неудобно, потому что в середине пака часто кажется, что сигнал, хотя на самом деле вовсе нет.

Ссылка на комментарий
Поделиться на других сайтах

 Поделиться

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...