人工神经网络(ANNs)和支持向量机(SVMs)是两种流行的监督机器学习和分类策略。通常不清楚哪种方法对特定项目更好,我确信答案总是“看情况而定”。通常,两者的组合,再加上贝叶斯分类,会被使用。
关于ANN与SVM的比较,Stack Overflow上已经有以下问题被提问过:
在这个问题中,我想知道具体来说,ANN(特别是多层感知器)的哪些方面可能使其比SVM更受欢迎?我问这个的原因是因为回答相反的问题很容易:支持向量机通常优于ANNs,因为它们避免了ANNs的两个主要弱点:
(1)ANNs经常收敛于局部最小值而不是全局最小值,这意味着它们有时本质上是“错过了大局”(或因小失大)。
(2)如果训练时间过长,ANNs经常会过拟合,这意味着对于任何给定的模式,ANN可能会开始将噪声视为模式的一部分。
SVMs不会遭受这两个问题中的任何一个。然而,并不明显SVMs旨在完全替代ANNs。那么,ANN相对于SVM有什么具体的优势,可能使其适用于某些情况?我已经列出了SVM相对于ANN的具体优势,现在我想看到ANN的优势列表(如果有的话)。
回答:
从您提供的例子来看,我假设您所说的ANNs是指多层前馈网络(简称FF网),例如多层感知器,因为它们与SVMs直接竞争。
这些模型相对于SVMs的一个具体优势是它们的尺寸是固定的:它们是参数化模型,而SVMs是非参数化的。也就是说,在ANN中,您有一组隐藏层,大小为h1到hn,取决于特征的数量,再加上偏置参数,这些构成了您的模型。相比之下,SVM(至少是核化的SVM)由一组从训练集中选出的支持向量组成,每个向量都有一个权重。在最坏的情况下,支持向量的数量恰好等于训练样本的数量(虽然这主要发生在小训练集或退化情况下),并且其模型尺寸通常是线性增长的。在自然语言处理中,具有数万个支持向量,每个向量具有数十万个特征的SVM分类器并不罕见。
此外,FF网的在线训练与在线SVM拟合相比非常简单,并且预测速度可能快得多。
以上所有内容都适用于核化SVM的一般情况。线性SVM是一个特例,因为它们是参数化的,并且允许使用简单算法(如随机梯度下降)进行在线学习。