3

我很难建立一个神经网络来将井字棋棋盘状态(最终或中间)分类为“X 胜”、“O 胜”或“平局”。

我将描述我目前的解决方案和结果。任何建议表示赞赏。

* 数据集 * 数据 集 = 958 种可能的终局游戏 + 958 种随机游戏 = 1916 种棋盘状态(随机游戏可能不完整,但都是合法的。即没有两个玩家同时获胜)。

训练集 = 数据集测试集的 1600 个随机样本 = 剩余 316 个案例

在我当前的伪随机开发场景中,数据集具有以下特征。训练集: - “X” 527 胜 - “O” 264 胜 - 809 场 测试集: - “X” 104 场 - “O” 56 场 - 156 场

* 调制 * 输入层:18 个输入神经元,每个神经元对应一个棋盘位置和玩家。因此,棋盘(B=blank):xxo ox B B o X 编码为:1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0

输出层:3 个输出神经元,分别对应每个结果(X 胜、O 胜、平)。

* 建筑学 *

基于:http ://www.cs.toronto.edu/~hinton/csc321/matlab/assignment2.tar.gz

1 Single Hidden Layer 隐藏层激活函数:Logistic 输出层激活函数:Softmax 误差函数:Cross-Entropy

* 结果 *

似乎没有任何参数组合能够达到 100% 的正确分类率。一些例子:

NHidden     LRate   InitW   MaxEpoch Epochs FMom    Errors  TestErrors
8           0,0025  0,01    10000   4500    0,8     0       7
16          0,0025  0,01    10000   2800    0,8     0       5
16          0,0025  0,1     5000    1000    0,8     0       4
16          0,0025  0,5     5000    5000    0,8     3       5
16          0,0025  0,25    5000    1000    0,8     0       5
16          0,005   0,25    5000    1000    0,9     10      5
16          0,005   0,25    5000    5000    0,8     15      5
16          0,0025  0,25    5000    1000    0,8     0       5
32          0,0025  0,25    5000    1500    0,8     0       5
32          0,0025  0,5     5000    600     0,9     0       5
8           0,0025  0,25    5000    3500    0,8     0       5

重要 - 如果您认为我可以改进以下任何一项: - 数据集特征(训练和测试用例的来源和数量)不是最好的。- 替代问题调制更合适(输入/输出神经元的编码) - 更好的网络架构(隐藏层数、激活/错误函数等)。

假设我目前在这方面的选择,即使不是最优的,也不应该妨碍系统具有 100% 的正确分类率,我想关注其他可能的问题。

换句话说,考虑到游戏的简单性,这个数据集/调制/架构应该做到这一点,因此,我在参数方面做错了什么?

我对 ANN 没有太多经验,我的主要问题如下:使用 16 个隐藏神经元,ANN 可以学习将每个隐藏单元与“某个玩家以某种方式获胜”相关联(3 个不同的行 + 3 个不同的列 + 2 对角线)* 2 名玩家

在此设置中,“最佳”权重集非常简单:每个隐藏单元具有来自 3 个输入单元(对应于玩家的行、列或对角线)的“更大”连接权重和“更大”连接权重到其中一个输出单元(对应于该玩家的“胜利”)。

如上表所示,无论我做什么,我都无法减少测试错误的数量。

任何建议表示赞赏。

4

1 回答 1

2

您所做的一切都是正确的,但您只是在这里尝试解决一个难题,即将井字游戏配置的一些示例推广到所有其他示例。

不幸的是,您使用的简单神经网络无法感知输入(邻域)的空间结构,也无法利用对称性。因此,为了获得完美的测试错误,您可以:

  • 增加数据集的大小以包含大多数(或所有)可能的配置——然后网络将能够简单地记住这些配置,如大多数设置中的零训练错误所示;

  • 选择一个不同的问题,其中有更多的结构可以概括;

  • 使用可以捕获对称性(例如通过权重共享)和/或输入的空间关系(例如不同的特征)的网络架构。卷积网络只是其中一个例子。

于 2012-08-07T13:27:03.940 回答