前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >线性分类器损失函数与最优化(上)

线性分类器损失函数与最优化(上)

作者头像
听城
发布2018-08-30 11:12:06
7940
发布2018-08-30 11:12:06
举报
文章被收录于专栏:杂七杂八杂七杂八

多类支持向量机损失 Multiclass Support Vector Machine Loss

针对第i个数据的多类SVM的损失函数定义如下:

L_i=\sum_{j!=y_i} max(0,s_j-s_{y_i} + \Delta)
L_i=\sum_{j!=y_i} max(0,s_j-s_{y_i} + \Delta)

它计算了所有不正确的例子,将所有不正确的类别的评分,与正确类别的评分之差加

\Delta
\Delta

,将得到的值与0比较,取较大的数,然后将所有的值求和。当我们取

\Delta
\Delta

为1时,看下面的例子: 先比较第一个图片,为猫,计算损失方式如下:

计算三张的图片损失,最终得到整个数据集的损失:

下面是计算某一个图片损失的函数:

代码语言:javascript
复制
def L_i_vectorized(x, y, W):
  """
  A faster half-vectorized implementation. half-vectorized
  refers to the fact that for a single example the implementation contains
  no for loops, but there is still one loop over the examples (outside this function)
  """
  delta = 1.0
  scores = W.dot(x)
  # compute the margins for all classes in one vector operation
  margins = np.maximum(0, scores - scores[y] + delta)
  # on y-th position scores[y] - scores[y] canceled and gave delta. We want
  # to ignore the y-th position and only consider margin on max wrong class
  margins[y] = 0
  loss_i = np.sum(margins)
  return loss_i

正则化

使用正则化一方面的优化参数,另一方面是权衡训练损失和用于测试集的泛化损失。尽管有时候会使训练集上的效果变差,甚至是分类错误,但是对于测试集的训练效果是有很大效果的。

softmax分类

具体计算方式为:

softmax与msvm区别

针对一个数据点,SVM和Softmax分类器的不同处理方式的例子。两个分类器都计算了同样的分值向量f(本节中是通过矩阵乘来实现)。不同之处在于对f中分值的解释:SVM分类器将它们看做是分类评分,它的损失函数鼓励正确的分类(本例中是蓝色的类别2)的分值比其他分类的分值高出至少一个边界值。Softmax分类器将这些数值看做是每个分类没有归一化的对数概率,鼓励正确分类的归一化的对数概率变高,其余的变低。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多类支持向量机损失 Multiclass Support Vector Machine Loss
  • 正则化
  • softmax分类
  • softmax与msvm区别
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档