В AlphaZero нужно ли хранить данные о состояниях терминала?
У меня вопрос об обучающих данных, используемых на этапе обновления / обратного распространения нейронной сети в AlphaZero.
Из статьи:
Данные для каждого временного шага $t$ хранится как ($s_t, \pi_t, z_t$) где $z_t = \pm r_T$ является победителем игры с точки зрения текущего игрока на шаге $t$. Параллельно (рисунок 1b) новые параметры сети$\Theta_i$ обучаются по данным ($s,\pi, z$) выбирается равномерно по всем временным шагам последней итерации (ов) самовоспроизведения
Что касается политики на время $t$ ($\pi_t$), Я понимал это как распределение вероятности выполнения некоторого действия, пропорционального количеству посещений каждого дочернего узла, то есть во время MCTS, учитывая некоторый родительский узел (состояние) во время $t$, если какой-то дочерний узел (последующее состояние) $a$ посещается $N_a$ раз и все дочерние узлы посещаются $\sum_b N_b$ раз, то вероятность $a$ (и соответствующий ему ход), который отбирается, - это $\frac{N_a}{\sum_b N_b}$, и это параметризует распределение $\pi_t$. Это правильно? Если это так, то для некоторого конечного состояния$T$, мы не можем параметризовать распределение, потому что у нас нет дочерних узлов (состояний) для посещения. Означает ли это, что мы не добавляем ($s_T, \pi_T, z_T$) к обучающим данным?
Кроме того, следующий вопрос относительно функции потерь:
$l = (z-v)^2 - \pi^T log\textbf{p} + c||\Theta||^2$
Я запутался в этом $\pi^T$обозначение. Я предполагаю, что это вектор действий, взятых из всех политик в$N$ Икс $(s_t, \pi_t, z_t)$мини-батч, но я не уверен. (PS$T$ используется в $\pi^T$ отличается от $T$используется для обозначения конечного состояния, если вы посмотрите на бумагу. Извините за путаницу, я не знаю, как написать два разных вида Т)
Ответы
Я не уверен на 100%, добавили ли они какие-либо данные для состояний конечной игры, но было бы разумно сделать выбор не включать данные для состояний конечной игры. Как вы правильно отметили, у нас нет каких-либо значимых целей для обновления заголовка политики в таких случаях, и на самом деле это не проблема, потому что мы также никогда не будем фактически использовать выходные данные политики в конечном состоянии игры. Для заголовка значения мы могли бы предоставить значимые цели для обновления, но, опять же, нам никогда бы не пришлось использовать такие выходные данные; если при поиске по дереву мы сталкиваемся с конечным игровым состоянием, мы просто создаем резервную копию истинного значения этого конечного игрового состояния вместо того, чтобы обращаться к сети для получения приближения функции значения.
Теоретически я мог представить себе некоторые случаи, когда обучение значения, стоящего перед конечными игровыми состояниями, может быть немного полезным, несмотря на то, что это не является строго необходимым; он мог бы сделать возможным обобщение на похожие игровые состояния, которые не являются терминальными (но близкими к терминальным), и ускорить их обучение. Например, если у вас есть игра, цель которой - завершить линию$5$ частей, тренируя голову значения на терминальных состояниях, где у вас фактически есть строка $5$ штук и полностью выиграли игру, может обобщить и ускорить обучение для аналогичных состояний игры, в которых вы, возможно, еще не $5$фигуры в линию, но очень близки к этой цели. Тем не менее, интуитивно я действительно не чувствую, что это принесет большую пользу (если таковая имеется), и мы, вероятно, также могли бы придумать случаи, когда это было бы вредно.
в $\pi^{\text{T}}$ обозначение $\pi$ - вектор (для любого произвольного временного шага, временной шаг здесь не указывается), содержащий дискретное распределение вероятностей по действиям (количество посещений MCTS, нормированное в распределение вероятностей), и $\text{T}$просто означает, что мы транспонировали этот вектор. Лично мне не нравятся обозначения, я предпочитаю что-то вроде$\pi^{\top}$ что более четко отличается от буквы $T$ или же $\text{T}$.
В любом случае, как только вы поймете, что для обозначения транспонирования, вы увидите, что $\pi^{\top}\log(\mathbf{p})$ представляет собой скалярное произведение двух векторов, которое в итоге оказывается одним скаляром.