【问题标题】:Single-layer Perceptron单层感知器
【发布时间】:2012-04-30 14:32:02
【问题描述】:

我正在构建一个单层感知器,它具有相当长的特征向量 (30-200k),全部标准化。

假设我有 30k 个特征,这些特征在预测一个类时有些用处,但随后又添加了 100 个非常好的预测特征。预测的准确性只上升了微不足道的数量。但是,如果我手动增加 100 个优秀特征的权重(比如增加 5 倍),准确率会提高几个百分点。

我的印象是,训练过程的性​​质应该自然地赋予更好的特征更高的权重。然而,最好的功能似乎被更差的功能“淹没”了。

我尝试用更多的迭代来运行它,但这没有帮助。

如何以相当简单的方式使算法适应更好的权重特征?此外,一种相当快速的方式;如果我的功能较少,那么只运行算法会很容易,一次只留下一个,但对于 30k 来说这并不可行。

【问题讨论】:

  • 我不是专家,但它的价值:我认为看细节很重要(i)确切的训练算法,(ii)训练示例的数量,(iii ) 示例的质量,(iv) 诸如所需类的线性可分性之类的问题。
  • 想告诉我们您的训练算法吗?
  • 找到最大化权重的类[class] * feature_vector。如果它是正确的类,则什么也不做。如果不正确,将 feature[i] 添加到所有 weight[realL_class][i] 并从所有 weight[predicted_class][i] 中减去 feature[i]。重复 x 次。完成后 x 的平均权重。

标签: algorithm perceptron


【解决方案1】:

我在实现基于感知器的网络方面的经验是,学习一些东西需要大量的迭代。我相信我使用每个样本大约 1k 次来学习 xor 函数(当只有 4 个输入时)。因此,如果您有 200k 输入,则需要大量样本和大量时间来训练您的网络。

我有几个建议给你:

  • 尝试减小输入的大小(尝试将多个输入聚合为一个或尝试删除一次冗余)。

  • 尝试多次使用每个样本。正如我所说,即使是一个简单的函数也可能需要大量的迭代才能学习

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2015-08-14
    • 2014-12-06
    • 2015-08-05
    • 2014-11-04
    • 2023-03-11
    • 2023-03-03
    • 2016-11-11
    • 1970-01-01
    相关资源
    最近更新 更多