Pull to refresh

Comments 52

Я посмотрел несколько партий сыгранных AlphaGo Zero и больше всего меня впечатляет тот факт, что во многих позициях он играет варианты понятные человеку чисто интуитивно. Когда я смотрел игры master — это можно было объяснить тем что master и предыдущие версии учились на играх людей. Но то что ИИ сам, без участия человека пришел к "пониманию" игры, которое похоже на человеческое, на мой взгляд, говорит о том, что мы люди — не такие уж и тупые :)

С одной стороны, да. С другой стороны, принцип обучения один и тот же («сыграй много-много партий, посмотри, что сработало, и делай так почаще»), только у людей это заняло 5 000 лет, а у компьютера — 40 дней. Мы, может, и не тупые, но мееееееедленные.

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

С высоты моих 6 кю сказать трудно, но вот здесь товарищ как раз заявляет обратное — мол, у АльфаГо совсем другая парадигма игры, поэтому мы и проигрываем. Плюс опять же, что такое эстетика, что такое хорошая форма и плохая форма? Форма, которая максимизирует твоё вэлью, очевидно будет считаться хорошей, а форма, которая делает тебя уязвимым и ведёт к поражению, будет считаться плохой, разве нет? Сомневаюсь, что в го эстетика добавляется в ущерб результативности.

Спасибо, я гляну ролик. Мне с высоты моего (тоже не сказать что высокого) 2 дана показалось, что я вижу параллели между игрой сильнейших про и zero. Конечно вполне возможно что мне просто показалось :)
Что касается формы, я не берусь определять что такое хорошая, а что такое плохая форма. Моя мысль в том, что у людей такое понятие существует, а вот у AlphaGo — вряд ли. Но при этом, создается ощущение, что AlphaGo соглашается с нашим интуитивным пониманием того, что такое хорошая форма.

при этом также есть чисто «компьютерные», нечеловеческие ходы, которые нам пока непонятны

"Принципы" которым учат — это знания людей выраженные в более простой форме.
На хабре была хорошая статья, где автор ML научил играть в шахматы а потом регрессионным анализом достал "стоимость" каждый из фигур, которые были приблизительно равны тем, что "написаны в учебнике".
(хотя для некоторых профессиональных игроков они отличались. я склоняюсь к тому, что это зависит от стиля игры. Например играя против одного игрока ты "боишься" его слонов, против другого лучше "бояться" коня.)


Вот, кстати, эта статья: https://habrahabr.ru/post/254753/

Я правильно понимаю, что из-за отсутствия MCTS в процессе игры, Zero в одной и той же позиции всегда будет выбирать один и тот же ход? А в версии master MCTS вносит некоторую случайность в игру?
И еще вопрос, время на обдумывание хода играет какую-то роль в версии Zero?

Мастер и Зеро играют по одному и тому же алгоритму. По поводу одного и того же хода трудно сказать — по идее, в реальной игре это должно быть так, но если в игре MCTS выдаст новое распределение, ход может поменяться. Во время тренировки, если я правильно помню, сеть в первые 30 прогонов MCTS обязательно ходит по 30 разным веткам, а потом уже использует связку лучший ход + случайность.

Время на обдумывание у Fan, Lee, Master и Zero одинаковое — 5 секунд на ход. Учитывая, что правила состязаний ограничивают время на партию, а не время на ход, думаю, они просто взяли с запасом.

Посмотрел сейчас внимательнее партии где zero играл белыми, master чаще делает новые ходы:
http://www.alphago-games.com/view/eventname/agzero_vs_agmaster/game/0/move/17
http://www.alphago-games.com/view/eventname/agzero_vs_agmaster/game/4/move/23
http://www.alphago-games.com/view/eventname/agzero_vs_agmaster/game/8/move/21
А вот тут zero разные ходы сыграл:
http://www.alphago-games.com/view/eventname/agzero_vs_agmaster/game/10/move/24
http://www.alphago-games.com/view/eventname/agzero_vs_agmaster/game/2/move/24
Получается во всех версиях есть какой-то случайный фактор при выборе хода.

Почему на победу в го потребовалось столько времени? Там так много вариантов?
Грубо говоря, да.
Количество вариантов — проблема важная, но не главная.
Самая главная трудность там в функции оценки позиции. Ходы мало перебрать — нужно ещё понять, насколько они хороши. В шахматах позиция оценивается по относительно понятному набору критериев, которые более-менее можно формализовать. А в го оценка позиции поддается формальному описанию гораздо сложнее, она более комплексная и «человеческая».

Об этом я тоже упоминаю, но на 100% согласиться не могу. Для оценки позиции придумали rollout, только вот на дереве таких размеров он всё равно не спасает.
Самое интересное, что когда Гугл опубликовал свою прошлую статью об АльфаГо, и другие ведущие программы тоже перешли на использование policy (но пока без value), то структура Го-программ стала несколько парадоксальной. За оценку позиции в них отвечал перебор (rollout'ы), в то время как ходы рекомендовала оценка (policy). Хотя, казалось бы, логичнее наоборот. Например, как в шахматных программах — отбор перспективных вариантов реализуется средствами поиска, то есть направленного перебора, а оценкой позиции занимается оценочная функция.

Выиграйте, потому что за нейросети для точек пока никто не брался :)

Lol, да, точки… :) Когда по школе прошла эпидемия этой игры, образовалось несколько сильных игроков, выиграть у которых было очень трудно. И я стал по вечерам после (а иногда, каюсь, вместо) домашнего задания играть сам с собой двумя шариковыми ручками разного цвета. Через где-то месяц-два стал стабильно выигрывать у всех доступных рекодсменов. Стал, так сказать, Альфа-Точкой. ) Через неделю-две после этого со мной перестали играть от слова вообще. Интересно, что через года три, уже в армии, встретил такого же, как оказалось, Альфа-Точку: после пары часов напряжённой работы наших естественных нейросетей он-таки выиграл! И отказался играть со мной от слова вообще (а я был реально в шоке, слёзно просил дать возможность отыграться...). Эхх, детство...

В этом свете интересно отметить, что у Master и Zero идентичный алгоритм тренировки, идентичная архитектура, а все отличия заключаются в фичах, подаваемых на вход, и том, что Zero не тренируется на играх людей. И выигрывает.

Присутствует ещё одно отличие. Точнее важный нюанс. У Мастера по-видимому было 20 блоков, а значит и сравнивать его нужно с 20-блочным Зеро. Источники:
bestchinanews.com
sports.sina.com.cn

Но тогда выходит, что Мастер сильнее Зеро при равной глубине сети. Отсюда, rollout'ы со встроенными фичами всё же видимо приносят пользу. В принципе их использование выглядит вполне логично — «интуиция» нейросети, это конечно хорошо, но конкретный перебор rollout'ов должен бы удачно её дополнять.

Ещё один важный момент. При тренировке, а если конкретно — самоигре, использовалось 2000 TPU (источник см. выше). То есть ресурс для тренировки требуется всё же очень и очень приличный. Но, конечно, если высококачественные партии уже есть (например человеческие), то для оптимизации параметров много ресурсов не надо.
Это, мягко говоря, не совсем так, да и 2000 TPU выглядит как «редактор не дал написать дохреналион». Не знаю, откуда берут пруфы вышеупомянутые источники, но в пейпере прямым текстом сказано: We also played games against the strongest existing program, AlphaGo Master — a program based on the algorithm and architecture presented in this paper but using human data and features — which defeated the strongest human professional players 60–0 in online games in January 2017. In our evaluation, all programs were allowed 5s of thinking time per move; AlphaGo Zero and AlphaGo Master each played on a single machine with 4 TPUs. То есть, одинаковая архитектура, одинаковое железо, одинаковые условия. Apples to apples.
Это, мягко говоря, не совсем так, да и 2000 TPU выглядит как «редактор не дал написать дохреналион».
Это число, которое легко вычисляется из доступных данных. 5 миллионов игр, 0.4s на каждый ход — это 6000 дней. В реальности это, как они утверждают, заняло 3 дня. То есть в кластере должно быть 2000 машин, минимум с одним TPU каждая. То есть TPU могло быть и больше — но 2000 там были точно.
Да, похоже, действительно я ошибаюсь. Спасибо!
Вышеупомянутые источники (в основном второй), это информация непосредственно от авторов АльфаГо. По второй ссылке — выступление Айя Хуанга на недавней конференции на Тайване. Снимки с его слайдов. Информация самая свежая, в то время как публикация в Nature реально написана в марте-апреле. В публикации Nature вы не найдёте информации о количестве блоков у Мастера и число TPU для формирования тренировочного набора позиций Зеро. В вашей цитате приведено число TPU для контрольных игр, а не для тренировки. Информация о количестве блоков в Зеро (20 или 40), тоже опущена. Так и получается, что 20-блочный Мастер сравнивается с 40-блочным Зеро, тогда как Мастера надо сравнивать с графиком на рисунке 3а публикации, а не на рисунке 6.

Выше уже указали как можно оценить число TPU для тренировки. Сам я тоже недавно писал, что статья в Nature содержит немало «замыленных» мест:
kasparovchess.crestbook.com
Признаю свою неправоту. Спасибо!
Я правильно понимаю, что если Alpha Go Zero на вход подать шахматы, то за 40 дней он обыграет Komodo?
Совсем не факт. По крайней мере не так-то просто этого добиться.
Хотя у новой технологии не просматривается каких-то принципиальных ограничений сверху, тем не менее современные шахматные программы очень высоко подняли планку уровня игры, которую не так-то просто преодолеть. В первую очередь, обратите внимание на то, что шахматные программы, пользуясь специальными правилами, в среднем рассматривают всего 1,5 вариантов на позицию, из 30-40 возможных. Можно ли превзойти такую высокую эффективность, используя policy? Не факт. Во вторых, value оценивает позицию в тысячи раз медленнее, чем линейная оценочная функция шахматных программ. Миллисекунды вместо долей микросекунд. И хотя value по-видимому будет оценивать качественнее, но зато и пропорционально медленнее. Так что, выигрыш у Стокфиша или Комодо, всё ещё большой вопрос. Хотя, конечно, очень интересно было бы понаблюдать за такими попытками.
А вот и для шахмат свежие результаты подоспели — arxiv.org/pdf/1712.01815.pdf
Альфа Зеро против прошлогоднего Стокфиш 8 — 28 побед, 72 ничьи, 0 поражений. Играли по минутке на ход. Железо — 4 TPU против 64-х ядер (хэш 1 Гб).
Собственно, вот он, двадцать первый век — люди-аутсайдеры смотрят со стороны, как роботы разбираются между собой, кто из них лучше. Пока что только в играх, но мы-то знаем.
Ну в 20м веке лошади грустно смотрели на то, как автомобили разбирались кто из них быстрее. В 21 веке — настала очередь шахмат и Го.

Очень забавная картинка есть в книжке у Курцвейла: там чувак сидит за столом и ошалело выписывает таблички со словами «only human could ...». На полу их, выкинутых в мусор — гораздо больше, чем на стене, признанных правдивыми, причём половину из тех, которые были [оправданно] на стене в момент выхода книги… сейчас пора бы снять. Вот тут есть.

Доживём ли мы до времени, когда стена окажется девственно пуста? Кто знает…
Люди добрые, может кто-нибудь объяснить мне вот эти моменты? Очень хочу понять весь алгоритм, но для меня он пока сложноват (хоть и совсем на пальцах). Буду очень признателен =)

U — добавка, стимулирующая поиск новых путей; она больше в начале тренировки и меньше — в дальнейшем


Каким образом она меняется? Как захочется разработчику?

очень похоже на cross-entropy loss...


В статье очень мало об этом. Что такое кросс-этропия? Зачем она здесь? Прошу прощения, если я выгляжу невежественно, никогда не встречал это.

Создаёт дочерние ноды с P согласно p


Создает до конца дерева? По одному ноду за проход? Как это связано с P?
Некоторые фразы туманно воспринимаются. Мой уровень очень далек от авторского, чтобы сразу понять, что он имеет в виду.
Ок, давай по очереди.
1) В общем и целом, да, как захочется разработчику. Какой-то идеальной эвристики здесь не существует, ты всегда ищешь устраивающий конкретно тебя баланс между использованием хороших вариантов и поиском новых, тут очень много влияющих факторов. Если нужен конкретный пример, перечитай часть про Upper Confidence Bounds — это ровно то же самое Q + U, где Q = v, а правая часть — как раз U.
2) У тебя есть распределение, которое предсказала нейросеть, и есть распределение, которое ты получил через MCTS. Твоя задача — дать сети такой фидбек, чтобы в следующий раз её предсказание как можно точнее соответствовало тому, что ты получил через симуляции. Почитай вот тут, думаю, поможет, плюс в видео Семён обсуждает этот момент чуть подробнее, чем я. Увы, я не мог уместить весь machine learning в один пост =)
3) Смотри. Вернись к описанию оригинального MCTS, первые два шага. Мы прошли по дереву, дошли до конечной ноды, и создали дочернюю ноду для этой конечной. Всё, больше мы в этот проход ничего не создаём. В АГЗ то же самое, только мы создаём не одну дочернюю ноду, а все возможные дочерние ноды, и у каждой из них P (вероятность, что из всех дочерних нод мы выберем именно эту) будет равна соответствующему элементу p (выданного нейросетью вектора, который говорит, какая вероятность у какого хода из данной позиции). Совсем понятийно — мы скормили нейросети текущую позицию, она нам выдала массив 19х19, в котором говорит: вероятность сходить в точку с координатами [1;1] — 0.01825, в точку с координатами [1;2] — 0.0097 и так далее для каждого легального хода вплоть до точки с координатами [19;19]. Всё, мы для каждого из этих ходов создаём ноду, и в P записываем вот эту вот вероятность. Так чуть понятнее?
Спасибо, стало понятнее. Я правильно понял, что без MCTS нейронная сеть не смогла бы научиться так играть? Возможно ли обучение сети без MCTS на сырых поначалу случайных ходах и без построения дерева?
MCTS — это подход к «решению» игр с полной информацией; изначально, насколько я понимаю, в рамках теории игр был придуман minimax, потом — ММК, а потом эти две хурмы объединили и получили MCTS, ну мне это представляется в таком свете, во всяком случае. MCTS — просто самый эффективный подход из существующих, давай так пока это сформулируем. Пройдёт время, и вместо вероятностного поиска по дереву кто-нибудь придумает что-то покруче (или уже придумал, но мы ещё об этом не знаем). А нейросеть — просто добавка, которая усиливает два самых неэффективных места в этом подходе: выбор ноды для достраивания и оценку новой ноды. Это довольно независимые друг от друга штуки; в теории, ты можешь придумать более совершенные и быстрые эвристики для двух описанных выше действий, прикрутить свои эвристики к MCTS и победить АльфаГо вообще без нейросетей. Или наоборот — выкинуть вероятностный поиск по дереву, взять какой-то другой подход, «усилить» его неэффективные части точно такой же нейросетью, как в посте, и опять же победить АльфаГо.
Всегда точно определённая среда, для которой есть идеальный и простой симулятор; никаких случайностей, никаких внешних вмешательств.
Го — игра с полной информацией. Немножко похоже на предыдущий пункт, но тем не менее — нам известно абсолютно всё, что происходит.

При этом, нейросеть — отличный инструмент для моделирования детерминированной среды (пусть даже синтетической, у человека происходит так-же с его категориальным мышлением) на основе хаотичных данных. Так что уже скоро человеки познакомятся лично с Богом-Машиной. Ведите себя хорошо.

Там миллион ограничений. Если я правильно помню, только один герой, только мид, без фарминга, без закупки предметов и так далее. То есть, до непосредственно игры в доту ещё далеко, они только микро натренировали. В старкрафте тоже есть отдельные достижения в микро и в макро, только вот полноценно играть вроде как ещё никто не умеет.
блин, «китайская грамота» :) «мид, фарминг, микро» ))) ну ОК, не умеет, то не умеет.
А, прости, я думал, ты в теме! В общем, они научились играть только одним персонажем из сотни или сколько их там возможных, и этот единственный персонаж стоит строго в одной небольшой области карты и делает несколько очень базовых действий, которых недостаточно для того, чтобы провести партию от начала до конца. Очень грубая аналогия — как если бы в шахматах научились делать очень хорошие ходы, но только чёрным конём и только в левой нижней четверти поля.
о, спасибо, что объяснил! :)

ral если ты читал про SC2, то по аналогии с StarCraft 2, это тоже самое что управлять всего одним юнитом в стратегии, не задумываясь о ресурсах и создании новых.


Dota 2 — одна из самых командных игр потому что способности одних персонажей, хорошо сочетаются с другими. И в добавок к этому у игроков много разных вещей о которых нужно думать:


  1. Выбор героев. Одни герои лучше сочетаются с другими, другие лучше противостоят определенным героям противника. Выбор из более чем 110 героев 5 героев на команду, команд две. За каждого отдельного персонажа стратегия игры отличается и может ещё изменятся в зависимости от героев противника/их "материального состояния" = В матче с OpenAI герой всегда один и тот же и матч "зеркальный"
  2. Покупка предметов — более 100 разных предметов. У каждого персонажа в игре есть инвентарь на 6 предметов. Как одноразовых "расходников" которые тратятся, так и пассивных(работают постоянно, пока лежат в инвентаре) и активных(которые нужно применять в определенные моменты). Некоторые предметы можно брать на 1-2 героев на команду, т.к. при правильном использовании они дают выгоду всей команде. = В матче OpenAI герои были 1х1 что уже урезает число возможных вариантов с 6 * 5 до 5. Некоторые предметы дорогие, а игра 1х1 часто заканчивается достаточно быстро, поэтому бОльшая часть из предметов недоступна. Вдобавок к этому, OpenAI "искуственно" запретили некоторые предметы. (о причине мне не ведомо)
  3. Принятие решений. В игре персонаж становится гораздо сильнее с дорогими предметами, поэтому часто персонажей делят на роли Core(Основа, которая в будущем должна выиграть игру), которая занимается фармом(процессом убивания вражеских/нейтральных юнитов, для получения денег) и саппортов(помощники, которые делают всё, чтобы их "Основа" чувствовала себя чудесно и мешают "Основе" противника. И тут как раз игра в полной мере раскрывает стратегический потенциал.
    Core-игрок должен понимать, когда ему лучше выходить на бой с противником, а когда лучше заниматься добычей денег, должен "чувствовать" игру, чтобы понимать, когда на него могут делать вылазку противники.
    Support-игрок должен правильно распределять ресурсы — у него не так много денег, поэтому он должен стараться использовать их максимально эффективно, помогать союзникам и нападать на героев оппонента.

    По последнему пункту в OpenAI было ничего общего с командной Dota.
    Да, он понимал что ему нужно наносить герой оппоненту и убивать его по возможности, а в свободное время "фармить", но это всего одна линия, с которой, по сути, выходить было нельзя. Распределения ролей тоже не было. Командного взаимодействия тоже не было.



Я уверен, что до 2020 года не будет ничего, что сможет сравниться с людьми по навыку игры Dota 2 и похожие игры, потому что, имхо, это решение требует совершенно нового подхода, которое должно быть на порядок лучше(как минимум, для этой задачи)

Э… я бы поосторожнее умножал варианты. :) Комбинаций героев, предметов и прочего много, но очень многие из них заведомо неэффективные. Скажем, в шахматах можно всё начало игры разваливать ряд пешек миллионами способов, но ни один ИИ углубляться в разбор этих ходов не будет, поэтому что это заведомо провальная стратегия.


У командного ИИ будет очевидное преимущество преимущество — идеальное микро в любом бою и идеальное взаимодействие между юнитами: способности будут использоваться в идеальной последовательности с выравниванием до миллисекунды, реакция на действия противников будет моментальная. Не знаю, как там в доте, а в хотсе "элитный ИИ" собирается в очень недурной шарик смерти, который без АоЕ-шных способностей разобрать не так-то просто. Элитный ИИ обыгрывают не в бою, а с помощью дыр в логике ИИ — ИИ по сути умеет только точно целиться и собираться в шарик смерти, всё остальное практически по нулям.


Что требуется от OpenAI для победы в 5v5 — это довести макро до уровня, когда оно не будет помножать на ноль божественный микро. Это мне кажется реалистичным, особенно учитывая, что разрабы не брезгуют добавлять костыли к самообучению.

Речь о нейронках и самообучении.
Да, некоторые комбинации герой-предмет заведомо слабые, но суть RL(Reinforcement Learning) в том, что он может найти удачные моменты даже в случае если для этого придётся чем-то пожертвовать (аналог гамбита). Так что ему в любом случае нужно будет попробовать все вариации предметов, причём не один раз.
По поводу шахмат при обучении ИИ как раз и поиграется со всеми фигурами. Но достаточно быстро(относительно) сделает выводы о выгоде от фигур.
В то же время в Dota 2 где матчи длятся очень долго(особенно для AI с не обученным RL) 115 героев, по 6 слотов у каждого, где может быть один из ~130 предметов, с учётом команды...


Идеально микро появится совсем не скоро… Того же OpenAI обыграли в 1х1 на равных условиях и это с учётом того что учили его одного, только для этого типа игры.
Какие мощности понадобятся для того, чтобы сделать что-то что может конкурировать с командой "любительского уровня" страшно представить.
Про ботов в HotS'е: в доте такое сложно будет провернуть из-за специфики игры. Некоторые способности направлены на длительные дизейблы по врагам стоящим рядом друг с другом, в то время как другие позволяют расправляться с теми, что разрознены. Я понятия не имею, как с этим будут бороться. Поживём — увидим.


2020 год — это мой самый "позитивный" прогноз. Так делаю ставку на 2025-2035.

Судя описанию сложностей задачи — это как AlphaGo Fan vs AlphaGo Master. Звучит как космическая разница, а на деле — вопрос техники, пара лет, не более.

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

Я уверен, что до 2020 года не будет ничего, что сможет сравниться с людьми по навыку игры Dota 2 и похожие игры, потому что, имхо, это решение требует совершенно нового подхода, которое должно быть на порядок лучше(как минимум, для этой задачи)
А. До 2020го. То есть два года всего? Ну тогда, скорее всего, соглашусь.

Ничего «совершенно нового» тут не нужно, нужно просто время чтобы уже существующие схемы «довести до ума» и дать сети полное описание всей игры.

Это всё равно как утверждать, что между русскими и 100-клеточными шашками — море разницы. Для человека, наверное, да, а для робота — разница чисто количественная и очень небольшая.

Как и сказал JustRoo в доте было много ограничений. Добавлю, что на некоторые моменты модель натренировали специально (например блокинг крипов был "захардкожен", а не бот сам до него "додумался").


Про SC2 лучше процитировать ребят из DeepMind


Our initial investigations show that our agents perform well on these mini-games. But when it comes to the full game, even strong baseline agents, such as A3C, cannot win a single game against even the easiest built-in AI. For instance, the following video shows an early-stage training agent (left) which fails to keep its workers mining, a task that humans find trivial. After training (right), the agents perform more meaningful actions, but if they are to be competitive, we will need further breakthroughs in deep RL and related areas.
да, про SC2, тоже читал
Посмотрел разборы шахматных партий Alpha Zero…
Машинное обучение создало новую отрасль и прецендент
Соединение сильных сторон компьютера и человека…
«Alpha Zero играла сама с собой всего девять часов, но это были часы на тех ещё стероидах – более 5,000 тензорных процессоров, разработанных Google специально для машинного обучения. За это время она сыграла 44 миллиона партий – в несколько раз больше, чем все шахматные профессионалы в истории человечества»

Если запустить эту машину на год — два — то все дебюты окажутся проанализированны. И выведенны лучшие стратегии для игры
Уважаемые, не подскажите материальчик, чтобы создать простую самообучающуюся игру типа шашек самому, чтобы понять как это делается?
Игру или бота для игры? И сразу — с английским у тебя как? Если я правильно понял запрос, можешь начать вот отсюда github.com/openai/gym и вот отсюда kvfrans.com/simple-algoritms-for-solving-cartpole или погуглить Q-learning. Если неправильно понял запрос, поправляй.
Спасибо за подсказки, с английским и матаном норм, правда тема для меня новая, надо время чтобы вьехать
Окей, будут вопросы — пиши в личку или приходи на кружочки.
Sign up to leave a comment.

Articles