【问题标题】:Using SVM with different kernels as a last layer in CNN network使用具有不同内核的 SVM 作为 CNN 网络中的最后一层
【发布时间】:2020-09-16 18:55:31
【问题描述】:

我正在尝试在多分类问题中使用 pytorch 将 CNN 网络的最后一个全连接层替换为 SVM。我做了一些研究,它说我应该用nn.MultiMarginLoss 替换nn.CrossEntropyLoss

更改标准实际上如何与“用 SVM 替换全连接层”任务相对应?另一件事是我想使用具有不同内核的 SVM,例如二次内核。

【问题讨论】:

    标签: pytorch svm conv-neural-network


    【解决方案1】:

    这个问题其实可以理解为Logistic回归和SVM在分类上的区别。

    我们可以天真地看待你的整个深度学习平台,就好像你有一个魔术师,那个魔术师接受输入的数据,给你一组工程特征,你用这些特征来做分类。

    根据您最小化的损失,您可以使用不同类型的函数来解决此分类问题。如果您使用交叉熵,就好像您正在应用逻辑回归分类。另一方面,如果将边际损失最小化,实际上等于找到支持向量,这确实是 SVM 的工作原理。

    您需要了解内核在损失计算中的作用(例如,here),但 TL;DR 是对于损失计算,您有一个 K(xi,xj) 的组件,它实际上是内核函数并表示xixj 的相似性。

    因此您可以实现自定义损失,其中您有一个多项式内核(在您的情况下为二次),并在那里模拟边际损失计算。

    【讨论】:

      猜你喜欢
      • 2022-06-15
      • 2020-06-02
      • 2020-07-24
      • 2021-10-15
      • 2019-01-19
      • 1970-01-01
      • 2021-06-07
      • 1970-01-01
      • 2018-12-04
      相关资源
      最近更新 更多