Files
deep2048/paper/sections/03_training.tex
2025-07-22 22:53:20 +08:00

61 lines
5.4 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\section{模型训练}
为了训练一个强大的估值决策模型我们采用蒙特卡洛树搜索MCTS生成高质量的训练数据并设计一个轻量级的残差卷积网络RNCNN进行初步学习与迭代。
\subsection{蒙特卡洛树搜索策略}
采用纯MCTSPure MCTS为初始模型生成训练数据。MCTS的每次迭代包含四个核心步骤以当前棋盘状态为根节点不断扩展搜索树。
\begin{itemize}
\item \textbf{选择 (Selection)}: 从根节点开始根据UCTUpper Confidence bounds applied to Trees公式递归选择子节点直到达到一个未完全扩展的叶子节点。UCT公式平衡了节点的探索Exploration与利用Exploitation
\[ \text{UCT} = \underset{i}{\arg\max} \left( \bar{v}_i + C \cdot \sqrt{\frac{\ln(N)}{n_i}} \right) \]
其中 $\bar{v}_i$ 是子节点 $i$ 的平均价值,$N$ 是父节点访问次数,$n_i$ 是子节点 $i$ 访问次数,$C$ 是探索常数。
\item \textbf{扩展 (Expansion)}: 当选择过程到达一个叶子节点 $L$ 时,如果该节点代表的局面不是终局,则为其创建一个或多个子节点,对应于从 $L$ 出发所有合法的移动。
\item \textbf{模拟 (Simulation)}: 从新扩展的子节点中选择一个开始进行模拟也称Rollout。在此阶段我们采用快速的随机策略例如在所有合法移动中随机选择一个持续进行游戏直到达到终局状态。终局的分数将作为本次模拟的价值。
\item \textbf{反向传播 (Backpropagation)}: 将模拟得到的终局分数 $v$ 从该叶子节点开始,沿着选择路径反向传播回根节点。路径上的每一个节点都会更新其访问次数 $n$ 和累积价值 $V$,并重新计算其平均价值 $\bar{v} = V/n$
\end{itemize}
\subsection{数据结构}
通过大量的MCTS模拟我们将叶子节点的信息转换为神经网络可学习的训练样本。每个样本包含
\begin{itemize}
\item 棋盘状态 $S$:一个 $H \times W$ 的矩阵,代表游戏局面。
\item 策略-价值对 $(\pi, v)$:其中 $\pi$ 是从状态 $S$ 出发的一个合法移动(例如:上、下、左、右),$v$ 是在该分支下通过后续模拟所能达到的最高分。
\end{itemize}
我们将 $(S, \pi)$ 作为键key当一次完整的MCTS模拟结束后解析所有扩展出的叶子节点。对于每个叶子节点 $(S, \pi)$,其价值 $v$ 等于它后续所有模拟游戏中的最高分。
\begin{itemize}
\item 如果一个键 $(S, \pi)$ 没有命中缓存,则写入 $(S, \pi) \rightarrow v$
\item 如果一个叶子节点的新分数大于缓存中的值,则更新 $(S, \pi) \rightarrow v$
\end{itemize}
在进行指定次数的MCTS模拟后导出所有缓存的 $(S, \pi) \rightarrow v$ 对,作为最终的训练数据集。
\subsection{残差卷积网络L0}
RNCNN\_L0 是一个极小的、用于快速推理和迭代的估值决策模型。其设计目标是在有限的计算资源下,学习到基本的局面评估能力。其结构定义如下:
\begin{itemize}
\item \textbf{输入层 (Input Layer)}:
棋盘状态 $S$(一个 $H \times W$ 的矩阵)首先进行特征化处理。我们将每个格子的值 $V$ 转换为 $C$ 个特征平面channel每个平面代表一个特定的瓦片值例如$V \rightarrow \log_2(V)$,然后进行独热编码)。输入张量的维度为 $(H, W, C)$
\item \textbf{卷积主干 (Convolutional Body)}:
输入张量首先通过一个卷积层,然后送入一个由 $N$ 个残差块Residual Block组成的序列。
\begin{itemize}
\item \textbf{初始卷积层}: 一个$3 \times 3$的卷积核输出64个特征图进行批量归一化Batch Normalization和ReLU激活。
\item \textbf{残差块}: 每个残差块包含两个卷积层。输入通过第一个 $3 \times 3$ 卷积层BN+ReLU再通过第二个 $3 \times 3$ 卷积层BN然后将结果与块的输入相加残差连接最后通过一个ReLU激活函数。所有卷积层保持64个通道数。
\end{itemize}
\item \textbf{输出头 (Output Head)}:
残差主干的输出特征图被送入一个最终的输出模块,该模块直接预测四个动作的价值。
\begin{itemize}
\item 一个 $1 \times 1$ 的卷积层将通道数从64降至16进行BN和ReLU激活。
\item 将特征图展平Flatten成一维向量。
\item 一个全连接层Fully Connected Layer将向量映射到4个输出神经元分别对应四个移动方向上、下、左、右的预测价值。
\end{itemize}
\end{itemize}
模型的损失函数采用均方误差Mean Squared Error计算网络预测的四通道价值与MCTS生成数据中对应动作的价值 $v$ 之间的差距。
\subsection{模型初始化}
我们计划在3$\times$3的小棋盘上依靠纯蒙特卡洛树的快速搜索能力生成大量的初始数据。小棋盘状态空间较小MCTS能更快地收敛到有意义的策略为模型提供高质量的初始训练样本。
\subsection{L0迭代}
在纯蒙特卡洛生成的数据上学习到的大量初始数据将提供给RNCNN\_L0进行监督学习训练。训练完成的L0模型可以反过来指导MCTS中的选择和模拟阶段形成一个自我博弈self-play的增强回路不断迭代优化模型性能。