码迷,mamicode.com
首页 > 其他好文 > 详细

2、多类SVM

时间:2018-04-03 12:51:31      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:http   alt   logs   存在   定义   因此   zed   .com   方式   

一、疑问

1. assignments1

  • linear_svm.py文件的函数 svm_loss_naive中,使用循环的方式实现梯度计算

  • linear_svm.py文件的函数 svm_loss_vectorized中,梯度的向量化实现

SVM的损失函数在某个数据点上的计算:

技术分享图片

对函数进行微分,比如对技术分享图片进行微分得到:

技术分享图片

在代码实现的时候,只需要计算没有满足边界值的分类的数量(因此对损失函数产生了贡献),然后乘以技术分享图片就是梯度了。注意,这个梯度只是对应正确分类的W的行向量的梯度,那些技术分享图片行的梯度是:

技术分享图片

二、知识点

1. 数据集划分

  • 训练集:训练模型用;

  • 验证集:用以最优参数的调试选择;

  • 测试集:测定训练好的模型的表现情况;

  • 开发集:在实际开发中,训练集往往包含很多数据,为了节省计算时间,往往使用训练集的一小部分子集,用作模型的训练。

2. 梯度检查

? 数值梯度和解析梯度的值有时候在某个维度会相差较多。这是因为数值梯度的计算采用的是用前后2个很小的随机尺度(比如0.00001)进行计算,当loss不可导的时候,两者会出现差异。**

3.损失函数

  • SVM只关心正确分类的得分与错误分类的得分至少要高于边界值,若不满足,便计算相应的损失值。
  • 折叶损失:$max(0, -)$函数。
  • 平方折叶损失:$max(0, -)^2$**。更强烈得惩罚过界的边界值。在某些数据集会工作得更好,可以通过交叉验证来决定使用哪个损失计算函数。
  • 由于max操作,损失函数中存在一些不可导点(kinks),这些点使得损失函数不可微,因为在这些不可导点,梯度是没有定义的。但是次梯度依然存在且常常被使用。

4. 设置Delta

? 超参数delta和$\lambda$一起控制损失函数中数据损失和正则化损失之间的权衡。但是对于通过缩小或扩大权重矩阵的值,改变不同分类值之间的差异,因此,在一定程序上改变delta是没有意义的。真正的权衡是通过正则化强度来控制权重能够变大到何种程度。

5. 在初始形式中进行初始化

? 损失函数的最优化的始终在非限制初始形式下进行。很多这些损失函数从技术上来说是不可微的(比如当技术分享图片时,技术分享图片函数就不可微分),但是在实际操作中并不存在问题,因为通常可以使用次梯度。

2、多类SVM

标签:http   alt   logs   存在   定义   因此   zed   .com   方式   

原文地址:https://www.cnblogs.com/CSLaker/p/8707579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!