神经网络比 SVM 更好吗?

机器算法验证 回归 机器学习 神经网络 支持向量机
2022-01-26 16:11:29

一段时间以来,我一直在研究支持向量机和神经网络,并且了解这些技术背后的逻辑。非常简要地描述:

  • 在支持向量机中,使用内核技巧,您可以将数据“发送”到更高维度的空间中,在那里它可以是线性可分的。

  • 在神经网络中,您执行一系列与(通常)非线性激活函数混合的线性组合。

到目前为止,我已经看到神经网络倾向于在机器学习替代方案中提供最好的预测结果。当然,与其他更经典的工具(如多元回归)相比,它们有一些缺点,比如提供很少(如果有的话)变量的可解释性,而在回归中,变量的可解释性是即时的。

我的问题是:神经网络似乎比支持向量机提供更好的预测结果,并且两者都提供相同数量的可解释性(这是none)。是否存在使用支持向量机比使用神经网络更好的情况?

4个回答

简短回答:在小型数据集上,SVM 可能是首选。

长答案:

从历史上看,神经网络比 SVM 更古老,而 SVM 最初是作为一种有效训练神经网络的方法而开发的。因此,当 SVM 在 1990 年代成熟时,人们从神经网络转向 SVM 是有原因的。后来,随着数据集变得越来越大、越来越复杂,特征选择变成了一个(甚至更大的)问题,而与此同时,计算能力提高了,人们又转回来了。

这种发展已经表明,两者各有优缺点,正如海涛所说,没有免费的午餐。

本质上,这两种方法都会进行某种数据转换,以将它们“发送”到更高维空间。核函数对 SVM 的作用,隐藏层对神经网络的作用。网络中的最后一个输出层也对如此转换的数据执行线性分离。所以这不是核心区别。

为了证明这一点,我可以随意使用海涛的例子。正如你在下面看到的,一个两层的神经网络,在隐藏层有 5 个神经元,可以完美地分离这两个类。蓝色类可以完全封闭在一个五边形(淡蓝色)区域中。隐藏层中的每个神经元确定一个线性边界——五边形的一侧,当它的输入是直线“蓝色”一侧的一个点时产生 +1,否则产生 -1(它也可能产生 0 ,这并不重要)。

我使用不同的颜色来突出显示哪个神经元负责哪个边界。输出神经元(黑色)简单地检查(执行逻辑与,这又是一个线性可分函数)是否所有隐藏神经元都给出相同的“肯定”答案。观察到最后一个神经元有五个输入。即它的输入是一个5维向量。所以隐藏层已经将 2D 数据转换为 5D 数据。

神经网络求解同心圆

但是请注意,神经网络绘制的边界有些随意。您可以稍微移动和旋转它们而不会真正影响结果。网络如何绘制边界有些随机;它取决于权重的初始化以及您向其展示训练集的顺序。这就是 SVM 的不同之处:它们保证在两个类的最近点之间绘制边界!可以(已经)证明这个边界是最优的。寻找边界是一个凸(二次)优化问题,存在快速算法。此外,内核技巧具有计算优势,即计算单个非线性函数通常比通过许多隐藏层传递向量要快得多。

然而,由于支持向量机从不明确计算边界,而是通过输入数据对上的核函数的加权和,计算工作量与数据集大小成二次方。对于大型数据集,这很快变得不切实际。

此外,当数据是高维的(想想具有数百万像素的图像)时,SVM 可能会被维数诅咒所淹没:在训练集上画一个好的边界变得太容易了,但泛化特性很差. 另一方面,卷积神经网络能够从数据中学习相关特征。

这里还有一个计算能力问题:今天的网络喜欢使用分段线性的激活函数,比如 ReLU,这是有原因的。应用它们是简单的线性代数,这是 GPU 擅长的(因为 3D 图形还涉及大量矩阵乘法)。所以今天的神经网络在某种程度上是游戏行业的副产品。

总之,我的建议是对低维、小数据集使用 SVM,对高维大数据集使用神经网络。

您可能听说过机器学习中的“没有免费的午餐定理”对于每个模型,特定数据和用例都各有利弊。

所以。NN 并不比 SVM 好,我可以很容易地举几个例子。一个重要的论点是 SVM 是凸的,但 NN 通常不是。有一个凸问题是可取的,因为我们有更多的工具可以更可靠地解决它。

如果我们知道我们的数据,我们可以选择一个更好的模型来更好地拟合数据。例如,如果我们有一些像甜甜圈形状的数据。这样

在此处输入图像描述

使用具有正确内核的 SVM 比使用 NN 更好,在这种情况下,NN 可能会过拟合数据。

如果您有一个知道合适的内核,或者一个难以以可微分方式表达的特定领域的内核(一个常见的例子可能是 DNA 序列的字符串相似空间),那么 SVM 会很有趣。但是,如果您不知道应该使用哪种内核怎么办?如果您的数据是一个广泛的值集合,而您甚至无法事先确定哪些值具有相关性,该怎么办?您可以花费人类研究人员的时间进行特征工程,或者您可以尝试自动内核搜索方法,这些方法非常昂贵,但甚至可以在美好的一天提出可以被认为是可解释的东西。

或者,您可以将整个过程转储到 DNN 中并进行训练。神经网络通过反向传播和梯度下降所做的工作很可能被认为是在学习内核,只是它没有一个很好的函数形式,它(字面上)由大量基本非线性的应用组成,并加入了一些加法和乘法。典型分类网络的倒数第二层是这是一个投影到该层中每个神经元一个维度的空间,其中类别被很好地分离,然后最终结果(忽略 softmax,这实际上只是一种归一化)是该层的仿射图空间到一个类别是轴对齐的,因此分离表面与几何图形一起出现(但如果我们愿意,我们可以将它们向后发送到倒数第二层)。

DNN 分类器完成的事情与 SVM 分类器非常相似,只是它使用梯度下降和简单可微单元的重复以“愚蠢”的方式完成它。但有时在计算中,“哑”也有其优势。易于应用于 GPU(喜欢将相同的简单操作并行应用于大量数据点)是其中之一。SGD 和小批量梯度下降扩展到非常大的能力另一个是效率损失最小的例子。当然,它也有自己的缺点。如果您在 NN 架构、初始权重、优化方法、学习率、批量大小等方面做出错误选择,那么随机训练过程可能完全无法收敛,或者需要一百万年才能收敛——而 SVM 训练基本上是确定性的.

(原谅一个业余爱好者的错误、过度简化和滥用术语;这些是我 15 年左右在偶尔的爱好层面上玩这些东西后的个人经历)。

Pedro Domingos的论文“通过梯度下降学习的每个模型都近似于核机”表明,通过梯度下降(非随机)学习的每个神经网络本质上都是核机。内核有一个相当复杂的形式: 其中是NN 在梯度下降过程中经过的路径。这些结果实际上具有争议的实际重要性,但给出了相当有趣的解释和见解。

K(x,x)=c(t)wy(x)wy(x)dt
c(t)