感知器学习算法:不同训练方法的不同精度

人工智能 分类 感知器
2021-11-16 21:08:25

所以,我的问题有点理论化。我一直在尝试实现一个基于感知器的分类器,根据类别输出 1 和 0。我使用了 2 种方法:example by Example learning methodBatch learning method我还定义了另一种根据公式测量准确性的方法number_of_samples_classified_correctly/total_number_of_samples(我不确定这是否应该是准确性的正确定义,欢迎您提出更好的测量方法)。现在我面临一些困惑。首先,逐例学习的准确率与批量学习相差 2%。此外,在这两种情况下实现的最佳精度取决于斜率。那么错误到底在哪里?(批量学习算法= error*input_vector(其中错误可以是 1,-1 或 0)对所有输入向量求和,然后添加到权重)。

对于初始斜率[1,-1],通过示例学习给出 88% 的准确率

对于初始斜率[1,-1],批学习的准确率为 88%

对于初始斜率[1,1],通过示例学习给出 84% 的准确率

对于初始斜率[1,1],批学习的准确率为 88%

  • 对于初始斜率[1,-1],通过示例学习给出 88% 的准确率
  • 对于初始斜率[1,-1],批学习的准确率为 88%
  • 对于初始斜率[1,1],通过示例学习给出 84% 的准确率
  • 对于初始斜率[1,1],批学习的准确率为 86%
2个回答

简单来说:

重新训练你的数据集。我相信在您获得较低准确度分数的地方,您的模型尚未收敛到最终状态。多次复制您的数据集并创建一个更大的数据集,然后用它训练您的模型。

详细:

number_of_samples_classified_correctly/total_number_of_samples(我不确定这应该是准确度的正确定义,欢迎您提出更好的衡量标准)

这是一个有效的准确度指标。事实上,如果该值是acc,则1-acc称为误分类错误所以你的指标很好,除非你有一些类不平衡,你需要使用其他指标,比如Cohen's Kappa score

逐例学习的准确率与批量学习相差 2%。此外,在这两种情况下实现的最佳精度取决于斜率。

我坚信这两种奇怪的结果都会发生,因为您的实例(即示例)数量很少,或者假设您的学习率很小。如您所知,感知器算法通过增量学习规则纠正决策超平面的权重:它读取每个实例,计算误差(在二进制分类的情况下{-1,0,1})并通过以下方式更新权重c.x.E

  • c 是学习常数/速率/步长
  • x 是数据实例
  • E 是误差

因此,权重(或斜率)每次都会改变一点。无法保证您的模型在所有实例都提供给它之后达到其最终状态。因为当您开始使用不同的初始权重进行训练,或更改为模型提供的实例顺序时,距离或离开或移动到最终状态的速度会发生变化。所以正如我上面提到的,重新训练你的模型并让它收敛到最终状态增加你的学习步骤(学习率)。我相信上面提到的所有 4 个精度都将是相同的;我的意思是,你不仅应该对不同的初始权重使用相同的模型,而且对于批量和在线训练也应该使用相同的模型。

请用新的发现更新你的帖子,如果这些是错误的,请质疑我的说法。

再运行代码几次后,我认为问题在于错误的离散性。在批量学习中,我们根据输入和输入将误差确定为 [0, 1, -1],而在测量准确性时,我们没有考虑误差有多大,即线是否对 2 个类别进行分类以非常小的边距(仅对其进行分类)或以良好的边距对其进行分类(舒适地对其进行分类)..两者都会给出相同的错误,因为我们没有考虑点到线的距离。此外,在选择初始权重时,我们正在选择误差与权重函数(不连续)中的一个点,如果我们选择的权重不合适,分类器权重要么陷入局部最小值,要么花费大量时间才能达到最佳权重(分类器权重达到正确值的可能性很小,之后很容易达到全局最小值) . 这可以通过以下事实得到验证:在选择合适的权重时,我们在极少数时期内获得了可能的最佳精度,但在选择不同的权重时,它并没有达到最佳精度,但在大量时期后接近它。

至于逐例学习方法,在这种类型的训练中,初始权重将确定分类器权重陷入的局部最小值,即使有大量的时期也无法摆脱。

我认为解决问题的两种方法是使用 Delta 规则或通过强化学习(尽管我不确定它是否可以应用于此类离散误差函数),即使算法没有得到,也可以看到通过朝一个方向移动立即获得收益,但最终获得更多收益(因此将能够摆脱局部最小值),即开发与探索。

欢迎任何进一步的见解,建议或更正。