Machine learning 为什么模型不能学习这个填充整数的游戏

Machine learning 为什么模型不能学习这个填充整数的游戏,machine-learning,scikit-learn,artificial-intelligence,random-forest,Machine Learning,Scikit Learn,Artificial Intelligence,Random Forest,我的问题:为什么我的模型没有学会玩这个游戏,从一个部分填充的数组生成一个从1到5的唯一元素数组 === 我正在尝试培训一名模型来执行此任务: 给定一个由5个元素组成的固定数组,每个元素最多由(1、2、3、4、5)中的一个元素和一个或多个(0)组成,将0替换为适当的值,以便最终数组正好有一个元素(1、2、3、4、5)。 所以,这里是它应该如何发挥: [1,2,3,4,0]=>[1,2,3,4,5] [4,3,0,5,1]=>[4,3,2,5,1] [0,3,5,4,0]=>[2,3,5,4,1]

我的问题:为什么我的模型没有学会玩这个游戏,从一个部分填充的数组生成一个从1到5的唯一元素数组

===

我正在尝试培训一名模型来执行此任务:

给定一个由5个元素组成的固定数组,每个元素最多由(1、2、3、4、5)中的一个元素和一个或多个(0)组成,将0替换为适当的值,以便最终数组正好有一个元素(1、2、3、4、5)。

所以,这里是它应该如何发挥:

  • [1,2,3,4,0]=>[1,2,3,4,5]
  • [4,3,0,5,1]=>[4,3,2,5,1]
  • [0,3,5,4,0]=>[2,3,5,4,1]或[1,3,5,4,2]
这不是一个复杂的游戏(在人类的意义上),但我想看看模型是否能够识别规则(用1到5替换0,这样最终的数组只有(1,2,3,4,5)中的一个元素)

我这样做的方式是:

  • 生成N个组合配置示例,其中[1,2,3,4,5]元素作为答案,并随机将其中一些元素替换为0
  • 例如,一个训练示例是[(0,3,5,4,0),(2,3,5,4,1)]
  • 可以有多个相同的输入映射到不同的输出,即[(0,3,5,4,0),(2,3,5,4,1)]和[(0,3,5,4,0),(1,3,5,4,2)]都可以作为两个单独的训练实例出现
  • 使用Scikit Learn中的RandomForestClassifier将训练数据集分离10倍、洗牌和训练
  • 正确的输出定义为最终配置数组正好有(1、2、3、4、5)中的一个元素。所以(2,4,4,5,1)是无效的
===

令人惊讶的是,使用1000个、10000个、50000个甚至100000个训练示例仍然会导致模型只获得约70%的测试用例正确-这意味着模型没有学会如何使用越来越多的训练示例玩游戏

我在想的一件事是,RandomForestClassifier不用于这种类型的问题,称为结构化机器学习,其中输出不是单个类别或实值输出,而是输出向量

更多问题:

  • 为什么模型没有学习到这一点 游戏
  • 这是正确的建模方法吗 这个问题
  • 数据还不够吗 学习这个任务?但是增加 1000到100000之间的数据不适用 看起来很有帮助
谢谢大家!

我确实认为这只是一个思维练习,而不是实际问题,因为显然,在这样的任务中,基于集合的解决方案比任何ML技术都要好

简而言之-因为分类器/回归器不适用于组合优化。您的问题有非常强的约束-只有极少数值是“正确的”和“可观察的”,您查找的是输出的属性,而不是值。这些不是分类或回归的设置

你能做什么

  • 在这种受限的情况下,您必须让您的方法了解正在发生的事情。显示一个状态空间。这是简单状态空间AI的一个例子,而不是ML本身——而是任何亚优化,如爬山、模拟退火、ga等
  • 看看一般的游戏玩法,这在某种程度上是相似的,但重要的区别是你提供了一套规则
  • 看看像神经图灵机这样的东西,这些是试图学习如何操作数据而不是分类/回归的顺序方法
一般来说,当人们试图学习机器学习时,这是一个非常常见的错误概念。并非每个问题都适合“仅仅应用”已知的ML技术。“存在”的大多数问题都需要研究人员的大量投入才能发挥ML的力量。

我确实认为这只是一个思维练习,而不是实际问题,因为显然,在这类任务中,基于集合的解决方案比任何ML技术都要好

简而言之-因为分类器/回归器不适用于组合优化。您的问题有非常强的约束-只有极少数值是“正确的”和“可观察的”,您查找的是输出的属性,而不是值。这些不是分类或回归的设置

你能做什么

  • 在这种受限的情况下,您必须让您的方法了解正在发生的事情。显示一个状态空间。这是简单状态空间AI的一个例子,而不是ML本身——而是任何亚优化,如爬山、模拟退火、ga等
  • 看看一般的游戏玩法,这在某种程度上是相似的,但重要的区别是你提供了一套规则
  • 看看像神经图灵机这样的东西,这些是试图学习如何操作数据而不是分类/回归的顺序方法
一般来说,当人们试图学习机器学习时,这是一个非常常见的错误概念。并非每个问题都适合“仅仅应用”已知的ML技术。“外面”的大多数问题都需要研究人员的大量投入才能发挥ML的力量。

非常好,但我想我应该补充一点直觉,解释一下随机森林在这种情况下失败的原因

你必须记住,机器学习并不是向计算机传授智能的神奇方式;这只是一种将特定模型与数据拟合并使用该模型进行归纳的方法。正如那句老话所说,“所有的模型都是错误的,但有些是有用的”。你偶然发现了一个例子,模型和往常一样是错误的,但也碰巧是无用的