\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）的增强回路，不断迭代优化模型性能。
