cs231n:线性svm与softmax

参数信息:

权重 W:(D,C)

训练集 X:(N,D),标签 y:(N,1)

偏置量bias b:(C,1)

N:训练样本数;   D:样本Xi 的特征维度,Xi = [ Xi1,Xi2,...,XiD];  C:类别数量


正则化系数 λ :控制正则化的强度

delta / Δ : 间隔


linear svm:

对训练样本(Xi,yi),其对应每个类别的得分为:

  score = W*Xi+ b

是长度为C的矢量,以s表示 score, s = [s1, s2, s3, ..., sC] = [W1*Xi,  W2*Xi, W3*Xi, ..., WC*Xi]

Xi对应的损失(hinge loss)

  loss[i] = ∑j≠yi max(0,s- syi + delta)

总的损失,加入正则化项 R(W):

   loss = (1/N)*ΣNi=1 loss[i] + R(W) = (1/N)*ΣNi=1 ∑j≠yi max(0,s- syi + delta)+  λ*ΣΣj Wi,j2



softmax:

对训练样本(Xi,yi), 利用 yi 构造长度为C的矢量 p = [0, 0, 0, ..., 1, ...],第 yi 位置为 1,其余为 0,

先计算每个类别的得分:

  score = W*Xi+ b ,与上同

但是softmax继续对得分进行 归一化处理,得到 Xi 在每个类别的概率:

  h = exp(s) / Σexp(s),

即有 h = [h1, h2, ..., hC],hj = exp(sj) / ΣCk=1 exp(sk)

Xi对应的损失(交叉熵损失 cross-entropy loss):

  loss[i] = -∑log( p*h) =  -∑Cj=1 log(pj*hj)= -log(hyi

总的损失,加入正则化项 R(W):

  loss =  (1/N)* ΣNi=1 loss[i]  + R(W)  =   -(1/N)*ΣNi=1 log{ exp(syi) / ΣNk=1 exp(sk) } +  λ*ΣΣj Wi,j2


softmax 梯度计算:

对 loss 关于 w 进行求导即可得到梯度∂L/∂wj ,w = [w1, w2, w3, ... , wC],wj 是 Dx1的列向量

∂L / ∂wj = -(1/N) * ΣNi=1 Xi*[ 1{yi=j} - hj ]

梯度方向即是,w沿着梯度变化时,loss值变化最快的方向。利用梯度对loss进行优化,

(求w)从而最小化    loss

利用SGD训练

W := W - ∂L / ∂wj

算法程序:

1. 随机初始化 w

2. 迭代( 一定次数 或者 前后两次迭代是 loss 差值小于阈值 )

repeat {

  2.1 计算 loss,计算梯度∂L / ∂wj

  2.2 更新w

    w := w - 2. 计算梯度∂L / ∂wj

}


讨论:

1. linear svm的关键在于将样本的正类别得分score[yi]与 负类别得分score[-]区分开,只要正、负类别得分的差值大于 delta,就认为样本的分类结果正确,分类损失loss = 0;

它并不关心正负类别得分的细节,比如,对于某三分类,正类别是 1 (delta = 1),在svm看来,得分s1 = [ 10, 9, 9]  与得分s2 = [10,  -10, -10] 结果是一样的,都能够得到正确分类结果,所以二者的损失都是 0;

2. softmax 不仅要求样本的正、负类别概率(其实是将类别得分score归一化后用概率表示)能够区分开,而且还想尽力使它们之间的差值越大越好;softmax即使对样本正确进行分类,其分类损失 loss 也 不为0,正、负类别的概率差值越大,其损失 loss就越小。比如,同样的三分类,正类别是 1,在softmax看来,得分s1 = [ 10, 9, 9]  与得分 s2 = [10,  -10, -10] 分类结果虽然是一样的,但是他们的损失却不一样,

loss[s1] =  -log( [1,0,0] * [0.57611688,  0.21194156,  0.21194156] )  =  0.5514,

loss[s2] =  -log( [1,0,0] * [ 0.999999996,   0.000000002,   0.000000002] ) = 0.000000004

所以softmax会认为s2比s1分类损失小。从而在分类中,softmax会尽力使正类概率大,而负类概率小

3. linear svm上述特性既是不足,也是优点,比如在分类时,在A类,B类已经有不同得分,可以分开的情况下,不必再花费精力尽力使A、B两类的得分差别变大。

cs231n --- 1:线性svm与softmax的更多相关文章

  1. 深度学习与计算机视觉系列(3)_线性SVM与SoftMax分类器

    作者: 寒小阳 &&龙心尘 时间:2015年11月. 出处: http://blog.csdn.net/han_xiaoyang/article/details/49949535 ht ...

  2. 线性SVM与Softmax分类器

    1 引入 上一篇介绍了图像分类问题.图像分类的任务,就是从已有的固定分类标签集合中选择一个并分配给一张图像.我们还介绍了k-Nearest Neighbor (k-NN)分类器,该分类器的基本思想是通 ...

  3. 线性SVM分类器实战

    1 概述 基础的理论知识参考线性SVM与Softmax分类器. 代码实现环境:python3 2 数据处理 2.1 加载数据集 将原始数据集放入"data/cifar10/"文件夹 ...

  4. cs231n线性分类器作业 svm代码 softmax

    CS231n之线性分类器 斯坦福CS231n项目实战(二):线性支持向量机SVM CS231n 2016 通关 第三章-SVM与Softmax cs231n:assignment1——Q3: Impl ...

  5. CS231n 2016 通关 第三章-SVM与Softmax

    1===本节课对应视频内容的第三讲,对应PPT是Lecture3 2===本节课的收获 ===熟悉SVM及其多分类问题 ===熟悉softmax分类问题 ===了解优化思想 由上节课即KNN的分析步骤 ...

  6. 【cs231n】线性分类笔记

    前言 首先声明,以下内容绝大部分转自知乎智能单元,他们将官方学习笔记进行了很专业的翻译,在此我会直接copy他们翻译的笔记,有些地方会用红字写自己的笔记,本文只是作为自己的学习笔记.本文内容官网链接: ...

  7. 线性SVM

    (本文内容和图片来自林轩田老师<机器学习技法>) 1. 线性SVM的推导 1.1 形象理解为什么要使用间隔最大化 容忍更多的测量误差,更加的robust.间隔越大,噪声容忍度越大: 1.2 ...

  8. SVM1 线性SVM

    一.Linear Support Vector Machine 接下来的讨论假设数据都是线性可分的. 1.1 SVM的引入:增大对测量误差的容忍度 假设有训练数据和分类曲线如下图所示: 很明显,三个分 ...

  9. 支持向量机(Support Vector Machine,SVM)—— 线性SVM

      支持向量机(Support Vector Machine,简称 SVM)于 1995 年正式发表,由于其在文本分类任务中的卓越性能,很快就成为机器学习的主流技术.尽管现在 Deep Learnin ...

随机推荐

  1. linux C/C++开发环境搭建指南

    一.安装基本开发环境 1.配置GCC 刚装好的系统中已经有GCC了,但是这个GCC什么文件都不能编译,因为没有一些必须的头文件,所以要安装build-essential这个软件包,安装了这个包会自动安 ...

  2. SQL Server 在生产环境中这样写存储过程的坑都避免了吗?

    概述 最近因为业务的需求写了一段时间存储过程,发现之前写的存储过程存在一些不严谨的地方,特别是TRY...CATCH中嵌套事务的写法:虽然之前写的并没有错,但是还是埋藏着很大的隐患在里面.希望这篇文章 ...

  3. linux 运维常用工具表

    https://code.google.com/p/httperf/  ※测量Web服务器的性能 ./configure   make &&make install http://ww ...

  4. Loadrunner web_url函数学习(转贴)

    http://blog.csdn.net/dfbrt56/article/details/3291461 ----------------------------------------------- ...

  5. 【原创】抓个Firefox的小辫子,围观群众有:Chrome、Edge、IE8-11

    前言 很多人都知道我们在做FineUI控件库,在这 9 年多的时间里,在和浏览器无数次的交往中,也发现了多个浏览器自身的BUG,并公开出来方便大家查阅: 分享IE7一个神奇的BUG(不是封闭标签的问题 ...

  6. 深入理解php底层:php生命周期

    1.PHP的运行模式: PHP两种运行模式是WEB模式.CLI模式.无论哪种模式,PHP工作原理都是一样的,作为一种SAPI运行. 1.当我们在终端敲入php这个命令的时候,它使用的是CLI. 它就像 ...

  7. IE之页面加载慢.

    场景 场景是大屏页面一张深色背景, 里面一些文本元素以及图表展示. 结果在IE下发现加载异常缓慢, 还有部分人员反馈页面卡死. 后台读写优化 默认处理图片逻辑是, ImageIO读取原图, 转成byt ...

  8. (二)—Linux远程连接与常用命令

    要学linux ,一定得用命令界面的,怎么也得是shell语言,用就最难最原始的,用的人都是专家,历史最少也得30年,不管有三七二十一上来就敲ls ,先看看当前目录都有什么.一口专业的linux范儿, ...

  9. 时间紧任务重---extjs的学习就这么开始吧

    我们的extjs借助了一个模板引擎--artTemplate,它是一个开源的项目,不多说,给个链接吧:http://aui.github.io/artTemplate/ 直接上代码: <!DOC ...

  10. hadoop单机版安装及基本功能演示

    本文所使用的Linux发行版本为:CentOS Linux release 7.4.1708 (Core) hadoop单机版安装 准备工作 创建用户 useradd -m hadoop passwd ...