ANN(人工神经网络)和SVM(支持向量机)是监督机器学习和分类的两种流行策略。通常不清楚哪种方法对特定项目更好,而且我确定答案总是“它取决于”。通常,使用两者的组合以及贝叶斯分类。
有关人工神经网络与SVM的问题已经在Stackoverflow上提出了这些问题:
what the difference among ANN, SVM and KNN in my classification question
Support Vector Machine or Artificial Neural Network for text processing?
在这个问题中,我想知道具体人工神经网络(特别是多层感知器)的哪些方面可能需要在SVM上使用?我问的原因是因为很容易回答相反的问题:支持向量机通常优于人工神经网络,因为它们避免了人工神经网络的两个主要缺点:
(1)人工神经网络通常会聚集在局部最小值而不是全局最小值,这意味着它们有时基本上“错过了大局”(或者错过了树木的森林)
(2)如果训练进行得太长,人工神经网络通常过度拟合,这意味着对于任何给定的模式,ANN可能会开始将噪声视为模式的一部分。
SVM不会遇到这两个问题中的任何一个。然而,并不是很明显SVM应该是人工神经网络的完全替代品。那么,人工神经网络对SVM有什么特定的优势,可能使其适用于某些情况?我已经列出了SVM相对于ANN的特定优势,现在我想看一下ANN优势列表(如果有的话)。
答案 0 :(得分:124)
从您提供的示例来看,我假设通过ANN,您的意思是多层前馈网络(简称FF网络),例如多层感知器,因为它们与SVM直接竞争。
这些模型对SVM的一个特定好处是它们的大小是固定的:它们是参数模型,而SVM是非参数的。也就是说,在ANN中你有一堆隐藏的图层,大小 h 1 到 h n 取决于要素的数量,加上偏差参数,以及构成模型的那些参数。相比之下,SVM(至少是核心化的)由一组支持向量组成,这些支持向量从训练集中选择,每个支持向量具有权重。在最坏的情况下,支持向量的数量正好是训练样本的数量(尽管主要发生在小训练集或退化情况下),并且通常其模型大小线性地缩放。在自然语言处理中,拥有数万个支持向量的SVM分类器,每个都有数十万个特征,并不是闻所未闻。
此外,与在线SVM拟合相比,FF网的online training非常简单,预测速度可能会快得多。
编辑:以上所有内容都与内核SVM的一般情况有关。线性SVM是一种特殊情况,因为它们是参数化的,并允许使用简单算法(如随机梯度下降)进行在线学习。
答案 1 :(得分:57)
人工神经网络相对于支持向量机的一个明显优势是人工神经网络可以具有任意数量的输出,而支持向量机只有一个。使用支持向量机创建n-ary分类器的最直接方法是创建n个支持向量机并逐个训练它们。另一方面,可以一次训练具有神经网络的n元分类器。此外,神经网络将更有意义,因为它是一个整体,而支持向量机是孤立的系统。如果输出是相互关联的,这尤其有用。
例如,如果目标是对手写数字进行分类,那么十个支持向量机就可以了。每个支持向量机只能识别一个数字,并且无法识别所有其他数字。由于每个手写数字不能仅仅包含更多信息,因此尝试用人工神经网络来解决这个问题是没有意义的。
然而,假设目标是模拟一个人的激素平衡(对于几种激素)作为容易测量的生理因素的函数,例如自上次进餐以来的时间,心率等......因为这些因素都是相互关联的,人工神经网络回归比支持向量机回归更有意义。
答案 2 :(得分:46)
有一点需要注意的是,这两者实际上非常相关。线性SVM等效于单层NN(即,感知器),并且多层NN可以用SVM表示。有关详细信息,请参阅here。
答案 3 :(得分:18)
如果你想使用内核SVM,你必须猜测内核。然而,人工神经网络是通用的近似,只有猜测要做的是宽度(近似精度)和高度(近似效率)。如果您正确设计了优化问题,则不要过度拟合(请参阅参考书目以了解过度拟合)。如果它们正确且一致地扫描搜索空间,它还取决于训练示例。宽度和深度发现是整数编程的主题。
假设你在I = [0,1]上有有界函数f(。)和有界通用逼近器,并且范围再次为I = [0,1],例如由紧凑支持U(。,...)的实数序列参数化。 a)具有
序列序列的属性lim sup { |f(x) - U(x,a(k) ) | : x } =0
您在(x,y)
上使用分布D绘制示例和测试IxI
。
对于规定的支持,你所做的就是找到最好的
sum { ( y(l) - U(x(l),a) )^{2} | : 1<=l<=N } is minimal
让这个a=aa
是一个随机变量!,过拟合就是
使用D and D^{N} of ( y - U(x,aa) )^{2}
平均值
让我解释一下为什么,如果您选择aa
以使错误最小化,那么对于一组罕见的值,您就完全适合。但是,因为它们很少见,所以平均值永远不会为0.尽管你有一个D的离散近似值,你想要最小化第二个。请记住,支持长度是免费的。
答案 4 :(得分:14)
我在这里找不到一个答案: 多层感知器能够找到特征之间的关系。例如,在向计算算法提供原始图像并且现在计算复杂特征时,在计算机视觉中是必要的。 基本上,中间水平可以计算新的未知特征。
答案 5 :(得分:12)
我们还应该考虑将SVM系统直接应用于非度量空间,例如标记图形或字符串集。实际上,只要满足内核的正定性要求,内部内核函数就可以适当地推广到几乎任何类型的输入。另一方面,为了能够在一组带标签的图形上使用ANN,必须考虑显式嵌入程序。