1

我在机器学习、模式识别、数据挖掘等以及它们的基础理论和系统方面没有太多经验。

我想开发一个人工模型,模拟人类在给定的数独游戏中移动所需的时间。

因此,作为机器学习过程的输出,我正在寻找一个模型,该模型可以预测目标人类在给定的数独情况下采取行动所需的时间。

相同的输入并不总是映射到相同的结果。人类在相同情况下采取行动需要不同的时间,但我的假设是由此产生的概率分布存在趋势。(我有根据的猜测是这很正常。)

我对影响分布的因素(如#empty slot)有一些想法,但最好让系统来找出这些模式。请注意,我对模式不感兴趣,只对模型感兴趣。

我可以通过运行数独游戏并测量移动所需的时间来轻松生成样本和测试数据。

您建议为此使用哪种学习算法?

我在考虑神经网络,但我不确定它们是否具有为相同输入提供加权随机结果的理想属性。

4

3 回答 3

1

如果我理解正确,您有一个长度为 81 的输入向量,如果填充正方形,则该向量包含 1,否则为 0。您想学习一个函数,该函数返回一个概率分布,该分布模拟人类对该棋盘位置的响应时间。

我的第一反应是这是一个回归问题,您应该尝试直接线性回归。这不会为您提供响应时间的分布,而是单个“最佳猜测”响应时间。

我不清楚为什么要对响应时间的分布进行建模。但是,如果您真的想要输出分布,那么听起来您想查看贝叶斯方法。我不是贝叶斯推理方面的专家,所以在这里我无法为您提供更多帮助。

但是,我真的不认为您的方法会奏效,因为我同意您对诸如空槽数量很重要等功能的直觉。还有其他明显的特征,例如每行/列的空槽数可能很重要。将这些特征明确地放在你的表示中可能比期望学习算法自己推断出类似的东西要成功得多。

于 2009-11-28T11:20:52.417 回答
0

蒙特卡罗方法似乎在这里可以很好地工作,但需要一堆月球大小的解决方案才能真正做到这一点。它不会给你每人的时间,只是平均时间。

我对它的理解是,虽然它很脆弱,但你有一个数据库,其中包含一个棋盘位置以及人类采取下一步行动所花费的时间。至少你有一个大多数动作的起点。即使它不在数据库中,您也可以开始计算基于某种算法进行移动需要多长时间。虽然我知道你已经指定你希望机器学习来做到这一点,但可能值得将问题分割成更小的东西然后再构建它。

于 2009-11-27T19:13:47.143 回答
0

如果您对影响函数的因素(空单元格的数量等)有一些猜测,请尝试在特征向量上训练分类器,而不是在 81 个单元格向量(0/1 或 0..9,不对我的论点来说真的很重要)。

我认为您的主张:

我们不必知道底层模式,学习系统中的“训练模式”会自动在其中编码这些有时非常微妙和微妙的模式——这是它们的强大力量之一

是错的。您必须为网络提供正确的域。例如,当试图检测图像中的对象时,在像素域中工作是没有意义的。如果你首先运行一些特征检测来检测边缘、角落等,你只会得到结果。理论上,有足够的非线性(在 NN 中 - 网络中足够多的层)它可以检测到这些东西,但实际上,我有从来没有见过这样的工作,没有给分类器提供正确的功能。

我在考虑神经网络,但我不确定它们是否具有为相同输入提供加权随机结果的理想属性。

您只是想学习从 2^81 或 10^81(或我建议的更小的特征空间)到 R(0 到 Inf 之间的响应时间)或某种离散化的函数。所以 NN 和其他分类器可以做到这一点。

于 2009-12-30T09:38:47.670 回答