论文完成蓝图初步定义
This commit is contained in:
60
paper/sections/03_training.tex
Normal file
60
paper/sections/03_training.tex
Normal file
@@ -0,0 +1,60 @@
|
||||
\section{模型训练}
|
||||
为了训练一个强大的估值决策模型,我们采用蒙特卡洛树搜索(MCTS)生成高质量的训练数据,并设计一个轻量级的残差卷积网络(RNCNN)进行初步学习与迭代。
|
||||
|
||||
\subsection{蒙特卡洛树搜索策略}
|
||||
采用纯MCTS(Pure MCTS)为初始模型生成训练数据。MCTS的每次迭代包含四个核心步骤,以当前棋盘状态为根节点,不断扩展搜索树。
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{选择 (Selection)}: 从根节点开始,根据UCT(Upper 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)的增强回路,不断迭代优化模型性能。
|
||||
Reference in New Issue
Block a user