【问题标题】:How to fit a classifier with high accuracy on the training set with low features?如何在低特征的训练集上拟合出高精度的分类器?
【发布时间】:2016-09-03 01:21:57
【问题描述】:

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

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

图片如下:

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

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

请帮我提高准确性。

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

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

【问题讨论】:

    标签: machine-learning classification octave supervised-learning


    【解决方案1】:

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

    问题中缺少但很重要的一般事项

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

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

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

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

    【讨论】:

    • 回答您的问题:输出仅为二进制(1 或 2)。我的意思是整个训练集的 50 次迭代。我试过400,它是一样的。我使用了 sigmoid 激活。所以我的尝试对于学习算法来说太难了。我现在明白了,谢谢。我首先以为我做错了什么。感谢您的澄清。我这样做是因为我想创建描述图像的方程,这样即使它不是完美的方程,我也可以重新创建它,但这甚至不接近。
    猜你喜欢
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 2023-03-17
    • 2017-11-19
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多