LeelaChess прогрессирует

Mar 17, 2019 22:58

Между прочим, "народная" Альфа-Зеро, называемая ЛилаЧесс, доросла до уровня топ-движков, и уже играет с ними на равных и выигрывает (а до этого заняла второе место в чемпионате мира среди движков после СтокФиша ( Read more... )

deep learning, chess

Leave a comment

ivanov_petrov March 19 2019, 11:38:36 UTC
Я с темой не знаком. Подскажите6 я эти шахматно-сетевые ИИ могут играть в долю силы, как это делается в программах для новичков - ну там вчетверть силы, вполовину и пр.? Чтобы новичку было интересно. Если могут - как это достигается, там же вроде самообучение на полную и нет никакого регулирвоания? Если не могут, это занятно.

Reply

akor168 March 19 2019, 14:16:06 UTC
Это интересный вопрос. Теоретически, это может быть максимально настраиваемо. Но проблема в том, что это надо либо закладывать изначально в процесс обучения, и если этого не сделано, то ее придется учить заново, иначе заложить например чтобы она училась не только выигрывать оптимально сильным ходами, но и поддаваться(если попросят), или делать объективно не лучший ход, но наиболее выигрышный именно против этого соперника(например, жертва некорректна, но слабый игрок не найдет опровержение) . Говоря откровенно одна из моих идей, что таким образом можно даже попробовать натренировать программу, которая одновременно учиться тому как учить людей своему стилю игры(например генерируя признаки позиции которые людям не знают ( ... )

Reply

ivanov_petrov March 19 2019, 16:11:40 UTC
Спасибо, так я и думал. Отдельным обучением с другими параметрами.

Reply

akor168 March 19 2019, 16:29:03 UTC
С другой ЦЕЛЕВОЙ функцией. То есть мы учим не просто выигрывать, а например выигрывать максимально издевательски, или максимально зрелищно, или вообще "кандибобриком". Этого еще никто не делал, поскольку пока все хотят просто научить играть на максимум, но из описания метода ясно, что можно пробовать воспитывать самые разные программы. Но для этого надо с начала обучения задать цель программе - ЧЕМУ она должна научиться.

Reply

akor168 March 21 2019, 13:26:06 UTC
Немного уточню. У текущей нейронки ЛилаЧесс есть параметр с помощью которого ее можно ослабить: а именно выбирать просто самый вероятно-выигрышный ход в данной позиции без дальнейшего пересчета нодов(других позиций). В этом варианте программа играет в среднем на уровне мастера спорта у людей рейтинг Эло 2300, при этом он может позиционно обыграть международного мастера(2600), но и зевнуть в один ход тактику разряднику(1900). Так вот, варьируя этот параметр, в принципе можно получать и промежуточные версии игры(от 2300 до 3500), но все равно, слишком слабо не получится. Впрочем, даже очень сильные версии Лилы пока еще делают зевки(вплоть до потери ферзя или получении мата своему королю), и неуверенно чувствуют себя в счетных позициях(то есть там где нужен расчет конкретных вариантов).

Reply

cass1an March 25 2019, 09:38:16 UTC
Надо точнее специфицировать "долю силы". В принципе если есть хорошо обученная функция оценки ходов (именно ее проблемно обучать), можно модифицировать целевую функцию - просто всегда заменять ход с наивысшей оценкой другим ходом, наиболее близким к заданной доле этой оценки (еще надо бы эффективно считать эту долю, но ничего невозможного). То есть движок знает, как действовать лучше всего, но запрещает себе так действовать и считает продолжения с этим ограничением.

Reply

akor168 March 25 2019, 09:45:12 UTC
Ну в принципе да, можно специально изредка(или не очень изредка) делать плохой ход. Так что можно сказать если очень надо, то таки можно ухудшить до любого уровня.

Reply

cass1an March 25 2019, 19:06:49 UTC
Нет, делать намеренно плохой ход это как раз как-то некрасиво. Ну что это такое, если гроссмейстер берет и зевает ладью просто потому что у него счетчик включился. Но обычно при оценке ходов используется оптимальное доигрывание в самоигре и если его подпилить, можно совсем немного подкрутить оценку игры без сильных скачков силы. Чем-то похоже на так называемый graceful degradation.

Reply

ivanov_petrov March 25 2019, 10:19:08 UTC
Боюсь, это будет ухудшение неравномерное и в каждом случае разной силы (ухудшенной силы). Посмотрите, можт быть, вы согласитесь: одна задача - наилучшим образом выигрывать в шахматы. Другая задача - играть с человеком для разных подзадач (чтобы его учить, чтобы ему нравилось и т.п.).

Reply

akor168 March 25 2019, 10:42:26 UTC
Я подумал, что можно сделать надстройку контролируемого ухудшения даже на основе сети, которая тренировалась на выигрыш. Там хитрость в том, что там каждый ход имеет свою вероятностную оценку к какому он приводит результату, потому можно контролировать насколько слабее ухудшенный ход. Грубо говоря, если лучший ход в позиции(согласно субъективной оценки нейросети) ведет в выигрышу в 90% случаях, а второй по силе к 80%, то делая всегда второй, движок играет субоптимально, но с вполне контролируемым падением силы от своего максимума. Если играть надо совсем плохо, то например выбираем ход, который ведет к выигрышу например с вероятностью меньше 50%. Другой вопрос, что надо переписывать модуль процедуры выбора хода, но это не должно быть сильно сложнее чем ухудшения стандартных, переборных движков. До роботов из "Незнайка в солнечном городе" конечно далековато - там надо наверное таки учить специально.

Reply

ivanov_petrov March 27 2019, 11:45:00 UTC
Вы исходите из предположения, что оптимальная игра на быстрейшую победу и игра "обучающая" или "интересная" - находятся в простой зависимости - которую можно выразить в долях ослабления выигрышной стратегии. Мне кажется, это не столь очевидно.

Reply

akor168 March 27 2019, 11:52:50 UTC
Я тоже думаю, что это неочевидно, и потому-то уверен, что по уму это надо разрабатывать с нуля. Подкрутка по силе существующих движков возможна до некоторой степени, но насколько игра против подкрученного движка будет интересна, абсолютно не факт. Сверхзадача шахматного движка, с которыми играть интереснее чем с другими людьми и при этом спрогрессировать до своего максимума, точно не решена. Именно потому, что методы ограничения силы это костыли.

Reply

cass1an March 25 2019, 19:02:18 UTC
В моей формулировке сила как раз настолько равномерно ухудшена, насколько возможно. Если требуется играть в 0.8 силы, то есть максимум в 1 силы (то есть может быть на самом деле есть и лучше ход, но мы до него не дотянулись), есть субоптимальное действие в 0.6, между этими крайностями и идет поиск хода, близкого к 0.8. Такой алгоритм не будет играть идеально всегда, кроме пары ходов, подставляющих его под мат, он будет играть равномерно сильно с шумом вокруг заданного среднего (если есть только ходы в 1 и 0.59 силы - он выберет 1, хотя обычно возможных похожих ходов довольно много). Тем более шум можно скосить (skew ( ... )

Reply


Leave a comment

Up