【发布时间】:2017-03-11 21:02:40
【问题描述】:
我正在尝试一种多类分类方法来解决井字游戏问题。 我正在使用回归分类器来解决单步井字游戏。为简单起见,计算机或分类器将始终是第二个玩家。我正在用这样的数据集训练分类器。这是每次移动的预期输出和对应的特征向量。
y - X
2 - 0 0 0 | 0 X 0 | 0 0 0 # pay for 'O' at 2th location
1 - 0 0 O | 0 X 0 | 0 X 0 # pay for 'O' at 1st location
...
我已将每个特征“O”或“X”分配为二进制 3 位编码。
0 => 0 0 1
O => 0 1 0
X => 1 0 0
我正在尝试使用 100 行数据集,它给了我 72% 的准确率!但似乎没有随着更多数据而改善。 还是应该以不同的方式表示特征向量?
编辑: 澄清上述示例中的 y 值。 第一个例子。棋局状态:人类迈出的第一步。
0 0 0
0 X 0
0 0 0
现在 2 ==> 一维数组的第二个索引。这将是一个很好的举措。 同样,下一个示例,1 表示 => 在棋盘的 1D 表示中的第 1 位。
【问题讨论】:
-
这很有趣!您能否阐明为什么 y=2 在您的第一个预期输出中以及为什么 y=1 在您的第二个预期输出中?
-
用监督学习解决游戏是一种悖论。求解通常意味着完美游戏,获得完美游戏需要大量数据(以及大多数游戏的非线性机器学习工具;忽略非线性预处理)。您将需要生成许多示例,并且每个经过训练的回归器都会比简单的查找表更糟糕(TTT 没有内存问题)。另外:样本生成和学习没有任何联系。如果没有很多(高质量)数据,这种设计就不能做很多(几乎没有说)。通常,人们会通过 Q-learning 之类的强化学习来解决这个问题。
-
@sascha 感谢您的知识。我知道我目前的方法并不是很有希望。神经网络呢?与其使用专门的算法,不如尝试模仿我们大脑学习玩游戏的方式的模型?
-
是的,我希望如果您将输出表示从 0-9 转换为 one-hot-encoding,您可能会得到更好的结果。
标签: machine-learning