Как AlphaZero учится оценивать позицию, которую он никогда не видел?

12

Вслед за ответами на:

Понимание AlphaZero

Мой вопрос заключается в том, как нейронная сеть «учится», что делать в позиции, с которой она не сталкивалась. То, что фактический AZ выполняет MCTS, используя веса смещения + из обученной нейронной сети, просто отодвигает его на шаг назад к тому, как нейронная сеть вычисляет эти значения. Если это происходило посредством случайной самовоспроизведения, без какого-либо человеческого знания, то как оно решает, как взвесить позицию, которую никогда не видела?

Рой Кочела
источник

Ответы:

6

Функция оценки шахматного движка, созданная в виде нейронной сети или явного кода, всегда способна присвоить значение любой позиции на доске. Если вы дадите ему позицию на доске, даже абсурдную, которая никогда не встречается в игре, она сможет выпустить число, показывающее, насколько это выгодно тому или иному игроку. Поскольку количество позиций на доске в шахматах неуправляемо гигантское, обучение может происходить только на бесконечно малом образце дерева игры. Двигатель не просто вызывает ранее рассчитанные значения позиций на плате, но выполняет вычисления на основе расположения частей. Для примера, отличного от нейронной сети, частью оценки шахматного движка может быть сложение стоимости каждой фигуры на ее стороне и вычитание общей стоимости фигур противника. Затем,

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

Из статьи об AlphaZero (стр. 3):

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

[математические символы удалены из цитаты]

Таким образом, во время обучения AlphaZero сыграла игру против себя. Когда игра окончена, результат игры и точность ее предсказаний о том, как будет проходить игра, использовались для настройки нейронной сети, чтобы она была более точной во время следующей игры. AlphaZero не ведет учет каждой позиции, которую он видел, но настраивается так, чтобы он мог более точно оценить любую доску, которую он увидит в будущем.

Марк Н
источник
Я полностью понимаю ваше объяснение на алгоритмическом уровне, но я все еще поражен тем, что это работает. Я бы подумал, что ранние игры будут настолько случайными, что они не будут иметь ценности для обучения. Кажется невозможным оценить результат хода на этом этапе, кроме как разыграть его, чтобы поставить мат, потому что это единственное, о чем вам сказали. Но этот мат произойдет только после того, как произойдет большое количество других по существу случайных вещей. У меня такое ощущение, что значимых данных просто недостаточно для того, чтобы делать какие-либо выводы. Почему я не прав?
Филипп Роу
@PhilipRoe Вы правы, каждая игра предоставляет только немного информации. Я на самом деле написал свой собственный шахматный движок, который учится по эволюционному алгоритму. Случайно измененные копии движка воспроизводят друг друга; проигравшие удаляются, а победители производят больше модифицированных копий. Обычно требуется от 10 000 до 20 000 игр, чтобы определить правильный порядок значений фигур (ферзь, ладья, слон / рыцарь, пешка). AlphaZero потребовалось 44 миллиона игр, чтобы достичь его мастерства (таблица на странице 15 связанной статьи).
Марк Н
Спасибо за ответ! Но я все еще поражен. Существует огромное пространство возможных позиций для оценки. Но есть также огромное пространство возможных вопросов. Антропоморфно я представляю себя с нулевым предварительным знанием, кроме правил, и огромной базой данных игр, в которые играют с почти невообразимым уровнем некомпетентности (хотя я не думаю, что все вспомнят) В какой момент это происходит со мной "Эй, может быть, я следует считать куски "Тогда как долго, прежде чем считать кусочки, кажется хорошей идеей?
Филипп Роу
1
Мне трудно представить, даже если были даны некоторые сильные намеки на то, «что представляет собой хороший вопрос?». Но даже без этого меня впечатлило, что иерархия фигур может быть установлена ​​в 20 000 игр. Поэтому мне очень трудно принять, что табула - это действительно раса. Некоторая минимальная инструкция о процессе генерации и пересмотра ваших правил (сколько, как часто?) Все еще кажется важной.
Филипп Роу
1
@PhilipRoe В моей программе я говорю движку подсчитывать куски, но не столько, сколько стоит каждый кусочек. Итак, я говорю двигателю, на что смотреть, а не как взвешивать то, что он видит. AlphaZero - это гораздо больше Tabula Rasa. Если вам интересно: github.com/MarkZH/Genetic_Chess
Марк Х