如何在低特征的训练集上拟合高精度的分类器?

How to fit a classifier with high accuracy on the training set with low features?

我在 (0, 1] 范围内输入 (r,c) 作为图像像素的坐标及其颜色 1 或 2。

我有大约 6,400 像素。 我尝试拟合 X=(r,c) 和 y=color 失败了,准确度不会高于 70%。

图片如下:

第一个是实际图像,第二个是我用来训练的图像,它只有两种颜色。最后一张是神经网络通过约 500 个权重训练和 50 次迭代生成的图像。输入层为 2,一个隐藏层大小为 100,输出层为 2。(对于像这样的二进制 classification,我可能只需要一个输出层,但我只是准备 multi-class class化)

classifier 无法拟合训练集,这是为什么?我尝试生成这两个特征的高多项式项,但没有帮助。我尝试在图片上使用高斯核和随机 20-100 个地标来添加更多特征,也得到了类似的输出。我尝试使用逻辑回归,没有帮助。

请帮助我提高准确性。

输入如下:input.txt (you can load it into Octave the variable is coordinate (r,c features) and idx (color)

您可以先尝试绘制它以确保您理解输入,然后尝试对其进行训练并告诉我您是否获得了更好的结果。

您的问题难以建模。您正在尝试将函数从 R^2 拟合到 R,这有很多复杂性 - 很多 "spikes",很多不连续的区域(与其余部分完全分开的像素)。这不是一个简单的问题,也不是一个有用的问题。为了使您的网络过拟合这样的设置,您将需要 大量 个隐藏单元。那么,有哪些选择呢?

问题中遗漏的重要内容

  1. 如果您通过交叉熵成本(对数似然)拟合您的网络,您的输出变量应该是 {0, 1},您应该将其用于分类。
  2. 50 次迭代(如果您谈论的是一些小批量迭代)是小的数量级,除非您指的是 50 次迭代(整个训练集的迭代)。

可能需要完成的实际事情(至少以下一项):

  1. 我假设您正在使用 ReLU 激活(或 Tanh,很难说看输出)- 您可以改为使用 RBF 激活,并将隐藏神经元的数量增加到 ~5000,
  2. 如果您不想使用 RBF,那么您将需要 1-2 个额外的隐藏层来适应这种复杂性的功能。尝试安装 100-100-100 类型的架构。
  3. 如果上述方法失败 - 增加隐藏单元的数量,这就是你所需要的 - 足够的容量。

一般来说:神经网络不是为处理低维数据集而设计的。这是来自网络的很好的示例,您可以学习 pix-pos 到颜色的映射,但它完全是人为的,似乎实际上损害了人们的直觉。