我的同事和我正试图围绕逻辑回归和SVM之间的差异.显然,他们正在优化不同的目标函数.SVM是否就像说它是一个简单优化铰链损失的判别分类器一样简单?还是比这更复杂?支持向量如何发挥作用?松弛变量怎么样?为什么你不能拥有深度SVM的方式你不能拥有一个具有sigmoid激活功能的深层神经网络?
我会及时回答一件事
SVM是否就像说它是一个简单优化铰链损失的判别分类器一样简单?
SVM只是一个线性分类器,通过L2正则化优化铰链损耗.
还是比这更复杂?
不,这只是"只是",但是有不同的方式来看这个模型导致复杂,有趣的结论.特别是,这种特定的损失函数选择导致极其有效的核化,对于对数损失(逻辑回归)和mse(线性回归)都不是这样.此外,您可以显示非常重要的理论属性,例如与Vapnik-Chervonenkis降维相关的那些,从而导致过度拟合的可能性较小.
直观地看待这三种常见的损失:
合页: max(0, 1-py)
日志: y log p
MSE: (p-y)^2
只有第一个具有一旦正确分类的属性 - 它有0罚款.即使它正确地对样本进行分类,所有剩余的仍然会惩罚您的线性模型.为什么?因为它们与回归比分类更相关,所以它们需要完美的预测,而不仅仅是正确的.
支持向量如何发挥作用?
支持向量只是放置在决策边界附近的样本(丢失地说).对于线性情况,它没有太大变化,但由于SVM的大部分功能在于其核化 - 因此SV非常重要.一旦引入内核,由于铰链损失,可以有效地获得SVM解,并且支持向量是从训练集中记住的唯一样本,因此与训练数据的子集建立非线性决策边界.
松弛变量怎么样?
这只是铰链损耗的另一个定义,当您想要对解决方案进行内核化并显示凸性时更有用.
为什么你不能拥有深度SVM的方式你不能拥有一个具有sigmoid激活功能的深层神经网络?
但是,由于SVM 不是概率模型,因此其训练可能有点棘手.此外,SVM的整体优势来自效率和全局解决方案,一旦您创建了深层网络,两者都将丢失.然而,有这样的模型,特别是SVM(具有平方铰链损耗)现在经常是最深层网络层的选择 - 因此整个优化实际上是深度SVM.在它们之间添加更多层与SVM或其他成本无关 - 它们完全由它们的激活定义,并且您可以例如使用RBF激活函数,只是它已被多次显示它导致弱模型(对于局部特征)被检测到).
总结一下:
有深度SVM,这只是一个典型的深层神经网络,顶部有SVM层.
没有将SVM层"放在中间"的事情,因为训练标准实际上只适用于网络的输出.
使用"典型"SVM内核作为激活函数由于其局部性而在深度网络中不受欢迎(与非常全局的relu或sigmoid相反)