我和我的同事正试图弄清楚逻辑回归和 SVM 之间的区别。显然,他们正在优化不同的目标函数。SVM 是否像说它是一个简单地优化铰链损失的判别分类器一样简单?还是比这更复杂?支持向量如何发挥作用?松弛变量呢?为什么你不能拥有深度 SVM,就像你不能拥有具有 sigmoid 激活函数的深度神经网络一样?
SVM 和铰链损失之间有什么关系?
这是我尝试回答您的问题:
SVM 是否像说它是一个简单地优化铰链损失的判别分类器一样简单?还是比这更复杂?是的,你可以这么说。另外,不要忘记它也使模型正规化。我不会说 SVM 比这更复杂,但是,重要的是要提到所有这些选择(例如铰链损失和正则化)都有精确的数学解释并且不是任意的。这就是 SVM 如此受欢迎和强大的原因。例如,铰链损失是任务损失的连续且凸的上限,对于二元分类问题,它是损失。请注意,损失是非凸的和不连续的。铰链损失的凸性使得 SVM 的整个训练目标是凸的。它是任务损失的上限这一事实保证了该界限的最小化器不会对任务损失产生不好的价值。正则化可以在几何上解释为边距的大小。
支持向量如何发挥作用? 支持向量在训练 SVM 中起着重要作用。他们识别分离超平面。令表示训练集,上训练 SVM 获得的支持向量集(假设所有超参数都是先验固定的)。中剔除所有非 SV 样本并在剩余样本上(即在上)训练另一个 SVM(具有相同的超参数值),我们将得到与以前相同的准确分类器!
松弛变量呢?支持向量机最初是为存在分离超平面(即一个将训练样本与两个类完美分离的超平面)的问题而设计的,目标是在所有分离超平面中找到具有最大边距的超平面。由表示的边距是为分类器和训练集定义的。假设中的所有示例,我们有,即离分离超平面最近的训练样本的距离。注意这里的。松弛变量的引入使得在以下问题上训练 SVM 成为可能:1)不存在分离超平面(即训练数据不是线性可分的),或 2)您乐于(或愿意)牺牲一些误差(更高的偏差)以获得更好的泛化(更低的方差)。然而,这是以破坏没有松弛变量的 SVM 的一些具体数学和几何解释为代价的(例如,边缘的几何解释)。
为什么你不能拥有深度 SVM? SVM 目标是凸的。更准确地说,它是分段二次的;这是因为正则化器是二次的,而铰链损失是分段线性的。然而,深度层次模型中的训练目标要复杂得多。特别是,它们不是凸的。当然,可以设计一个带有铰链损失和正则化等的层次判别模型,但是,它不会被称为SVM。实际上,铰链损失通常用于 DNN(深度神经网络)中用于分类问题。