这一讲总体上就是引入Loss Function的概念,以及让大家对优化有一个初步的认识,和其他课程里面说的内容大同小异。

Loss function

Multiclass svm loss

multiclass svm的分类依据是,比较每个类别计算得到分数,取最大的那个作为当前的类标。该Loss鼓励的是正确的类标对应的分数应该比所有其他类标对应的分数都大至少1,否则就引入cost。具体定义如下:

这个和svm的思想是一样的,就是说不光要分对,而且要求判断对与错的分割线之间要有一定的距离,即svm中所说的margin。

Regularization loss

一般能量项除了衡量模型在训练数据上的精确度外,还有另一个正则项用于控制模型的复杂度,防止过拟合。常见的几个正则项包括:

\(L_1\) 和 \(L_2\)

\(L_1\)鼓励稀疏,\(L_2\)试图将对结果的影响散步到W的每一项中- spread out the effects, 所以会鼓励更平均的结果。

不过在这个例子上,\(L_2\)会选择\(w_2\),\(L_1\)在\(w_1\)和\(w_2\)上是一样的,但是我们可以构造出来一些其他的\(w_2\),使得\(w_1\)的\(L_1\)比\(w_2\)的小。

Softmax classifier

这个是在deep learning里面非常常见的一个分类器,总体思想就是把每个类别的分数做一个指数映射,然后再做一个归一化,得到一个在各个类别上的概率分布。

Loss定义为目标类别所计算得到的概率的负对数,又称为交叉熵loss (cross-entropy loss):

如果目标类别计算得到的概率接近1,那么Loss就接近0;否则Loss就会是一个正数。

一些验证

在训练模型之前,可以根据Loss function的特点对方法进行一些验证,提早发现bug。

  • multiclass svm loss
    初始每个类别的分数都差不多,然后加上一个margin 1, 那么对于某一个样本来说,它的loss大概为 (C - 1), 即除了正确类别外的所有其他类别。
  • Softmax classifier loss
    初始的loss应该接近\(log(C)\),其中C为类别个数,因为初始时,每个类别的概率应该接近1/C。

Loss function的对比与定义

整个模型的loss是将每个训练样本的loss加起来取平均,并加上正则项。

Optimization

梯度的计算

  • Numerical gradient

    直接从数学性质出发计算梯度,这样需要对W的每一维都进行计算,耗时。
  • Analytic gradient
    可以直接通过偏微分得到梯度的解析解,从而可以一次性求出W的梯度。
  • 可以用Numerical gradient来验证程序实现的Analytic gradient是否正确

Gradient descent 梯度下降

每次将W按照负梯度方向前进一点点,那么Loss值就会下降一点点,直到收敛为止。

stochastic gradient descent

如果用普通的gradient descent,需要遍历整个训练集去计算Loss,很费时。所以使用一种叫minibatch的策略,每次只计算部分样本的loss, 用来估算W的真实梯度。

传统方法vs卷积神经网络

图像特征

  • 颜色直方图, 比如把hue值进行离散化放到bin里。
  • HOG, histogram of oriented gradients, 关注的是边朝向。
  • Bag of Words 随机从图像中采样得到patch,聚类,得到codebook of "visual" words, 然后对于某一张图像,可以计算每个visual word的数量,对应文本里面的bag of words。

ConvNets

直接把原始像素喂给网络。
两者的区别在于,前一种是使用固定的方法提取图像特征,然后喂给比如线性分类器,在训练的时候只去更新线性分类器的参数,而图像特征已经是固定了的;后者则是通过更新整个网络的参数,图像的特征以及分类器的参数是一起变化的。

CS231n笔记 Lecture 3 Loss Functions and Optimization的更多相关文章

  1. cs231n spring 2017 lecture3 Loss Functions and Optimization 听课笔记

    1. Loss function是用来量化评估当前预测的好坏,loss function越小表明预测越好. 几种典型的loss function: 1)Multiclass SVM loss:一般的S ...

  2. cs231n spring 2017 lecture3 Loss Functions and Optimization

    1. Loss function是用来量化评估当前预测的好坏,loss function越小表明预测越好. 几种典型的loss function: 1)Multiclass SVM loss:一般的S ...

  3. CS231n笔记 Lecture 5 Convolutional Neural Networks

    一些ConvNets的应用 Face recognition 输入人脸,推测是谁 Video classfication Recognition 识别身体的部位, 医学图像, 星空, 标志牌, 鲸.. ...

  4. CS231n笔记 Lecture 4 Introduction to Neural Networks

    这一讲主要介绍了神经网络,基本内容之前如果学习过Andrew的Machine learning应该也都有所了解了.不过这次听完这一讲后还是有了新的一些认识. 计算图 Computational gra ...

  5. CS231n笔记 Lecture 2 Image Classification pipeline

    距离度量\(L_1\) 和\(L_2\)的区别 一些感性的认识,\(L_1\)可能更适合一些结构化数据,即每个维度是有特别含义的,如雇员的年龄.工资水平等等:如果只是一个一般化的向量,\(L_2\)可 ...

  6. CS231n笔记 Lecture 1 Introduction

    主题有关 这一讲主要是介绍性质的,虽然大多数概念以前听说过,但还是在他们的介绍中让我有如下一些认识,所谓温故而知新,不无道理: IMAGENET Feifei Li的团队首先爬取.标注了IMAGENE ...

  7. Are Loss Functions All the Same?

    目录 概 主要内容 一些假设 损失函数 损失函数的统计性质 收敛速度 分类的界 Rosasco L, De Vito E, Caponnetto A, et al. Are loss function ...

  8. 目标检测复习之Loss Functions 总结

    Loss Functions 总结 损失函数分类: 回归损失函数(Regression loss), 分类损失函数(Classification loss) Regression loss funct ...

  9. [CS61A] Lecture 4. Higher-Order Functions & Project 1: The Game of Hog

    [CS61A] Lecture 4. Higher-Order Functions & Project 1: The Game of Hog Lecture Lecture 4. Higher ...

随机推荐

  1. python基础教程总结12——数据库

    1. Python 数据库 API 很多支持SQL标准的数据库在Python中都有对应的客户端模块.为了在提供相同功能(基本相同)的不同模块之间进行切换(兼容),Python 规定了一个标准的 DB ...

  2. cesium-大规模人群运动测试

    环境:cesium1.57: 笔记本电脑:集成显卡+独显Navida 1060 测试内容:大规模人群运动(500人,可设置运动的路径),可行性及帧率 测试结果:21-23FPS,较为流畅:集显70%- ...

  3. 2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02) A Amusing Numbers (数学)

    其实挺简单的.先直接算出之前已经排在k这个数前面的数字.比如543是三位的,那么100~543都是可以的,两位的10~54. 如果还需要往前面补的话,那么依次考虑1000~5430,5430是上界不能 ...

  4. Tarjan的学习笔记 求割边求割点

    博主图论比较弱,搜了模版也不会用... 所以决心学习下tarjan算法. 割点和割边的概念不在赘述,tarjan能在线性时间复杂度内求出割边. 重要的概念:时间戟,就是一个全局变量clock记录访问结 ...

  5. Spark Job调优(Part 2)

    原文链接:https://wongxingjun.github.io/2016/05/11/Spark-Job%E8%B0%83%E4%BC%98-Part-2/ 这篇文章将会完成Part 1中留下的 ...

  6. SC || 解决在git中上传过大文件的问题(如何将提交过的彻底删除

    就在我在ddl前续命的时候……不知道怎么想不开,把v2的压力测试的日志(500多M)也往github上传 之前听说过好多因为传了大文件的锅…… 我竟然还想不开的往上传…… 真实又傻又蠢又自闭(T T ...

  7. Vue -- 仿照商城分类竖向侧边栏点击居中效果(横向原理相同)

    github代码地址 效果图

  8. Python——三目运算符

    一.三目运算符 1.if语句三目运算符语法格式 Python可以通过if'语句来实现三目运算符的功能,因此可以把这种if语句当做三目运算符,具体语法格式如下: 返回True执行 if 表达式 else ...

  9. Nginx: ubuntu系统上如何判断是否安装了Nginx?

    问题描述:ubuntu系统上,如何查看是否安装了Nginx? 解决方法:输入命令行:ps -ef | grep nginx master process后面就是Nginx的安装目录. 延伸:1. 如何 ...

  10. stringByAppendingString和stringByAppendingPathComponent

    NSString提供了两个拼串的方法: /** * @brief 简单的字符串拼接,头文件 NSString (NSStringExtensionMethods) * * @param aString ...