SVM和神经网络有什么区别? 线性svm是否与NN相同,对于非线性可分问题,NN是否使用添加隐藏层而SVM使用不断变化的空间维度?
答案 0 :(得分:43)
这个问题分为两部分。第一部分是“这些方法学习的函数形式是什么?”对于NN和SVM,这通常是相同的。例如,单个隐藏层神经网络使用与SVM完全相同的模型形式。那就是:
给定输入向量x,输出为: output(x)= sum_over_all_i weight_i * nonlinear_function_i(x)
通常,非线性函数也会有一些参数。因此,这些方法需要了解应该使用多少非线性函数,它们的参数是什么,以及所有weight_i权重的值应该是什么。
因此,SVM和NN之间的区别在于它们如何决定应该将这些参数设置为什么。通常,当有人说他们正在使用神经网络时,他们意味着他们正试图找到最小化相对于一组训练样例的均方预测误差的参数。他们也几乎总是使用stochastic gradient descent优化算法来做到这一点。另一方面,SVM试图最小化训练误差和“假设复杂性”的某种度量。因此,他们会找到一组适合数据的参数,但在某种意义上也是“简单的”。你可以把它想象成奥卡姆用于机器学习的剃须刀。与SVM一起使用的最常见的优化算法是sequential minimal optimization。
这两种方法的另一个重要区别在于,当使用NN实施方式使用时,随机梯度下降不能保证找到最佳参数集。但是,任何体面的SVM实现都将找到最佳参数集。人们喜欢说神经网络陷入局部极小,而SVM则不然。
答案 1 :(得分:23)
NN是启发式的,而SVM在理论上是成立的。 SVM保证收敛到PAC(可能是近似正确的)意义上的最佳解决方案。例如,对于两个线性可分类,SVM将直接在两个类的最近点之间绘制分离超平面(这些成为支持向量)。神经网络会绘制任何分隔样本的线,这对于训练集是正确的,但可能没有最佳的泛化属性。
所以不,即使对于线性可分的问题,NN和SVM也不相同。
在线性不可分类的情况下,SVM和NN都将非线性投影应用于更高维空间。在NN的情况下,这通过在隐藏层中引入额外的神经元来实现。对于SVM,内核函数用于相同的效果。核函数的一个简洁特性是计算复杂度不会随着维数的增加而增加,而对于NN,它显然会随着神经元的数量而增加。
答案 2 :(得分:11)
在几个流行的回归分类和分类数据集上运行一个简单的out-of-the-box comparison between support vector machines and neural networks(WITHOUT参数选择)演示了实际的差异:如果创建了许多支持向量而SVM成为一个非常慢的预测器,而神经网络预测速度是更高,模型尺寸更小。另一方面,SVM的训练时间要短得多。关于准确度/损失 - 尽管存在上述神经网络的理论缺陷 - 两种方法都是相同的 - 特别是对于回归问题,神经网络通常优于支持向量机。根据您的具体问题,这可能有助于选择正确的型号。
答案 3 :(得分:1)
SVM和NN具有与感知器相同的建筑块,但SVM也使用内核技巧通过平移将尺寸从2增加到3d,例如Y =(x1,2,... ^ 2,y1,2 ...... ^ 2)可以使用直线分离线性不可分离的平原。想要一个这样的演示并问我:)
答案 4 :(得分:1)
支持向量机(SVM)和人工神经网络(ANN)都是受监督的机器学习分类器。 ANN是参数分类器,在训练阶段使用超参数调整。 SVM是一种非参数分类器,可找到线性向量(如果使用线性内核)来分离类。实际上,就模型性能而言,SVM有时等效于浅层神经网络体系结构。通常,在有大量训练实例的情况下,人工神经网络的性能要优于支持向量机,但是,在所有问题上,两者都不胜过另一个。
我们可以总结出ANN优于SVM的优势,如下所示: 人工神经网络可以通过为每个类别产生概率来处理多类别问题。相反,SVM使用独立的“对所有”分类器处理这些问题,其中每个分类器都产生一个二进制输出。例如,可以训练一个ANN来解决手写数字问题,而同时需要10个SVM(每个数字一个)。
从模型大小的角度来看,人工神经网络的另一个优点是,模型在输入节点,隐藏层和输出节点方面是固定的;但是,在SVM中,最坏情况下支持向量行的数量可能会达到实例数。
当特征数量大于样本数量时,SVM不能正常工作。与多层神经网络相比,SVM需要更多的功能工程工作。
另一方面,在某些方面,SVM比ANN更好:
与SVM相比,人工神经网络更容易陷入局部最小值,这意味着它们有时会错过全局情况。
虽然大多数机器学习算法如果没有足够的训练样本可能会过拟合,但是如果训练持续时间过长,则人工神经网络也会过拟合-这是SVM所没有的问题。
SVM模型更易于理解。除了经典的线性核之外,还有其他的核提供不同程度的灵活性,例如径向基函数核(RBF)。与线性核不同,当类标签和属性之间的关系为非线性时,RBF可以处理这种情况。
答案 5 :(得分:0)
实际上,您的大多数假设通常都是正确的。我会详细说明:对于线性可分类,线性SVM效果很好,并且训练起来要快得多。对于非线性类,有一个内核技巧,它将数据发送到更高维度的空间。但是,与NN相比,此技巧有两个缺点。首先-您必须搜索正确的参数,因为分类器只有在较高维中两组线性可分离的情况下才起作用。现在-测试参数通常是通过网格搜索完成的,这非常耗时。另一个问题是,整个技术不如NN通用(例如,对于NLP,如果经常导致分类器不佳)。
答案 6 :(得分:-1)
实际上,它们完全相同。唯一的区别在于它们的标准实现中具有激活函数和正则化等的选择,这显然彼此不同。此外,我还没有看到神经网络的双重公式,但无论如何SVM正朝着原始方向发展。